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-