TW201241744A - Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location - Google Patents

Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location Download PDF

Info

Publication number
TW201241744A
TW201241744A TW100146249A TW100146249A TW201241744A TW 201241744 A TW201241744 A TW 201241744A TW 100146249 A TW100146249 A TW 100146249A TW 100146249 A TW100146249 A TW 100146249A TW 201241744 A TW201241744 A TW 201241744A
Authority
TW
Taiwan
Prior art keywords
destination
source
instruction
field
data element
Prior art date
Application number
TW100146249A
Other languages
English (en)
Other versions
TWI470542B (zh
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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

201241744 六、發明說明: 【發明所屬之技術領域】 本發明之領域大體上關於電腦處理器架構’更具體而 言,關於執行時造成特定結果的指令。 【先前技術】 有多種方式藉由操控資料結構佈局來改善記憶體利用 0 率。對於某些演算法,例如3 D轉換及打光,有二種配置 頂點資料的基本方式。傳統方法是結構(Array of structures,AoS)配置陣列,以結構用於每一頂點。另一 方式是爲陣列配置結構(Structure of arrays,SoA),其 配置陣列中的資料以用於每一座標。 有二種選項以用於計算AoS格式的資料:當資料處於 AoS配置時對資料執行操作或是將其重新配置(將其拌和 )成SoA配置。對原始AoS配置執行單一指令多重資料 〇 (Single Instruction, Multiple Data (SIMD)操作要求更 多計算且某些計算未利用所有可以取得的SIMD元件。因 此,此選項一般較無效率。 由於資料已準備好用於更最佳化的垂直方式的計算, 所以,S ο A配置允許更有效率的利用s IM D的平行性。相 反地,對AoS資料直接地計算導致消耗SIMD執行槽但僅 產生單一純量結果的水平操作’如同先前程式碼範例中很 多的「不管」(DC)槽所示般。 隨著SIMD技術的出現’資料組織的選擇變得更重要 -5- 201241744 且應該小心地根據要對資料執行的操作。在某些應用中, 傳統的資料配置不會導致最佳性能。應用程式開發者已被 鼓勵開發不同的資料配置且及用於有效率計算的資料分割 政策。這意指在給定應用程式中使用AoS、SoA、及甚至 混合SoA的組合。 【發明內容及實施方式】 在下述說明中,揭示眾多特定細節。但是,需瞭解, 沒有這些特定細節’仍可實施本發明的實施例。在其它情 形中’習知的電路、結構及技術未詳細顯示以免有礙本說 明的瞭解。 在本說明書中所指的「一實施例」、「實施例」、「 舉例實施例」、等等均表示所述的實施例可以包含特別的 特點、結構、或特徵,但是,每一實施例不一定包含特定 特點、結構、或特徵。此外,這些詞不一定意指相同的實 施例。此外’當配合實施例來說明特定特點、結構、或特 徵時’配合其它不論是否被明確說明的實施例而變更這些 特點、結構、或特徵是被視爲在習於此技術者的知識之內 〇
於下詳述「擴展」及「壓縮」指令的數個實施例以及 可以用以執行這些指令的系統、架構、指令格式等等的實 施例。擴展及壓縮有利於包含轉換AoS和SoA配置的數 個不同區域。舉例而言,從XYZW XYZW XYZW...XYZW樣 式至 XXXXXXXX YYYYYYYY ZZZZZZZZZZ WWWWWWWW 201241744 種樣式。另一此區域是矩陣轉置。具有長度16的向量可 以被視爲4X4陣列元件。藉由擴展指令,可以提取一列四 個連續元件M[0]、M[l]、M[2]、及M[3]並擴展(藉由合 倂以保持建立陣列)成4X4陣列的列之一(舉例而言,向 量元件1,3,7及1 1 )。 此外,根據動態條件而將記憶體儲存於連續位置中之 通用碼將從壓縮及擴展指令得利。舉例而言,在某些情形 0 中,將具有非共同條件的罕見元件壓縮成暫時記憶體空間 。將它們一起包裝儲存會增加計算密度。如此執行的一方 式是經由使用於下詳述的壓縮。在處理暫時記憶體空間( 或FIFO)之後,可以使用擴展以將這些罕見元回復至它 們的原始位置。擴展也被用以將被包裝成佇列的資料再展 開。 擴展 從擴展開始’擴展的執行會促使處理器根據寫入遮罩 運算元決定的主動元件而寫入從源運算元(記憶體或暫存 器運算元)至目的運算元(典型上,暫存器運算元)中的 (稀疏)資料元件位置之連續資料元件。此外,源運算元 的資料元件可以視它們的尺寸及資料元件在目的暫存器中 的尺寸而向上轉換。舉例而言,假使源運算元是記憶體運 算元且其資料元件是16位元大小且目的暫存器的資料元 件是3 2位元時,則要被儲存在目的地中的記憶體運算元 的資料元件被上轉成32位元。稍後將詳述上轉的實例及 201241744 它們如何被編碼成指令格式。 此指令的格式是「VEXPANDPS zmml {kl} zmm2/U ( mem)」,其中,zmml及zmm2分別是目的地兀和源向里 暫存器運算元(例如,128-、256-、512 -位元暫存器、等 等),kl是寫入遮罩運算元(例如16位元暫存器)、及 U ( mem )是源記憶體位置運算元。不論從記憶體中取出 什麼都是從記憶體位址啓始的總體連續位元且可以視目的 暫存器的大小(大小通常與目的地暫存器相同大小)而定 (128-、256-、512 -位元等等)。在某些實施例中,寫入 遮罩也是具有不同的大小(8位元、32位元、等等)。此 外,在某些實施例中,並非所有寫入遮罩的位元由指令( 舉例而言,僅有較低的八個最低效位元被使用)使用。當 然,VEXPANDPS是指令的運算碼。典型上,每一運算碼 是明確地定義於指令中。舉例而言,經由使用梢後說明的 例如「W」等資料粒度的標示,資料元件的大小可以被定 義於指令的「前置」中。在大部份的實施例中,W將標示 每一資料元件是3 2或64位元。假使資料元件的大小是3 2 位元,以及,源是5 1 2位元大小,則每一源有十六(1 6 ) 資料元件。 此指令一般是被寫入遮罩的,以致於僅有那些具有設 定在寫入遮罩暫存器(在上述實例中爲K1)中的對應位 元的那些元件會在目的地暫存器被修改。具有在寫入遮罩 暫存器中清楚的對應位元之目的地暫存器中的元件固持它 們的先前値。但是,當未使用寫入遮罩時(或是設定給全 -8- 201241744 部之寫入遮罩),此指令可以用於更高性能向量負載,其 中,對於記憶體參考將產生快取線分離具有高信心度。 擴展指令執彳了的實例顯不於圖1中。在本實例中,源 是被定址於RAX暫存器中找到的位址之記憶體。當然, 位址記憶體可以儲存在其它暫存器中或是在指令中立即找 到。本實例中的寫入遮罩顯示爲0x4DB 1。對於具有「1」 値之寫入遮罩的每一位元位置,來自記憶體源的資料元件 Q 儲存在對應位置處之目的地暫存器中。舉例而言,寫入遮 罩的第一位置(例如,k2[0]是「1」,標示對應的目的地 資料元件位置(例如,目的地暫存器的第一資料元件)將 具有來自源記憶體的資料元件儲存於其中。在此情形中, 其將被儲存作爲與RAX位址相關聯的資料元件。遮罩的 下三個位元是「〇」,標示目的地暫存器的對應資料元件 被獨自留下(在圖中顯示爲「Y」)。寫入遮罩中的下一 個「1」値是在第五位元位置(例如,k2[4])。這表示接 0 續於(連續於)與RAX暫存器相關聯的資料元件之後的 資料元件要被儲存在目的地暫存器的第五資料元件槽中。 其餘的寫入遮罩位元位置被用以決定記憶體源中還有那些 資料元件要被儲存在目的地暫存器中(在本實施例中,儲 存全部8個資料元件,但是,可以視寫入遮罩而有更少或 更多)。此外,在儲存於目的地中之前,來自記憶體源的 資料元件可以被上轉以配合例如從1 6位元浮點値至3 2位 元値的目的地之資料元件大小。已於上述中詳述上轉的實 例及如何將它們編碼成指令格式。因此,在某些實施中’ -9- 201241744 在擴展之,記憶體運算元的連續的資料元件被 圖2顯示以暫存器運算元作爲源的擴展指 例。類似於先前的圖,本實例中的寫入遮罩是 對於具有「1」値的寫入遮罩的每一位元位置 器源的資料元件儲存在對應位置處的目的地暫 例而言,寫入遮罩的第一位置(例如,k2[0]) 標示對應的目的地資料元件位置(例如目的地 一資料元件)將具有來自源暫存器的資料元件 。在此情形中,其將是源暫存器的第一資料元 下三個位元是「0」,標示目的地暫存器的對 獨自留下(在圖式中顯示爲「Y」)。寫入遮 個「1」値是在第五位元位置(例如,k2[4]) 續於(連續於)與源暫存器的第一儲存資料之 件要被儲存在目的地暫存器的第五資料元件槽 寫入遮罩位元位置被用以決定暫存器源中還有 件要被儲存在目的地暫存器中(在本實施例中 8個資料元件,但是,可以視寫入遮罩而有更 〇 圖3顯示執行擴展指令的虛擬碼的實例。 圖4顯示處理器中的擴展指令的使用實施 提取具有目的地運算元、源運算元(記憶體或 寫入遮罩、及偏移(假使被包含時)的擴展指 實施例中,目的地運算元是512位元向量暫 ZMM1 )且寫入遮罩是!6位元暫存器(例如 儲暫存器。 令的執行實 :0x4DB1 。 ,來自暫存 存器中。舉 是 Γ 1 j , 暫存器的第 儲存在其中 件。遮罩的 應資料元件 罩中的下一 。這表示接 後的資料元 中。其餘的 那些資料元 ,儲存全部 少或更多) 例。在401 暫存器)、 令。在某些 存器(例如 k 1 )。假使 -10- 201241744 有記憶體源運算元時’則其可以是儲存位址(或其部份) 或立即代表位址或其部份之暫存器。典型地’目的地及源 運算元具有相同的大小。在某些實施例中’它們都是512 位元大小。但是,在其它實施例中’它們都是例如1 2 8或 2 5 6位元的不同大小。 在403,將擴展指令解碼。取決於指令的格式,則各 式各樣的資料可以在此階段被解譯,舉例而言’是否要上 0 轉(或其它資料轉換)、哪些暫存器要被寫入或取出、什 麼記憶體位址來自源、等等。 在405,取出/讀取源運算元値。在部份的實施例中 ,此時,與記憶體源位置位址及連續的(後續的)位址( 和它們的資料元件)相關聯的資料元件被讀取。(例如, 整個快取線被讀取)。在實施例中,源爲暫存器被讀取。 假使有任何資料元件轉換要執行(例如上轉),則可 以在407執行。舉例而言,來自記憶體的1 6位元資料元 Q 件可以被上轉成3 2位元資料元件。 在409,由執行資源執行擴展指令(或例如微操作等 包含例如指令的操作)。此執行造成根據寫入遮罩的「主 動」元件(位元位置)以決定哪些來自源運算元的値要被 儲存作爲目的地中的稀疏資料元件。此決定的實例顯示於 圖1及2中。 在411,適當的源運算元的資料元件被儲存於對應於 寫入遮罩的「主動」元件之位置處的目的地暫存器中。再 度地,這個的實例顯示於圖1及2中。雖然409和411被 -11 - 201241744 分別顯示,但是’在某些實施例中,它們一起執行作爲指 令的執行的一部份。 圖5顯示處理擴展指令的方法之實施例。在本實施例 中,假定操作40 1 -407中的某些而非全部在之前已被執行 ,但是,它們未被顯示以免模糊下述的細節。舉例而言’ 未顯示提取及解碼’也未顯示運算元(源及寫入遮罩)取 出。 在501,決定在第一位元位置的寫入遮罩是否標示對 應的源位置是否應被儲存於目的地暫存器的對應資料元件 位置中。舉例而言,在第一位置的寫入遮罩是否具有例如 代表目的地暫存器的第一資料元件位置應由來自源的値覆 寫(在此情形中,經由源運算元存取之連續的資料元件的 第一資料元件)之「1」値? 當在第一位元位置的寫入遮罩未標示目的地暫存器中 應有改變時,則寫入遮罩中的下一位元位置將被評估且不 作改變。當在第一位元位置的寫入遮罩標不目的地之第一 資料元件位置中應有改變時,則在5 07中,將第一源資料 元件(例如,記億體位置或源暫存器的最低效資料元件) 被儲存於第一資料元件位置。取決於實施,在5 0 5,記憶 體資料元件被轉換成目的地的資料元件大小。這也可能發 生在501的評估之前。在511,將可被寫入目的地暫存器 之來自源的後續(連續的)資料元件準備好。 在513,決定評估的寫入遮罩位置是否是寫入遮罩的 最後位置或者目的地的所有資料元件位置是否已被塡充。 -12- 201241744 假使爲真,則操作結束。 假使爲假,則在515中寫入遮罩中的下一位元位置是 要被評估的》此評估發生於5 03且類似於501的決定’但 不是用於寫入遮罩的第一位元位置。假使決定爲是’則儲 存資料元件、等等(507、509、及511),以及假使決定 爲否,則在5 05,目的地之資料元件被獨自留下。 此外,雖然此圖及上述說明將各別的第一位置視爲最 ^ 低效位置,但是,在某些實施例中,第一位置是最尚效位 置。 壓縮 壓縮指令的執行造成處理器根據寫入遮罩運算元決定 的主動元件而將來自源運算元(典型上爲暫存器運算元) 資料元件儲存(包裝)於目的地運算元(記憶體或暫存器 運算元)中的連續元件中。此外,假使源是記憶體時,源 Q 運算元的資料元件可以視它們的大小及資料元件的尺寸爲 何而被下轉。舉例而言,假使記憶體運算元的資料元件是 1 6位元大小且源暫存器的資料元件是3 2位元時,則要被 儲存在記憶體中的暫存器的資料元件被下轉成1 6位元。 稍後將詳述下轉及它們如何被編碼成指令格式的實例。壓 縮的執行也可以被視爲產生邏輯上從元件對齊位址開始映 射的位元組/字/雙字串。當由遮罩禁能的元件未加至串 時’串的長度視寫入遮罩而定。壓縮典型上用於壓縮稀疏 資料成佇列。此外,未使用寫入遮罩(或是對所有設定的 -13- 201241744 寫入遮罩),其用於更高的性能向量,其中,對於記憶體 參考將產生快取線分離具有高信心度。 此指令的格式是「VCOMPRESSPS zmm2/mem{kl},D (zmm 1 )」,其中,zmml和zmm2分別是源和目的地向 量暫存器運算元(例如128-、246-、512 -位元暫存器)’ kl是寫入遮罩運算元(例如16位元暫存器)、及mem是 記憶體位置。對於包含在指令中的記億體運算元也有偏移 。儲存至記憶體的是始於記憶體位址之總體的連續位元且 可以是數個大小(128-、256-、512-位元、等等)中之一 。在某些實施例中,寫入遮罩也具不同的大小(8位元、 3 2位元、等等)。此外,在某些實施例中,並非所有寫入 遮罩的位元由指令使用(舉例而言,僅有較低的8個最低 效位元被使用)。當然,VCOMPRESSPS是指令的運算碼 。典型地,每一運算元被明確地定義於指令中。資料元件 的大小可以被定義於指令的「前置碼」中,舉例而言,經 由使用此處說明的例如「W」等資料粒度的標示,資料元 件的大小可以被定義於指令的「前置碼」中。在大部份的 實施例中,W將標示每一資料元件是32或64位元。假使 資料元件的大小是3 2位元,以及,源是5 1 2位元大小, 則每一源有十六(1 6 )資料元件。 處理器中壓縮指令的執行實例顯示於圖6中。在本實 例中,目的地記憶體被定址在與RAX暫存器中發現的位 址相關聯的位置處。當然,記憶體位置可以儲存在其它位 置中或在指令中立即找到。本實例中的寫入遮罩顯示爲 -14- 201241744 0x4DBl。對於具有「1」値之寫入遮罩的每一·情形,來自 源(例如ZMM暫存器)的資料元件連續地儲存(包裝) 在記憶體中。舉例而言,寫入遮罩的第一位置(例如, k2[0]是「1」,標示對應的源資料元件位置(例如,源暫 存器的第一資料元件)應被寫入至記憶體中。在此情形中 ,其將被儲存作爲與RAX位址相關聯的資料元件。遮罩 的下三個位元是「〇」,標示源暫存器的對應資料元件未 0 被儲存在記憶體中(在圖中顯示爲「Y」)。寫入遮罩中 的下一個「1」値是在第五位元位置(例如,k2 [4])。這 表示接續於(連續於)與RAX暫存器相關聯的資料元件 之後的資料元件是具有儲存於其中的源暫存器的第五資料 元件槽。其餘的寫入遮罩位元位置被用以決定源暫存器中 還有那些資料元件要被儲存在記憶體中(在本實施例中, 儲存全部8個資料元件,但是,可以視寫入遮罩而有更少 或更多)。此外,在儲存之前,來自暫存器源的資料元件 可以被下轉以配合例如從32位元浮點値至1 6位元値的記 憶體之資料元件大小。 圖7顯示處理器中壓縮指令之執行之另一實例。在此 實例中,該目的地是一暫存器。在本實例中的寫入遮罩再 度爲0x4DBl。對於具有「1」値之寫入遮罩的每一情形, 來自源(例如ZMM暫存器)的資料元件連續地儲存(包 裝)在目的地暫存器中。舉例而言,寫入遮罩的第一位置 (例如,k2 [0]是^ 1」,標示對應的源資料元件位置(例 如,源暫存器的第一資料元件)應被寫入至目的地暫存器 -15- 201241744 中。在此情形中,其將被儲存作爲目的地暫存器的第一資 料元件。遮罩的下三個位元是「〇」,標示源暫存器的對 應資料元件未被儲存在目的地暫存器中(在圖中顯示爲「 Y」)。寫入遮罩中的下一個「1」値是在第五位元位置( 例如,k2 [4])。這表示接續於(連續於)第一資料元件之 後的資料元件是具有儲存於其中的源暫存器的第五資料元 件槽。其餘的寫入遮罩位元位置被用以決定源暫存器中還 有那些資料元件要被儲存在目的地暫存器中(在本實施例 中,儲存全部8個資料元件,但是,可以視寫入遮罩而有 更少或更多)。 圖8顯示用於執行擴展指令的虛擬碼的實例。 圖9顯示在處理器中使用壓縮指令的實施例。在901 ,提取具有目的地運算元、源運算元、及寫入遮罩的壓縮 指令。在某些實施例中,源運算元是512位元向量暫存器 (例如ZMM1 )且寫入遮罩是1 6位元暫存器(例如U ) 。目的地可以是儲存在暫存器中的記憶體位置或是立即位 置、或是暫存器運算元。此外,壓縮指令可以包含用於記 憶體位址的偏移。 在903,將壓縮指令解碼。取決於指令的格式,則各 式各樣的資料可以在此階段被解譯,舉例而言,是否要下 轉、哪些暫存器要被寫入或取出、什麼記憶體位址來自目 的地運算元(及偏移,假使有的話)、等等。 在905,取出/讀取源運算元値。舉例而言,讀取至 少源暫存器的第一資料元件。 -16- 201241744 假使有任何資料元件轉換要執行(例如下轉) 以在907執行。舉例而言,來自暫存器的32位元 件可以被下轉成1 6位元資料元件。 在909,由執行資源執行壓縮指令(或例如微 包含例如指令的操作)。此執行造成根據寫入遮罩 動」元件(位元位置)以決定那些來自源運算元的 載入作爲目的地中的稀疏資料元件。此分析的實例 圖6中。 在911,對應於寫入遮罩的「主動」元件之適 運算元的資料元件被儲存於目的地中。再度地,這 例顯示於圖6及7中。雖然909和911被分別顯示 ,在某些實施例中,它們一起執行作爲指令的執行 份。 圖1 〇顯示處理壓縮指令的方法之實施例的例 本實施例中,假定操作90 1 -907中的某些而非全部 已被執行’但是,它們未被顯示以免模糊下述的細 例而言’未顯示提取及解碼,也未顯示運算元(源 遮罩)取出。 在1001,決定在第一位元位置的寫入遮罩是否 應的源資料元件是否應被儲存於目的地運算元標示 地位置(最低效位置)中。舉例而言,在第一位置 是否具有例如代表源暫存器的第一資料元件位置應 記憶體之「1」値? 當在第一位元位置的寫入遮罩未標示目的地中 ,則可 資料元 操作等 的「主 値要被 顯示於 當的源 個的實 ,但是 的一部 子。在 在之前 節。舉 及寫入 標示對 的目的 的遮罩 被寫入 應有改 -17- 201241744 變時(第一資料元件應維持不被源暫存器的第一資料元件 改變)’則寫入遮罩中的下一位元位置將被評估(假使有 一位元位置)且不作改變。當在第一位元位置的寫入遮罩 標示目的地之該第一資料元件位置中應有改變時,則在 1007中’將源資料元件儲存在目的地的第—資料元件位置 中。取決於實施,在1 005,源資料元件被轉換成目的地的 資料元件大小。這也可能發生在1001的評估之前。在 1009’將可被寫入之後續的(連續的)目的地位置準備好 〇 在1011,決定評估的寫入遮罩位置是否是寫入遮罩的 最後位置或者目的地的所有資料元件位置是否已被塡充。 假使爲真’則操作結束。假使爲假,則在1 〇 1 3中寫入遮 罩中的下一位元位置是要被評估的。此評估發生於1〇〇3 且類似於1 00 1的決定,但不是用於寫入遮罩的第一位元 位置。假使決定爲是,則儲存資料元件、等等。(1〇〇5、 1 007、及 1 009 )。 此外’雖然此圖及上述說明將各別的第一位置視爲最 低效位置’但是’在某些實施例中,第一位置是最高效位 置。 具體實施之上述詳述的指令實施例可以以下述詳述的 「同屬向量友善指令格式」來具體實施。在其它實施例中 ’未使用此格式’而是使用另一指令格式,但是,寫入遮 罩暫存器、各式各樣的資料轉換(拌和、廣播、等等)、 定址、等等下述說明大致上可應用至上述(指令的)實施 -18 - 201241744 例的說明。此外,舉例說明的系統、架構、及管線詳述於 下。可在例如系統、架構、及管線等等之上,執行上述指 令的實施例,但不限於那些細節。 向量友善指令格式是適用於向量指令的指令格式(例I 如,有某些特定向量操作的領域)。雖然說明向量及純量 操作由向量友善指令格式支援的實施例,但是,替代實施 例僅使用向量友善指令格式的向量操作。
舉例說明的同屬向量友善指令格式一圖11A-B 圖11A-B是方塊圖,顯示根據發明的實施例之同屬向 量友善指令格式及其指令樣板。圖11A是方塊圖,顯示根 據發明的實施例之同屬向量友善指令格式及其等級A指令 樣板;而圖11B是方塊圖’顯示根據發明的實施例之同屬 向量友善指令格式及其等級B指令樣板。具體而言,等級 A及等級B指令樣板定義之同屬向量友善指令格式1100 Q 都包含無記憶體存取11〇5指令樣板及記憶體存取1120指 令樣板。向量友善指令格式的內文中的同屬一詞意指未被 繫結至任何特定指令集的指令格式。雖然將說明向量友善 指令格式的指令對源自暫存器(無記憶體存取Π05指令 樣板)或暫存器/記憶體(記憶體存取1 1 20指令樣板) 之向量操作的實施例’但是’發明的替代實施例可以僅支 援這些中之一。而且’雖然將說明有向量指令格式的載入 及儲存資料的發明實施例,但是,替代實施例可以替代地 或增加地具有將向量移進及移出暫存器之不同指令格式的 -19- 201241744 指令(例如,從記憶體至暫存器中,從暫存器至記 ,在暫存器之間)。此外,雖然將說明支援二種等 令樣板的發明實施例,但是,替代實施例可以支援 的僅一者或二者以上。 雖然將說明向量友善指令格支援下述的發明實 具有3 2位元(4位元組)或64位元(8位兀組) 件寬度(或大小)的64位元組向量運算元長度( )(因此,16個雙字大小元件或者8個四字大小元 的64位元組向量);具有16位元(2位元組)或 (1位元組)資料元件寬度(或大小)的64位元組 算元長度(或大小):具有3 2位元(4位元組)、 元(8位元組)、16位元(2位元組)或8位元( 組)資料元件寬度(或大小)的3 2位元組向量運: 度(或大小):以及,具有3 2位元(4位元組)、 元(8位元組)、16位元(2位元組)或8位元( 組)資料元件寬度(或大小)的16位元組向量運: 度(或大小);或者;但是,替代實施例可以支援 多、更少、或不同的資料元件寬度(例如,1 2 8位: 位元組)資料元件寬度)之更多、更少及/或不同 算元大小(例如1 1 5 6位元組向量運算元)。 圖11A中的等級A指令樣板包含:1)在無記 取1 1 0 5指令樣板之內,有顯示無記憶體存取、全 制型操作1 1 1 0指令樣板以及無記憶體存取、資料 操作1 1 1 5指令樣板;以及2 )在記憶體存取1 i 20 憶體中 級的指 這些中 施例: 資料元 或大小 件組成 8位元 向量運 64位 1位元 算元長 64位 1位元 算元長 具有更 元(1 6 向量運 憶體存 修整控 轉換型 指令樣 -20- 201241744 板之內,有顯示記憶體存取、暫時π 2 5指令樣板以及記 憶體存取' 非暫時1 1 30指令樣板。圖1 1B中的等級B指 令樣板包含:1)在無記憶體存取11〇5指令樣板之內,有 顯示無記憶體存取、寫入遮罩控制、部份修整控制型操作 1 1 12指令樣板以及無記憶體存取、寫入遮罩控制、vsize 型操作1 1 1 7指令樣板;以及2)在記億體存取1 1 2 0指令 樣板之內,有顯示記憶體存取、寫入遮罩控制1 1 2 7指令 樣板。 格式 同屬向量友善指令格式1100包含圖11A-B中依序顯 示的下述列出之欄位。 格式欄位1140 -此欄位中的特定値(指令格式識別値 )獨特地識別向量友善指令格式,因此,在指令串中發生 向量友善指令格式的指令。因此,格式欄位1140的內容 Q 區別第一指令格式的指令發生與其它指令格式的指令發生 ,藉以允許將向量友善指令格式導入至具有其它指令格式 的指令集中。如此,對於僅具有同屬向量友善指令格式的 指令集而言是不需要的情形中,此欄位是選加的。 基礎操作欄位1142 -其內容區別不同的基礎操作。如 同稍後所述般,基礎操作欄位1142可以包含及/或是部 份運算碼欄位。 暫存器索引欄1144-其內容直接或經由位址產生而指 定源和目的地運算元的位置在暫存器或記憶體中。這些包 -21 - 201241744 含足夠數目的位元以從PxQ (例如32x1312)暫存器檔案 中選取N個暫存器。雖然在一實施例中,N可以可達三個 源及一個目的地暫存,但是,替代實施例可以支援更多或 更少的源以及目的地暫存器(例如,可以支援高達二個源 ’這些源中之一也作爲目的地,可以支援高達三個源,這 些源中之一也作爲目的地,可以支援高達二個源及一目的 地)。雖然在一實施例中P = 32,但是,替代實施例可以 支援更多或更少暫存器(例如,16)。雖然在一實施例中 Q= 1 3 1 2位元,但是,替代實施例可以支援更多或更少位 元(例如,1 2 8、1 0 2 4 )。 修改器欄位Π 46 -其內容區別指定記體存取的同屬向 量指令格式的指令發生與未指定記體存取的同屬向量指令 格式的指令發生;亦即,在無記憶體存取1 1 0 5指令樣板 與記憶體存取1 120指令樣板之間區別。記憶體存取操作 讀取及/或寫至記憶體層級結構(在某些情形中使用暫存 器中的値指定源及/或目的地位址),而非記憶體存取操 作未如此作(例如’源及目的地是暫存器)。雖然在一實 施例中’此欄位也在三個不同方式中之間選取以執行記憶 體位址計算,但是,替代實施例可以支援更多、更少、或 不同的方式以執行記憶體位址計算。 擴增操作欄1 1 5 0 -其內容區別各種不同操作中哪一操 作除了基礎操作之外也要被執行。此欄位是內容特定的。 在發明的一實施例中,此欄位被分成等級欄位1 1 6 8、阿爾 發欄位1 1 5 2、貝他欄位1 1 5 4。擴增操作欄位允許共同組 -22- 201241744 的操作在單一指令中而不是在2、3或4指令中被執行。 下述是使用擴增欄位1150以降低所需指令的數目的之指 令的某些實例(此處將更詳細說明其術語)。
習知的指令序列 根據發明實施例的指令序列 vaddps ymmO, ymml, ymm2 vaddps zmmO, zmml, zmm2 vpshufd ymm2, ymm2# 0x55 vaddps ymmO, ymml, ymm2 vaddps zmmO, zmml, zmm2 {bbbb} vpmovsxbd ymm2/ [rax] vcvtdq2ps ymm2/ymm2 vaddps ymmO, ymml, ymm2 vaddps zmmO, zmml, [rax]{sint8} vpmovsxbd ymm3, [rax] vcvtdq2ps ymm3,ymm3 vaddps ymm4, ymm2, ymm3 vblendvps ymml, ymm5, ymml, ymm4 vaddps zmml{k5}, zmm2# [rax]{sint8} vmaskmovps ymml, ymm7, [rbx] vbroadcastss ymmO, [rax] vaddps ymm2, ymmO, ymml vblendvps ymm2, ymm2, ymml, ymm7 vmovaps zmml {k7}, [rbx] vaddps zmm2{k7}{z}, 2mm!, [rax]{ltoN} 其中,[rax]是用於位址產生的基礎指標,其中,{}標 示由資料操縱欄位(稍後更詳細說明)指定的轉換操作。 比例欄位1 1 60 -其內容允許用於記憶體位址產生的索 引欄位的內容比例化(例如,用於使用2seale*index + baSe 的位址產生)。 -23- 201241744 位移欄位1 1 62 A -其內容作爲部份記憶體位址產生( 例如,用於使用 2seale*index + base + displacement 的位址產 生)。 位移因數欄位1 1 62B (注意,位移欄位1 1 62A直接毗 連在位移因數欄位1162B上標示一或另一者被使用)一其 內容作爲部份位址產生;其指定位移因數要依記憶體存取 (N )的大小而比例化-其中,N是記憶體存取中的位元 組數目(例如,用於使用 2seaIe*index + base + scaled displacement 的位址產生)。冗餘的較低階位元被忽略,因此,位移因 數欄的內容乘以記憶體運算元全部尺寸(N )以產生計算 有效位址時使用的最後位移。根據全運算碼欄位1 1 74 (稍 後說明)及稍後說明的資料操縱欄位1 1 5 4 C,在執行時由 處理器硬體決定N的値。在位移欄位1162A及位移因數 欄位1162B不用於無記憶體存取11〇5指令樣板及/或不 同實施例僅實施二者中之一或不實施二者的情形中,它們 是選加的。 資料元件寬度欄位1 1 6 4 ~其內容區別一些資料元件寬 度中的哪一寬度是要被使用(在某些實施例中對所有指令 :在其它實施例中僅對某些指令)。在假使使用運算碼的 某些態樣而僅有一資料元件寬度被支援及/或資料元件寬 度被支援時不需要此欄位的情形中,此欄位是選加的。 寫入遮罩欄位U70-其內容以每一資料元件位置爲基 礎而控制目的地向量運算元中的資料元件位置是否反應基 礎操作及擴增操作。等級A指令樣板支援合倂寫入遮罩, -24- 201241744 而等級B指令樣板支撐合倂及零化寫入遮罩。當合倂時, 向量遮罩允許目的地中任何組的元件在任何操作的執行期 間受保護(由基礎操作及擴增操作指定)而免於更新;在 其它的一實施例中,保留對應的遮罩位元具有0之目的地 的每一元件的舊値。相反地,當零化向量遮罩允許目的地 中的任何組的元件在任何操作(由基礎操作及擴增操作指 定)執行期間零化時;在一實施例中,當對應的遮罩位元 0 具有〇値時,目的地的元件被設定爲0。此功能的子集合 是控制執行的操作的向量長度之能力(亦即,被修改的元 件的跨幅,從第一至最後一個):但是,被修改的元件不 —定是連續的。如此,寫入遮罩欄π 70允許部份向量操 作,包含載入、儲存、算術、邏輯、等等。而且,此遮罩 可以用於故障抑制(亦即,藉由遮罩目的地的資料元件位 置以防止接收可能/將造成故障的任何操作的結果-例如 ,假定記憶體存取中的向量越過頁邊界以及第一頁但不是 Q 第二頁將造成頁故障,假使位於第一頁上的向量之所有資 料元件由寫入遮罩遮蓋時,忽略頁故障)。此外,寫入遮 罩允許含有某些型式的條件陳述之「向量化迴路」。雖然 說明寫入遮罩欄位1170的內容選取一些含有要被使用的 寫入遮罩之寫入遮罩暫存器中之一(因此,寫入遮罩欄位 1 1 70的內容間接地識別要被執行的遮罩)的發明實施例, 但是,替代實施例取代地或增加地允許遮罩寫入欄位1 1 70 的內容直接指定要被執行的遮罩。此外’當下述情形時, 零化允許性能增進:1 )由於暫存器重新命名管線階段期 -25- 201241744 間,所以,對目的地運算元也不是源的指令(也稱爲非三 元指令)使用暫存器更名’目的地不再是不明確的源(由 於不是操作的結果之任何資料元件(任何被遮罩的資料元 件)將被零化’所以’沒有來自目前目的地暫存器的資料 元件需要被複製至被重新命名的目的地暫存器、或是而伴 隨著操作有點被載送;以及,2)由於零正被寫入而回寫 的階段期間。 立即欄位1 1 72 -其內容允許立即性的規格。在此欄位 未出現在未支援立即性的同屬向量友善格式實施中以及其 未出現在未使用立即性的指令中之情形中,此欄位是選加 的。 指令樣板等級選取 等級欄位1 1 6 8 -其內容區別指令的不同等級。參考圖 2A-B ’此欄位的內容在等級a與等級B指令之間選取。 在圖11A-B中’經過整修的角落方形被用以標示特定値存 在於欄位中(例如,分別在圖1 1 A-B中用於等級欄位 1168的等級A 1168A及等級B 1168B)。 等級A的非記憶體存取指令樣板 在等級A的非記憶體存取n 〇 5指令樣板的情形中, 阿爾發欄位1 1 52被解譯爲rS欄位丨丨52A,其內容區別不 同的擴增操作型式中哪一型式是要被執行(例如,整修 1152A.1及資料轉換n52A 2分別被指定用於無記憶體存 -26- 201241744 取、整修型式操作1110及無記憶體存取、資料轉換型式 操作1115指令樣板),而貝他欄位1154區別被指定的型 式的操作中那一操作是要被執行。在圖11中,經過整修 的角落塊被用以標示特定値存在(例如,在修改器欄位 1 146中無記憶體存取1 146A ;用於阿爾發欄位1 152/rs欄 位1 152 A的整修1 152A.1及資料轉換1 152A.2 )。在無記 憶體存取1 1 〇 5指令樣板中,比例欄位1 1 60、位移欄位 1 162A及位移比例欄位1 162B不存在。 無記憶體存取指令樣板-完全整修控制型操作 在無記億體存取完全整修控制型操作1 1 1 0指令樣板 中,貝他欄位1 154被解譯爲整修控制欄位1 154A,其內 容提供靜態整修。雖然在上述的發明實施例中,整修控制 欄位1154A包含抑制所有浮點例外(SAE)欄位1156及 整修操作控制欄位1 1 5 8,但是,替代實施例可以支援將這 二槪念編碼成相同欄位或是僅具有這些槪念/欄位中之一 或另一者(例如,可以僅具有整修操作控制欄位1 1 5 8 )。 SAE欄位1 1 56 -其內容區別是否將例外事件報告禁能 :當SAE欄位的1 1 5 6內容標示抑制被賦能時,給定的指 令不報告任何種類的浮點例外旗標及不引起任何浮點例外 處理器。 整修操作控制欄位1 1 5 8 -其內容區別整修操作組中何 者要執行(例如,向上整修、向下整修、朝向零整修及整 修至最近)。因此’整修操作控制欄位1 i 5 8允許根據每 -27- 201241744 一指令來改變整修模式’因此’當需要此點時,整修操作 控制欄位1 1 5 8特別有用。在處理器包含用於指定整修模 式的控制暫存器之發明的一實施例中,整修操作控制欄位 1 1 50的內容撤銷該暫存器値(能夠選擇整修模式而不必對 此控制暫存器執行儲存-修改一恢復,這是有利的)。 無記憶體存取指令樣板-資料轉換型式操作 在無記憶體存取資料轉換型式操作111 5指令樣板中 ,貝他欄位1 154被解譯爲資料轉換欄位〗154B,其內容 區別一些資料轉換中何者要被執行(例如,無資料轉換、 拌和、廣播)。 等級A的記憶體存取指令樣板 在等級A的記憶體存取1 1 20指令樣板的情形中,阿 爾發欄位1 152被解譯爲逐出暗示欄位1 i52B,其內容區 別逐出暗示中之一是要被使用(在圖11A中,暫時 1152B.1及非暫時i ι52Β·2分別被指定用於記憶體存取、 暫時1 1 25指令樣板以及記憶體存取、非暫時丨丨30指令樣 板)’而貝他欄位1154被解譯爲資料操縱欄位1154C, 其內容區別一些資料操縱操作(也稱爲原始)中何者是要 被執行(例如,無操縱;廣播;源的上轉;及目的地的下 轉)。記憶體存取1 1 20指令樣板包含比例欄位1 1 60,且 選加地包含位移欄位1 1 62A或位移比例欄位1 1 62B。 藉由轉換支援,向量記憶體指令對記憶體執行向量載 -28- 201241744 入及向量儲存。與正常的向量指令一般,向量記憶體指令 以資料元件方式對記憶體傳輸資料,而真正被傳送的元件 是由被選爲寫入遮罩的向量遮罩的內容指定。在圖ΠΑ中 ,被用以標示特定値之經過整修的角落方形存在於欄位中 (例如,用於修改器欄位1 146的記憶體存取1 146B ;用 於阿爾發欄位1152/逐出暗示欄位1152B之暫時1152B.1 及非暫時1 152B.2 )。 〇 記憶體存取指令樣板-暫時 暫時資料是容易足夠快再被使用而從快取獲利之資料 。但是,亦即是暗示,以及,不同的處理器可以以不同方 式實施它,包含完全忽略暗示。 記憶體存取指令樣板_非暫時 非暫時資料是不容易足夠快再被使用以從第一層快取 Q 記億體中的快取獲利之資料’且應被授予逐出優先權。但 是,亦即是暗示,以及,不同的處理器可以以不同方式實 施它,包含完全忽略暗示。 等級B的指令樣板 在等級B的指令樣板的情形中,阿爾發欄位1 1 52被 解譯爲寫入遮罩控制(Z )欄位1 1 52C,其內容區別由寫 入遮罩欄位117〇控制的寫入遮罩是否應爲合倂或零化。 -29- 201241744 等級B的非記憶體存取指令樣板 在等級B的非記憶體存取1 1 〇 5指令樣板的情形中, 部份貝他欄位1 154是被解譯爲RL欄位1 157A,其內容區 別不同的擴增操作型式中何者是要被執行(例如,整修 1157A.1以及向量長度(VSIZE) 1157A.2分別被指定用於 無記憶體存取、寫入遮罩控制、部份整修控制型操作1 1 1 2 指令樣板以及無記憶體存取、寫入遮罩控制、VSIZE型操 作1 1 1 7指令樣板),而貝他欄位1 1 5 4的其餘部份區別那 一具有指定型式的操作是要被執行。在圖11中,被用以 標示特定値之經過整修的角落塊存在(例如,修改器欄位 1146中的無記憶體存取1146A;用於RL欄位1157A的整 修1 157A.1及VSIZE 1 157A.2 )。在無記憶體存取i 105指 令樣板中,比例欄位1 1 60、位移欄位1 1 62A、及位移比例 欄位1 1 6 2 B不存在。 無記憶體存取指令樣板-寫入遮罩控制、部份整修控 制型操作 在無記憶體存取中’寫入遮罩控制、部份整修控制型 操作1 1 1 0指令樣板、貝他欄位n 5 4的其它部份被解譯爲 整修操作欄位1 1 59A且例外事件報告被禁能(被給定的指 令不報告任何種類的浮點例外旗標及不引起任何浮點例外 處理器)。 整修操作控制欄fu 1 1 5 9 A -正如同整修操作控制欄位 1 1 58般’其內容區別整修操作組中何者要執行(例如,向 -30- 201241744 上整修、向下整修、朝向零整修及整修至最近)。因此, 整修操作控制欄位1 1 5 9 A允許根據每一指令來改變整修模 式,因此,當需要此點時,整修操作控制欄位1 1 5 9 A特別 有用。在處理器包含用於指定整修模式的控制暫存器之發 明的一實施例中,整修操作控制欄位π 50的內容撤銷該 暫存器値(能夠選擇整修模式而不必對此控制暫存器執行 儲存-修改-恢復,這是有利的)。 Ο 無記憶體存取指令樣板-寫入遮罩控制,VSIZE型操 作 在無記憶體存取、寫入遮罩控制,VSIZE型操作1 1 17 指令樣板中,貝他欄位1 1 54的其餘部份被解譯爲向量長 度欄位1 1 59B,其內容區別要對哪一資料向量長度執行( 例如,1 2 8、1 1 5 6、或1 3 1 2位元組)。 Q 等級B的記憶體存取指令樣板 在等級B的記憶體存取1 i 20指令樣板的情形中,部 份貝它欄位1 1 5 4被解譯爲廣播欄位1 1 5 7B,其內容區別 廣播型資料操縱操作是否要被執行,而貝它欄位1154中 的其它部份被解譯爲向量長度欄位1159B。記憶體存取 1 1 2 0指令樣板包含比例欄位1丨6 〇,以及,選加地包含位 移欄位1162A或是配移比例欄位1162B。 關於欄位的其它評論 -31 - 201241744 關於同屬向量友善指令格式11〇〇’完全運算碼欄位 11 74顯示爲包含格式欄位1140、基礎操作欄位1142、及 資料元件寬度欄位1164。雖然顯示完全運算碼欄位1174 包含所有這些欄位的一實施例,但是’在未支援所有它們 的實施例中,完全運算碼欄位1 1 74包含小於所有這些欄 位的欄位。完全運算碼U74提供操作碼。 擴增操作欄位1 1 5 0、資料元件寬度欄位1 1 6 4、及寫 入遮罩欄位1170允許根據每一同屬向量友善指令格式的 指令來指定這些特點。 寫入遮罩欄位及資料元件寬度欄位的結合會產生型式 化的指令,其中,它們允許根據不问的資料兀件寬度來施 加遮罩。 由於指令格式根據其它欄位的內容而爲了不同目的再 使用不同的欄位,所以,它需要相當小量的位元。舉例而 言,一態樣是修改器欄位的內容在圖1 1 A-B上的無記憶體 存取1105指令樣板與圖HA-B上的記億體存取1 250指令 樣板之間選擇;而等級欄位1 1 6 8的內容在圖1 1 A的指令 樣板1 1 10/1 1 15與圖1 1B的指令樣板1 1 12/1 1 17之間的那 些非記憶體存取1 1 〇5指令樣板之內選擇;以及’等級欄 位1168的內容在圖11A的指令樣板1125/1130與圖11B 的指令樣板1 127之間的那些記憶體存取1 120指令樣板之 內選擇。從另一態樣’等級欄位1 1 6 8的內容在圖1 1 A及 1 1 B分別的等級A與等級B指令樣板之間選擇;修改器欄 位的內容在圖1 1 A的指令樣板1 1 0 5與Π 2 〇之間的那些等 -32- 201241744 級A指令樣板之內選擇;以及,修改器欄位的內容在圖 1 1 B的指令樣板1 1 05與1 1 20之間的那些等級B指令樣板 之內選擇。在標示等級A指令樣板的等級欄位的情形中, 修改器欄位1146的內容選擇阿爾發欄位1152的解譯(在 rs欄位1 1 5 2 A與EH欄位1 1 52B之間)。以相關方式,修 改器欄位1146及等級欄位1168選擇阿爾發欄位是否要被 解譯爲rs欄位1152A、EH欄位1152B、或是寫入遮罩控 0 制(Z )欄位1 1 52C。在標示等級A無記憶體存取操作的 等級及修改器欄位的情形中,擴增欄位的貝他欄位的解譯 根據rs欄位的內容而改變;而在標示等級B無記憶體存 取操作的等級及修改器欄位的情形中,貝他欄位的解譯視 RL欄位的內容而定。在標示等級A記憶體存取操作的等 級及修改器欄位的情形中,擴增欄位的貝他欄位的解譯根 據基礎操作欄位的內容而改變;而在標示等級B記憶體存 取操作的等級及修改器欄位的情形中,擴增欄位的貝他欄 Q 位的廣播的欄位H57B根據基礎操作欄位的內容而改變。 因此,基礎操作欄位、修改器欄位及擴增操作欄位的結合 允許更加寬廣的各式各樣擴增操作被指定。 等級A及等級B之內發現的各種指令樣板在不同的情 形中是有利的。當爲了性能原因而需要零化寫入遮罩或更 小的向量長度時,等級A是有用的。舉例而言’由於我們 不再需要人造地與目的地合倂,所以當使用重新命名時’ 零化允許避免僞造相依性;關於另一實例’當以向量遮罩 仿真更短的向量大小時,向量長度控制使得儲存一載入遞 -33- 201241744 送議題變得容易。當希望執行下述時,等級B是有用的: 1 )允許浮點例外(亦即,當SAE欄位的內容標示無時) 並同時使用整修模式控制時;2 )能夠使用上轉、拌和、 調換、及/或下轉;3 )對圖形資料型式操作。舉例而言 ,上轉、拌和、調換、下轉、及圖型資料型式降低與不同 格式的源工作時所要求的指令數目;關於另一實例,允許 例外的能力提供與整修模式有關的完整的IEEE相容性。 舉例說明的特定向量友善指令格式 圖1 2 A - C顯示根據本發明的實施例之舉例說明的特定 向量友善指令格式。圖12A-C顯示特定向量友善指令格式 1 2 0 0,其在指定欄位的位置、大小、解譯、及次序、以及 用於那些欄位中的某些欄位之値的情形中是特定的。特定 向量友善指令格式1 200可以被用以延伸χ86指令集,因 而某些欄位類似於或同於現有的X86指令集中使用的欄位 以及其延伸(例如,AVX )。此格式維持與具有延伸的現 存X 8 6指令集的前置編碼欄位、真實運算碼位元組欄位、 MOD R/M欄位、SIB欄位、位移欄位、及立即欄位一致。 顯示來自圖12A-C的欄位映射來自圖1 1的欄位。 應瞭解,雖然在同屬向量友善指令格式1100的內容 中爲了說明而參考特定向量友善指令格式1200,以說明發 明的實施例,但是,本發明不侷限於特定向量友善指令格 式1 200,除非特別申明。舉例而言,同屬向量友善指令格 式Π 00慮及用於各種欄位的各種可能大小,而特定向量 -34- 201241744 友善指令格式1200顯示爲具有特定大小的欄位。具體舉 例而言,雖然資料元件寬度欄位1164在特定向量友善指 令格式12〇0中顯不爲一位元欄位,但是,本發明不限於 此(亦即,同屬向量友善指令格式1 1 〇〇慮及資料元件寬 度欄位1 1 6 4的其它大小)。
格式—圖12A— C 0 同屬向量友善指令格式1100包含依圖1 2A-C中所示 的次序而於下列出的下述欄位。 EVEX Prefix (位元組 0-3 ) EVEX Prefix 1202 —以四位元組形式編碼 格式欄位1 140 ( EVEX位元組0,位元[7:0])-第一 位元組(EVEX位元組0 )是格式欄位1 140以及其含有 0x62 (用於區別發明的一實施例中向量友善指令格式的獨 Q 特値)。 第二一第四位元組(EVEX位元組1-3 )包含提供特 定能力的一些位元欄位。 REX欄位 1 205 ( 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位元欄位相同的功 能性,且使用Is互補形式來編碼,亦即,ZMMO被編碼 -35- 201241744 爲1 1 1 IB,ZMM15被編碼爲0000B。如同此技術中所知般 ,指令的其它欄位將暫存器索引的較低的三個位元編碼( rrr,XXX,及 bbb),以致於藉由加上 E V E X · R、E V E X. 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/Μ欄(下述)中未接受MOD欄位中1 1 的値;發明的替代實施例未以反轉格式儲存此位元及下述 其它標示的位元。1的値用以將下1 6暫存器編碼。換言之 ,藉由結合來自其它欄位的 EVEX.R,、EVEX.R、及其它 RRR 以形成 R’Rrrr。 運算碼映射欄位1215 ( EVEX位元組1,位元[3:0]-mmmm )-它的內容將暗指的領先運算碼位元組(OF, 0F 38,或OF 3)編碼。 資料元件寬度欄位1 164 ( EVER位元組2,位元[7]-W )—由記號EVEX.W表示。EVEX.W用以界定資料型式( 3 2位元資料元件或64位元資料元件)的粒度(大小)。 EVEX. WW 1220 (EVEX 位元組 2,位元[6:3]-vvvv) —EVEX. vvvv的角色可以包含下述:1) EVEX.vvvv將以 反轉(Is互補)形式指定的第一源暫存器運算元編碼,且 -36- 201241744 對於具有2或更多源運算元的指令是有效的;2) EVEX.vvvv將對某些向量偏移以is互補形式指定的目的 地暫存器運算元編碼;或者3) EVEX.vvvv未將任何運算 元編碼,欄位被保留且應含有1 1 1 lb。因此,EVEX.vvvv 欄位1 220將依反轉(Is互補)形式儲存的第一源暫存器 指定器的4下階位元編碼。取決於指令,額外的不同 EVEX位元欄位被用以延伸指定器大小至32暫存器。
〇 EVEX.U 1 168等級欄位(EVEX位元組2,位元[2]-U )-假使EVEX.U = 0,則其標示等級A或EVEX.U0 ;假使 EVEX.U=1,貝丨J其標示等級B或EVEX.U1。 前置編碼欄位1225 (£乂丑乂位元組2,位元[1:0]-口口) -提供增加的位元用於基礎操作欄位。除了提供支援給 EVEX前置格式的舊有SSE指令,這也具有使SIMD前置 小巧化(而非要求位元組來表示SIMD前置,EVEX前置 僅要求2位元)的優點。在一實施例中,爲了支援以舊有 Q 格式及EVEX前置格式等二各式使用SIMD前置(66H、 F2H、F3H)之舊有SSE指令,這些舊有SIMD前置被編 碼成SIMD前置編碼欄位;以及,在被提供給解碼器的 PLA (以致於PLA可以執行這些舊有指令的舊有及EVEX 等二格式而不用修改)之前,在執行時被擴展成舊有 SIMD前置。雖然較新的指令可以直接使用EVEX前置編 碼欄位的內容作爲運算碼延伸,但是,某些實施例爲了一 致性而以類似方式擴展但允許不同的意義由這些舊有 SIMD前置規定。替代實施例可以重新設計PLA以支援2 -37- 201241744 位元SIMD前置編碼,因而不要求擴展。 阿爾發攔位1 152 ( EVEX位元組3,位元[7] ) - EH ; 也稱爲 EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩 控制、及EVEX.N ;如以往所述般’也以α )—顯示,此 欄位是內容特定的。稍後提供其它說明。 貝他欄位 1 154 ( EVEX位元組3 ’位元[6:4] ) - SSS ;也稱爲 EVEX.s2-〇、EVEX.r2.〇、EVEX.rrl、EVEX.LL0、 EVEX.LLB ;如以往所述般,也以yS /3 yS ) —顯示,此欄 位是內容特定的。稍後提供其它說明。 REX’欄位1210—這是REX’欄位的餘部且是可被用以 將延伸的32暫存器組的上16或下16編碼之EVEX.V’位 元欄位(EVEX位元組3 ’位元[3]-V’)。此位元以位元反 轉格式儲存。1的値被用以將下16暫存器編碼。換言之’ 藉由結合 EVEX.V’、EVEX.vvvv 以形成 V’VVVV。 寫入遮罩欄位1170(£乂£乂位元組3’位元[2:0]-1^1<; )-如同先前所述般’其內容指定寫入遮罩暫存器中的暫 存器索引。在發明的一實施例中,特定値EVEX.kkk = 000 具有特別的表現,暗指無寫入遮罩用於特定的指令(适可 以以各種方式實施,包含使用實體接線至所有或硬體之寫 入遮罩,所述硬體係使遮罩硬體旁通)。 真實運算碼欄位1 2 3 0 (位元組4 ) 這也稱爲運算碼位元組。在此欄位中指定運算碼的一 部份。 -38- 201241744 MOD R/M欄位1 240 (位元組5 )
修改器欄位 1 146 ( MODR/M. MOD,位元[7-6] — MOD 欄位1 242 ) —如同先前所述般,MOD欄位的1 242內容區 別記億體存取與非記憶體存取操作。稍後將進一步說明此 欄位。 MODR/M.reg 欄位 1 244,位元[5-3]— ModR/M.reg 欄 0 位的角色可以總合爲二情形:ModR/M.reg將目的地暫存 器運算元或源暫存器運算元編碼,或是ModR/M.reg被當 作運算元延伸來處理且不被用以將任何指令運算元編碼。 MODR/M.r/m 欄位 1 246,位元[2-0] — ΜodR/M·r/m 欄 位的角色可以包含下述:ModR/M.r/m將參考記憶體位址 的指令運算元編碼,或者,ModR/M.r/m將目的地暫存器 運算元或源暫存器運算元編碼。 Q 比例、索引、基礎(SIB )位元組(位元組6 ) 比例欄位1 160 ( SIB.SS,位元[7-6])—如同先前所 述般’比例欄位1 1 60的內容是用於記憶體位址產生。於 下將進一步說明此欄位。 SIB.xxx 1254 (位元[5-3])及 SIB.bbb 1256 (位元[2_ 〇]) —這些欄位的內容先前已被指稱與暫存器索引Χχχχ 及Bbbb有關。 位移位元組(位元組7或位元組7 -1 0 ) -39- 201241744 位移欄位1162A(位元組7-10)—當MOD欄位1242 含有10時’位兀組7-10是位移欄位1162A’且其與舊有 32位元位移(disp32 )相同工作並在位元組粒度上工作。 位移因數欄位1 162B (位元組7 ) —當 MOD欄位 1242含有01時,位元組7是位移因數欄位1 162B。此欄 位的位置與對位元組粒度工作的舊有x86指令組8位元位 移(disp8)的位置相同。由於disp8是正負號延伸,所以 ,其僅可以在-128與127位元組偏移之間定址;以64位 元組快取線的觀點而言,disp8使用可以被設定爲僅四個 真正有用的値-128、-64、0、及64之8位元;由於通常需 要更大的範圍,所以,使用disp32 ;但是,disp32要求4 位元組。與disp8和disp32相反,位移因數欄位1 162B是 disp8的再解譯;當使用位移因數欄位1162B時,真實的 位移由位移因數欄位的內容乘以記億體運算元存取(N ) 所決定。此型式的位移被稱爲disp8*N。這降低平均的指 令長度(用於位移但是具有更大範圍的單一位元組)。此 被壓縮的位移是根據有效的位移是記憶體存取的粒度之倍 數的假設,因此,位址偏移的冗餘低階位元不需被編碼。 換言之,位移因數欄位1 162B替代舊有χ86指令組8位元 位移。因此,位移因數欄位1 1 62B以同於x8 6指令組8位 元位移的方式編碼(以致於ModRM/SIB編碼規則不變) ,僅有的例外是disp8被過載至disp8*N。換言之,編碼 規則或編碼長度沒有變化,但是僅有硬體對位移値的解譯 有變化(這需要將位移依記憶體運算元的大小來比例化以 -40- 201241744 取得位元組方式的位址偏移)。 立即性 立即欄位1 1 72如先前所述地操作 舉例說明的暫存器架構-圖13 圖13是根據本發明的一實施例之暫存器架構1300的 方塊圖。暫存器檔案及暫存器架構的暫存器列示於下: 向量暫存器檔案1310-在所示的實施例中,有1312 位元寬的32個向量暫存器·,這些暫存器稱爲zmmO至 zmm31。較低的16 zmm暫存器的低階1156位元覆蓋於暫 存器ymmO-16之上。較低的16-zmm暫存器的低階128位 元(ymm暫存器的低階128位元)覆蓋於暫存器xmmO-15 之上。特定向量友善指令格式1 200對這些下述表格中所 示的被覆蓋的暫存器檔案操作。
可調整的向量長度 等級 操作 暫存器 不包含向量長度欄位 1159B的指令樣板 A (圖 11A ; u=o) 1110、1115、 1125 ' 1130 zmm暫存器 (向量高度64位 元組) B (圖 11B ; U=l) 1112 zmm暫存器 (向量長度64位 元組) 包含向量長度欄位 1159B的指令樣板 B (圖 11B ; U=l) 1117、1127 zmm、ymm、或 xmm暫存器 (向量長度爲64 位元組、32位元 組、或16位元組 )取決於向量長度 欄位1159B -41 - 201241744 換言之,向量長度欄位1159B在最大長度與一或更多 其它較短的長度之間選取,其中,每一此較短長度是先前 長度的長度之一半;以及’不具向量長度欄位1159B的指 令樣板對最大向量長度操作。此外,在一實施例中,特定 向量友善指令格式1 200的等級B指令樣板對被包裝的或 純量的單一 /雙重精度浮點資料及被包裝的或純量的整數 資料操作。純量操作是對zmm/ymm/xmm暫存器中最低階 資料元件位置執行的操作;更高階的資料元件位置視實施 例而保留成與它們在指令之前相同或者零化。 寫入遮罩暫存器1315 —在所示的實施例中,有8個寫 入遮罩暫存器(k0至k7),每一寫入暫存器大小爲64位 元。如同先前所述般,在本發明的一實施例中’向量遮罩 暫存器k0無法作爲寫入遮罩;當正常標示k0的編碼用於 寫入遮罩時,其選取OxFFFF的實體接線的寫入遮罩’有 效地使用於該指令的寫入遮罩禁能。 多媒體延伸控制狀態暫存器(MXCSR) 1 320 —在所示 的實施例中,此3 2位元暫存器提供浮點操作中使用的狀 態及控制位元。 —般用途暫存器1325 -在所示的實施例中’有十六個 64位元一般目的暫存器,它們與現存的x86定址模式—起 用以將記憶體運算元定址。這些暫存器以名稱RAX、RBX 、RCX、RDX、RBP、RSI、RDI、RSP、及 R8 至 R15 表示 ο 延伸旗標(Ε F L A G S )暫存器1 3 3 0 —在所示的實施例 -42 - 201241744 中,此3 2位元暫存器用以記錄很多指令的結果。 浮點控制字(F C W )暫存器1 3 3 5及浮點狀態字( FSW)暫存器1340—在所示的實施例中,這些暫存器由 x87指令組延伸使用以在FCW情形中設定整修模式、在 F C W情形中之遮罩及施標例外、以及在F S W的情形中保 持追蹤之例外。 純量浮點堆疊暫存器檔案(x87堆疊)1 345 ’ MMX分 0 封整數平坦暫存器檔案1350重疊於其上-在所示的實施 例中,X87堆疊是八元件堆疊,用以使用x87指令延伸’ 對3 2/64/80位元浮點資料執行純量浮點運作;而MMX暫 存器被用以對64位元包裝的暫存器資料執行操作’以及 爲了某些在MMX及XMM暫存器之間執行的操作而固持 運算元。 分段暫存器1355 -在所示的實施例中,有六個16位 元暫存器,用以儲存用於分段化的位址產生之資料。 Q RIP暫存器1 3 65 —在所示的實施例中,此64位元暫 存器儲存指令指標。 本發明的替代實施例可以使用更寬或更窄的暫存器。 此外’本發明的替代實施例可以使用更多、更少、或不同 的暫存器檔案及暫存器。 舉例說明的依序處理器架構一圖14A— 14B 圖14A-B顯示舉例說明的依序處理器架構之方塊圖。 這些舉例說明的實施例圍繞依序CPU核心的多例示設計 -43- 201241744 ’以寬向量處理器(VPU)擴增。取決於el6t應用,這些 核心以某些固定功能邏輯、記憶體1 /0介面、及其它所需 I/O邏輯,經由高頻寬互連網路通訊。舉例而言’本實施 例實施成單獨GPU將典型地包含PCle匯流排。 圖14A是根據本發明的實施例之單一CPU核心、伴 隨其對晶粒上互連網路1402的連接及具有本地子集合等 級2 ( L2 )快取1 404之方塊圖。指令解碼器1 400支援具 有包含特定向量指令格式1 200的延伸之x86指令集。雖 然在本發明的一實施例中(爲了簡化設計),純量單元 1 408和向量單元14 10使用分開的暫存器集(分別爲純量 暫存器1412和向量暫存器1414)及在它們之間傳送的資 料被寫至記憶體然後從等級1 ( L1 )快取1406讀回,但 是,本發明的替代實施例可以使用不同的方式(例如,使 用單一暫存器集或是包含通訊路徑,允許資料在二暫存器 檔案之間傳送而不用寫入及讀回)。 L 1快取1 406允許對快取記憶體的低潛候存取成爲純 量及向量單元。與向量友善指令格式中載入一操作(load-op ) 指令 一起’ 這意指 L 1 快取 1 4 0 6 可以有 點類似 延伸暫 存器檔案般被處理。這顯著地增進很多演算法的性能,特 別是藉由逐出暗示欄位1152B。 L2快取1404的本地子集合是被分割成多個分別的本 地子集合之通用L2快取的部份,每一 CPU核心有一集合 。每一 CPU對於它自己的L2快取14〇4的本地子集合具 有直接存取路徑。與存取它們自己的本地L2快取子集合 -44 - 201241744 之其它CPU相平行地,由CPU核心讀取的資料被儲存在 L2快取子集合14〇4中且可以被快速地存取。由CPU核心 寫入的資料儲存在它自己的L2快取子集合1404中,且假 使需要時從其它子集合湧入。環式網路確保共用資料的同 調性。 圖14B是根據本發明的實施例中的圖14A中的CPU 核心的部份之分解視圖。圖1 4 B包含L 1快取1 4 0 4的L 1 0 資料快取1 406A部份、以及關於向量單元1410和向量暫 存器1414的更多細節。具體而言,向量單元1410是16-寬的向量處理單元(VPU)(請參見16-寬的ALU 1428 ) ,其執行整數、單一精準浮點、及雙重精準浮點指令。 VPU對記憶體輸入以伴和單元1420支援拌和暫存器輸入 、以數字轉換單元1 422A-B支援數字轉換、以及以複製單 元1 424支援複製。寫入遮罩暫存器1426允許預測造成的 向量寫入。 Q 可以以各種方式拌和暫存器資料,例如支援矩陣乘法 。來自記憶體的資料可以跨越VPU通道而被複製。在圖 形及非圖形平行資料處理等二處理中這是共通的操作’顯 著地增進快取效率。 環式網路是雙向的’允許例如CPU核心、L2快取及 其它邏輯區塊等代理器在晶片內彼此通訊。每一環式資料 路徑是每一方向1312位元寬。 舉例說明的亂序架構一圖15 -45- 201241744 說的行頭含 例明執箭包 舉說其且 5 之例及合1 例舉式耦圖 施的格的。 實知令間向 的熟指之方 明示善元的 發顯友單動 本 5 量多流 據1向更料 根圖有或資 示,倂二的 顯 II口 成表間 ,而改代之 圖體修頭元 塊具被箭單 方。已,些 是構其中這 5 架, 5 示 1序構1表 圖亂架圖向 的序在方 明亂。的 耦合至執行引擎單元1 5 1 0及記憶體單元1 5 1 5的前端單元 1505;執行引擎單元1510進一步耦合至記憶體單元1515 〇 前端單元1 505包含耦合至等級2 ( L2 )分枝預測單 元1522之等級1(L1)分枝預測單元1520〇L1及L2分 枝預測單元1520及1522耦合至L1指令快取單元1524。 L1指令快取單元1 524耦合至指令轉譯旁看緩衝器(TLB )1 526,指令轉譯旁看緩衝器(TLB) 1 526又耦合至指令 提取及預解碼單元1528。指令提取及預解碼單元1528耦 合至指令佇列單元1 5 3 0,指令佇列單元1 5 3 0又耦合至解 碼單元1532。解碼單元1532包括複合解碼器單元1534及 三個簡單解碼器單元1536、1538、及1540。解碼單元 1532包含微碼ROM單元1542。解碼單元1532如同上述 解碼階段一節中先前所述般地操作。L1指令快取單元 1524又耦合至記憶體單元1515中的L2快取單元1548。 指令TLB單元1 526又耦合至記億體單元1515中的第二等 級轉譯旁看緩衝器(TLB )單元1 546。解碼單元1 5 32、微 碼ROM單元1 542、及迴路串偵測器單元1 544均耦合至執 行引擎單元1510中的重新命名/分配器單元1 5 56。 -46 - 201241744 執行引擎單元1510包含耦合至退出單元1 574及統一 排程器單元1 55 8的重新命名/分配器單元1 5 56。退出單 元1 5 74又耦合至執行單元1 5 60及包含重新排序緩衝器單 元1 5 78。統一排程器單元1 55 8又耦合至實體暫存器檑案 單元1 5 76,實體暫存器檔案單元1 576耦合至執行單元 1560。實體暫存器檔案單元1576包括向量暫存器單元 157 7A、寫入遮罩暫存器單元1577B、及純量暫存器單元 1577C;這些暫存器單元可以提供向量暫存器1310、向量 遮罩暫存器1315、及一般用途暫存器1 325;以及實體暫 存器檔案單元1 5 76可以包含未顯示的其它暫存器檔案( 例如,重疊於MMX包裝整數平坦暫存器檔案1350上的純 量浮點堆疊暫存器檔案1 345 )。執行單元1 560包含三個 混合純量及向量單元15 62、15 64、及1572;載入單元 1 566;儲存位址單元1 568;儲存資料單元1 570。載入單 元1556、儲存位址單元1568、及儲存資料單元15 70均又 耦合至記憶體單元1515中的資料轉譯旁看緩衝器(TLB) 單元1 5 52。 記憶體單元1515包含耦合至資料轉譯旁看緩衝器( TLB )單元1552的第二等級轉譯旁看緩衝器(TLB)單元 1 546。資料轉譯旁看緩衝器(TLB)單元1 552耦合至L1 資料快取單元1 554。L1資料快取單元1 554又耦合至L2 快取單元1548。在某些實施例中,L2快取單元1548又耦 合至記憶體單元1515的內部及/或外部的L3及更高的快 取單元1 5 50。 -47 - 201241744 舉例而言,舉例說明的亂序架構可以實施如下所述的 處理管線:1 )指令提取及預解碼單元1 5 2 8執行提取及長 度解碼階段:2 )解碼單元1 5 3 2執行解碼階段;3 )重新 命令/分配器單元1 5 5 6執行分配階段及重新命名階段;4 )統一排程器1 5 5 8執行排程階段;5 )實體暫存器檔案單 元1 5 76、重新排序緩衝器單元1 5 7 8、及記億體單元1515 執行暫存器讀取/記憶體讀取階段;執行單元1 5 60執行 執行/資料轉換階段;6 )記憶體單元1 5 1 5及重新排序緩 衝器單元1 5 78執行寫回/記憶體寫入階段;7)退出單元 1 5 74執行ROB讀取階段;8 )各種單元牽涉例外處理階段 ;及9)退出單元15 74及實體暫存器檔案單元1576執行 委任階段。 舉例說明的單核心及多核心處理器一圖2 0 圖2 0是根據本發明的實施例之具有整合記憶體控制 器及圖形的單核心處理器及多核心處理器2000的方塊圖 。圖20中的粗線框顯示具有單核心2002A的處理器2000 、系統代理器2010、一或更多匯流排控制器單元2016, 而選加的虛線框顯示具有多核心2 0 0 2 A -N的替代處理器 2000、系統代理器單元2010中一或更多整合的記憶體控 制器單元2014的組、以及整合圖形邏輯2008。 記憶體架構包含在核心內的一或更多等級的快取、一 或更多共用快取單元2006、及耦合至整合記憶體控制器單 兀2 0 1 4組之外部記憶體(未顯示)。共用快取單元2 〇 〇 6 -48- 201241744 組可以包含例如等級2(L2)、等級3(L3)、等 L4 )、或其它等級快取等一或更多中級快取、最後 取(LLC )、及/或其組合。雖然在一實施例中, 礎互連單元2012將整合圖形邏輯2008、共用快 2006的組、及系統代理單元2010互連,但是,替 例可以使用任何數目的已知技術來互連這些單元。 在某些實施例中,一或更多核心2002A-N能夠 0 。系統代理器2 0 1 0包含那些元件協調及操作核心 N。系統代理器單元20 1 0可以包含例如電力控制 PCU )及顯示器單元。PCU可以是或包含調節核心 N及整合圖形邏輯2008的電力狀態所需的邏輯及 顯示單元是用於驅動一或更多外部連接的顯示器。 以架構及/或指令組的觀點而言,核心2002A-是同質的或異質的。舉例而言,核心2002A-N中的 心可以是依序的(例如,圖1 4 A及1 4 B中所示的) Q 它是亂序的(例如,圖15中所示)。關於另一實 二或更多核心2002A-N可以能夠執行相同的指令集 它核心可以能夠僅執行該指令集的子集合或不同的 。這些核心中至少之一能夠執行此處所述的向量友 格式。 處理器可以是一般用途的處理器,例如能 Santa Clara之英特爾(Intel)公司取得的CoreTM 、i7、2 雙及四、XeonTM、或 ItaniumTM 處理器。 處理器可以是來自其它公司。處理器可以是特別用 級4 ( 等級快 環式基 取單元 代實施 多緒化 2002A- 單元( 2002A- 元件。 N可以 某些核 ,而其 施例, ,而其 指令集 善指令 從加州 i3、i5 或者, 途的處 -49- 201241744 理器,例如網路或通訊處理器、壓縮引擎、圖形處理器、 輔助處理器、嵌入式處理器、等等。處理器可以在一或更 多晶片上實施。處理器2000可以是部份的及/或實施在 一或更多基底上使用例如BiCMOS、CMOS、或NMOS等 多種製程技術。 舉例說明的電腦系統及處理器一圖16-19 圖16-18是舉例說明的系統,適用於包含處理器2000 ,而圖19是舉例說明的系統晶片(SoC),包含一或更多 核心2002。用於膝上型電腦、桌上型電腦、手持PC、個 人數位助理、工程工作站、伺服器、網路裝置、網路集線 器、交換器、嵌入式處理器、數位訊號處理器(DSP )、 圖形裝置、電動遊戲裝置、機上盒、微控制器、行動電話 、可攜式媒體播放器、手持裝置、及各式各樣的其它電子 裝置等領域中熟知的其它系統設計及配置也是適合的。一 般而言’能夠倂有此處所揭示的處理器及/或其它執行邏 輯的眾多種類的系統或電子裝置通常是適合的。 現在回至圖1 6 ’其顯示根據本發明的一實施例之系統 1600的方塊圖。系統1600可以包含耦合至圖形記億體控 制器集線器(graphics memory controller hub,GMCH) 1620之一或更多處理器1610、1615。在圖16中以虛線標 示增加的處理器1615的選擇特性。 每一處理器1610、1615可以是某些版本的處理器 2000。但是’應注意,整合圖形邏輯及整合記憶體控制單 -50- 201241744 元將存在於處理器1610、1615中是不容易的。 圖1 6顯示GMCH 1 620可以耦合至記憶體1 640,舉例 而言’記憶體1 640可以是動態隨機存取記憶體(dram ) 。對於至少一實施例而言’ DRAM可以與非依電性快取相 關聯。 GMCH 1 620可以是晶片組、或是晶片組的一部份。 GMCH 1 620可以與處理器1610、1615通訊以及控制處理 0 器i61〇、1615及記憶體1640之間的互動。GMCH 1620也 可以作爲系統1600的處理器1610、1615及其它元件之間 的加速匯流排介面。對於至少一實施例,GMCH 1620經由 例如前側匯流排(FSB ) 1 695等多點匯流排而與處理器 1610 、 1615 通訊。 此外,GMCH 1620耦合至顯示器1645 (例如平板顯 示器)。GMCH 1 620可以包含整合圖形加速器。GmcH 1620又鍋合至用於親合各種週邊裝置至系統1600之輸入 Q /輸出(I/O )控制器集線器(ICH ) 1 650。舉例而言,圖 16的實施例顯示外部圖形裝置1660、伴隨著另一週邊裝 置1670,外部圖形裝置1660可以是耦合至ICH 1650的離 散圖形裝置。 或者’增加的或不同的處理器也可以出現在系統1600 中。舉例而言,增加的處理器1615可以包含與處理器 1610相同的增加的處理器、異質的或是與處理器ι610不 對稱之增加的處理器、加速器(例如,圖形加速器或數位 訊號處理(DSP )單元)、現場可編程閘陣列、或任何其 -51 - 201241744 它處理器。以包含架構、微架構、熱、耗電特徵、等等準 則計量光譜的觀點而言,實體源丨6〗〇、1 6 1 5之間有各種 差異。在處理元件1610及1615之間,這些差異可以有效 地使它們本身顯示出不對稱性及異質性。對於至少一實施 例而言’各式各樣的處理元件1610、1615可以設在相同 晶粒封裝中。 現在參考圖17,其顯示根據本發明的實施例之第二系 統1 700的方塊圖。如圖17中所示般,多處理器系統1700 是點對點互連系統,以及包含經由點對點互連1 750耦合 的第一處理器177〇和第二處理器1 780。如圖17中所示般 ,每一處理器1 770及1 780可以是某版本的處理器2000。 或者,一或更多處理器1 770、1 780可以是處理器以 外的元件,例如加速器或現場可編程閘陣列。 雖然僅顯示二處理器1770、1780,但是要瞭解,本發 明的範圍不侷限於此。在其它實施例中,一或更多增加的 處理元件可以出現在給定的處理器。 處理器1 770又包含整合記憶體控制器集線器(IMC ) 1 772以及點對點(P-P )介面1 776和1 778。類似地,第 二處理器1780可以包含IMC 1782及P-P介面1786和 1788。處理器1770、1780可以使用PtP介面電路1778、 1 78 8而經由點對點(PtP )介面1 750來交換資料。如同圖 1 7中所示般,IM C的1 7 7 2和1 7 8 2將處理器耦合至各別記 憶體,亦即記憶體1 742和記憶體1 744 ’它們可以是本地 附著至各別處理器的記憶體的部份。 -52- 201241744 處理器1 770、1 780使用點對點介面電路1 776、l794 、1 786、1 798,經由個別的P-P介面1 752、1 754而均可 以與晶片組1 790交換資料。晶片組1 790經由高性能圖形 介面1739,也可以與高性能圖形電路1738交換資料。 共用的快取(未顯示)可以包含在二處理器的外部之 任一處理器中,但尙未經由P -P互連與處理器連接,以致 於假使處理器置於低電力模式中時,任一或二處理器的本 0 地快取資訊可以儲存在共用的快取中。 晶片組1 790可以經由介面1 796而耦合至第一匯流排 1 7 1 6。在一實施例中’第一匯流排1 7 1 6可以是週邊元件 互連(P C I )匯流排,或是例如P C I快速匯流排或其它第 三代I / Ο互連匯流排等匯流排,但是,本發明的範圍不侷 限於此。 如圖17中所不般,各式各樣的I/O裝置1714與匯流 排橋接器1718親合至第一匯流排1716,匯流排橋接器 Ο 1718耦合第一匯流排1716至第二匯流排1 720。在一實施 例中,第二匯流排172〇可以是低接腳數(LPC)匯流排。 在一實施例中,各種裝置可以耦合至第二匯流排1 720,舉 例而言,包含鍵盤/滑鼠1 722、通訊裝置1 726及例如碟 片驅動器或其它大量儲存裝置等包含碼1730的資料儲存 單元1 728。此外,音頻I/O 1 724可以耦合至第二匯流排 1720。注意’其它架構是可能的。舉例而言,取代圖17 的點對點架構,系統可以實施多點匯流排或其它此類架構 -53- 201241744 現在參考圖18,其顯示根據本發明的實施例之 統1800之方塊圖。圖17及18中類似的元件帶有 代號,以及,圖17的某些態樣在圖18中被省略, 糊圖1 8的其它態樣。 圖18顯示處理元件1770、1780分別包含整合 體及/1/0控制邏輯(CL) 1772和1782。對於至 施例,CL 1 772、1 782包含例如配合圖19及17之 述的記憶體控制器集線器邏輯(IMC )。此外,CL 1 782也包含I/O控制邏輯。圖18顯示不僅記憶體 1 744耦合至CL 1 772、1 782,I/O裝置1814也耦合 邏輯1772、1782。舊有I/O裝置1815耦合至晶片; 〇 現在參考圖19,其顯示根據本發明的實施例 1 900的方塊圖。圖19中類似的元件帶有類似的代 且,虛線框關於更多先進的SoCs的選加特點。在園 ,互連單元1902耦合至:應用處理器1910,包含 多核心2002A-N及共用快取單元2006的組;系統 單元20 1 0 ;匯流排控制器單元20 1 6 ;整合記憶體 單元2014;包含整合圖形邏輯2008、用於提供靜 或攝影機功能的影像處理器1 924、用於提供硬體音 器的音頻處理器1 926、以及用於提供視頻編碼/解 的視頻處理器1 92 8之一或更多媒體處理器1 92 0或 理器192〇組;靜態隨機存取記憶體(SRAM )單5 :直接記憶體存取(DMA )單元1 93 2 ;以及用於 第三系 類似的 以免模 的記憶 少一實 上述所 1 772 ' 1 742 ' 至控制 la 17 9 0 之 SoC 號。而 g 19中 一或更 代理器 控制器 態及/ 頻加速 碼加速 媒體處 I; 1930 耦合至 -54- 201241744 —或更多外部顯示器的顯示單元1 940。 此處揭示的機構實施例可以以硬體、軟體、韌體或這 些實施方式的結合來實施。本發明的實施例可以實施成在 可編程系統上執行的電腦程式或程式碼,可編程系統包括 至少一處理器、儲存系統(包含依電性及非依電性記憶體 及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置 〇 0 程式碼可以應用至輸入資料以執行此處所述的功能和 產生輸出資訊。輸出資訊可以以已知方式應用至一或更多 輸出裝置。爲了此應用,處理系統包含具有例如數位訊號 處理器(DSP )、微控制器、特定應用積體電路(ASIC ) 、或微處理器等處理器之任何系統。 程式碼可以以高階程式或物件導向的程式語言實施, 以與處理系統通訊。假使需要時,程式碼也可以以組合或 機器語言來實施。事實上,此處所述的機構在範圍上不侷 Q 限於任何特定的程式語言。在任何情形中,語言可以是編 譯或解譯的語言。 至少一實施例的一或更多態樣可以由儲存在機器可讀 取的媒體上之代表指令實施,代表指令代表處理器內各種 邏輯,代表指令由機器讀取時促使機器製造邏輯以執行此 處所述的技術。稱爲「IP核心」的這些代表可以儲存在實 體的、機器可讀取的媒體並供應至各式各樣的客戶或製造 設施,而載入至真正地產生邏輯的製造機器或處理器。 此機器可讀取儲存媒體包含但不限於由機器或裝置製 -55- 201241744 造或形成的物件之非電晶體式、實體配置’包括例如硬碟 等儲存媒體、包含軟碟、光碟(小型碟片唯讀記億體( CD-ROM )、小型碟片可重寫記憶體(CD-RW ))、及磁 光碟等任何其它型式的碟片、例如唯讀記憶體(R0M ) ' 動態隨機存取記憶體(DRAM )、靜態隨機存取記憶體( SRAM )等隨機存取記憶體(RAM )、可抹拭可編程唯讀 記憶體(EPROM )、快閃記憶體、電可抹拭可編程唯讀記 憶體(EEP ROM )等半導體裝置、磁性或光學卡、或適用 於儲存電子指令的任何其它型式的媒體。 因此,本發明的實施例也包含含有向量友善指令格式 的指令或含有設計資料之非電晶體式、實體的機器可讀取 的媒體,所述設計資料是例如硬體道述語言(HDL ),其 界定此處所述的結構、電路、裝置、處理器及/或系統特 徵。這些實施例也意指程式產品。 在某些情形中,指令轉換器可以用以將指令從源指令 集轉換至標的指令集。舉例而言,指令轉換器可以將指令 轉譯(例如,使用靜態二進位轉譯、包含動態編譯的動態 二進位轉譯)、語形化、模仿、或其它轉換至核心處理的 一或更多其它指令。指令轉換器可以以軟體、硬體、韌體 、或其結合來實施。指令轉換器可以是在處理器上、不在 處理器上、或部份在處理器上及部份離開處理器。 圖2 1是方塊圖,將根據本發明的實施例之使用軟體 指令轉換器以將源指令集中的二進位指令轉換成標的指令 集中的二進位指令作對比。在顯示的實施例中,指令轉換 -56- 201241744 器是軟體指令轉換器,但是,指令轉換器可以替代地以軟 體、韌體、硬體、或其各種結合來實施。圖21顯示高階 語言2102的程式,其可以由使用x86編譯器2104編譯以 產生x86二進位碼2106,二進位碼2106可以由具有至少 一 x86指令集核心2116(假定這些指令中的某些指令以向 量友善指令格式編譯)的處理器原地執行。具有至少一 X 86指令集核心2 1 1 6的處理器代表藉由共容地執行或其它 方式地處理下述,而能夠與具有至少一 x86指令集核心的 英特爾處理器執行實質上相同功能的任何處理器:(1) 英特爾x86指令集核心的指令集的實質部份,或是(2 ) 以在具有至少一x86指令集核心的理器上執行爲目標之應 用程式或其它軟體的物件碼版本,以便取得與具有至少一 x86指令集核心的英特爾處理器實質上相同的結果。χ86 編譯器2104代表可以操作以產生x86二進位碼2106(例 如,物件碼)之編譯器,x86二進位碼2106藉由或不藉由 增加的鏈結處理,都可以在具有至少一 x86指令集核心 2116的處理器上執行。類似地,圖21顯示高階語言2102 的程式,使用替代指令集編譯器2108,可以將其編譯以產 生替代指令集二進位碼2110,替代指令集二進位碼2110 可以由不具有至少一 x86指令集核心21 14的處理器(例 如,具有執行例如加州Sunnyvale的MIPS Technologies公司 的MIPS指令集及/或加州Sunnyvale的ARM Holdings公 司的ARM指令集之核心的處理器)原地執行。指令轉換 器2112用以將x86二進位碼2106轉換成可以由不具有 -57- 201241744 x 8 6指令集核心2 1 1 4的處理器原地執行的碼。由 此執行的指令轉換器難以製造,所以,此轉換的 替代指令集二進位碼2 11 0相同;但是’所述轉 完成一般操作及由來自替代指令集的指令組成。 令轉換器2 1 1 2代表軟體、韌體、硬體、或其組 由模仿、模擬或任何其它處理而允許不具有x86 理器或核心的處理器或其它電子裝置執行x86 2106 ° 此處揭示的向量友善指令格式之指令的某些 由硬體元件執行以及可以以機器可執行的指令具 這些指令被用以促使或至少造成依指令編程的電 硬體元件執行操作。舉例而言,電路可以包含一 特別用途的處理器、或是邏輯電路。操作可以由 體的結合選加地執行。執行邏輯及/或處理器可 定或特別的電路或其它邏輯以回應機器指令或是 令衍生的一或更多控制訊號,以儲存指令指定的 元。舉例而言,此處揭示的指令的實施例可以在 的一或更多系統中執行,以及,向量友善指令格 令實施例可以儲存在程式碼中而在系統中被執行 @些圖式的處理元件利用此處詳述的詳細管線及 (例如’依序及亂序架構)。舉例而言,依序架 單元可以將指令解碼,將經過解碼的指令傳送至 量單元等等。 上述說明是要顯示本發明的較佳實施例。從 於能夠如 碼不易與 換的碼將 因此,指 合,其經 指令集處 二進位碼 操作可以 體實施, 路或其它 般用途或 硬體及軟 以包含特 自機器指 結果運算 圖 16-19 式中的指 。此外, /或架構 構的解碼 向量或純 上述討論 -58-
201241744 中,也應清楚可知,特別是在成長快速且不易預見 此技術領域內,在不悖離後附的申請專利範圍及其 圍內本發明的原理之下,習於此技術者可以在配置 上修改本發。舉例而言,方法的一或更多操作可以 分開。 替代實施例 雖然已說明原地執行向量友善指令格式的實施例 是,本發明的替代實施例可以經由執行不同指令集之 器(例如,執行加州 S u η n y v a 1 e 的 ΜIP S T e c h η ο 1 〇 g i 司的ΜIP S指令集的處理器,執行加州S u η n y v a 1 e的 Holdings公司的ARM指令集之處理器),執行上運 模仿層而執行向量友善指令格式。而且,雖然圖式中 程圖顯示本發明的某些實施例執行的操作之特定次序 是,應瞭解這些次序僅爲舉例說明(例如,替代實施 以依不同次序執行操作、結合某些操作、重疊某些操 等等)。 在上述實施例中,爲了說明目的’已揭示眾多 節,以助於完整瞭解本發明的實施例。但是’習於 者清楚可知,不用這些特定細節中的某些細節’仍 一或更多其它實施例。此處所述的特別實施例並非用 制本發明,而是說明本發明的實施例。本發明的範圍 由上述特定實例決定而是僅由下述申請專利範圍決定 步之 等範 細節 合或 卜但 .處理 es公 ARM :行的 的流 ,但 例可 作、 定細 技術 實施 以限 並非 -59- 201241744 【圖式簡單說明】 在附Η中舉例說明但非限定地顯示本發明,其中相似 的標記代表類似的元件,且其中: 圖1顯示擴展指令的執行之實例。 Η 2 Μ示具有暫存器運算元作爲來源的擴展指令的執 行之實例。 圖3顯示執行擴展指令的虛擬碼的實例。 圖4顯示處理器中的擴展指令的使用實施例。 圖5顯示用於處理擴展指令的方法實施例。 圖6顯示處理器中的壓縮指令的執行實例。 圖7顯示處理器中的壓縮指令的執行之另一實例。 圖8顯示執行擴展指令的虛擬碼之實例。 圖9顯示處理器中的壓縮指令的使用之實施例。 圖1 〇顯示用處理壓縮指令的方法實施例之實例。 圖11Α是方塊圖,顯示根據本發明的實施例之同屬向 量友善指令格式及其等級Α指令樣板。 圖11B是方塊圖,顯示根據本發明的實施例之同屬向 量友善指令格式及其等級B指令樣板。 圖12A- C顯示根據本發明的實施例之舉例說明的特 定向量友善指令格式。 圖13是根據本發明的一實施例之暫存器架構的方塊 圖。 圖1 4 A是根據本發明的實施例之單一CPU核心、伴 隨其對一晶粒互連網路的連接及具有本地子集合等級2 ( -60- 201241744 L 2 )快取的方塊圖。 圖1 4 B是根據本發明的實施例之圖1 4 A中的部份 CPU核心的分解視圖。 圖15是方塊圖’顯示根據本發明的實施例之舉例說 明的亂序架構。 圖16是根據本發明的一實施例之系統方塊圖。 圖17是根據本發明的實施例之第二系統的方塊圖。 Q 圖18是根據本發明的實施例之第三系統的方塊圖。 圖19是根據本發明的實施例之s〇c的方塊圖。 圖20是根據本發明的實施例之具有整合記憶體控制 器及圖形的多核心處理器及單一核心處理器的方塊圖。 圖21是方塊圖,將根據本發明的實施例之使用軟體 指令轉換器以將源指令集中的二進位指令轉換成標的指令 集中的二進位指令作對比。 Q 【主要元件符號說明】 1 300 :暫存器架構 1310 :向量暫存器 1315 :寫入遮罩暫存器 1 3 20 :多媒體延伸控制狀態暫存器 1 325 : —般用途暫存器 1 3 3 0 :暫存器 1 3 3 5 :浮點控制字暫存器 1 340 :浮點狀態字暫存器 -61 - 201241744 1 3 5 5 :分段暫存器 1 400 :指令解碼器 1 402 :互連網路 1 404 :等級2快取 1 4 0 6 :等級1快取 1 4 06A : L1資料快取 1 4 0 8 :純量單元 1 4 1 0 :向量單元 1 4 1 2 :純量暫存器 1 4 1 4 :向量暫存器 1 4 2 0 :拌和單元 1 422A :數字轉換單元 1 422B :數字轉換單元 1 424 :複製單元 1 426 :寫入遮罩暫存器 1 42 8 : 16 -寬的 ALU 1 5 0 5 :前端單元 1510 :執行引擎單元 1 5 1 5 :記憶體單元 1 5 20 :等級1預測單元 1 522 :等級2預測單元 1 524 : L1指令快取單元 1 5 26 :指令轉譯旁看緩衝器 1 5 2 8 :指令提取及預解碼單元 -62- 201241744 1530 :指令佇列單元 15 3 2 :解碼單元 1534 :複合解碼器單元 1536 :簡單解碼器單元 15 3 8 :簡單解碼器單元 1540 :簡單解碼器單元 1542 :微碼ROM單元 1544 :迴路串偵測器單元 1546 :第二等級轉譯旁看緩衝器單元 1548 :L2快取單元 1550 :快取單元 15 15 :記憶體單元 1552 :資料轉譯旁看緩衝器單元 15 54 :L 1快取單元 1556 :重新命名/分配器單元 0 1558 :統一排程器單元 1560 :執行單元 1562 :混合純量及向量單元 15 64 :混合純量及向量單元 15 66 :載入單元 1568 :儲存位址單元 1570 :儲存資料單元 1572 :混合純量及向量單元 15 74 :退出單元 -63- 201241744 1 5 77A :向量暫存器單元 15 77B:寫入遮罩暫存器單元 1577C:純量暫存器單元 1578:重新排序緩衝器單元 1 6 0 0 :系統 1 6 1 0 :處理器 1 6 1 5 :處理器 1 620 :圖形記憶體控制器集線器 1 6 4 0 :記憶體 1 6 4 5 :顯示器 1 6 5 0 :輸入/輸出控制器集線器 1 660 :外部圖形裝置 1 670 :週邊裝置 1 6 9 5 :前側匯流排 1 7 0 0 :第二系統 1714:輸入/輸出裝置 1 7 1 6 :第一匯流排 1 7 1 8 :匯流排橋接器 1 7 2 0 :第二匯流排 1 722 :鍵盤/滑鼠 1 724 :音頻輸入/輸出 1 726 :通訊裝置 1 72 8 :資料儲存單元 1 7 3 8 :圖形電路 -64 - 201241744 1 7 3 9 :圖形介面 1 742 :記憶體 1 7 4 4 :記憶體 1 7 5 0 :點對點互連 1 7 5 2 :點對點介面 1 754 :點對點介面 1 770 :第一處理器 1 7 72 :整合記憶體控制器集線器 1 776 :點對點介面 1 77 8 :點對點介面 1 780 :處理器 1 782 :整合記憶體控制器集線器 1 786 :點對點介面 1 7 8 8 :點對點介面 1 790 :晶片組 1794:介面 1 800 :第三系統 1814:輸入/輸出裝置 1815:舊有輸入/輸出裝置 1 9 0 0 :系統晶片 1 902 :互連單元 1 9 1 0 :應用處理器 1920 :媒體處理器 1 9 2 4 :影像處理器 -65- 201241744 1926:音頻處理器 1 92 8 :視頻處理器 1 93 0 :靜態隨機存取記憶體單元 1 932 :直接記憶體存取單元 1 9 4 0 :顯示單元 2 0 0 0 :處理器 2 0 0 2 A :核心 2002N :核心 2006 :共用快取單元 200 8 :整合圖形邏輯 2 0 1 0 :系統代理器 2012:環式基礎互連單元 2014 :整合記憶體控制器單元 2016 :匯流排控制器單元 2 1 1 4 :處理器 2 1 1 6 :處理器 -66-

