打包數據操作掩碼串接處理器、方法、系統及指令的製作方法
2023-05-02 08:13:06
打包數據操作掩碼串接處理器、方法、系統及指令的製作方法
【專利摘要】一方面的方法包括接收打包數據操作掩碼串接指令。打包數據操作掩碼串接指令指示具有第一打包數據操作掩碼的第一源,指示具有第二打包數據操作掩碼的第二源,並指示目的地。響應於所述打包數據操作掩碼串接指令,將結果存儲在目的地中。所述結果包括:和第二打包數據操作掩碼相串接的第一打包數據操作掩碼。公開了其它方法、裝置、系統和指令。
【專利說明】打包數據操作掩碼串接處理器、方法、系統及指令
【背景技術】【技術領域】
[0001]實施例涉及處理器。具體地,實施例涉及響應於打包數據操作掩碼串接指令而串接打包數據操作掩碼的處理器。
[0002]背景信息
[0003]許多處理器具有單指令多數據(SMD)架構。該SMD架構通常有助於顯著提高處理速度。在SIMD架構中,與僅在一個數據元素或一對數據元素上操作標量指令不同,打包數據指令、向量指令、或SMD指令可在多個數據元素、或多對數據元素上同時或並行地操作。處理器可具有並行執行硬體,該並行執行硬體響應於打包數據指令來同時或並行地執行多個操作。
[0004]在SIMD架構中,可將多個數據元素打包在一個寄存器或存儲器位置內作為打包數據或向量數據。在向量數據中,寄存器或其他存儲位置的位(比特)可被邏輯地劃分成多個固定尺寸的數據元素的序列。數據元素中的每一個可表示個體數據片,該個體數據片連同通常具有相同尺寸的其他數據元素一起被存儲在寄存器或存儲位置中。例如,256位寬寄存器可具有四個64位寬打包數據元素,八個32位寬打包數據元素,十六個16位寬打包數據元素,或三十二個8位寬打包數據元素。每一打包數據元素可表示獨立的個體數據片(例如,像素的顏色等),該數據片可單獨地操作或與其他數據片獨立地操作。
[0005]代表性地,打包數據指令、向量指令或SMD指令(例如,打包加法指令)中的一種類型可指定在來自兩個源打包數據操作數的所有相應數據元素對上以垂直方式執行單個打包數據操作(例如,加法)以生成目的或結果打包數據。這些源打包數據操作數是相同尺寸,可包含相同寬度的數據元素,並因此可各自包含相同數量的數據元素。兩個源打包數據操作數中的相同的比特位置中的源數據元素可表示相應的數據元素對。可分開地或獨立地對這些相應的源數據元素對中的每一個上執行打包數據操作,以便生成匹配數量的結果數據元素,且因而每一對相應的源數據元素可以具有相應的結果數據元素。通常,這樣的指令的結果數據元素是相同次序的,且它們常常具有相同的尺寸。
[0006]除這種示例性類型的打包數據指令之外,還有各種其它類型的打包數據指令。例如,存在僅具有一個源打包數據操作數或具有兩個以上的源打包數據操作數的打包數據指令、以水平方式而不是垂直方式操作的打包數據指令、生成不同尺寸的結果打包數據操作數的打包數據指令、具有不同尺寸的數據元素的打包數據指令和/或具有不同的數據元素次序的打包數據指令。
【專利附圖】
【附圖說明】
[0007]通過參考用來說明本發明的實施例的以下描述和附圖,可最好地理解本發明。在附圖中:
[0008]圖1是具有含一個或多個打包數據操作掩碼串接指令的指令集的處理器的示例實施例的框圖。
[0009]圖2A是示出採取合併的被掩碼(masked)打包數據操作的第一代表性示例實施例的框圖。
[0010]圖2B是例示採取歸零操作的被掩碼打包數據操作的第二代表性示例實施例的框圖。
[0011]圖3是包括存儲有打包數據操作掩碼串接指令的機器可讀的存儲介質的製品(例如,電腦程式產品)的框圖。
[0012]圖4是具有執行單元的指令處理裝置的示例實施例的框圖,該執行單元可操作用於執行包含打包數據操作掩碼串接指令的示例實施例的指令。
[0013]圖5是可由處理器和/或執行單元響應於打包數據操作掩碼串接指令和/或作為其結果而執行的打包數據操作掩碼串接操作的示例實施例的框圖。
[0014]圖6是對打包數據操作掩碼串接指令的示例實施例進行處理的方法的示例實施例的流程框圖。
[0015]圖7是一組合適的打包數據寄存器的示例實施例的框圖。
[0016]圖8是示出合適打包數據格式的若干示例實施例的框圖。
[0017]圖9是示出打包數據操作掩碼位的數目依賴於打包數據寬度和打包數據元素寬度的表格。
[0018]圖10是一組合適的打包數據操作掩碼寄存器的示例實施例的框圖。
[0019]圖11的圖例示:在被用作打包數據操作掩碼或用於掩碼遮蔽的打包數據操作掩碼寄存器的示例實施例中,位的數目取決於打包數據寬度和數據元素寬度的圖。
[0020]圖12A-12C例示打包數據操作掩碼串接指令和其操作的多種特定示例實施例。
[0021]圖13是可由處理器和/或執行單元響應於和/或作為打包指令的結果而執行的打包操作的示例實施例的框圖。
[0022]圖14A示出示例性AVX指令格式,包括VEX前綴、實操作碼欄位、MoD R/Μ字節、SIB字節、位移欄位以及IMM8。
[0023]圖14B示出來自圖14A的哪些欄位構成完整操作碼欄位和基礎操作欄位。
[0024]圖14C示出來自圖14A的哪些欄位構成寄存器索引欄位。
[0025]圖15是根據本發明的一個實施例的寄存器架構的框圖。
[0026]圖16A是示出根據本發明的實施例的示例性有序流水線和示例性寄存器重命名的無序發布/執行流水線二者的框圖。
[0027]圖16B示出處理器核,該處理器核包括耦合到執行引擎單元的前端單元,並且兩者耦合到存儲器單元。
[0028]圖17A是根據本發明的各實施例的單個處理器核連同它與管芯上互連網絡的連接以及其二級(L2)高速緩存的本地子集的框圖。
[0029]圖17B是根據本發明的各實施例的圖17A中的處理器核的一部分的展開圖。
[0030]圖18是根據本發明的實施例的可具有一個以上的核、可具有集成存儲器控制器、並且可具有集成圖形器件的處理器的方框圖。
[0031]圖19所示為根據本發明的一個實施例的系統的框圖。
[0032]圖20所示為根據本發明的實施例的第一更具體示例性系統的框圖。[0033]圖21所示為根據本發明的實施例的第二更具體的示例性系統的框圖。
[0034]圖22所示為根據本發明的實施例的SoC的框圖。
【具體實施方式】
[0035]本文中公開的是打包數據操作掩碼串接(concatenation)指令、用於執行打包數據操作掩碼串接指令的處理器、該處理器在處理或執行打包數據操作掩碼串接指令時執行的方法、以及包含一個或多個用於處理或執行打包數據操作掩碼串接指令的處理器的系統。在下面的描述中,闡述了很多具體細節。然而,應當理解,本發明的各實施例可以在不具有這些具體細節的情況下得到實施。在其他實例中,未詳細示出公知的電路、結構和技術以免混淆對本描述的理解。
[0036]圖1是具有含一個或多個打包數據操作掩碼串接指令105的指令集的處理器100的示例實施例的框圖。該處理器可以是各種複雜指令集計算(CISC)處理器、各種精簡指令集計算(RISC)處理器、各種超長指令字(VLIW)處理器、其各種混合、或完全其他類型的處理器中的任何處理器。在一些實施例中,處理器可以是通用處理器(例如,用於臺式、膝上型等計算機中的一類通用微處理器),但這不是必須的。替換地,指令處理處理裝置可以是專用處理器。合適的專用處理器的示例包括但不限於,網絡處理器、通信處理器、加密處理器、圖形處理器、協處理器、嵌入式處理器、數位訊號處理器(DSP)以及控制器(例如,微控制器),僅列舉數例。
[0037]處理器具有指令集架構(ISA) 101。ISA表示處理器的架構中涉及編程的那部分。ISA通常包括原生指令、架構寄存器、數據類型、尋址模式、存儲器架構、中斷和異常處理以及處理器的外部輸入和輸出(I/O)。ISA與微架構不同,微架構通常表示選擇用於實現指令集架構的特定處理器設計技術。帶有不同的微架構的處理器可以共享共同的指令集架構。
[0038]ISA包括架構寄存器(例如,架構寄存器組)106。所示出的體系結構寄存器包括打包數據寄存器107。每個打包數據寄存器可操作用於存儲打包數據、向量數據或者SMD數據。所示出的體系結構寄存器還包括打包數據操作掩碼寄存器108。打包數據操作掩碼寄存器中的每一個都可操作以存儲打包數據操作掩碼。
[0039]架構寄存器表示板上處理器存儲位置。架構寄存器此處也可以被簡稱為寄存器。短語架構寄存器、寄存器組、以及寄存器在本文中用於表示對軟體和/或編程器可見的寄存器(例如,軟體可見的),和/或由宏指令指定用以標識操作數的寄存器,除非另外予以指定或清楚明顯可知。這些寄存器與給定微架構中的其他非架構寄存器(例如,暫時(temporary)寄存器、重排序緩衝器、引退(retirement)寄存器等)形成對比。
[0040]所示的ISA包括處理器所支持的指令集102。指令集包括若干不同類型的指令。指令集的這些指令表示宏指令(例如,提供給處理器以供執行的指令),與微指令或微操作(例如,從處理器的解碼器解碼宏指令得到的)不同。
[0041]指令集包括一個或多個被掩碼(masked)打包(packed)數據指令103。被掩碼打包數據指令可類似於在背景部分中提及的打包數據指令,且具有一些顯著差別。類似於前述打包數據指令,被掩碼打包數據指令中的每一個可操作用於導致或致使處理器在該打包數據指令指示的一個或多個打包操作數的數據元素上執行打包數據操作。打包數據操作數可被存儲在打包數據寄存器107中。然而,被掩碼打包數據指令中的每個指令可使用一個或多個打包數據操作掩碼寄存器108和/或打包數據操作掩碼以對打包數據處理進行掩碼遮蔽(mask)、斷言(predicate)或條件控制。打包數據操作掩碼和/或掩碼寄存器可表示掩碼操作數、斷言操作數或條件操作控制操作數。
[0042]打包數據操作掩碼和/或掩碼寄存器可操作用於在諸數據元素的粒度下對打包數據處理進行掩碼或條件控制。例如,打包數據操作掩碼可操作用於掩碼設定:在來自單個源打包數據操作數的各個數據元素上、或在來自兩個源打包數據操作數的相應數據元素的各個對上所執行的被掩碼打包數據指令的打包數據操作的結果是否要存儲在打包數據結果中。被掩碼打包數據指令可允許與數據元素分開地且獨立地斷言或條件地控制對每個數據元素或每對相對應數據元素的打包數據處理。被掩碼打包數據指令、操作和掩碼可提供某些優點,諸如增加的代碼密度和/或較高的指令吞吐量。
[0043]再次參考圖1,指令集還包括一個或多個打包數據操作掩碼和/或掩碼寄存器操縱指令104。打包數據操作掩碼和/或掩碼寄存器操縱指令中的每一個可操縱用於導致或致使處理器對一個或多個打包數據操作掩碼寄存器108和/或掩碼進行操縱或操作。如所示,打包數據操作掩碼或掩碼寄存器操縱指令可包括一個或多個打包數據操作掩碼串接指令105。打包數據操作掩碼串接指令105中的每一個可操作用於致使或導致處理器將兩個或更多個打包數據操作掩碼(例如,存儲在打包數據操作掩碼寄存器108中)串接。以下進一步公開打包數據操作掩碼串接指令的各不同實施例。
[0044]處理器還包括執行邏輯109。執行邏輯可操作用於執行或處理指令集的指令(例如,被掩碼打包數據指令和打包數據操作掩碼串接指令)。執行邏輯可包括執行單元、功能單元、算術邏輯單元、邏輯單元、算術單元等。
[0045]為了進一步說明打包數據操作掩碼,考慮它們的使用的代表示例是有幫助的。圖2A是示出採取合併操作的被掩碼打包數據操作203A的第一代表性示例實施例的框圖。可響應於被掩碼打包數據指令(例如,圖1的被掩碼打包數據指令103中的一個)或者作為該指令的結果來執行被掩碼打包數據操作。
[0046]用於所示的被掩碼打包數據操作的指令指示第一源打包數據210-1和第二源打包數據210-2。其他被掩碼打包數據指令可指示僅單個源打包數據,或多於兩個源打包數據。在該例示中,第一和第二源打包數據具有相同尺寸,包含相同寬度的數據元素,並且因此各自包含相同數目的數據元素。在例示中,第一和第二源打包數據中的每一個具有十六個數據元素。作為示例,第一和第二源打包數據可各自為512位寬,並且可各自包括十六個32位雙字數據元素。兩個源打包數據中相同比特位置中(例如,相同垂直位置中)的源數據元素表示相對應數據元素對。數據元素中的每一個具有在表示數據元素的塊內所示出的數值。例如,第一源打包數據的最低位數據元素(右側)具有值3,第一源打包數據的次最低位數據元素具有值7,第一源打包數據的最高位數據元素(左側)具有值12,等等。
[0047]被掩碼打包數據操作的指令還指示打包數據操作掩碼211。打包數據操作掩碼包括多個掩碼元素、斷言元素、條件控制元素、或標記。可以按與一個或多個相對應源數據元
素--對應的形式來包含所述元素或標記。例如,如例示中所示,在操作涉及兩個源打包數
據操作數的情況下,對於每對相應源數據元素,可以有一個這樣的元素或標誌。打包數據操作掩碼的每個元素或標誌可操作用於對一個或多個相應的源打包數據元素上的單獨打包數據操作進行掩碼。例如,在該示例中,每個元素或標記可對相應源打包數據元素對上的單獨打包數據操作進行掩碼。
[0048]如圖中所示的,通常每個元素或標誌可以是單個位。單個位可允許指定兩個不同可能性(例如,執行操作對不執行操作,存儲操作的結果對不存儲操作的結果等)中的任一個。替代地,如果需要在多於兩個的不同選項中進行選擇,則可對每個標誌或元素使用兩個或更多個位。在圖示中,打包數據操作掩碼包括十六個位(即,0011100001101011)。十六個位中的每一個具有與第一和第二打包數據的相應數據元素的十六個對中的一對的有序對應關係。例如,掩碼的最低位比特對應於第一和第二打包數據的對應最低位數據元素的對,掩碼的最高位比特對應於相應的最高位數據元素的對,等等。在替換實施例中,其中源打包數據具有更少或更多的數據元素,打包數據操作掩碼可類似地具有更少或更多的數據元素。
[0049]具體的經例示出的被掩碼打包數據操作是被掩碼打包數據加法操作,該加法操作可操作用於根據打包數據操作掩碼211的相應位提供的條件操作控制或斷言,將來自第一和第二源打包數據210-1、210-2的相應數據元素對的和條件性地存儲打包數據結果212中。該具體的被掩碼打包數據加法操作規定:在每個相應數據元素的對上、與其它對分離或獨立於其它對、以垂直方式條件性地執行單個操作(在這種情況下是加法)。目的地操作數或打包數據結果與源打包數據的尺寸相同且具有與源打包數據相同數量的數據元素。因此,每個相應源數據元素的對,在打包數據結果中的與它們相應的源數據元素對在源打包數據中的位置相同的比特位置中,具有相應結果數據元素。
[0050]再次參考打包數據操作掩碼211。打包數據操作掩碼的十六個位中的每一個被置位(即,具有二進位值I)或者被清除(即,具有二進位值O)。根據所例示的協定,每個位被分別置位(即,I)或清除(即,O),以允許或不允許將在第一和第二源打包數據的相應數據元素對上執行的打包數據操作的結果存儲在打包數據結果的相應數據元素中。例如,打包數據操作掩碼中的次最 低位位被置位(即,I),且表示在相應的次最低位數據元素對上執行的打包數據加法操作(即,7+1)的結果的和(即,8)被存儲在打包數據結果的相應次最低數據元素中。在例示中,求和通過下劃線標出。
[0051]相反,當給定的位被清除(即,O)時,不允許相應的源數據元素對的打包數據操作結果被存儲在打包數據結果的對應數據元素中。相反,可將另一個值存儲在結果數據元素中。例如,如圖例所示,來自第二源打包數據的相應數據元素的值可被存儲在打包數據結果的相應數據元素中。例如,打包數據操作掩碼中最高位比特被清除(即,0),且來自第二源打包數據的最高位數據元素的數值(即,15)被存儲在打包數據結果的最高位結果數據元素中。這稱為合併-掩碼(merging-masking)。與所例示相反的協定也是可能的,其中位被清零(即,O)以允許存儲結果,或被置位(即,I)以不允許存儲結果。
[0052]在一些實施例中,打包數據操作可任選地在第一和第二源打包數據的所有相應數據元素對上執行,而不管打包數據操作掩碼的相應位被置位還是清除,但是打包數據操作的結果可被存儲或可不被存儲在打包數據結果中,這取決於打包數據操作掩碼的相應位是被置位還是被清零。替代地,在另一實施例中,如果打包數據操作掩碼的相應位指定操作的結果不被存儲在打包數據結果操作中,則打包數據操作可被任選地省去(即,不被執行)。在一些實施例中,可任選地,異常(例如,異常標誌)或衝突可被抑制,或不被在掩碼關閉(masked-off)的元素上的打包數據操作所引起。在一些實施例中,對於具有存儲器操作數的被掩碼打包數據指令,可任選地針對掩碼關閉數據元素抑制存儲器錯誤。該特徵可有助於實現控制流斷言,因為掩碼事實上可提供合併行為打包數據寄存器,但不是必須的。
[0053]圖2B是例示採取歸零操作的被掩碼打包數據操作203B的第二代表性示例實施例的框圖。採取歸零的被掩碼打包數據操作類似於前述採取合併的被掩碼打包數據操作。為了避免使描述變得模糊,不再重複相似之處,相反,將主要提及不同之處。一個明顯的不同之處在於,與在打包數據結果的相應位被掩碼關閉(例如,清除為O)時將源打包數據(例如,圖2A中的第二源打包數據210-2)的數據元素的值合併或存儲到打包數據結果的相應數據元素中不同,打包數據結果的相應數據元素被歸零。例如,雙字結果打包數據元素的所有32位可具有零值。這稱為歸零-掩碼(zeroing-masking)。替換地,也可任選地使用除零之外的其他預定值。
[0054]這些僅僅是被掩碼打包數據操作的幾個示例性示例。應當理解,處理器可支持寬泛的各種不同類型的被掩碼打包數據操作。例如,這些可包括僅具有一個源打包數據或具有兩個以上的源打包數據的操作、生成不同尺寸的結果打包數據的操作、具有不同尺寸的數據元素的操作和/或具有不同的結果數據元素順序的操作、及其組合。
[0055]圖3是包括存儲有打包數據操作掩碼串接指令的機器可讀的存儲介質314的製品(例如,電腦程式產品)的框圖。在一些實施例中,機器可讀存儲介質可包括有形的和/或非瞬態的機器可讀存儲介質。在各示例實施例中,機器可讀存儲介質314可包括軟盤、光存儲介質、光碟、CD-ROM、磁碟、磁光碟、只讀存儲器(ROM)、可編程ROM(PROM)、可擦除可編程ROM(EPROM)、電可擦除可編程ROM(EEPROM)、隨機存取存儲器(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相變存儲器、半導體存儲器、其它類型的存儲器或它們的組合。在一些實施例中,介質可包括一個或多個固態材料,例如半導體材料、相變材料、磁性材料、光學透明固體材料等等。
[0056]打包數據操作掩碼串接指令305可操作用於指定或以其它方式指示具有第一打包數據操作掩碼的第一源,用於指定或以其它方式指示具有第二打包數據操作掩碼的第二源,並用於指定或以其它方式指示目的地。在一些實施例中,打包數據操作掩碼串接指令可操作用於明確指定第一源、第二源、和目的地。在某些實施例中,第一源、第二源、和目的地可各自為打包數據操作掩碼寄存器,儘管這不是必需的(例如,目的地可以在存儲器中或另一存儲位置中)。指令可具有由指令格式或指令的編碼所定義的一個或多個欄位,以明確指定寄存器和存儲位置。在一些實施例中,指令可遵循VEX編碼方案,但這不是必須的。VEX編碼方案的進一步的細節(如果需要的話,但對於理解本發明而言不是必須的)可在以
下文件中獲得:加利福尼亞州聖克拉拉市的英特爾公司,英特爾? 64和IA_32架構軟體開發者手冊,序號:253666-039US,2011年5月。可另選的,指令可隱含地指示源和/或目的地。在一些實施例中,目的地可不同於第一和第二源。在其他實施例中,第一和第二源中的一個可被用作目的地(例如,結果可至少部分地蓋寫源中的一個的初始數據)。
[0057]打包數據操作掩碼串接指令,如果被機器執行,可操作用於致使機器響應於打包數據操作掩碼串接指令而將結果存儲在目的地中。結果包括:和第二打包數據操作掩碼串接的第一打包數據操作掩碼。應理解的是,可以在存儲介質上存儲其他的指令或指令的序列以執行本文所公開的一個或多個操作或方法(例如,將打包數據操作掩碼串接指令的結果指示為預測操作數的被掩碼打包數據指令、緊密附屬的打包數據指令、或使用打包數據操作掩碼串接指令的例程或算法)。
[0058]不同類型的機器的示例包括但不限於指令處理裝置、指令執行裝置、處理器(例如,通用處理器和專用處理器)以及具有一個或多個指令處理裝置、指令執行裝置和/或處理器的各種電子設備。這種電子設備的幾個代表示例包括但不限於計算機系統、臺式機、膝上型計算機、筆記本、伺服器、網絡路由器、網絡交換機、上網計算機、機頂盒、蜂窩電話、視頻遊戲控制器等。
[0059]圖4是具有執行單元417的指令處理裝置415的示例實施例的框圖,該執行單元417可操作用於執行包含打包數據操作掩碼串接指令405的示例實施例的指令。在一些實施例中,指令處理裝置可以是處理器和/或可被包括在處理器中。例如,在一些實施例中,指令處理裝置可以是圖1的處理器或類似設備,或者可被包括在圖1的處理器或類似設備中。替換地,指令處理裝置可被包括在不同的處理器或電子系統中。
[0060]指令處理裝置415可接收打包數據操作掩碼串接指令405。可從存儲器、指令隊列、指令獲取單元或其它源接收指令。打包數據操作掩碼串接指令可表示由指令處理裝置識別的機器指令、宏指令或控制信號。指令處理裝置可具有專用的或特定的電路或其它邏輯(例如,與硬體和/或固件結合的軟體),該專用的或特定的電路或其它邏輯可操作用於處理指令和/或響應於指令的結果或按指令所指示地存儲結果。
[0061]指令處理裝置的所示實施例包括指令解碼器416。解碼器可接收並解碼較高級的機器指令或宏指令,諸如所接收的打包數據操作掩碼串接指令。解碼器可以生成並輸出一個或多個較低級的微操作、微代碼入口點、微指令、或其他較低級的指令或控制信號,它們反映和/或來源於原始較高級的指令。一個或多個較低級指令或控制信號可通過一個或多個較低級(例如,電路級或硬體級)操作來實現較高級指令的操作。解碼器可以使用各種不同的機制來實現。合適機制的示例包括但不限於微代碼只讀存儲器(ROM)、查找表、硬體實現、可編程邏輯陣列(PLA)、用於實現本領域已知的解碼器的其他機制等。
[0062]或者,在一個或多個其它實施例中,裝置不是具有解碼器416,而是可具有指令仿真器、轉換器、變形器(morpher)、解釋器或者其他指令變換邏輯。各種不同類型的指令變換邏輯在本領域中是已知的,並且可在軟體、硬體、固件、或者其組合中實現。指令轉換邏輯可接收打包數據操作掩碼串接指令,並且仿真、翻譯、變形、解釋、或者以其他方式將該指令轉換成一個或多個對應的導出指令或控制信號。在又一個其它實施例中,指令處理裝置可具有解碼器和附加的指令變換邏輯二者。例如,指令處理裝置可具有:指令變換邏輯,以將打包數據操作掩碼串接指令變換成第二指令;以及解碼器,以將該第二指令解碼成可由指令處理裝置的原生硬體執行的一個或多個較低級的指令或控制信號。指令變換邏輯中的一些或全部可位於指令處理裝置的其餘部分的管芯外,諸如在單獨的管芯上或在管芯外的存儲器中。
[0063]再次參照圖4,指令處理裝置還包括:可操作用於存儲第一打包數據操作掩碼的第一打包數據操作掩碼寄存器408-1 ;和可操作用於存儲第二打包數據操作掩碼的第二打包數據操作掩碼寄存器408-2。如前所述,該指令可明確地指定(例如,通過位,或通過一個或多個欄位)或以其它方式指示第一打包數據操作掩碼寄存器、第二打包數據操作掩碼寄存器、和目的地419。在一些實施例中,目的地可以是第三打包數據操作掩碼寄存器408-3。或者,目的地存儲位置可以是另一個寄存器或存儲器位置。在一些實施例中,第一、第二和第三打包數據操作掩碼寄存器可在一組打包數據操作掩碼寄存器(例如,寄存器組)408中。
[0064]打包數據操作掩碼寄存器可各自表示板上處理器存儲位置。打包數據操作掩碼寄存器可表示架構寄存器。打包數據操作掩碼寄存器可對於軟體和/或編程器可見(例如,軟體可見),和/或可以是宏指令(例如,打包數據操作掩碼串接指令)所指示或指定的用以標識操作數的寄存器。打包數據操作掩碼寄存器可通過使用公知技術以不同方式實現於不同的微架構中,並且不限於任何已知的特定類型的電路。多種不同類型的寄存器是可適用的,只要它們能夠存儲並提供在本申請中描述的數據。合適類型的寄存器的示例包括但不限於專用物理寄存器、使用寄存器重命名的動態分配的物理寄存器、及其組合。
[0065]指令處理裝置還包括執行單元417。執行單元與第一、第二、和第三打包數據操作掩碼寄存器相耦合。執行單元還與解碼器耦合。執行單元可從解碼器接收一個或多個微操作、微代碼進入點、微指令、其他指令或其他控制信號,它們反映了打包數據操作串接指令或者是從打包數據操作串接指令導出的。
[0066]執行單元可操作用於,響應於打包數據操作掩碼串接指令和/或作為其結果,在目的地存儲結果。所述結果包括:和第二打包數據操作掩碼相串接的第一打包數據操作掩碼。作為示例,執行單元可包括算術邏輯單元、邏輯單元、算術單元、功能單元等。執行單元可包括可操作用於串接第一和第二打包數據操作掩碼的串接邏輯418。執行單元和/或串接邏輯可包括可操作用於實現指令的操作(例如,執行一個或多個微指令)的電路或其它執行邏輯(例如,軟體、固件、硬體或組合)。
[0067]在某些實施例中,第一和第二打包數據操作掩碼具有相同的尺寸,但這不是必需的。在各種實施例中,每一個打包數據操作掩碼的尺寸是8位、16位、或32位。在某些實施例中,打包數據操作掩碼的尺寸可以對打包數據操作串接指令是隱含的(例如,對於指令的操作碼是隱含的)。在某些實施例中,指令集可包括用於打包數據操作掩碼的多個不同尺寸中的每一個的不同打包數據操作掩碼串接指令(例如,一個指令用於8位掩碼,另一個指令用於16位掩碼,再一個指令用於32位掩碼,等等)。打包數據操作掩碼寄存器和/或源可至少與最大尺寸的打包數據操作掩碼一樣大或任選地比該最大尺寸更大。在一個示例中,打包數據操作掩碼寄存器可以為64位寬,但這不是必需的。打包數據操作掩碼可包含打包數據操作掩碼寄存器的有效位、被利用的位、或有意義的位,而打包數據操作掩碼寄存器的未被用於打包數據操作掩碼的剩餘位可表示非有效位、未利用的位、非有意義的位或無關的位。
[0068]在某些實施例中,第一打包數據操作掩碼的位在結果中出現的順序和第一打包數據操作掩碼的位在第一源中出現的順序相同,且第二打包數據操作掩碼的位在結果中出現的順序和第二打包數據操作掩碼在第二源中出現的順序相同。在某些實施例中,第一和第二打包數據操作掩碼可位於第一和第二源的對應部分(例如,相應的最低位部分,相應的最高位部分,等等),且執行單元可操作用於在目的地的對應部分的位數的兩倍的位中存儲被串接的打包數據操作掩碼。在一些實施例中,執行單元可進一步操作用於使目的地中未被用於存儲串接掩碼的位歸零,或者給予這些位另一個預定值。
[0069]為了進一步說明,在實施例中,第一和第二打包數據操作掩碼可各自為8位,且源和目的地(例如,打包數據操作掩碼寄存器)可各自有(N+1)位,其中(N+1)位大於32位(例如,為64位)。在這樣的實施例中,第一打包數據操作掩碼可被存儲在第一源的位[7:0],且第二打包數據操作掩碼可被存儲在第二源的位[7:0]。響應於打包數據操作掩碼串接指令和/或作為其結果,執行單元可操作用於存儲結果,其包括在目的地的[7:0]位的第一打包數據操作掩碼,和在目的地的[15:8]位的第二打包數據操作掩碼。在某些實施例中,第一源的[N:8]位是全零,且第二源的[N:8]位是全零,且執行單元可操作用於將零存儲在目的地的[N: 16]位中。
[0070]在其他實施例中,第一和第二打包數據操作掩碼可各自為16位,且源和目的地(例如,打包數據操作掩碼寄存器)可各自有(N+1)位,其中(N+1)位大於32位(例如,為64位)。在這樣的實施例中,第一打包數據操作掩碼可被存儲在第一源的位[15:0],且第二打包數據操作掩碼可被存儲在第二源的位[15:0]。響應於打包數據操作掩碼串接指令和/或作為其結果,執行單元可操作用於存儲結果,其包括在目的地的[15:0]位的第一打包數據操作掩碼,和在目的地的[31:16]位的第二打包數據操作掩碼。在某些實施例中,第一源的[N: 16]位是全零,且第二源的[N: 16]位是全零,且執行單元可操作用於將零存儲在目的地的[N:32]位中。
[0071]在其他實施例中,第一和第二打包數據操作掩碼可各自為32位,且源和目的地(例如,打包數據操作掩碼寄存器)可各自有(N+1)位,其中(N+1)位至少是64位。在這樣的實施例中,第一打包數據操作掩碼可被存儲在第一源的位[31:0],且第二打包數據操作掩碼可被存儲在第二源的位[31:0]。響應於打包數據操作掩碼串接指令和/或作為其結果,執行單元可操作用於存儲結果,其包括在目的地的[31:0]位的第一打包數據操作掩碼,和在目的地的[63:32]位的第二打包數據操作掩碼。在某些實施例中,第一源的[N:32]位是全零,第二源的[N: 32]位是全零。如果目的地有超過64位,則執行單元可操作用於將零存儲在目的地的[N: 64]位中。
[0072]為了避免混淆描述,已示出和描述了相對簡單的指令處理裝置。在其他實施例中,指令處理裝置或處理器可任選地包括其他公知組件,諸如舉例而言,指令獲取單元、指令調度單元、分支預測單元、指令和數據的高速緩存、指令和數據的轉換後備緩衝器、預獲取緩衝器、微指令隊列、微指令定序器、總線接口單元、第二或更高級高速緩存、引退單元、寄存器重命名單元以及上述的各種組合。此外其它實施例可具有多種不同類型的執行單元,這些執行單元中的至少一個響應於本文公開的指令的實施例。其它實施例可具有多個核、邏輯處理器或執行引擎。可操作用於執行本文中公開的指令的實施例的執行單元可被包含在核、邏輯處理器或執行引擎中的至少一個、至少兩個、大多數或全部中。實際上在處理器和其它指令處理裝置中存在這些組件的多種不同的組合和配置。本發明的範圍不僅限於任何已知的這樣的組合或配置。
[0073]圖5是可由處理器和/或執行單元響應於打包數據操作掩碼串接指令(例如,指令405)和/或作為其結果而執行的打包數據操作掩碼串接操作的示例實施例的框圖。該指令指示第一源打包數據操作掩碼寄存器508-1,第二源打包數據操作掩碼寄存器508-2,和目的地打包數據操作掩碼寄存器508-3。
[0074]在該示例實施例中,第一 8位打包數據操作掩碼511-1被存儲在第一源打包數據操作掩碼寄存器508-1的[7:0]位中,而第二 8位打包數據操作掩碼511-2被存儲在第一源打包數據操作掩碼寄存器508-2的[7:0]位中。在其它實施例中,打包數據操作掩碼可可更寬(例如32位、64位等)或更窄(例如,4位、8位等)。此外,在其他實施例中,掩碼可存儲在寄存器的其他部分中(例如,在最高有效位中)。源和目的地打包數據操作掩碼寄存器各自是(N+1)位寬,其中N是整數的位數。在某些實施例中,這些寄存器可各自為64位。或者,這些寄存器可更寬(例如,80位、128位等)或更窄(例如,8位、16位、32位、48位等)。在某些實施例中,第一源打包數據操作掩碼寄存器的[N:8]位是全零597-1,而第二源打包數據操作掩碼寄存器的[N:8]位是全零597-2,儘管這不是必需的。
[0075]響應於或由於打包數據操作掩碼串接指令,結果被存儲在目的地打包數據操作掩碼寄存器508-3中。如所示,在某些實施例中,結果可包括第一和第二 8位打包數據操作掩碼598的16位串接項。第一打包數據操作掩碼511-1可被存儲在目的地的位[7:0],且第二打包數據操作掩碼511-2可被存儲在目的地的位[15:8]。在另選實施例中,這些掩碼的位置可在目的地中交換。在某些實施例中,可在目的地的[N: 16]位中存儲零。另選地,可在目的地的[N: 16]位中存儲另一預定值,或者目的地的[N: 16]位中的初始位可不變。對於其他尺寸的打包數據操作掩碼(例如,16位掩碼、32位掩碼等),可執行和本例中所示操作類似的操作。
[0076]圖6是處理打包數據操作掩碼串接指令的示例實施例的方法620的示例實施例的流程框圖。在各實施例中,該方法可由通用處理器、專用處理器(例如,圖形處理器或數位訊號處理器)、或另一種類型的數字邏輯設備或指令處理裝置執行。在一些實施例中,方法620可由圖1的處理器100、圖4的指令處理裝置415或類似的處理器或指令處理裝置執行。可另選地,方法620可由處理器或指令處理裝置的不同實施例執行。此外,圖1的處理器100和圖4的指令處理裝置415可執行與圖6的方法620的操作和方法相同、類似或不同的操作和方法的實施例。
[0077]方法包括在框621處接收打包數據操作掩碼串接指令。打包數據操作掩碼串接指令指定或以其它方式指示具有第一打包數據操作掩碼的第一源,指定或以其它方式指示具有第二打包數據操作掩碼的第二源,並指定或以其它方式指示目的地。在各個方面,該指令可在處理器、指令處理裝置或者其一部分(例如,解碼器、指令變換器等)處接收。在各個方面,指令可從處理器外的源(例如,從主存儲器、盤、或總線或互連)或者從處理器上的源(例如,從指令高速緩存)接收。
[0078]然後,在框622,響應於、由於、和/或依照打包數據操作掩碼串接操作指令所指定的,結果被存儲在目的地中。所述結果包括:和第二打包數據操作掩碼相串接的第一打包數據操作掩碼。作為示例,執行單元、指令處理裝置或處理器可串接掩碼並存儲結果。
[0079]在某些實施例中,第一和第二打包數據操作掩碼可具有相同的尺寸,但這不是必需的。在各種實施例中,每一個打包數據操作掩碼的尺寸是8位、16位、或32位,不過其他尺寸也是可能的。在某些實施例中,打包數據操作掩碼的尺寸可以對打包數據操作串接指令是隱含的(例如,對於指令的操作碼是隱含的)。打包數據操作掩碼寄存器和/或源可至少與最大尺寸的打包數據操作掩碼一樣大或任選地比該最大尺寸更大。在一個示例中,打包數據操作掩碼寄存器可以為64位寬,但這不是必需的。
[0080]在某些實施例中,第一和第二打包數據操作掩碼可位於第一和第二源的對應部分(例如,相應的最低位部分,相應的最高位部分,等等),且串接的打包數據操作掩碼可被存儲在目的地的對應部分的位數的兩倍的位中(例如,如果掩碼被存儲在最低位部分,則在最低位部分中)。在某些實施例中,未被用於存儲經串接掩碼的目的地的位可任選地被歸零,或可另選地,被給予另一預定值,或者就讓最初在寄存器中的位被保留和/或未被改變。
[0081]所示的方法包括從處理器或指令處理裝置外部可見的操作(例如,從軟體的視點來看)。在其它實施例中,該方法可任選地包括一個或多個其它操作(例如,在處理器或指令處理器裝置內部發生的一個或多個操作)。作為示例,在接收到指令之後,可將指令解碼、轉換、仿真或以其它方式變換成一個或多個其它指令或控制信號。可訪問和/或接收第一和第二打包數據操作掩碼。執行單元可被啟用用於根據指令生成或執行串接,並且可生成或執行該串接。
[0082]該方法還可與其它操作和/或方法一起使用。例如,附加的操作可包括:接收被掩碼打包數據指令,該被掩碼打包數據指令將在方框621被存儲的結果或目的地指示為掩碼或預測操作數,用於掩碼遮蔽或預測在打包數據上的打包數據操作。作為另一個示例,如下文將進一步解釋的,在某些實施例中,可結合緊密相關或關聯的打包數據指令(例如,用於將來自兩個源打包數據的數據元素打包為打包數據結果的打包指令)來執行該方法。附加的操作可包括:接收指定第一和第二打包數據並且指定該第一和第二打包數據的數據元素的重新安排和/或串接的打包指令。用於打包數據操作掩碼串接指令的方法可被用於重新安排和/或串接第一和第二打包數據操作掩碼的位,所述的位可各自對應於第一和第二打包數據的諸數據元素中的一個不同數據元素,以幫助維持打包數據操作掩碼的位和打包數據結果的對應數據元素之間的位置對應關係,該位置對應關係可有助於進一步的掩碼(masking)操作。本發明的範圍不限於和這樣的指令結合使用,而是本文所公開的指令有更為寬泛的用途。
[0083]圖7是一組合適的打包數據寄存器707的示例實施例的方框圖。所示打包數據寄存器包括三十二個512位寬打包數據或向量寄存器。這些三十二個512位寬寄存器被標記為ZMMO至ZMM31。在所示實施例中,這些寄存器中的較低十六個的較低位256位(即,ZMM0-ZMM15)重疊或者覆蓋在各個256位寬打包數據或向量寄存器(標記為YMM0-YMM15)上,但是這不是必需的。同樣,在所示實施例中,YMM0-YMM15的較低位128位被混疊或者覆蓋在相應128位打包數據或向量寄存器(標記為XMM0-XMM1)上,但是這也不是必需的。512位寬寄存器ZMMO至ZMM31可操作用於保持512位打包數據、256位打包數據、或者128位打包數據。256位寬寄存器YMM0-YMM15可操作用於保持256位打包數據或者128位打包數據。128位寬寄存器XMM0-XMM1可操作用於保持128位打包數據。每一寄存器可用於存儲打包浮點數據或打包整數數據。支持不同數據元素尺寸,包括至少8位字節數據、16位字數據、32位雙字或單精度浮點數據、以及64位四字或雙精度浮點數據。打包數據寄存器的替換實施例可包括不同數量的寄存器、不同尺寸的寄存器,並且可以或者可以不將較大寄存器混疊在較小寄存器上。
[0084]圖8是示出具有合適打包數據格式的若干示例實施例的框圖。256位打包字格式810-1是256位寬,並且包括十六個16位字數據元素。在圖示中十六個16位字數據元素從最低有效位位置至最高有效位位置標記為WORDO至W0RD15。256位打包雙字格式810-2是256位寬,並且包括八個32位雙字(dword)數據元素。在圖示中八個32位雙字數據元素從最低有效位位置至最高有效位位置標記為DWORDO至DW0RD7。256位打包四字格式810-3是256位寬,並且包括四個64位四字數據元素。在圖示中四個64位四字數據元素從最低有效位位置至最高有效位位置標記為QWORDO至QW0RD3。
[0085]其他打包數據結果也是合適的。例如,其他合適的256位打包數據格式包括256位打包8位字節格式,256位打包32位單精度浮點格式,以及256位打包64位雙精度浮點格式。單精度浮點格式和雙精度浮點格式可分別類似於所示的雙字格式810-2和四字格式810-3,然而數據元素內的位的含義/解釋可不同。此外,大於和/或小於256位的打包數據格式也是合適的。例如,前述數據類型的512位(或更大)打包數據格式和/或128位(或更小)打包數據格式也是合適的。通常,對於相同數據類型而言,512位打包數據格式可具有為256位打包數據格式的兩倍之多的數據元素,而對於相同數據類型而言,128位數據格式可具有為256位打包數據格式的一半那麼多的數據元素。通常,打包數據元素的數量等於以位計的打包數據的尺寸除以以位計的打包數據元素的尺寸。
[0086]圖9是例示打包數據操作掩碼位923的數目取決於打包數據寬度和打包數據元素寬度的表格。示出128位、256位和512位的打包數據寬度,但是其它寬度也是可能的。8位字節、16位字、32位雙字(dword)或單精度浮點、以及64位四倍字(Qword)或雙精度浮點的打包數據元素寬度被考慮,然而其它寬度也是可能的。
[0087]如圖所示,當打包數據寬度是128位時,當打包數據元素寬度是8位時可將16位用於掩碼,當打包數據元素寬度是16位時可將8位用於掩碼,當打包數據元素寬度是32位時可將4位用於掩碼,當打包數據元素寬度是64位時可將2位用於掩碼。當打包數據寬度是256位時,當打包數據元素寬度是8位時可將32位用於掩碼,當打包數據元素寬度是16位時可將16位用於掩碼,當打包數據元素寬度是32位時可將8位用於掩碼,當打包數據元素寬度是64位時可將4位用於掩碼。當打包數據寬度是512位時,當打包數據元素寬度是8位時可將32位用於掩碼,當打包數據元素寬度是16位時可將16位用於掩碼,當打包數據元素寬度是32位時可將8位用於掩碼,當打包數據元素寬度是64位時可將4位用於掩碼。
[0088]圖10是一組合適的打包數據操作掩碼寄存器1008的示例實施例的框圖。打包數據操作掩碼寄存器中的每一個可用於存儲打包數據操作掩碼。在所例示的實施例中,該組包括標示為KO至k7的八個打包數據操作掩碼寄存器。替代的實施例可包括比八個更少(例如,兩個、四個、六個等)或比八個更多(例如,十六個、二十個、三十二個等)打包數據操作掩碼寄存器。在所例示的實施例中,打包數據操作掩碼寄存器中的每一個為64位寬。在替代實施例中,打包數據操作掩碼寄存器的寬度可以比64位更寬(例如,80位,128位等)或比64位更窄(例如,8位、16位、32位等)。打包數據操作掩碼寄存器可通過使用公知技術以不同方式實現,並且不限於任何已知的特定類型的電路。多種不同類型的寄存器可適用,只要它們能夠存儲並提供在本申請中描述的數據。合適寄存器的示例包括但不限於,專用物理寄存器、使用寄存器重命名的動態分配的物理寄存器、以及其組合。
[0089]在一些實施例中,打包數據操作掩碼寄存器908可以是分開的專用架構寄存器集合。在一些實施例中,與用於編碼或指定其它類型的寄存器(例如,圖1的打包數據寄存器108)相比,指令可在指令格式的不同位或一個或多個不同欄位組合中編碼或指定打包數據操作掩碼寄存器。作為示例,被掩碼打包數據指令可使用三個位(例如,3位欄位)來編碼或指定八個打包數據操作掩碼寄存器kO至k7中的任一個。在替代實施例中,在分別有更少或更多打包數據操作掩碼寄存器時,可使用更少或更多位。在一個特定實現中,僅打包數據操作掩碼寄存器kl至k7(而非kO)可被尋址作為斷言操作數以用於斷言被掩碼打包數據操作。寄存器kO可被用作常規源或目的地,但是可能不被編碼為斷言操作數(例如,如果kO被指定,則其具有全一或「無掩碼」的編碼)。在其他實施例中,寄存器中的全部或僅一些可被編碼為斷言操作數。
[0090]圖11是例示打包數據操作掩碼寄存器1108的示例實施例並且示出可被用作打包數據操作掩碼和/或用於掩碼遮蔽(masking)的位的數目取決於打包數據寬度和數據元素寬度的示圖。所例示的打包數據操作掩碼寄存器的示例實施例為64位寬,但是並不必需如此。取決於打包數據寬度和數據元素寬度的組合,可將全部64位或僅64位的子集用作用於掩碼遮蔽的打包數據操作掩碼。一般而言,當單個每元素的掩碼控制位被使用時,打包數據操作掩碼寄存器中可用於進行掩碼遮蔽的位的數目等於以位計的打包數據寬度除以以位計的打包數據元素寬度。
[0091]示出若干示例性示例。即,當打包數據寬度為512位而打包數據元素寬度為64位時,則僅寄存器的最低位8位被用作打包數據操作掩碼。當打包數據寬度為512位而打包數據元素寬度為32位時,則僅寄存器的最低位16位被用作打包數據操作掩碼。當打包數據寬度為512位而打包數據元素寬度為16位時,則僅寄存器的最低位32位被用作打包數據操作掩碼。當打包數據寬度為512位而打包數據元素寬度為8位時,則寄存器的全部64位被用作打包數據操作掩碼。根據所示例的實施例,被掩碼打包數據指令可基於該指令相關聯打包數據寬度和數據元素寬度而僅訪問和/或利用寄存器中用於打包數據操作掩碼的最低位或最低有效位的數目。
[0092]在所例示的實施例中,寄存器的最低位子集或部分被用於掩碼遮蔽,但是並不要求如此。在替代實施例中,可任選地使用最高位子集或某一其他子集。此外,在所例示的實施例中,僅512位打包數據寬度被考慮,然而,相同的原理適用於其他打包數據寬度,諸如例如256位和128位寬度。如先前提及的,並不必需使用64位打包數據操作掩碼寄存器。
[0093]圖12A-12C例示打包數據操作掩碼串接指令和其操作的多種特定示例實施例。在這些圖中,SRCl是第一源,SRC2是第二源,DEST是目的地,MAX_KL表示DEST的位數,符號—表示存儲。在一些實施例中,SRCl、SRC2和DEST各自是打包數據操作掩碼寄存器,且在一些實施例中MAX_KL是64位,但這不是必須的。在其他實施例中,不是將DEST的最高位部分歸零,而是可給予另一預定值(例如,全為1,或保持、或合併來自SRCl或SRC2中一個的值)。再其他實施例中,來自SRC2的打包數據操作掩碼相比來自SRCl的打包數據操作掩碼位可以位於DEST的較低位比特位置。
[0094]本文中公開的打包數據操作掩碼串接指令是具有一般用途的通用指令。例如,這些指令可被單獨使用或結合其他指令使用,以串接打包數據操作掩碼和/或掩碼寄存器,以便以特定應用、算法或代碼有用且期望的各種不同方式操縱掩碼或掩碼寄存器。在一些實施例中,本文公開的打包數據操縱掩碼串接指令可與緊密附屬的或相關聯的指令結合使用。在某些實施例中,緊密相關或關聯的打包數據指令是打包指令,其可操作用於將來自兩個源打包數據的數據元素打包為結果打包數據。適當的打包指令的示例是在美國專利US5802336中描述的指令和在256位和/或512位打包數據上操作的打包指令。
[0095]圖13是可由處理器和/或執行單元響應於和/或作為打包指令的結果而執行的打包操作1396的示例實施例的框圖。打包指令可操作用於指示第一源打包數據1310-1,第二源打包數據1310-2,和用於打包數據結果的目的地1312。第一和第二源打包數據和目的地可均為打包數據寄存器(例如,圖1中的打包數據寄存器107)。在該示例中,第一和第二源打包數據和目的地都是相同長度的(例如,都是256位,或都是512位,等等)。在這個具體的示例實施例中,第一源打包數據具有標為Atl-A7的八個數據元素。第二源打包數據具有標為Btl-B7的八個數據元素。作為示例,第一和第二源打包數據可各自為256位寬度,且數據元素可各自為32位雙字(dword)。
[0096]打包數據結果可響應於打包數據指令而被存儲在目的地中。打包數據結果包括被標為Atl』 -A/和Btl』 -B/的十六個數據元素。結果數據元素Atl』 -A/在相應位置對應於源數據元素Atl-AJ例如,B2』對應B2,B5』對應B5,等等)。結果數據元素是源數據元素的位寬度的一半,且結果包括來來自兩個源的所有數據元素。類似地,結果數據元素Btl』 -B/在相應位置對應於源數據元素Btl-B715在某些實施例中,數據元素Aci』 -A/的每一個包括=Atl』 -A/的每個對應數據元素的一部分,和與Atl-A7的每個對應數據元素的相對應的飽和值,二者中的一項(例如,A。』包括Atl的一部分,A6』包括對應於A6的飽和值)。
[0097]類似的,Bc/-B/的每一個包括=Btl-B7的每個對應數據元素的一部分,和與Btl-B7的每個對應數據元素的相對應的飽和值,二者中的一項。
[0098]在一些實施例中,本文公開的打包數據操作掩碼串接指令的串接操作可用於,作為包括指令的結果,使在源打包數據的數據元素上執行的打包操作並行或鏡像。可按照源打包數據被重新安排或打包的方式,將打包數據操作掩碼的位串接或重新安排。在源打包數據上的打包指令和/或操作可在代碼序列中與打包數據操作掩碼串接指令和/或操作並行執行或一起執行。有利的是,這可幫助以模擬方式重新安排打包數據操作掩碼的位以及相應的打包數據元素,從而使得打包數據操作掩碼的位和對應的打包數據元素之間的位置對應關係可被保持。保持這種位置對應關係可有助於允許打包數據操作掩碼的位跟蹤對應的打包數據元素,使得這些位可用於掩碼後續的打包數據操作(例如,由在打包指令的打包數據結果上操作的後續被掩碼打包數據指令所使用)。然而,本發明的範圍不限於和這些打包指令一起使用本文公開的打包數據操作掩碼串接指令。
[0099]除了這些打包指令,打包數據操作掩碼串接指令還可以用於其他指令,例如將兩個打包數據的數據元素中的每一個轉化為具有一半尺寸的對應數據元素(例如,從雙字到字或字節)的一個或多個其他指令。打包數據操作掩碼串接指令還可以被用於暫時地在打包數據操作掩碼寄存器的上部分的非活動位中存儲第一打包數據操作掩碼(不是立即需要的),該打包數據操作掩碼寄存器還在其活動位的最低有效部分中存儲第二打包數據操作掩碼。在第一掩碼不會即將被使用的時刻,將第一掩碼臨時地存儲在還在其活動位中存儲第二掩碼的相同寄存器的非活動位中,可有助於避免需要消耗附加的打包數據操作掩碼寄存器來存儲第一掩碼。這可幫助避免用盡打包數據操作掩碼寄存器和/或避免在沒有可用的打包數據操作掩碼寄存器時需要將打包數據操作掩碼存儲到存儲器中。還基於本公開構想到其它使用。
[0100]指令集包括一個或多個指令格式。給定指令格式定義各個欄位(位的數量、位的位置)以指定要執行的操作(操作碼)以及要對其執行該操作的操作碼等。通過指令模板(或子格式)的定義來進一步分解一些指令格式。例如,給定指令格式的指令模板可被定義為具有指令格式的欄位(所包括的欄位通常按照相同順序,但是至少一些欄位具有不同的比特位置,因為包括的欄位更少)的不同子集,和/或被定義為具有不同解釋的給定欄位。由此,ISA的每一指令使用給定指令格式(並且如果定義,則以該指令格式的指令模板中的給定一個)來表達,並且包括用於指定操作和操作數的欄位。例如,示例性ADD指令具有專用操作碼以及包括用於指定該操作碼的操作碼欄位和用於選擇操作數的操作數欄位(源I/目的地以及源2)的指令格式;並且該ADD指令在指令流中的出現將具有選擇專用操作數的操作數欄位中的專用內容。已經發布和/或公布了涉及高級向量擴展(AVX) (AVX1和AVX2)且使用向量擴展(VEX)編碼方案的SMD擴展集(例如,參見2011年10月的Intel?64和IA-32架構軟體開發手冊,並且參見2011年6月的Intel?高級向量擴展編程參考)。
[0101]示例性指令格式
[0102]本文中所描述的指令的實施例可以不同的格式體現。另外,在下文中詳述示例性系統、架構、以及流水線。指令的實施例可在這些系統、架構、以及流水線上執行,但是不限於詳述的系統、架構、以及流水線。
[0103]VEX指令格式
[0104]VEX編碼允許指令具有兩個以上操作數,並且允許SMD向量寄存器比128位長。VEX前綴的使用提供了三操作數(或者更多)句法。例如,先前的兩操作數指令執行蓋寫源操作數的操作(諸如A = A+B)。VEX前綴的使用使操作數執行非破壞性操作,諸如A =B+C。
[0105]圖14A示出示例性AVX指令格式,包括VEX前綴1402、實操作碼欄位1430、Mod R/M字節1440、SIB字節1450、位移欄位1462以及IMM81472。圖14B示出來自圖14A的哪些欄位構成完整操作碼欄位1474和基礎操作欄位1442。圖14C示出來自圖14A的哪些欄位構成寄存器索引欄位1444 。
[0106]VEX前綴(字節0-2) 1402以三字節形式進行編碼。第一字節是格式欄位1440 (VEX字節0,位[7:0]),該格式欄位1440包含顯性的C4位元組值(用於區分C4指令格式的唯一值)。第二-第三字節(VEX字節1-2)包括提供專用能力的多個位欄位。具體地,REX欄位1405 (VEX 字節 1,位[7-5])由 VEX.R 位欄位(VEX 字節 1,位[7] -R)、VEX.X 位欄位(VEX 字節1,位[6] - X)以及VEX.B位欄位(VEX字節1,位[5] - B)組成。這些指令的其他欄位對如在本領域中已知的寄存器索引的較低三個位(rrr、xxx以及bbb)進行編碼,由此可通過增加VEX.R、VEX.X以及VEX.B來形成Rrrr、Xxxx以及Bbbb。操作碼映射欄位1415 (VEX字節1,位[4:0] - mmmmm)包括對隱含的領先操作碼字節進行編碼的內容。W欄位1464(VEX字節2,位[7] -W)由記號VEX.W表示,並且提供依賴於該指令而不同的功能。VEX.WW1420 (VEX字節2,位[6:3]-vvvv)的作用可包括如下:1)VEX.vvvv對以反轉(I補碼)的形式指定第一源寄存器操作數進行編碼,且對採取兩個或兩個以上源操作數的指令有效;2)VEX.vvvv針對特定向量位移對以I補碼的形式指定的目的地寄存器操作數進行編碼;或者3) VEX.vvvv不對任何操作數進行編碼,保留該欄位,並且應當包含1111b。如果VEX.L1468尺寸的欄位(VEX字節2,位[2]-L) = 0,則它指示128位向量;如果VEX.L = I,則它指示256位向量。前綴編碼欄位1425 (VEX字節2,位[1:0]-ρρ)提供了用於基礎操作欄位的附加位。
[0107]實操作碼欄位1430(字節3)還被稱為操作碼字節。操作碼的一部分在該欄位中被指定。
[0108]MOD R/Μ 欄位 1440 (字節 4)包括 MOD 欄位 1442 (位[7-6] )、Reg 欄位 1444 (位[5-3])、以及R/M欄位1446(位[2_0])。Reg欄位1444的作用可包括如下:對目的地寄存器操作數或源寄存器操作數(Rrrr中的rrr)進行編碼;或者被視為操作碼擴展且不用於對任何指令操作數進行編碼。R/Μ欄位1446的作用可包括如下:對引用存儲器地址的指令操作數進行編碼;或者對目的地寄存器操作數或源寄存器操作數進行編碼。
[0109]縮放、索引、基址(SIB) —縮放欄位1450(字節5)的內容包括用於存儲器地址生成的SS1452(位[7-6])。先前已經針對寄存器索引Xxxx和Bbbb參考了 SIB.xxxl454(位[5-3])和 SIB.bbbl456(位[2-0])的內容。
[0110]位移欄位1462和立即數欄位(IMM8) 1472包含地址數據。
[0111]示例性寄存器架構
[0112]圖15是根據本發明的一個實施例的寄存器體系結構1500的框圖。在所示出的實施例中,有3 2個512位寬的向量寄存器1510 ;這些寄存器被引用為zmmO到zmm31。較低的16zmm寄存器的較低位256個位覆蓋在寄存器ymmO-16上。較低的16zmm寄存器的較低位128個位(ymm寄存器的較低位128位)覆蓋在寄存器xmmO-15上。
[0113]寫掩碼寄存器1515—在所示的實施例中,存在8個寫掩碼寄存器(kO至k7),每一寫掩碼寄存器的尺寸是64位。在替換實施例中,寫掩碼寄存器1515的尺寸是16位。如先前所述的,在本發明的一個實施例中,向量掩碼寄存器kO無法用作寫掩碼;當正常指示kO的編碼用作寫掩碼時,它選擇硬連線的寫掩碼OxFFFF,從而有效地停用該指令的寫掩碼(masking)。
[0114]通用寄存器152 5——在所示出的實施例中,有十六個64位通用寄存器,這些寄存器與現有的x86尋址模式一起使用來尋址存儲器操作數。這些寄存器通過名稱RAX、RBX、RCX、RDX、RBP、RS1、RD1、RSP 以及 R8 到 R15 來引用。
[0115]標量浮點堆棧寄存器組(x87堆棧)1545,在其上面混疊有MMX打包整數平坦寄存器組1550——在所示出的實施例中,x87堆棧是用於使用x87指令集擴展來對32/64/80位浮點數據執行標量浮點運算的八元素堆棧;而使用MMX寄存器來對64位打包整數數據執行操作,以及為在MMX和XMM寄存器之間執行的某些操作保存操作數。
[0116]本發明的替換實施例可以使用較寬的或較窄的寄存器。另外,本發明的替換實施例可以使用更多、更少或不同的寄存器組和寄存器。
[0117]示例性核架構、處理器和計算機架構
[0118]處理器核可以用出於不同目的的不同方式在不同的處理器中實現。例如,這樣的核的實現可以包括:1)旨在用於通用計算的通用有序核;2)旨在用於通用計算的高性能通用無序核;3)主要旨在用於圖形和/或科學(吞吐量)計算的專用核。不同處理器的實現可包括:包括預期用於通用計算的一個或多個通用有序核和/或預期用於通用計算的一個或多個通用無序核的CPU ;以及2)包括主要預期用於圖形和/或科學(吞吐量)的一個或多個專用核的協處理器。這樣的不同處理器導致不同的計算機系統架構,其可包括:1)在與CPU分開的晶片上的協處理器;2)在與CPU相同的封裝中但分開的管芯上的協處理器;
3)與CPU在相同管芯上的協處理器(在該情況下,這樣的協處理器有時被稱為諸如集成圖形和/或科學(吞吐量)邏輯等的專用邏輯,或被稱為專用核);以及4)可以將所描述的CPU(有時被稱為應用核或應用處理器)、以上描述的協處理器和附加功能包括在同一管芯上的片上系統。接著描述示例性核架構,隨後描述示例性處理器和計算機架構。[0119]示例性核架構
[0120]有序和無序核框圖
[0121]圖16A是示出根據本發明的實施例的示例性有序流水線和示例性寄存器重命名的無序發布/執行流水線二者的框圖。圖16B是示出根據本發明的實施例的要包括在處理器中的有序架構核的示例性實施例和示例性的寄存器重命名、無序發布/執行架構核的框圖。圖16A-B中的實線框示出了有序流水線和有序核,而虛線框中的可選附加項示出了寄存器重命名的、無序發布/執行流水線和核。考慮到有序方面是無序方面的子集,將描述無序方面。
[0122]在圖16A中,處理器流水線1600包括提取級1602、長度解碼級1604、解碼級1606、分配級1608、重命名級1610、調度(也稱為分派或發布)級1612、寄存器讀取/存儲器讀取級1614、執行級1616、寫回/存儲器寫入級1618、異常處理級1622和提交級1624。
[0123]圖16B示出處理器核1690,該核1690包括耦合到執行引擎單元1650的前端單元1630,並且兩者耦合到存儲器單元1670。核1690可以是精簡指令集合計算(RISC)核、複雜指令集合計算(CISC)核、超長指令字(VLIW)核、或混合或替代核類型。作為又一選項,核1690可以是專用核,諸如例如網絡或通信核、壓縮引擎、協處理器核、通用計算圖形處理器單元(GPGPU)核、圖形核等等。
[0124]前端單元1630包括耦合到指令高速緩存單元1634的分支預測單元1632,該指令高速緩存單元1634被耦合到指令轉換後備緩衝器(TLB) 1636,該指令轉換後備緩衝器1636被耦合到指令獲取單元1638,指令獲取單元1638被耦合到解碼單元1640。解碼單元1640(或解碼器)可解碼指令,並生成從原始指令解碼出的、或以其他方式反映原始指令的、或從原始指令導出的一個或多個微操作、微代碼進入點、微指令、其他指令、或其他控制信號作為輸出。解碼單元1640可使用各種不同的機制來實現。合適的機制的示例包括但不限於查找表、硬體實現、可編程邏輯陣列(PLA)、微代碼只讀存儲器(ROM)等。在一個實施例中,核1690包括存儲(例如,在解碼單元1640中或否則在前端單元1630內的)特定宏指令的微代碼的微代碼ROM或其他介質。解碼單元1640耦合至執行引擎單元1650中的重命名/分配器單元1652。
[0125]執行引擎單元1650包括重命名/分配器單元1652,該重命名/分配器單元1652耦合至引退單元1654和一個或多個調度器單元(多個)1656的集合。調度器單元1656表示任何數目的不同調度器,包括預留站(reservations stations)、中央指令窗等。調度器單元1656被耦合到物理寄存器組單元1658。每個物理寄存器組單元1658表示一個或多個物理寄存器組,其中不同的物理寄存器組存儲一種或多種不同的數據類型,諸如標量整數、標量浮點、打包整數、打包浮點、向量整數、向量浮點、狀態(例如,作為要執行的下一指令的地址的指令指針)等。在一個實施例中,物理寄存器組單元1658包括向量寄存器單元、寫掩碼寄存器單元和標量寄存器單元。這些寄存器單元可以提供架構向量寄存器、向量掩碼寄存器、和通用寄存器。物理寄存器組(多個)單元(多個)1658被引退單元1654重疊以示出可以用來實現寄存器重命名和無序執行的各種方式(例如,使用記錄器緩衝器(多個)和引退寄存器組(多個);使用將來的文件(多個)、歷史緩衝器(多個)和引退寄存器組(多個);使用寄存器映射和寄存器池等等)。引退單元1654和物理寄存器組單元1658被耦合到執行群集1660。執行群集1660包括一個或多個執行單元1662的集合和一個或多個存儲器訪問單元1664的集合。執行單元1662可以執行各種操作(例如,移位、加法、減法、乘法),以及對各種類型的數據(例如,標量浮點、打包整數、打包浮點、向量整數、向量浮點)執行。儘管某些實施例可以包括專用於特定功能或功能集合的多個執行單元,但其他實施例可包括全部執行所有函數的僅一個執行單元或多個執行單元。調度器單元(多個)1656、物理寄存器組(多個)單元(多個)1658和執行群集(多個)1660被示為可能有多個,因為某些實施例為某些類型的數據/操作(例如,標量整型流水線、標量浮點/打包整型/打包浮點/向量整型/向量浮點流水線,和/或各自具有其自己的調度器單元、物理寄存器組(多個)單元和/或執行群集的存儲器訪問流水線一以及在分開的存儲器訪問流水線的情況下,實現其中僅該流水線的執行群集具有存儲器訪問單元(多個)1664的某些實施例)創建分開的流水線。還應當理解,在分開的流水線被使用的情況下,這些流水線中的一個或多個可以為無序發布/執行,並且其餘流水線可以為有序發布/執行。
[0126]存儲器訪問單元1664的集合被耦合到存儲器單元1670,該存儲器單元1670包括耦合到數據高速緩存單元1674的數據TLB單元1672,其中該數據高速緩存單元1674耦合到二級(L2)高速緩存單元1676。在一個示例性實施例中,存儲器訪問單元1664可包括加載單元、存儲地址單元和存儲數據單元,其中的每一個均耦合至存儲器單元1670中的數據TLB單元1672。指令高速緩存單元1634還耦合到存儲器單元1670中的二級(L2)高速緩存單元1676。L2高速緩存單元1676被耦合到一個或多個其他級的高速緩存,並最終耦合到主存儲器。
[0127]作為示例,示例性寄存器重命名的、無序發布/執行核架構可以如下實現流水線1600:1)指令提取1638執行取指和長度解碼級1602和1604 ;2)解碼單元1640執行解碼級1606 ;3)重命名/分配器單元1652執行分配級1608和重命名級1610 ;4)調度器單元(多個)1656執行調度級1612 ;5)物理寄存器組(多個)單元(多個)1658和存儲器單元1670執行寄存器讀取/存儲器讀取級1614 ;執行群集1660執行執行級1616 ;6)存儲器單元1670和物理寄存器組(多個)單元(多個)1658執行寫回/存儲器寫入級1618 ;7)各單元可牽涉到異常處理級1622 ;以及8)引退單元1654和物理寄存器組(多個)單元(多個)1658執行提交級1624。
[0128]核1690可支持一個或多個指令集合(例如,x86指令集合(具有與較新版本一起添加的某些擴展);加利福尼亞州桑尼維爾市的MIPS技術公司的MIPS指令集合;加利福尼州桑尼維爾市的ARM控股的ARM指令集合(具有諸如NEON等可選附加擴展)),其中包括本文中描述的各指令。在一個實施例中,核1690包括支持打包數據指令集合擴展(例如,AVX1、AVX2)的邏輯,由此允許被許多多媒體應用使用的操作將使用打包數據來執行。
[0129]應當理解,核可支持多線程化(執行兩個或更多個並行的操作或線程的集合),並且可以按各種方式來完成該多線程化,此各種方式包括時分多線程化、同步多線程化(其中單個物理核為物理核正同步多線程化的各線程中的每一個線程提供邏輯核)、或其組合
(例如,時分取指和解碼以及此後諸如用Intel?超線程化技術來同步多線程化)。
[0130]儘管在無序執行的上下文中描述了寄存器重命名,但應當理解,可以在有序架構中使用寄存器重命名。儘管所例示的處理器的實施例還包括分開的指令和數據高速緩存單元1634/1674以及共享L2高速緩存單元1676,但替換實施例可以具有用於指令和數據兩者的單個內部高速緩存,諸如例如一級(LI)內部高速緩存或多個級別的內部緩存。在某些實施例中,該系統可包括內部高速緩存和在核和/或處理器外部的外部高速緩存的組合。或者,所有高速緩存都可以在核和/或處理器的外部。
[0131]具體的示例性有序核架構
[0132]圖17A-B示出了更具體的示例性有序核架構的框圖,該核將是晶片中的若干邏輯塊之一(包括相同類型和/或不同類型的其他核)。這些邏輯塊通過高帶寬的互連網絡(例如,環形網絡)與某些固定的功能邏輯、存儲器I/o接口和其它必要的I/O邏輯通信,這依賴於應用。
[0133]圖17A是根據本發明的各實施例的單個處理器核連同它與管芯上互連網絡1702的連接以及其二級(L2)高速緩存1704的本地子集的框圖。在一個實施例中,指令解碼器1700支持具有打包數據指令集合擴展的x86指令集。LI高速緩存1706允許對高速緩存存儲器的低等待時間訪問進入標量和向量單元。儘管在一個實施例中(為了簡化設計),標量單元1708和向量單元1710使用分開的寄存器集合(分別為標量寄存器1712和向量寄存器1714),並且在這些寄存器之間轉移的數據被寫入到存儲器並隨後從一級(LI)高速緩存1706讀回,但是本發明的替換實施例可以使用不同的方法(例如使用單個寄存器集合,或包括允許數據在這兩個寄存器組之間傳輸而無需被寫入和讀回的通信路徑)。
[0134]L2高速緩存的本地子集1704是全局L2高速緩存的一部分,該全局L2高速緩存被劃分成多個分開的本地子集,即每個處理器核一個本地子集。每個處理器核具有到其自己的L2高速緩存1704的本地子集的直接訪問路徑。被處理器核讀出的數據被存儲在其L2高速緩存子集1704中,並且可以被快速訪問,該訪問與其他處理器核訪問它們自己的本地L2高速緩存子集並行。被處理器核寫入的數據被存儲在其自己的L2高速緩存子集1704中,並在必要的情況下從其它子集清除。環形網絡確保共享數據的一致性。環形網絡是雙向的,以允許諸如處理器核、L2高速緩存和其它邏輯塊之類的代理在晶片內彼此通信。每個環形數據路徑為每個方向1012位寬。
[0135]圖17B是根據本發明的各實施例的圖17A中的處理器核的一部分的展開圖。圖17B包括LI高速緩存1704的LI數據高速緩存1706A部分、以及關於向量單元1710和向量寄存器1714的更多細節。具體地說,向量單元1710是16寬向量處理單元(VPU)(見16寬ALU1728),該單元執行整型、單精度浮點以及雙精度浮點指令中的一個或多個。該VPU支持通過混合單元1720混合寄存器輸入、通過數值轉換單元1722A-B進行數值轉換,以及通過複製單元1724進行對存儲器輸入的複製。寫掩碼寄存器1726允許斷言所得的向量寫入。
[0136]具有集成存儲器控制器和圖形器件的處理器
[0137]圖18是根據本發明的實施例的處理器1800的方框圖,該處理器可具有一個以上的核、可具有集成存儲器控制器、並且可具有集成圖形器件。圖18的實線框示出了處理器1800,處理器1800具有單個核心1802A、系統代理1810、一組一個或多個總線控制器單元1816,而可選附加的虛線框示出了替代的處理器500,其具有多個核心1802A-N、系統代理單元1810中的一組一個或多個集成存儲器控制器單元1814以及專用邏輯1808。
[0138]因此,處理器1800的不同實現可包括:I) CPU,其中專用邏輯1808是集成圖形和/或科學(吞吐量)邏輯(其可包括一個或多個核),並且核1802A-N是一個或多個通用核(例如,通用的有序核、通用的無序核、這兩者的組合);2)協處理器,其中核1802A-N是主要旨在用於圖形和/或科學(吞吐量)的大量專用核;以及3)協處理器,其中核1802A-N是大量通用有序核。因此,處理器1800可以是通用處理器、協處理器或專用處理器,諸如例如網絡或通信處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高吞吐量的集成眾核(MIC)協處理器(包括30個或更多核)、或嵌入式處理器等。該處理器可以被實現在一個或多個晶片上。處理器1800可以是一個或多個襯底的一部分,和/或可以使用諸如例如BiCMOS、CMOS或NMOS等的多個加工技術中的任何一個技術將其實現在一個或多個襯底上。
[0139]存儲器層次結構包括在各核內的一個或多個級別的高速緩存、一組或一個或多個共享高速緩存單元1806、以及耦合至集成存儲器控制器單元1814的集合的外部存儲器(未示出)。該共享高速緩存單元1806的集合可以包括一個或多個中間級高速緩存,諸如二級(L2)、三級(L3)、四級(L4)或其他級別的高速緩存、末級高速緩存(LLC)、和/或其組合。儘管在一個實施例中,基於環的互連單元1812將集成圖形邏輯1808、共享高速緩存單元1806的集合以及系統代理單元1810/集成存儲器控制器單元(多個)1814互連,但替代實施例可使用任何數量的公知技術來將這些單元互連。在一個實施例中,在一個或多個高速緩存單元1806與核1802-A-N之間維持相干性。
[0140]在某些實施例中,核1,802A-N中的一個或多個核能夠多線程化。系統代理1810包括協調和操作核1,802A-N的那些組件。系統代理單元1810可包括例如功率控制單元(P⑶)和顯示單元。P⑶可以是或包括調整核1802A-N和集成圖形邏輯1808的功率狀態所需的邏輯和組件。顯示單元用於驅動一個或多個外部連接的顯示器。
[0141]核1802A-N在架 構指令集合方面可以是同構的或異構的;8卩,這些核1802A-N中的兩個或更多個核可以能夠執行相同的指令集合,而其他核可以能夠執行該指令集合的僅僅子集或不同的指令集合。
[0142]示例性計算機架構
[0143]圖19-22是示例性計算機架構的框圖。本領域已知的對膝上型設備、臺式機、手持PC、個人數字助理、工程工作站、伺服器、網絡設備、網絡集線器、交換機、嵌入式處理器、數位訊號處理器(DSP)、圖形設備、視頻遊戲設備、機頂盒、微控制器、蜂窩電話、可攜式媒體播放器、手持設備以及各種其他電子設備的其他系統設計和配置也是合適的。一般來說,能夠含有本文中所公開的處理器和/或其它執行邏輯的大量系統和電子設備一般都是合適的。
[0144]現在參考圖19,所示出的是根據本發明一個實施例的系統1900的框圖。系統1900可以包括一個或多個處理器1910、1915,這些處理器耦合到控制器中樞1920。在一個實施例中,控制器中樞1920包括圖形存儲器控制器中樞(GMCH) 1990和輸入/輸出中樞(IOH) 1950(其可以在分開的晶片上);GMCH1990包括存儲器和圖形控制器,存儲器1940和協處理器1945耦合到該圖形控制器;10H1950將輸入/輸出(I/O)設備1960耦合到GMCH1990。替換地,存儲器和圖形控制器中的一個或兩個在處理器(如本文所述)內集成,存儲器1940和協處理器1945直接耦合到處理器1910、以及在單一晶片中具有10H1950的控制器中樞1820。
[0145]附加處理器1915的可選性質用虛線表示在圖19中。每一處理器1910、1915可包括本文中描述的處理核中的一個或多個,並且可以是處理器1800的某一版本。
[0146]存儲器1940可以是例如動態隨機存取存儲器(DRAM)、相變存儲器(PCM)或這兩者的組合。對於至少一個實施例,控制器中樞1920經由諸如前側總線(FSB)之類的多分支總線(mult1-drop bus)、諸如快速通道互連(QPI)之類的點對點接口、或者類似的連接1995與處理器1910、1915進行通信。
[0147]在一個實施例中,協處理器1945是專用處理器,諸如例如高吞吐量MIC處理器、網絡或通信處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器等等。在一個實施例中,控制器中樞1920可以包括集成圖形加速器。
[0148]按照包括體系結構、微體系結構、熱、功耗特徵等等優點的度量譜,物理資源1910、1915之間存在各種差別。
[0149]在一個實施例中,處理器1910執行控制一般類型的數據處理操作的指令。嵌入在這些指令中的可以是協處理器指令。處理器1910將這些協處理器指令識別為應當由附連的協處理器1945執行的類型。因此,處理器1910在協處理器總線或者其他互連上將這些協處理器指令(或者表示協處理器指令的控制信號)發布到協處理器1945。協處理器1945接受並執行所接收的協處理器指令。
[0150]現在參照圖20,所示出的是根據本發明實施例的更具體的第一示例性系統2000的框圖。如圖20所示,多處理器系統2000是點對點互連繫統,且包括經由點對點互連2050耦合的第一處理器2070和第二處理器2080。處理器2070和2080中的每一個都可以是處理器1800的某一版本。在本發明的一個實施例中,處理器2070和2080分別是處理器1910和1915,而協處理器2038是協處理器1945。在另一實施例中,處理器2070和2080分別是處理器1910和協處理器1945。
[0151]處理器2070和2080被示為分別包括集成存儲器控制器(MC)單元2072和2082。處理器2070還包括作為其總線控制器單元的一部分的點對點(P-P)接口 2076和2078 ;類似地,第二處理器2080包括點對點接口 2086和2088。處理器2070、2080可以使用點對點(P-P)接口電路2078、2088經由P-P接口 2050來交換信息。如圖20所示,IMC2072和2082將處理器耦合到相應的存儲器,即存儲器2032和存儲器2034,這些存儲器可以是本地附連到相應處理器的主存儲器的部分。
[0152]處理器2070、2080可各自經由使用點對點接口電路2076、2094、2086、2098的各個P-P接口 2052、2054與晶片組2090交換信息。晶片組2090可以可選地經由高性能接口 2038與協處理器2039交換信息。在一個實施例中,協處理器2038是專用處理器,諸如例如高吞吐量MIC處理器、網絡或通信處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器等等。
[0153]共享高速緩存(未示出)可以被包括在兩個處理的任一個之內或被包括兩個處理器外部但仍經由P-P互連與這些處理器連接,從而如果將某處理器置於低功率模式時,可將任一處理器或兩個處理器的本地高速緩存信息存儲在該共享高速緩存中。
[0154]晶片組2090可經由接口 2096耦合至第一總線2016。在一個實施例中,第一總線2016可以是外圍部件互連(PCI)總線,或諸如PCI Express總線或其它第三代I/O互連總線之類的總線,但本發明的範圍並不受此限制。
[0155]如圖20所示,各種I/O設備2014可連同總線橋2018 —起耦合到第一總線2016,總線橋2016將第一總線2016耦合到第二總線2020。在一個實施例中,諸如協處理器、高吞吐量MIC處理器、GPGPU的處理器、加速器(諸如例如圖形加速器或數位訊號處理器(DSP)單元)、現場可編程門陣列或任何其他處理器的一個或多個附加處理器2015被耦合到第一總線2016。在一個實施例中,第二總線2020可以是低引腳計數(LPC)總線。各種設備可以被耦合至第二總線2020,在一個實施例中這些設備包括例如鍵盤/滑鼠2022、通信設備2027以及諸如可包括指令/代碼和數據2028的盤驅動器或其它海量存儲設備的存儲單元2030。此外,音頻1/02024可以被耦合至第二總線2020。注意,其它架構是可能的。例如,取代圖20的點對點架構,系統可以實現多分支總線或其它此類架構。
[0156]現在參考圖21,示出了根據本發明的一個實施例的更具體的第二示例性系統2100的方框圖。圖20和圖21中的相同部件用相同附圖標記表示,並從圖21中省去了圖20中的某些方面,以避免使圖21的其它方面變得難以理解。
[0157]圖21例示了處理器2070、2080可分別包括集成存儲器和I/O控制邏輯(「CL」 ) 2072和2082。因此,CL2072.2082包括集成存儲器控制器單元並包括I/O控制邏輯。圖21示出:不僅存儲器2032、2034耦合至CL2072、2082,I/O設備2114也耦合至控制邏輯2072、2082。傳統I/O設備2115被耦合至晶片組2090。
[0158]現在參照圖22,所示出的是根據本發明一個實施例的SoC2200的框圖。在圖18中,相似的部件具有同樣的附圖標記。另外,虛線框是更先進的SoC的可選特徵。在圖22中,互連單元(多個)2202被耦合至:應用處理器2210,該應用處理器包括一個或多個核202A-N的集合以及共享高速緩存單元(多個)1806 ;系統代理單元1810 ;總線控制器單元(多個)1816 ;集成存儲器控制器單元(多個)1814 ;—組或一個或多個協處理器2220,其可包括集成圖形邏輯、圖像處理器、音頻處理器和視頻處理器;靜態隨機存取存儲器(SRAM)單元2230 ;直接存儲器存取(DMA)單元2232 ;以及用於耦合至一個或多個外部顯示器的顯示單元2240。在一個實施例中,協處理器(多個)2220包括專用處理器,諸如例如網絡或通信處理器、壓縮引擎、GPGPU、高吞吐量MIC處理器、或嵌入式處理器等等。
[0159]本文公開的機制的各實施例可以被實現在硬體、軟體、固件或這些實現方法的組合中。本發明的實施例可實現為在可編程系統上執行的電腦程式或程序代碼,該可編程系統包括至少一個處理器、存儲系統(包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設備以及至少一個輸出設備。
[0160]諸如圖20中示出的代碼2030之類的程序代碼可應用於輸入指令,以執行本文描述的各功能並生成輸出信息。輸出信息可以按已知方式被應用於一個或多個輸出設備。為了本申請的目的,處理系統包括具有諸如例如數位訊號處理器(DSP)、微控制器、專用集成電路(ASIC)或微處理器之類的處理器的任何系統。
[0161]程序代碼可以用高級程序化語言或面向對象的程式語言來實現,以便與處理系統通信。程序代碼也可以在需要的情況下用彙編語言或機器語言來實現。事實上,本文中描述的機制不僅限於任何特定程式語言的範圍。在任一情形下,語言可以是編譯語言或解譯
;五古
P口口 ο
[0162]至少一個實施例的一個或多個方面可以由存儲在機器可讀介質上的代表性指令來實現,該指令表示處理器中的各種邏輯,該指令在被機器讀取時使得該機器製作用於執行本文所述的技術的邏輯。被稱為「IP核」的這些表示可以被存儲在有形的機器可讀介質上,並被提供給各種客戶或生產設施以加載到實際製造該邏輯或處理器的製造機器中。
[0163]這樣的機器可讀存儲介質可以包括但不限於通過機器或設備製造或形成的製品的非瞬態、有形配置,其包括存儲介質,諸如硬碟;任何其它類型的盤,包括軟盤、光碟、緊緻盤只讀存儲器(CD-ROM)、緊緻盤可重寫(CD-RW)的以及磁光碟;半導體器件,例如只讀存儲器(ROM)、諸如動態隨機存取存儲器(DRAM)和靜態隨機存取存儲器(SRAM)的隨機存取存儲器(RAM)、可擦除可編程只讀存儲器(EPROM)、快閃記憶體、電可擦除可編程只讀存儲器(EEPROM);相變存儲器(PCM);磁卡或光卡;或適於存儲電子指令的任何其它類型的介質。
[0164]因此,本發明的各實施例還包括非瞬態、有形機器可讀介質,該介質包含指令或包含設計數據,諸如硬體描述語言(HDL),它定義本文中描述的結構、電路、裝置、處理器和/或系統特性。這些實施例也被稱為程序產品。
[0165]仿真(包括二進位變換、代碼變形等)
[0166]在某些情況下,指令轉換器可用來將指令從源指令集轉換至目標指令集。例如,指令轉換器可以變換(例如使用靜態二進位變換、包括動態編譯的動態二進位變換)、變形(morph)、仿真或以其它方式將指令轉換成將由核來處理的一個或多個其它指令。指令轉換器可以用軟體、硬體、固件、或其組合實現。指令轉換器可以在處理器上、在處理器外、或者部分在處理器上部分在處理器外。
[0167]圖23是根據本發明的實施例的對照使用軟體指令轉換器將源指令集中的二進位指令轉換成目標指令集中的二進位指令的框圖。在所示的實施例中,指令轉換器是軟體指令轉換器,但作為替代該指令轉換器可以用軟體、固件、硬體或其各種組合來實現。圖23示出:採用高級語言2302的程序可使用x86編譯器2304來編譯以生成x86 二進位代碼2306,該二進位代碼可原生地由具有至少一個x86指令集核心的處理器2316來執行。具有至少一個x86指令集核的處理器2316表示任何處理器,這些處理器能通過兼容地執行或以其他方式處理以下內容來執行與具有至少一個x86指令集核的英特爾處理器基本相同的功能:I)英特爾x86指令集核的指令集的本質部分,或2)被定向為在具有至少一個x86指令集核的英特爾處理器上運行的應用或其它程序的目標代碼版本,以便取得與具有至少一個x86指令集核的英特爾處理器基本相同的結果。x86編譯器2304表示用於生成x86 二進位代碼2306(例如,對象代碼)的編譯器,該二進位代碼2306可通過或不通過附加的可連結處理在具有至少一個x86指令集核的處理器2316上執行。類似地,圖23示出:採用高級語言2302的程序可使用替換指令集編譯器2308來編譯以生成替換指令集二級制代碼2310,該替換指令集二級制代碼2314可由不具有至少一個x86指令集核心的處理器2314 (諸如,具有可執行加利福尼亞州桑尼威爾的MIPS技術公司的MIPS指令集的處理器和/或執行加利福尼亞州桑尼威爾的ARM控股公司的ARM指令集的處理器)來原生地執行。指令轉換器2312被用來將x86 二進位代碼2306轉換成可以由不具有x86指令集核的處理器2314原生執行的代碼。該經轉換的代碼不大可能與替換性指令集二進位代碼2310相同,因為能夠這樣做的指令轉換器難以製造;然而,轉換後的代碼將完成一般操作並由來自替換性指令集的指令構成。因此,指令轉換器2312表示:通過仿真、模擬或任何其它過程來允許不具有x86指令集處理器或核的處理器或其它電子設備得以執行x86 二進位代碼2306的軟體、固件、硬體或其組合。
[0168]在說明書和權利要求書中,可使用術語「耦合」和「連接」及其衍生詞。應當理解,這些術語並不旨在作為彼此的同義詞。相反,在具體實施例中,「連接的」用於指示兩個或更多個要素彼此直接物理或電接觸。「耦合」可表示兩個或多個元件直接物理或電氣接觸。然而,「耦合」也可表示兩個或更多個要素可能並未彼此直接接觸,但是仍然彼此協作、彼此作用。例如,執行單元可通過一個或多個中間組件與寄存器耦合。[0169]在以上描述中,出於解釋的目的,闡明了眾多具體細節以提供對本發明的實施例的透徹理解。然而,對本領域技術人員而言將是明顯的是,不用這些具體細節中的一些也可實踐一個或多個其他實施例。所描述的具體實施例不是為了限制本發明而是為了說明。本發明的範圍不是由所提供的具體示例確定,而是僅由所附權利要求確定。在其它實例中,以方框圖形式而非以細節地示出了公知的電路、結構、設備和操作以避免混淆對說明書的理解。
[0170]本領域的技術人員將意識到可對本文公開的實施例做出修改,諸如對實施例的各組件的配置、形式、功能和操作方式和使用進行修改。在附圖中顯示且在說明書中描述的關係的所有等效關係都被涵蓋在本發明的實施例內。為說明的簡單和清楚起見,在附圖中示出的元素不一定按比例繪製。例如,為清楚起見,一些元件的尺寸相對其它元件被誇大。在附圖中,箭頭用於示出耦合。
[0171]已描述了各種操作和方法。已經以流程圖方式以基礎方式對一些方法進行了描述,但操作可選擇地被添加至這些方法和/或從這些方法中移去。另外,根據示例性實施例,描述操作的特定順序,但要理解該特定順序是示例性的。替代實施例可選擇地以不同順序執行操作、合併某些操作、重疊某些操作,等等。可對所描述的方法作出和構想出許多修正和調整。
[0172]某些操作可由硬體組件執行,或者可體現在機器可執行或電路可執行的指令中,它們可用於使得或至少導致用執行這些操作的指令編程的電路或硬體。電路可包括通用或專用處理器、或邏輯電路,這裡僅給出幾個示例。這些操作還可任選地由硬體和軟體的組合執行。執行單元和/或處理器可包括專門或特定電路,或者其它邏輯,它們對指令或微指令或者衍生自機器指令的一個或多個控制信號作出響應,以執行某些操作。
[0173]還應當理解,說明書全文對「一個實施例」、「一實施例」或「一個或多個實施例」的引用例如表示特定特徵可包含在本發明實施例的實踐中。類似地應當理解,在本說明書中,各個特徵有時被一起編組在單個實施例、附圖或其描述中以使本公開變得流暢並幫助理解各個創新性方面。然而,該公開方法不應被解釋成反映本發明需要比每項權利要求中所明確記載的更多特徵的意圖。相反,如下面權利要求反映的,各創新性方面可具有比單個公開的實施例的全部特徵更少的特徵。因此,所附權利要求因此被明確納入該說明書中,每一項權利要求獨自作為本發明單獨的實施例。
【權利要求】
1.一種方法,包括: 接收打包數據操作掩碼串接指令,所述打包數據操作掩碼串接指令指示具有第一打包數據操作掩碼的第一源,指示具有第二打包數據操作掩碼的第二源,並指示目的地;以及 響應於所述打包數據操作掩碼串接指令,將結果存儲在所述目的地中,所述結果包括和所述第二打包數據操作掩碼串接的所述第一打包數據操作掩碼。
2.如權利要求1所述的方法,其特徵在於,接收指示第一源和第二源的所述指令包括:接收指示第一源打包數據操作掩碼寄存器和第二源打包數據操作掩碼寄存器的打包數據操作掩碼串接指令。
3.如權利要求1所述的方法,其特徵在於,所述第一打包數據操作掩碼的結果位和所述第一源中的所述第一打包數據操作掩碼的位的順序相同,並且所述第二打包數據操作掩碼的結果位和所述第二源中的所述第二打包數據操作掩碼的位的順序相同。
4.如權利要求1所述的方法,其中所述第一打包數據操作掩碼被存儲在所述第一源的[7:0]位中,其中所述第二打包數據操作掩碼被存儲在所述第二源的[7:0]位中,並且其中存儲所述結果包括:在所述目的地的[7:0]位中存儲所述第一打包數據操作掩碼,在所述目的地的[15:8]位中存儲所述第二打包數據操作掩碼。
5.如權利要求4所述的方法,其中所述第一源的[N:8]位全是零,其中所述第二源的[N: 8]位全是零,並且其中存儲所述結果包括:在所述目的地的[N: 16]位中存儲零,其中所述第一源、所述第二源和所述目的地是具有(N+1)位的打包數據操作掩碼寄存器,且其中(N+1)位大於32位。
6.如權利要求1所述的方法,其中所述第一打包數據操作掩碼被存儲在所述第一源的[15:0]位中,其中所述第二打包數據操作掩碼被存儲在所述第二源的[15:0]位中,並且其中存儲所述結果包括:在所述目的地的[15:0]位中存儲所述第一打包數據操作掩碼,在所述目的地的[31:16]位中存儲所述第二打包數據操作掩碼。
7.如權利要求6所述的方法,其中所述第一源的[N:16]位全是零,其中所述第二源的[N: 16]位全是零,並且其中存儲所述結果包括:在所述目的地的[N: 32]位中存儲零,其中所述第一源、所述第二源和所述目的地是具有(N+1)位的打包數據操作掩碼寄存器,且其中(N+1)位大於32位。
8.如權利要求1所述的方法,其中所述第一打包數據操作掩碼被存儲在所述第一源的[31:0]位中,其中所述第二打包數據操作掩碼被存儲在所述第二源的[31:0]位中,並且其中存儲所述結果包括:在所述目的地的[31:0]位中存儲所述第一打包數據操作掩碼,在所述目的地的[63:32]位中存儲所述第二打包數據操作掩碼。
9.如權利要求8所述的方法,其中第一源的[N:32]位全是零,其中所述第二源的[N: 32]位全是零,並且其中所述第一源、所述第二源和所述目的地是具有(N+1)位的打包數據操作掩碼寄存器。
10.如權利要求1所述的方法,其中所述第一打包數據操作掩碼的每個位對應於打包數據的不同打包數據元素,且其中所述第一打包數據操作掩碼的每個位的二進位值用於斷言是否要對相應打包數據元素執行與被掩碼打包數據指令相關聯的打包數據操作。
11.如權利要求1所述的方法,其特徵在於,還包括接收指示所述結果作為斷言操作數的被掩碼打包數據指令。
12.如權利要求1所述的方法,其中所述第一打包數據操作掩碼的每個位對應於第一打包數據的不同數據元素,其中所述第二打包數據操作掩碼的每個位對應於第二打包數據的不同數據元素,並且還包括:響應於打包數據指令存儲打包數據結果,所述打包數據結果包括: 所述第一打包數據的每個數據元素的一部分以及對應於所述第一打包數據的每個數據元素的飽和值這二者中的一項,該項在所述打包數據結果的第一部分中且和所述第一打包數據中的數據元素順序相同;以及 所述第二打包數據的每個數據元素的一部分以及對應於所述第二打包數據的每個數據元素的飽和值這二者中的一項,該項在所述打包數據結果的第二部分中且和所述第二打包數據中的數據元素順序相同。
13.一種裝置,包括: 第一打包數據操作掩碼寄存器,用於存儲第一打包數據操作掩碼; 第二打包數據操作掩碼寄存器,用於存儲第二打包數據操作掩碼;以及 和所述第一和第二打包數據操作掩碼寄存器相耦合的執行單元,所述執行單元可操作用於:作為指示第一打包數據操作掩碼寄存器、指示第二打包數據操作掩碼寄存器、且指示目的地的打包數據操作掩碼串接指令的結果,在所述目的地中存儲結果,所述結果包括和所述第二打包數據 操作掩碼串接的所述第一打包數據操作掩碼。
14.如權利要求13所述的裝置,其特徵在於,所述執行單元可操作用於存儲結果,該結果用於包括:(a)所述第一打包數據操作掩碼的位,其和所述第一打包數據操作掩碼的位要在所述第一源中出現的順序相同;以及(b)所述第二打包數據操作掩碼的位,其和所述第二打包數據操作掩碼的位要在所述第二源中出現的順序相同。
15.如權利要求13所述的裝置,其特徵在於,所述第一打包數據操作掩碼將被存儲在所述第一打包數據操作掩碼寄存器的[7:0]位中,所述第二打包數據操作掩碼將被存儲在所述第二打包數據操作掩碼寄存器的[7:0]位中,並且所述執行單元可操作用於存儲結果,該結果用於包括在所述目的地的[7:0]位中的所述第一打包數據操作掩碼和在所述目的地的[15:8]位中的所述第二打包數據操作掩碼。
16.如權利要求15所述的裝置,其特徵在於,所述第一打包數據操作掩碼寄存器的[N:8]位全將為零,所述第二打包數據操作掩碼寄存器的[N:8]位全將為零,其中所述執行單元可操作用於存儲結果,該結果用於包括存儲在所述目的地的[N:16]位中的零,其中所述目的地是具有(N+1)位的打包數據操作掩碼寄存器,且其中(N+1)位大於32位。
17.如權利要求13所述的裝置,其特徵在於,所述第一打包數據操作掩碼將被存儲在所述第一打包數據操作掩碼寄存器的[15:0]位中,所述第二打包數據操作掩碼將被存儲在所述第二打包數據操作掩碼寄存器的[15:0]位中,並且所述執行單元可操作用於存儲結果,該結果用於包括在所述目的地的[15:0]位中的所述第一打包數據操作掩碼和在所述目的地的[31:16]位中的所述第二打包數據操作掩碼。
18.如權利要求17所述的裝置,其特徵在於,所述第一打包數據操作掩碼寄存器的[N: 16]位全將為零,所述第二打包數據操作掩碼寄存器的[N: 16]位全將為零,其中所述執行單元可操作用於存儲結果,該結果用於包括存儲在所述目的地的[N:32]位中的零,其中所述目的地是具有(N+1)位的打包數據操作掩碼寄存器,且其中(N+1)位大於32位。
19.如權利要求13所述的裝置,其特徵在於,所述第一打包數據操作掩碼將被存儲在所述第一打包數據操作掩碼寄存器的[31:0]位中,所述第二打包數據操作掩碼將被存儲在所述第二打包數據操作掩碼寄存器的[31:0]位中,並且所述執行單元可操作用於存儲結果,該結果用於包括在所述目的地的[31:0]位中的所述第一打包數據操作掩碼和在所述目的地的[63:32]位中的所述第二打包數據操作掩碼。
20.如權利要求19所述的裝置,其特徵在於,所述第一打包數據操作掩碼寄存器的[N:32]位全將為零,所述第二打包數據操作掩碼寄存器的[N:32]位全將為零,其中所述執行單元可操作用於存儲結果,該結果用於包括存儲在所述目的地的[N:32]位中的零,且其中所述目的地是具有(N+1)位的打包數據操作掩碼寄存器。
21.如權利要求13所述的裝置,其特徵在於,所述第一和第二打包數據操作掩碼寄存器各自是64位寄存器,並且其中所述第一和第二打包數據操作掩碼各自具有從8位、16位、32位中選出的相同尺寸。
22.如權利要求13所述的裝置,其特徵在於,所述打包數據操作掩碼串接指令可操作用於顯性地指定所述第一打包數據操作掩碼寄存器,可操作用於顯性地指定所述第二打包數據操作掩碼寄存器,且可操作用於顯性地指定同樣為打包數據操作掩碼寄存器的所述目的地。
23.如權利要求13所述的裝置,其中所述第一打包數據操作掩碼的每個位用於對應於打包數據的不同打包數據元素,且其中所述裝置可操作用於識別所述第一打包數據操作掩碼的每個位的二進位值用於斷言是否要對相應打包數據元素執行與被掩碼打包數據指令相關聯的打包數據操作。
24.如權利要求13所述 的方法,其中所述第一打包數據操作掩碼的每個位用於對應於第一打包數據的不同數據元素,其中所述第二打包數據操作掩碼的每個位用於對應於第二打包數據的不同數據元素,並且其中所述執行單元可操作用於響應於打包數據指令而存儲打包數據結果,所述打包數據結果包括: 所述第一打包數據的每個數據元素的一部分以及對應於所述第一打包數據的每個數據元素的飽和值這二者中的一項,該項在所述打包數據結果的第一部分中且和所述第一打包數據中的數據元素順序相同;以及 所述第二打包數據的每個數據元素的一部分,和對應於所述第二打包數據的每個數據元素的飽和值,所述二者中的一項,該項在所述打包數據結果的第二部分中且和所述第二打包數據中的數據元素順序相同。
25.—種系統,包括: 互連; 和所述互連耦合的處理器,所述處理器包括用於存儲第一打包數據操作掩碼的第一打包數據操作掩碼寄存器和用於存儲第二打包數據操作掩碼的第二打包數據操作掩碼寄存器,所述處理器可操作用於:作為指示所述第一打包數據操作掩碼寄存器、指示所述第二打包數據操作掩碼寄存器、且指示目的地的打包數據操作掩碼串接指令的結果,在所述目的地中存儲結果,所述結果包括和所述第二打包數據操作掩碼串接的所述第一打包數據操作掩碼;以及 與所述互連耦合的動態隨機存取存儲器(DRAM)。
26.如權利要求25所述的系統,其特徵在於,所述第一打包數據操作掩碼將被存儲在所述第一打包數據操作掩碼寄存器的[7:0]位中,所述第二打包數據操作掩碼將被存儲在所述第二打包數據操作掩碼寄存器的[7:0]位中,並且其中所述執行單元可操作用於存儲結果,該結果用於包括在所述目的地的[7:0]位中的所述第一打包數據操作掩碼和在所述目的地的[15:8]位中的所述第二打包數據操作掩碼。
27.如權利要求25所述的系統,其中所述第一打包數據操作掩碼的每個位用於對應於第一打包數據的不同數據元素,其中所述第二打包數據操作掩碼的每個位用於對應於第二打包數據的不同數據元素,並且其中所述處理器可操作用於響應於打包數據指令而存儲打包數據結果,所述打包數據結果包括: 所述第一打包數據的每個數據元素的一部分以及對應於所述第一打包數據的每個數據元素的飽和值這二者中的一項,該項在所述打包數據結果的第一部分中且和所述第一打包數據中的數據元素順序相同;以及 所述第二打包數據的每個數據元素的一部分以及對應於所述第二打包數據的每個數據元素的飽和值這二者中的一項,該項在所述打包數據結果的第二部分中且和所述第二打包數據中的數據元素順序相同。
28.一種製品,包括: 包括一種或多種固體材料的機器可讀存儲介質,所述機器可讀存儲介質存儲打包數據操作掩碼串接指令, 所述打包數據操作掩碼串接指令用於指示第一打包數據操作掩碼的第一源,用於指示第二打包數據操作掩碼的第二源,且用於指示目的地,且所述打包數據操作掩碼串接指令如果被機器執行則可操作用於使所述機器執行操作,包括: 響應於所述打包數據操作掩碼串接指令,將結果存儲在所述目的地中,所述結果包括和所述第二打包數據操作掩碼串接的所述第一打包數據操作掩碼。
29.如權利要求28所述的製品,其特徵在於,所述非瞬態機器可讀介質還存儲被掩碼打包數據指令,所述指令指示所述結果作為斷言操作數,以斷言被掩碼打包數據指令的打包數據操作。
30.如權利要求28所述的製品,其特徵在於,所述第一打包數據操作掩碼的每個位用於對應於第一打包數據的不同數據元素,所述第二打包數據操作掩碼的每個位用於對應於第二打包數據的不同數據元素,並且其中所述有形機器可讀介質還存儲打包數據指令,該打包數據指令用於指示所述第一打包數據、用於指示所述第二打包數據、並用於指示第二目的地,且所述打包數據指令如果被所述機器執行則可操作用於使所述機器執行操作,包括: 在所述第二目的地中存儲打包數據結果,所述打包數據結果包括: 所述第一打包數據的每個數據元素的一部分以及對應於所述第一打包數據的每個數據元素的飽和值這二者中的一項,該項在所述打包數據結果的第一部分中且和所述第一打包數據中的數據元素順序相同;以及 所述第二打包數據的每個數據元素的一部分以及對應於所述第二打包數據的每個數據元素的飽和值這二者中的一項,該項在所述打包數據結果的第二部分中且和所述第二打包數據中的數據元素順序相同。
【文檔編號】G06F9/30GK104025039SQ201180075847
【公開日】2014年9月3日 申請日期:2011年12月22日 優先權日:2011年12月22日
【發明者】B·L·託爾, R·凡倫天, J·考博爾聖阿德裡安, E·烏爾德-阿邁德-瓦爾, M·J·查尼 申請人:英特爾公司