Claims (1)

  1. 201241744 七、申請專利範圍: 1·一種在電腦處理器中執行壓縮指令的方法,包括: 提取該壓縮指令,其中,該壓縮指令包含目的地運算 元、源運算元、及寫入遮罩運算元; 將該提取的壓縮指令解碼; 執行該被解碼的壓縮指令,以根據該寫入遮罩的値, 選取哪些來自源的資料元件是要被儲存在該目的地;以及 〇 將該選取的源的資料元件作爲順序包裝的資料元件儲 存在該目的地中。 2. 如申請專利範圍第1項之方法,其中,該目的地運 算元是記憶體,及該源運算元是暫存器。 3. 如申請專利範圍第1項之方法,其中,該源及目的 地運算元是暫存器。 4. 如申請專利範圍第1項之方法,其中,該執行更包 括: 〇 決定該寫入遮罩的第一位元位置値標示對應的第一源 資料元件應被儲存在該目的地的位置;以及 將該對應的第一源資料元件儲存至該目的地的位置。 5 ·如申請專利範圍第1項之方法,其中,該執行更包 括: 決定該寫入遮罩的第一位元位置値標示對應的第一源 資料元件不應被儲存在該目的地的位置;以及 評估該寫入遮罩的第二位元位置値,而不將該第一源 資料元件儲存至該目的地的位置。 -67- 201241744 6 ·如申請專利範圍第1項之方法,其中,要被儲存至 該目的地之每一源資料元件首先被置於串流中以及該串流 被儲存至該目的地中。 7 ·如申請專利範圍第1項之方法,更包括: 在將該資料元件儲存至該目的地之前,將該資料元件 下轉以儲存於該目的地中。 8. 如申請專利範圍第7項之方法,其中,該資料元件 從3 2位元値下轉至1 6位元値。 9. 一種在電腦處理器中執行擴展指令的方法,包括: 提取該擴展指令,其中,該擴展指令包含目的地運算 元、源運算元、及寫入遮罩運算元; 將該擴展指令解碼; 執行該擴展指令,以根據該寫入遮罩的値,選取哪些 來自源的資料元件是要被稀疏地儲存在該目的地;以及 將每一選取的該源的資料元件作爲稀疏資料元件儲存 在該目的地位置,其中該目的地位置對應於每一寫入遮罩 位元位置,該每一寫入遮罩位元位置標示該源的對應資料 元件要被儲存。 10. 如申請專利範圍第9項之方法,其中,該目的地 運算元是暫存器,及該源運算元是記憶體。 1 1.如申請專利範圍第9項之方法,其中,該源及目 的地運算元是暫存器。 1 2 ·如申請專利範圍第9項之方法,其中,該執行更 包括; -68- 201241744 決定該寫入遮罩的第一位元位置値標示該對應的第一 源資料元件應被儲存在該目的地的對應位置;以及 將該對應的第一源資料元件儲存至該目的地的該對應 位置。 1 3 .如申請專利範圍第9項之方法,其中,該執行更 包括; 決定該寫入遮罩的第一位元位置値標示該對應的第一 Q 源資料元件不應被儲存在該目的地的對應位置;以及 評估該寫入遮罩的第二位元位置値,而不將該第一源 資料元件儲存至該目的地的對應位置。 14. 如申請專利範圍第9項之方法,其中,要被儲存 至該目的地之每一源資料元件首先被置於串流中以及該串 流被儲存至該目的地中。 15. 如申請專利範圍第9項之方法,更包括: 在將該資料元件儲存至該目的地之前,將該資料元件 D 上轉以儲存於該目的地中。 16. 如申請專利範圍第15項之方法,其中,該資料元 件從1 6位元値上轉至3 2位元値。 17. —種裝置,包括: 硬體解碼器,將擴展指令及/或壓縮指令解碼,其中 ,該擴展指令包含第一寫入遮罩運算元、第一目的地運算 元、第一源運算元,以及,該壓縮指令包含第二寫入遮罩 運算元、第二目的地運算元、第二源運算元;以及 執行邏輯,用以 -69- 201241744 執行被解碼的擴展指令,以根據該寫入遮罩的値 ’選取哪些來自源的資料元件是要被稀疏地儲存在該目的 地’以及’將每一選取的該源的資料元件作爲稀疏資料元 件儲存在該目的地位置’其中該目的地位置對應於每一寫 入遮罩位元位置’該每一寫入遮罩位元位置標示該源的對 應資料元件要被儲存,以及 執行被解碼的壓縮指令,以根據該寫入遮罩的値 ’選取哪些來自源的資料元件是要被儲存在該目的地,以 及’將選取的該源的資料元件作爲順序包裝的資料元件儲 存在該目的地。 1 8.如申請專利範圍第1 7項之裝置,更包括: 16位元寫入遮罩暫存器,以儲存該第—或第二寫入遮 罩;及 第一 5 1 2位元暫存器,以儲存該選取的資料元件。 1 9 .如申請專利範圍第丨8項之裝置,更包括: 第一 512位元暫存器,以作爲用於該擴展及壓縮指令 的來源。 2 〇 _如申請專利範圍第1 7項之裝置,其中,該資料元 件在擴展指令執行期間從16位元値上轉至32位元値。 -70 -
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 true TW201241744A (en) 2012-10-16
TWI470542B 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) KR101851487B1 (zh)
CN (1) CN103562855B (zh)
DE (1) DE112011105818T5 (zh)
GB (1) GB2503827B (zh)
TW (2) TWI470542B (zh)
WO (1) WO2012134558A1 (zh)

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9395990B2 (en) 2013-06-28 2016-07-19 Intel Corporation Mode dependent partial width load to wider register processors, methods, and systems
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9575762B2 (en) 2013-03-15 2017-02-21 Soft Machines Inc Method for populating register view data structure by using register template snapshots
US9632825B2 (en) 2013-03-15 2017-04-25 Intel Corporation Method and apparatus for efficient scheduling for asymmetrical execution units
US9766893B2 (en) 2011-03-25 2017-09-19 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9811377B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for executing multithreaded instructions grouped into blocks
US9823930B2 (en) 2013-03-15 2017-11-21 Intel Corporation Method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US9842005B2 (en) 2011-03-25 2017-12-12 Intel Corporation Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9858080B2 (en) 2013-03-15 2018-01-02 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9886416B2 (en) 2006-04-12 2018-02-06 Intel Corporation Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9898412B2 (en) 2013-03-15 2018-02-20 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9921845B2 (en) 2011-03-25 2018-03-20 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9934042B2 (en) 2013-03-15 2018-04-03 Intel Corporation Method for dependency broadcasting through a block organized source view data structure
US9940134B2 (en) 2011-05-20 2018-04-10 Intel Corporation Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
US9965281B2 (en) 2006-11-14 2018-05-08 Intel Corporation Cache storing data fetched by address calculating load instruction with label used as associated name for consuming instruction to refer
US10031784B2 (en) 2011-05-20 2018-07-24 Intel Corporation Interconnect system to support the execution of instruction sequences by a plurality of partitionable engines
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
US10169045B2 (en) 2013-03-15 2019-01-01 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US10191746B2 (en) 2011-11-22 2019-01-29 Intel Corporation Accelerated code optimizer for a multiengine microprocessor
US10228949B2 (en) 2010-09-17 2019-03-12 Intel Corporation Single cycle multi-branch prediction including shadow cache for early far branch prediction
US10521239B2 (en) 2011-11-22 2019-12-31 Intel Corporation Microprocessor accelerated code optimizer

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3805921B1 (en) 2011-04-01 2023-09-06 INTEL Corporation Vector friendly instruction format and execution thereof
US10157061B2 (en) 2011-12-22 2018-12-18 Intel Corporation Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks
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
US9477467B2 (en) * 2013-03-30 2016-10-25 Intel Corporation Processors, methods, and systems to implement partial register accesses with masked full register accesses
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
EP3123301A1 (en) * 2014-03-27 2017-02-01 Intel Corporation Processors, methods, systems, and instructions to store consecutive source elements to unmasked result elements with propagation to masked result elements
CN106030514B (zh) 2014-03-28 2022-09-13 英特尔公司 用于执行采用传播的被屏蔽源元素存储指令的处理器及其方法
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
US20160179520A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Method and apparatus for variably expanding between mask and vector registers
US20160179521A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Method and apparatus for expanding a mask to a vector of mask values
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 富士通株式会社 プロセッサ、情報処理装置及びプロセッサの動作方法
WO2018174931A1 (en) 2017-03-20 2018-09-27 Intel Corporation Systems, methods, and appartus for tile configuration
WO2018186763A1 (en) * 2017-04-06 2018-10-11 Intel Corporation Vector compress2 and expand2 instructions with two memory locations
US11360771B2 (en) 2017-06-30 2022-06-14 Intel Corporation Method and apparatus for data-ready memory operations
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
US10970078B2 (en) * 2018-04-05 2021-04-06 Apple Inc. Computation engine with upsize/interleave and downsize/deinterleave options
US10642620B2 (en) 2018-04-05 2020-05-05 Apple Inc. Computation engine with strided dot product
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 海光信息技术股份有限公司 一种数据处理方法、解码电路及处理器
US12086595B2 (en) 2021-03-27 2024-09-10 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

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57209570A (en) * 1981-06-19 1982-12-22 Fujitsu Ltd Vector processing device
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 日本電気株式会社 ベクトル処理装置
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
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
US7212676B2 (en) * 2002-12-30 2007-05-01 Intel Corporation Match MSB digital image compression
US7243205B2 (en) * 2003-11-13 2007-07-10 Intel Corporation Buffered memory module with implicit to explicit memory command expansion
US20070186210A1 (en) * 2006-02-06 2007-08-09 Via Technologies, Inc. Instruction set encoding in a dual-mode computer processing environment
JP2009026106A (ja) * 2007-07-20 2009-02-05 Oki Electric Ind Co Ltd 命令コード圧縮方法と命令フェッチ回路
US8667250B2 (en) * 2007-12-26 2014-03-04 Intel Corporation Methods, apparatus, and instructions for converting vector data
GB2456775B (en) * 2008-01-22 2012-10-31 Advanced Risc Mach Ltd Apparatus and method for performing permutation operations on data
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 삼성전자 주식회사 프로세서 및 그 명령어 번들 복원 방법

Cited By (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10289605B2 (en) 2006-04-12 2019-05-14 Intel Corporation Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US11163720B2 (en) 2006-04-12 2021-11-02 Intel Corporation Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US9886416B2 (en) 2006-04-12 2018-02-06 Intel Corporation Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US10585670B2 (en) 2006-11-14 2020-03-10 Intel Corporation Cache storing data fetched by address calculating load instruction with label used as associated name for consuming instruction to refer
US9965281B2 (en) 2006-11-14 2018-05-08 Intel Corporation Cache storing data fetched by address calculating load instruction with label used as associated name for consuming instruction to refer
US10228949B2 (en) 2010-09-17 2019-03-12 Intel Corporation Single cycle multi-branch prediction including shadow cache for early far branch prediction
US11204769B2 (en) 2011-03-25 2021-12-21 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9990200B2 (en) 2011-03-25 2018-06-05 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
US9766893B2 (en) 2011-03-25 2017-09-19 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
US10564975B2 (en) 2011-03-25 2020-02-18 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9842005B2 (en) 2011-03-25 2017-12-12 Intel Corporation Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9934072B2 (en) 2011-03-25 2018-04-03 Intel Corporation Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9921845B2 (en) 2011-03-25 2018-03-20 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
US10372454B2 (en) 2011-05-20 2019-08-06 Intel Corporation Allocation of a segmented interconnect to support the execution of instruction sequences by a plurality of engines
US9940134B2 (en) 2011-05-20 2018-04-10 Intel Corporation Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
US10031784B2 (en) 2011-05-20 2018-07-24 Intel Corporation Interconnect system to support the execution of instruction sequences by a plurality of partitionable engines
US10191746B2 (en) 2011-11-22 2019-01-29 Intel Corporation Accelerated code optimizer for a multiengine microprocessor
US10521239B2 (en) 2011-11-22 2019-12-31 Intel Corporation Microprocessor accelerated code optimizer
US9632825B2 (en) 2013-03-15 2017-04-25 Intel Corporation Method and apparatus for efficient scheduling for asymmetrical execution units
US10255076B2 (en) 2013-03-15 2019-04-09 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
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
US10146548B2 (en) 2013-03-15 2018-12-04 Intel Corporation Method for populating a source view data structure by using register template snapshots
US10146576B2 (en) 2013-03-15 2018-12-04 Intel Corporation Method for executing multithreaded instructions grouped into blocks
US10169045B2 (en) 2013-03-15 2019-01-01 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9934042B2 (en) 2013-03-15 2018-04-03 Intel Corporation Method for dependency broadcasting through a block organized source view data structure
US10198266B2 (en) 2013-03-15 2019-02-05 Intel Corporation Method for populating register view data structure by using register template snapshots
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US10248570B2 (en) 2013-03-15 2019-04-02 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9965285B2 (en) 2013-03-15 2018-05-08 Intel Corporation Method and apparatus for efficient scheduling for asymmetrical execution units
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US11656875B2 (en) 2013-03-15 2023-05-23 Intel Corporation Method and system for instruction block to execution unit grouping
US9898412B2 (en) 2013-03-15 2018-02-20 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US10503514B2 (en) 2013-03-15 2019-12-10 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9858080B2 (en) 2013-03-15 2018-01-02 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US10552163B2 (en) 2013-03-15 2020-02-04 Intel Corporation Method and apparatus for efficient scheduling for asymmetrical execution units
US9823930B2 (en) 2013-03-15 2017-11-21 Intel Corporation Method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US9811377B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for executing multithreaded instructions grouped into blocks
US10740126B2 (en) 2013-03-15 2020-08-11 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9575762B2 (en) 2013-03-15 2017-02-21 Soft Machines Inc Method for populating register view data structure by using register template snapshots
US9395990B2 (en) 2013-06-28 2016-07-19 Intel Corporation Mode dependent partial width load to wider register processors, methods, and systems

Also Published As

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

Similar Documents

Publication Publication Date Title
TW201241744A (en) Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location
KR101610691B1 (ko) 기입 마스크를 이용하여 2개 소스 피연산자를 하나의 목적지 내에 블렌딩하기 위한 시스템, 장치, 및 방법
TWI502499B (zh) 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法
CN104823156B (zh) 用于确定直方图的指令
JP5764257B2 (ja) レジスタをアライメントするためのシステム、装置、および方法
KR101722346B1 (ko) 적분 이미지 계산 명령어를 위한 방법 및 장치
TWI473015B (zh) 執行向量頻率擴展指令之方法、處理器核心以及製品
TW201730746A (zh) 用以融合指令之硬體設備及方法
TWI489382B (zh) 改良的萃取指令背景之設備及方法
TWI498815B (zh) 用以響應於單一指令而執行橫向部分和之系統、裝置及方法
TWI564795B (zh) 四維摩頓座標轉換處理器、方法、系統及指令
TWI481991B (zh) 改良型排列指令之裝置及方法
TW201617856A (zh) 在處理具有未對準資料列的陣列期間用於刪除未對準記憶體存取的指令集
TWI539374B (zh) 映射源運算元至不同範圍的系統及其處理器
TW201732574A (zh) 用於改善向量通量的系統、方法及設備
TW201732573A (zh) 用於跨步載入(stride load)的系統、設備及方法

Legal Events

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