利用經(jīng)掩碼的全寄存器訪問實現(xiàn)部分寄存器訪問的處理器、方法和系統(tǒng)的制作方法
【專利摘要】公開利用經(jīng)掩碼的全寄存器訪問實現(xiàn)部分寄存器訪問的處理器、方法和系統(tǒng)。一種方法包括接收打包數(shù)據(jù)指令,該指令指示第一較窄的源打包數(shù)據(jù)操作數(shù)和較窄的目的地操作數(shù)。將該指令映射到經(jīng)掩碼的打包數(shù)據(jù)操作,該經(jīng)掩碼的打包數(shù)據(jù)操作指示比第一較窄的源操作數(shù)寬且包括第一較窄的源操作數(shù)的第一較寬的源打包數(shù)據(jù)操作數(shù),且指示比較窄的目的地操作數(shù)寬且包括較窄的目的地操作數(shù)的較寬的目的地操作數(shù)。生成打包數(shù)據(jù)操作掩碼,其包括用于由經(jīng)掩碼的打包數(shù)據(jù)操作存儲的打包數(shù)據(jù)結(jié)果的每個對應(yīng)結(jié)果數(shù)據(jù)元素的掩碼元素。與由經(jīng)掩碼的操作存儲的、本來不會由打包數(shù)據(jù)指令存儲的結(jié)果數(shù)據(jù)元素對應(yīng)的所有掩碼元素將被掩碼掉。利用打包數(shù)據(jù)操作掩碼執(zhí)行經(jīng)掩碼的操作。將打包數(shù)據(jù)結(jié)果存儲在較寬的目的地操作數(shù)中。
【專利說明】利用經(jīng)掩碼的全寄存器訪問實現(xiàn)部分寄存器訪問的處理器、方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本文所述的各實施例一般涉及處理器。特別地,本文所述的各實施例一般涉及訪問處理器中的寄存器。
【背景技術(shù)】
[0002]許多處理器具有單指令多數(shù)據(jù)(SMD)架構(gòu)。在SMD架構(gòu)中,打包數(shù)據(jù)指令、向量指令或者SMD指令可同時或并行地對多個數(shù)據(jù)元素或者多對數(shù)據(jù)元素進(jìn)行操作。處理器可具有并行執(zhí)行硬件,該并行執(zhí)行硬件響應(yīng)于打包數(shù)據(jù)指令來同時或并行地執(zhí)行多個操作。
[0003]多個數(shù)據(jù)元素可在一個寄存器或存儲器位置內(nèi)被打包為打包數(shù)據(jù)。在打包數(shù)據(jù)中,寄存器或者其他存儲位置的位可邏輯地分成數(shù)據(jù)元素序列。例如,128位寬的打包數(shù)據(jù)寄存器可具有兩個64位寬的數(shù)據(jù)元素、四個32位數(shù)據(jù)元素、八個16位數(shù)據(jù)元素等。
[0004]在一些處理器架構(gòu)中,多年來指令所使用的打包數(shù)據(jù)操作數(shù)的寬度已經(jīng)增加。這種增加的打包數(shù)據(jù)寬度一般使得能夠并發(fā)或并行處理更多的數(shù)據(jù)元素,這有助于改進(jìn)性能。即使存在利用較寬的打包數(shù)據(jù)操作數(shù)的指令,但一般仍期望支持利用較窄打包數(shù)據(jù)操作數(shù)的舊指令,以例如提供向后兼容性。此外,通常用于存儲較窄打包數(shù)據(jù)操作數(shù)的較窄寄存器可重疊(aliase)在用于存儲較寬或擴展打包數(shù)據(jù)操作數(shù)的較寬寄存器上。
【專利附圖】
【附圖說明】
[0005]通過參考用來說明本發(fā)明的實施例的以下描述和附圖,可最好地理解本發(fā)明。在附圖中:
[0006]圖1是處理器的實施例的框圖。
[0007]圖2是一組合適的打包數(shù)據(jù)寄存器的第一實施例的框圖。
[0008]圖3A是在一些處理器中現(xiàn)有的一組寄存器的框圖。
[0009]圖3B是一組合適的打包數(shù)據(jù)寄存器的第二實施例的框圖。
[0010]圖4是指令處理裝置的實施例的框圖。
[0011]圖5是在處理器中的方法的實施例的流程框圖。
[0012]圖6是示出部分寄存器訪問操作的框圖,可響應(yīng)于部分寄存器訪問指令在重疊在較寬操作數(shù)上的較窄操作數(shù)上執(zhí)行該部分寄存器訪問操作。
[0013]圖7是可響應(yīng)于指示較窄操作數(shù)的部分寄存器訪問打包數(shù)據(jù)指令在較寬操作數(shù)上執(zhí)行的經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作的示例實施例的框圖。
[0014]圖8是示出部分寄存器訪問操作的框圖,可響應(yīng)于部分寄存器訪問指令,在重疊在較寬操作數(shù)上的較窄操作數(shù)上執(zhí)行該部分寄存器訪問操作。
[0015]圖9是可響應(yīng)于指示較窄操作數(shù)的部分寄存器訪問打包數(shù)據(jù)指令在較寬操作數(shù)上執(zhí)行的經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作的示例實施例的框圖。
[0016]圖10是示出部分寄存器訪問操作的框圖,可響應(yīng)于部分寄存器訪問指令,在重疊在較寬操作數(shù)上的較窄操作數(shù)的非對應(yīng)數(shù)據(jù)元素上執(zhí)行該部分寄存器訪問操作。
[0017]圖11是經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作的示例實施例的框圖,可在較寬操作數(shù)的對應(yīng)數(shù)據(jù)元素上執(zhí)行該經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作,可響應(yīng)于指示較窄操作數(shù)的非對應(yīng)數(shù)據(jù)元素上的操作的部分寄存器訪問打包數(shù)據(jù)指令執(zhí)行該經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作。
[0018]圖12是示出打包數(shù)據(jù)操作掩碼位的數(shù)目依賴于打包數(shù)據(jù)寬度和打包數(shù)據(jù)元素寬度的表格。
[0019]圖13是一組合適的打包數(shù)據(jù)操作掩碼寄存器的示例實施例的框圖。
[0020]圖14是示出用作打包數(shù)據(jù)操作掩碼和/或用于進(jìn)行掩碼的位數(shù)可依賴于打包數(shù)據(jù)寬度和數(shù)據(jù)元素寬度的示圖。
[0021]圖15A是示出根據(jù)本發(fā)明實施例的示例性有序流水線和示例性的寄存器重命名的無序發(fā)布/執(zhí)行流水線的框圖。
[0022]圖15B是示出根據(jù)本發(fā)明實施例的要包括在處理器中的有序架構(gòu)核的示例性實施例和示例性的寄存器重命名的無序發(fā)布/執(zhí)行架構(gòu)核的框圖。
[0023]圖16A是根據(jù)本發(fā)明實施例的單處理器核連同其到管芯上互連網(wǎng)絡(luò)的連接以及其2級(L2)高速緩存的本地子集的框圖。
[0024]圖16B是根據(jù)本發(fā)明實施例的圖16A中的處理器核的一部分的展開圖。
[0025]圖17是根據(jù)本發(fā)明實施例可具有一個以上的核、可具有集成存儲器控制器以及可具有集成圖形器件的處理器的框圖。
[0026]圖18所示為根據(jù)本發(fā)明的一個實施例的系統(tǒng)的框圖。
[0027]圖19所示為根據(jù)本發(fā)明的一實施例的第一更具體示例性系統(tǒng)的框圖。
[0028]圖20所示為根據(jù)本發(fā)明的一實施例的第二更具體示例性系統(tǒng)的框圖。
[0029]圖21所示為根據(jù)本發(fā)明的一實施例的SoC的框圖。
[0030]圖22是根據(jù)本發(fā)明實施例的對照使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn)制指令轉(zhuǎn)換成目標(biāo)指令集中的二進(jìn)制指令的框圖。
【具體實施方式】
[0031]本文所公開的是部分寄存器訪問方法、處理器和系統(tǒng)。在以下描述中,闡述了大量具體細(xì)節(jié)(例如,專用存儲器、指令、掩碼、用于執(zhí)行部分寄存器訪問的方法、邏輯實現(xiàn)、處理器架構(gòu)、微架構(gòu)細(xì)節(jié)、操作順序、邏輯劃分/集成細(xì)節(jié)、系統(tǒng)組件的類型和相互關(guān)系等)。然而,應(yīng)當(dāng)理解,本發(fā)明的各實施例可以在不具有這些具體細(xì)節(jié)的情況下得到實施。在其他實例中,公知的電路、結(jié)構(gòu)和技術(shù)未被詳細(xì)示出以免混淆對本描述的理解。
[0032]圖1是處理器100的實施例的框圖。在一些實施例中,處理器可以是通用處理器(例如,在各種類型的計算機系統(tǒng)中用作中央處理單元的類型的通用微處理器)。替換地,處理器可以是專用處理器。合適的專用處理器的示例包括但不限于,網(wǎng)絡(luò)處理器、通信處理器、加密處理器、圖形處理器、協(xié)處理器、嵌入式處理器、數(shù)字信號處理器(DSP)以及控制器(例如,微控制器),僅列舉數(shù)例。該處理器可以是各種復(fù)雜指令集計算(CISC)處理器、各種精簡指令集計算(RISC)處理器、各種超長指令字(VLIW)處理器、其各種混合、或完全其他類型的處理器中的任何處理器。
[0033]處理器具有指令集102。指令集的指令表示被提供給處理器以供執(zhí)行的宏指令、匯編語言指令或機器級指令。指令集包括一個或多個部分寄存器訪問打包數(shù)據(jù)指令103。在一些實施例中,部分寄存器訪問打包數(shù)據(jù)指令可表示訪問一個或多個源和/或目的地操作數(shù)的指令,這些源和/或目的地操作數(shù)僅表示寄存器的一部分而不是寄存器的全部寬度。作為一個示例,部分寄存器訪問打包數(shù)據(jù)指令可表示訪問存儲在512位寄存器中的128位源和目的地操作數(shù)的指令。指令集還任選地包括一個或多個經(jīng)掩碼打包數(shù)據(jù)指令104。任選地,經(jīng)掩碼打包數(shù)據(jù)指令包括一個或多個經(jīng)掩碼全寄存器訪問指令104B。在一些實施例中,經(jīng)掩碼的全寄存器訪問指令可表示訪問表示或占據(jù)寄存器的全部寬度的一個或多個源和/或目的地操作數(shù)的指令。作為一個示例,經(jīng)掩碼的全寄存器訪問指令可表示訪問存儲在512位寄存器中的512位源和目的地操作數(shù)的指令。
[0034]處理器包括架構(gòu)級可見的寄存器(例如,架構(gòu)寄存器文件)105。架構(gòu)寄存器此處也可以被簡稱為寄存器。除非另外指定或顯而易見,短語架構(gòu)寄存器、寄存器文件以及寄存器在本文中用于表示對軟件和/或編程器和/或由宏指令指定來標(biāo)識操作數(shù)的寄存器而言可見的寄存器。這些寄存器與給定微架構(gòu)中的其他非架構(gòu)的或非架構(gòu)級可見的寄存器(例如,指令所使用的臨時寄存器,重新排序緩沖器,引退寄存器等等)相反。寄存器一般表示管芯上處理器存儲器位置。所示的寄存器包括標(biāo)量通用寄存器106、打包數(shù)據(jù)寄存器107和任選的打包數(shù)據(jù)操作掩碼寄存器108。
[0035]處理器還包括執(zhí)行邏輯109 (例如,一個或多個執(zhí)行單元)。執(zhí)行邏輯可操作用于執(zhí)行或處理指令集的指令。例如,執(zhí)行邏輯可操作用于執(zhí)行或處理部分寄存器訪問打包數(shù)據(jù)指令103和經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)指令104B。
[0036]圖2是一組合適的打包數(shù)據(jù)寄存器207的第一實施例的框圖。所示的打包數(shù)據(jù)寄存器包括三十二個512位寬的打包或向量寄存器。這些三十二個512位寄存器被標(biāo)記為ZMMO至ZMM31。這些512位寄存器的較低十六個是ZMMO至ZMM15。如所示,在一些實施例中,ZMM0-ZMM15寄存器的較低階256位被重疊或者覆蓋在相應(yīng)256位打包或向量寄存器YMM0-YMM15上,但是這不是必需的。同樣,在一些實施例中,YMM0-YMM15寄存器的較低階128位被重疊或者覆蓋在相應(yīng)128位打包或向量寄存器XMM0-XMM1上,但是這也不是必需的。
[0037]512位寄存器ZMMO至ZMM31各自可操作用于保持512位打包數(shù)據(jù)、256位打包數(shù)據(jù)或者128位打包數(shù)據(jù)。256位寄存器YMM0-YMM15各自可操作用于保持256位打包數(shù)據(jù)或者128位打包數(shù)據(jù)。128位寄存器XMM0-XMM1各自可操作用于保持128位打包數(shù)據(jù)。支持不同數(shù)據(jù)元素大小,包括至少8位字節(jié)數(shù)據(jù)、16位字?jǐn)?shù)據(jù)、32位雙字?jǐn)?shù)據(jù)、32位單精度浮點數(shù)據(jù)、64位四倍字?jǐn)?shù)據(jù)和64位雙精度浮點數(shù)據(jù)。打包數(shù)據(jù)寄存器的替換實施例可包括不同數(shù)量的寄存器、不同大小的寄存器,并且可以或者可以不將較大寄存器重疊在較小寄存器上。
[0038]歷史上,處理器最初僅包括XMM寄存器。指令集中的指令在XMM寄存器上操作。后來,YMM寄存器被添加,以增加打包或向量寬度以允許更多的數(shù)據(jù)元素被并發(fā)或并行處理。將新指令添加到指令集以在這些較寬的YMM寄存器上操作。最近,ZMM寄存器被添加,以進(jìn)一步增加打包或向量寬度以允許更多的數(shù)據(jù)元素被并發(fā)或并行處理。將附加的新指令添加到指令集以在這些更寬的ZMM寄存器上操作。即使這些較新的指令和較寬的打包數(shù)據(jù)寬度是可用的,但一般仍期望提供向后兼容性且仍支持較舊的指令。例如,一般期望處理器繼續(xù)支持在XMM和YMM寄存器上操作的較舊指令。然而,因為XMM和YMM寄存器重疊或覆蓋在較寬的ZMM寄存器上,這些寄存器的使用通常涉及對存儲在較寬的512位寄存器中的較窄XMM和/或YMM操作數(shù)的部分寄存器訪問。
[0039]圖3A是在一些處理器中現(xiàn)有的一組架構(gòu)寄存器310的框圖。所示的寄存器包括四個64位打包數(shù)據(jù)寄存器P0-P3,但可任選地包括更多。在示圖中,這四個64位打包數(shù)據(jù)寄存器還可在邏輯上視為兩個128位打包數(shù)據(jù)寄存器QO-Ql的一分為二。128位寄存器QO的較低階64位(B卩,位63:0)對應(yīng)于64位寄存器PO,而128位寄存器QO的較高階64位卿,位127:64)對應(yīng)于64位寄存器Pl。類似地,128位寄存器Ql的較低階64位(B卩,位63:0)對應(yīng)于64位寄存器P2,而128位寄存器Ql的較高階64位(B卩,位127:64)對應(yīng)于64位寄存器P3。
[0040]取代利用如圖2的方法所示的重疊來增加打包數(shù)據(jù)寄存器的寬度,用于這些現(xiàn)有的寄存器的方法在邏輯上將相鄰一對較窄的64位P0-P3寄存器組合起來以形成較寬的128位QO-Ql寄存器。然而,這種邏輯組合多個較窄的打包數(shù)據(jù)寄存器以形成單個較寬的打包數(shù)據(jù)寄存器的方法的一個可能的缺點是較寬的打包數(shù)據(jù)寄存器的數(shù)量減少。128位寄存器的數(shù)量僅是64位寄存器的一半。此外,當(dāng)考慮比128位更寬的打包數(shù)據(jù)寬度時,該問題可能會加劇,因為這可能會涉及在邏輯上組合三個或更多個較窄的寄存器以形成單個較寬的寄存器。例如,可能需要四個64位寄存器來形成每個256位寄存器。
[0041]圖3B是一組合適的架構(gòu)打包數(shù)據(jù)寄存器307的第二實施例的框圖。在一個方面,寄存器307可表示圖3A的現(xiàn)有寄存器310的加寬/擴展和兼容版本。寄存器307包括四個較寬的256位打包數(shù)據(jù)寄存器R0-R3。這四個較寬的256位打包數(shù)據(jù)寄存器R0-R3實現(xiàn)現(xiàn)有的寄存器P0-P3和Q0-Q1。如圖所示,在一些實施例中,R0-R3寄存器的較低階的64位覆蓋相應(yīng)的64位寄存器P0-P3,并且R0-R3寄存器的較低階的128位覆蓋相應(yīng)的128位寄存器Q0-Q3,但這不是必須的。在各實施例中,可能存在任何期望數(shù)量的這種256位寄存器,諸如十六、三十二、六十四或一些其它數(shù)量的寄存器。在其它實施例中,取代256位寄存器、可使用512位寄存器、1024位寄存器或比256位寬或窄的其它寬度??芍С植煌瑪?shù)據(jù)元素大小,包括例如8位字節(jié)、16位字、32位雙字、32位單精度浮點、64位四倍字、64位雙精度浮點或其各種組合。
[0042]因為現(xiàn)有/傳統(tǒng)指令可能仍指定P0-P3和/或QO-Ql寄存器,并且因為否決這些現(xiàn)有/傳統(tǒng)指令可能要經(jīng)歷很多年或甚至幾十年,所以重要的是提供向后兼容性并且允許也支持現(xiàn)有/傳統(tǒng)指令。例如,重要的是仍允許現(xiàn)有/傳統(tǒng)指令在P0-P3和/或QO-Ql寄存器上操作。然而,如果P0-P3和/或QO-Ql寄存器覆蓋在較寬的寄存器上(例如,如圖3B所示),則這種指令的執(zhí)行可涉及部分寄存器訪問,以從覆蓋在較寬寄存器上的P0-P3和/或QO-Ql寄存器讀取數(shù)據(jù)和/或向其寫入數(shù)據(jù)。
[0043]圖4是指令處理裝置400的實施例的框圖。在一些實施例中,指令處理裝置可以是處理器和/或可被包括在處理器中。例如,在一些實施例中,指令處理裝置可以是圖1的處理器,或者可被包括在該處理器中。替換地,指令處理裝置可被包括在類似或不同的處理器中。此外,圖1的處理器可包括類似或不同的裝置。
[0044]裝置400包括架構(gòu)寄存器405。寄存器中的每一個可表示可操作用于存儲數(shù)據(jù)的管芯上存儲位置。寄存器可使用公知技術(shù)在不同的微架構(gòu)中以不同的方式實現(xiàn),并且不限于任何特定類型的電路。各種不同類型的寄存器是合適的。合適類型的寄存器的示例包括但不限于,專用物理寄存器、使用寄存器重命名的動態(tài)分配的物理寄存器、以及其組合。在一些實施例中,圖2的打包數(shù)據(jù)寄存器207或圖3的打包數(shù)據(jù)寄存器307可用于寄存器405?;蛘撸蓪⑵渌拇嫫饔糜诩拇嫫?05。
[0045]裝置可接收部分寄存器訪問指令403,該指令可指示一個或多個相對較窄的操作數(shù)。例如,可從指令提取單元、指令隊列等接收該指令。在一些實施例中,部分寄存器訪問指令可明確指定(例如,通過一個或多個字段或位集合)或以其它方式指示(例如,隱式指示)第一相對較窄的源操作數(shù)(例如,寄存器)422,并且可指定或以其它方式指示相對較窄的目的地操作數(shù)(例如,寄存器)424。在一些實施例中,第一較窄的源操作數(shù)422可以是第一較寬的源操作數(shù)423的一部分,和/或較窄的目的地操作數(shù)424可以是較寬的目的地操作數(shù)425的一部分。作為一個示例,第一較窄的源操作數(shù)422可以是第一 128位XMM寄存器,第一較寬的源操作數(shù)423可以是第一 512位ZMM寄存器,第一 128位XMM寄存器覆蓋在第一512位ZMM寄存器上,較窄的目的地操作數(shù)424可以是第二 128位XMM寄存器,且較寬的目的地操作數(shù)425可以是第二 512位ZMM寄存器,第二 128位XMM寄存器覆蓋在第二 512位ZMM寄存器上。正如本文中所使用的,術(shù)語“較窄”和“較寬”是相對術(shù)語(即,不是絕對術(shù)語),它們是彼此相對的(例如,較窄的源操作數(shù)比較寬的源操作數(shù)窄,等等)。在其它實施例中,部分寄存器訪問指令可指示少到單個相對較窄的寄存器。此外,在其它實施例中,一個或多個存儲器位置可用于替換寄存器中的一個或多個,和/或目的地寄存器可與源寄存器相同。
[0046]裝置400還包括解碼邏輯420。解碼邏輯也可以被稱為解碼單元或解碼器。部分寄存器訪問指令可表示機器代碼指令、匯編語言指令、宏指令、或裝置的指令集的指令和/或控制信號。解碼器可解碼、翻譯、解釋、變形或其它方式轉(zhuǎn)換部分寄存器訪問指令。例如,解碼器可將相對較高級的部分寄存器訪問指令解碼成一個或多個對應(yīng)的相對較低級的微指令、微操作、微代碼入口點、或者反映、表示和/或源自較高級指令的其他相對較低級的指令或控制信號。該解碼器可以使用各種不同的機制來實現(xiàn),包括但不限于,微代碼只讀存儲器(ROM)、查找表、硬件實現(xiàn)、可編程邏輯陣列(PLA)和本領(lǐng)域公知的用于實現(xiàn)解碼器的其他機制。
[0047]在一些實施例中,解碼邏輯420可包括邏輯421以將部分寄存器訪問打包數(shù)據(jù)指令(指示第一較窄的源打包數(shù)據(jù)操作數(shù)422和較窄的目的地操作數(shù)424)映射到指示第一較寬的源打包數(shù)據(jù)操作數(shù)423和較寬的目的地操作數(shù)425的經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)指令/操作。第一較寬的源打包數(shù)據(jù)操作數(shù)423比第一較窄的源打包數(shù)據(jù)操作數(shù)422寬且包括第一較窄的源打包數(shù)據(jù)操作數(shù)422 (例如,較窄的操作數(shù)422可重疊在較寬的操作數(shù)423上)。較寬的目的地操作數(shù)425比較窄的目的地操作數(shù)424寬且包括較窄的目的地操作數(shù)424。在一些實施例中,部分寄存器訪問指令和經(jīng)掩碼的全寄存器訪問指令可具有相同或非常相似的算術(shù)、邏輯或其它操作(例如,二者可執(zhí)行加法操作,二者可執(zhí)行移位操作等)。在一些實施例中,經(jīng)掩碼的全寄存器訪問指令可執(zhí)行部分寄存器訪問指令的所有操作加上可能被掩碼掉的附加操作。術(shù)語“經(jīng)掩碼”指的是斷言(predication)或條件執(zhí)行,這將在下文中進(jìn)一步討論。有利地,在一些實施例中,全寄存器訪問指令可執(zhí)行全寄存器訪問而不是部分寄存器訪問。
[0048]再次參考圖4,執(zhí)行邏輯409與解碼邏輯420和寄存器405耦合。作為示例,執(zhí)行邏輯可包括執(zhí)行單元、算法單元、算法邏輯單元、執(zhí)行算法和邏輯操作的數(shù)字電路、功能單元、包括集成電路或硬件的單元等。執(zhí)行單元和/或指令處理裝置可包括可操作用于響應(yīng)于部分寄存器訪問指令403(例如,響應(yīng)于由解碼邏輯從部分寄存器訪問指令403導(dǎo)出的一個或多個指令或控制信號)執(zhí)行操作的專用或特定邏輯(例如與固件和/或軟件潛在地組合的電路或其它硬件)。
[0049]在一些實施例中,執(zhí)行單元可操作用于利用打包數(shù)據(jù)操作掩碼408執(zhí)行經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)指令/操作。在一些實施例中,打包數(shù)據(jù)操作掩碼可包括掩碼元素,該掩碼元素用于通過經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)指令/操作存儲的打包數(shù)據(jù)結(jié)果的每個對應(yīng)結(jié)果數(shù)據(jù)元素。在一些實施例中,與由經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)指令/操作存儲的(本來不會由部分寄存器訪問打包數(shù)據(jù)指令存儲的)結(jié)果元素對應(yīng)的所有掩碼元素將被掩碼掉。執(zhí)行單元可將打包數(shù)據(jù)結(jié)果存儲在較寬的目的地操作數(shù)425中。
[0050]在一些實施例中,部分寄存器訪問指令可不指示打包數(shù)據(jù)操作掩碼,但打包數(shù)據(jù)操作掩碼408仍然可用于實現(xiàn)部分寄存器訪問指令的執(zhí)行。在其它實施例中,部分寄存器訪問指令可指示打包數(shù)據(jù)操作掩碼,但打包數(shù)據(jù)操作掩碼408的位寬度寬于部分寄存器訪問指令指示的打包數(shù)據(jù)操作掩碼(例如,可具有均被故意掩碼掉的附加掩碼位)。
[0051]打包數(shù)據(jù)操作掩碼可表示斷言操作數(shù)或條件控制操作數(shù)。打包數(shù)據(jù)操作掩碼在本文中還可被簡單地稱為掩碼。每個掩碼可斷言、條件控制或掩碼與指令相關(guān)聯(lián)的操作是否要在源數(shù)據(jù)元素上執(zhí)行和/或是否將操作的結(jié)果存儲在打包數(shù)據(jù)結(jié)果中。每個掩碼可各自包括多個掩碼元素、斷言元素或條件控制元素。
[0052]在一些實施例中,每個掩碼可操作用于按結(jié)果數(shù)據(jù)元素粒度對操作進(jìn)行掩碼。在一個方面,可與結(jié)果數(shù)據(jù)元素的一對一對應(yīng)地包括掩碼元素(例如,可以有四個結(jié)果數(shù)據(jù)元素和四個對應(yīng)的掩碼元素)。每個不同的掩碼元素可操作用于與其它元素分離或獨立地掩碼不同的對應(yīng)打包數(shù)據(jù)操作、和/或掩碼不同的對應(yīng)結(jié)果數(shù)據(jù)元素的存儲。例如,掩碼元素可操作用于掩碼是否在源打包數(shù)據(jù)的對應(yīng)數(shù)據(jù)元素上(或在兩個源打包數(shù)據(jù)的對應(yīng)數(shù)據(jù)元素對上)執(zhí)行打包數(shù)據(jù)操作,和/或是否將打包數(shù)據(jù)操作的結(jié)果存儲在對應(yīng)的結(jié)果數(shù)據(jù)元素中。
[0053]通常每個掩碼元素可以是單個位。單個位可允許指定兩種不同的可能性之一。作為一個示例,每個位可指定執(zhí)行操作或不執(zhí)行操作。作為另一個示例,每個位可指定存儲操作結(jié)果或不存儲操作結(jié)果。根據(jù)一個可能的協(xié)定,每個掩碼位可具有第一值(例如,置位為二進(jìn)制I)以允許將打包操作的結(jié)果存儲在對應(yīng)的結(jié)果數(shù)據(jù)元素中,或者可具有第二值(例如,被清除為二進(jìn)制O)以防止將打包操作的結(jié)果存儲在對應(yīng)的結(jié)果數(shù)據(jù)元素中。相反協(xié)定也是可能的。
[0054]在一些實施例中,可任選地執(zhí)行操作而不管對應(yīng)的掩碼位或元素,但該操作的對應(yīng)結(jié)果依據(jù)對應(yīng)的掩碼位或元素的值而可以被存儲或可以不被存儲在結(jié)果打包數(shù)據(jù)中。或者,在其它實施例中,如果對應(yīng)的掩碼位或元素被掩碼掉,則可任選地忽略(即,不執(zhí)行)操作。在一些實施例中,可任選地對被掩碼掉元素上的操作阻止異常或違規(guī),或者被掩碼掉元素上的操作可任選地不引起異?;蜻`規(guī)。在一些實施例中,可任選地抑制或不引起與被掩碼掉的數(shù)據(jù)元素對應(yīng)的存儲器故障。
[0055]為了避免混淆描述,已示出和描述了相對簡單的指令處理裝置400。在其他實施例中,該裝置可任選地包括在處理器中找到的其他公知組件。這些組件的示例包括但不限于,分支預(yù)測單元、指令提取單元、指令和數(shù)據(jù)的高速緩存、指令和數(shù)據(jù)的翻譯后備緩沖器(translation lookaside buffer)、預(yù)取緩沖器、微指令隊列、微指令定序器、寄存器重命名單元、指令調(diào)度單元、總線接口單元、第二或更高級高速緩存、引退單元、包括在處理器中的其他組件、以及上述的各種組合。實際上在處理器中存在組件的多種不同的組合和配置,并且各實施例不限于任何特定組合或配置。實施例可被包括在具有多個核的處理器、邏輯處理器或者執(zhí)行引擎中,其中至少一個具有可操作用于執(zhí)行本文中所公開的指令實施例的執(zhí)行邏輯。
[0056]圖5是在處理器中的方法530的實施例的流程框圖。在一些實施例中,圖5的操作和/或方法可由圖1的處理器和/或圖4的裝置執(zhí)行,和/或在圖1的處理器和/或圖4的裝置內(nèi)執(zhí)行。本文中所描述的用于圖1的處理器和圖4的裝置的組件、特征、以及具體的任選細(xì)節(jié)還任選地應(yīng)用于圖5的操作和/或方法。替換地,圖5的操作和/或方法可由類似的或完全不同的處理器或裝置執(zhí)行,和/或在類似的或完全不同的處理器或裝置內(nèi)執(zhí)行。此外,圖1的處理器和/或圖4的裝置可執(zhí)行與圖5相似或者不同的操作和/或方法。
[0057]該方法包括在框531接收打包數(shù)據(jù)指令。在各個方面,可從管芯外的源(例如,從系統(tǒng)存儲器、盤、或系統(tǒng)互連)或者從管芯上的源(例如,從指令高速緩存或指令提取單元)接收第一指令。在一些實施例中,打包數(shù)據(jù)指令可指示第一較窄的源打包數(shù)據(jù)操作數(shù),任選的第二較窄的源打包數(shù)據(jù)操作數(shù),和較窄的目的地操作數(shù)。
[0058]該方法包括在框532,將打包數(shù)據(jù)指令映射到經(jīng)掩碼打包數(shù)據(jù)操作。在一些實施例中,經(jīng)掩碼的打包數(shù)據(jù)操作可指示比第一較窄的源打包數(shù)據(jù)操作數(shù)寬且包括第一較窄的源打包數(shù)據(jù)操作數(shù)的第一較寬的源打包數(shù)據(jù)操作數(shù)、任選的比第二較窄的源打包數(shù)據(jù)操作數(shù)寬且包括第二較窄的源打包數(shù)據(jù)操作數(shù)的第二較寬的源打包數(shù)據(jù)操作數(shù)、以及比較窄的目的地操作數(shù)寬且包括較窄的目的地操作數(shù)的較寬的目的地操作數(shù)。在一些實施例中,經(jīng)掩碼的打包數(shù)據(jù)操作可指示打包數(shù)據(jù)操作掩碼,無論所接收的打包數(shù)據(jù)指令是否是經(jīng)掩碼的指令和/或指示打包數(shù)據(jù)操作掩碼。在一些實施例中,解碼邏輯(例如,解碼單元)可執(zhí)行映射。
[0059]該方法包括在框533生成打包數(shù)據(jù)操作掩碼。在一些實施例中,打包數(shù)據(jù)操作掩碼可包括用于由經(jīng)掩碼的打包數(shù)據(jù)操作存儲的打包數(shù)據(jù)結(jié)果的每個對應(yīng)結(jié)果數(shù)據(jù)元素的掩碼元素。在一些實施例中,與將由經(jīng)掩碼的打包數(shù)據(jù)操作存儲的(本來不會由打包數(shù)據(jù)指令存儲的)結(jié)果數(shù)據(jù)元素對應(yīng)的所有掩碼元素將被掩碼掉。
[0060]該方法包括在框534利用打包數(shù)據(jù)操作掩碼執(zhí)行經(jīng)掩碼的打包數(shù)據(jù)操作。該方法包括在框535將打包數(shù)據(jù)結(jié)果存儲在較寬的目的地操作數(shù)中。在一些實施例中,將打包數(shù)據(jù)結(jié)果存儲在較寬的目的地操作數(shù)中可包括執(zhí)行全寄存器寫入而不是部分寄存器寫入。在一些實施例中,較寬的目的地操作數(shù)可完全填充目的地寄存器,而較窄的目的地操作數(shù)可僅部分填充目的地寄存器,使得如果不執(zhí)行映射則需要部分寄存器寫入。
[0061]圖6是示出部分寄存器訪問操作603的框圖,可響應(yīng)于部分寄存器訪問指令,在重疊在較寬操作數(shù)上的較窄操作數(shù)上執(zhí)行該部分寄存器訪問操作。部分寄存器訪問指令可指定或以其它方式指示第一較窄的源打包數(shù)據(jù)622-1,可指定或以其它方式指示第二較窄的源打包數(shù)據(jù)622-2,可指定或以其它方式指示可存儲結(jié)果打包數(shù)據(jù)的較窄的目的地操作數(shù)624(例如,存儲位置)。在所示的示例中,第一較窄的源操作數(shù)、第二較窄的源操作數(shù)和較窄的目的地操作數(shù)中的每一個均是128位寬且包括四個32位數(shù)據(jù)元素。在圖示中,第一較窄的源打包數(shù)據(jù)從最低有效位置(在右側(cè))至最高有效位置(在左側(cè))具有值A(chǔ)1、A2、A3和A4。類似地,第二較窄的源打包數(shù)據(jù)從最低有效位置(在右側(cè))至最高有效位置(在左側(cè))具有值B1、B2、B3和B4。其它示例可使用其它的打包數(shù)據(jù)寬度(例如,64位、256位、512位等),且具有較窄(例如,8位、16位等)或較寬(例如,64位)的數(shù)據(jù)元素。
[0062]較窄的128位操作數(shù)被存儲在較寬的寄存器中。在圖示中,較寬的寄存器是512位寄存器。具體地,第一較窄的源打包數(shù)據(jù)622-1被存儲在第一 512位寄存器607-1,第二較窄的源打包數(shù)據(jù)622-2被存儲在第二 512位寄存器607-2,較窄的目的地操作數(shù)624被存儲在第三512位寄存器607-3。在其它實施例中,可使用其它寄存器寬度,例如256位寄存器或1024位寄存器。第一 512位寄存器的位511:128存儲值A(chǔ)5至A16。類似地,第二 512位寄存器的位511:128存儲值B5至B16。
[0063]響應(yīng)于指令/操作生成結(jié)果打包數(shù)據(jù),并將其存儲在較窄的目的地操作數(shù)624中。結(jié)果打包數(shù)據(jù)可包括多個結(jié)果打包數(shù)據(jù)元素。在所示的示例中,結(jié)果打包數(shù)據(jù)是128位寬且包括四個32位結(jié)果數(shù)據(jù)元素。結(jié)果數(shù)據(jù)元素中的每一個包括操作結(jié)果,在這種情況下是在來自在對應(yīng)相對位位置中第一和第二較窄的源打包數(shù)據(jù)的對應(yīng)的源數(shù)據(jù)元素對上執(zhí)行的加法操作或求和。例如,在圖示中,結(jié)果打包數(shù)據(jù)從最低有效位置(在右側(cè))至最高有效位置(在左側(cè))具有值A(chǔ)1+B1、A2+B2、A3+B3和A4+B4。應(yīng)意識到加法操作僅僅是一個說明性示例,且其它算法(例如,乘法、減法等)和/或邏輯(例如,移位、旋轉(zhuǎn)、邏輯與、邏輯異或等)操作也是適當(dāng)?shù)摹?br>
[0064]因為128位第一和第二較窄的源打包數(shù)據(jù)622-1、622_2僅僅是較寬的第一和第二512位寄存器607-1、607-2的一部分,所以訪問較窄的源操作數(shù)可涉及第一和第二 512位寄存器的部分寄存器讀取。例如,可在不讀取值A(chǔ)5至A16的情況下讀取值A(chǔ)l至A4。此外,因為較窄的128位結(jié)果打包數(shù)據(jù)和/或較窄的128位目的地操作數(shù)僅僅是較寬的第三512位寄存器607-3的一部分,所以存儲結(jié)果可涉及對第三512位寄存器的部分寄存器寫入。例如,可在不破壞第三512位寄存器的位511:128中的已有內(nèi)容的情況下(例如,在不破壞A5至A16或B5至B16的值的情況下),將值A(chǔ)l+Bl、A2+B2、A3+B3和A4+B4存儲在第三512位寄存器中。在一些實施例中,可能期望避免或至少減少這種部分寄存器訪問的數(shù)量。
[0065]圖7是可響應(yīng)于指示較窄操作數(shù)的部分寄存器訪問打包數(shù)據(jù)指令在較寬操作數(shù)上執(zhí)行的經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作740的示例實施例的框圖。在一些實施例中,處理器或其一部分(例如,解碼單元)可將部分寄存器訪問打包數(shù)據(jù)指令映射到經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作,以用由經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作執(zhí)行的一個或多個對應(yīng)全寄存器訪問替換本來由部分寄存器訪問打包數(shù)據(jù)指令執(zhí)行的一個或多個部分寄存器訪問。在一些實施例中,圖7的經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作可用于實現(xiàn)圖6的部分寄存器訪問指令和/或操作。
[0066]經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作可使用具有由部分寄存器訪問指令指示的第一較窄的源打包數(shù)據(jù)722-1的第一較寬的源打包數(shù)據(jù)723-1和具有由部分寄存器訪問指令指示的第二較窄的源打包數(shù)據(jù)722-2的第二較寬的源打包數(shù)據(jù)723-2。在所示的實施例中,第一和第二較寬的源打包數(shù)據(jù)中的每一個是512位寬且具有十六個32位數(shù)據(jù)元素,且第一和第二較窄的源打包數(shù)據(jù)中的每一個是128位寬且具有四個32位數(shù)據(jù)元素,但本發(fā)明的范圍不限于此。在圖示中,第一較寬的源打包數(shù)據(jù)從最低有效位置(在右側(cè))至最高有效位置(在左側(cè))具有值六1、4243、4445、46吣416。在圖示中,第二較寬的源打包數(shù)據(jù)從最低有效位置(在右側(cè))至最高有效位置(在左側(cè))具有值B1、B2、B3、B4、B5、B6…B16。兩個源打包數(shù)據(jù)內(nèi)相同的相對位位置中(例如,如圖所示的相同垂直位置中)的源數(shù)據(jù)元素表示對應(yīng)數(shù)據(jù)元素對。在其它實施例中,可替代地使用任何其它適當(dāng)?shù)妮^寬和較窄源打包數(shù)據(jù)寬度(例如,128位、256位或1024位的較寬寬度,32位、64位或256位的較窄寬度)。此外,在其它實施例中,可任選地使用除32位外的其它數(shù)據(jù)元素寬度,諸如8位字節(jié)、16位字或64位雙字或雙精度浮點,僅僅舉幾個例子。
[0067]經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作還可使用源打包數(shù)據(jù)操作掩碼708。如例示中所示的,通常每個掩碼元素可以是單個位。替代地,如果需要在多于兩個的不同選項中進(jìn)行選擇,則可對每個掩碼元素使用兩個或更多位。還如圖所示,可以存在一個掩碼元素,在這種情況下,是用于每對對應(yīng)的源數(shù)據(jù)元素和/或用于每個結(jié)果數(shù)據(jù)元素的單個位。在所示的實施例中,因為在第一和第二源打包數(shù)據(jù)中有十六對對應(yīng)的數(shù)據(jù)元素,所以打包數(shù)據(jù)操作掩碼包括十六個掩碼元素或位。十六個掩碼位中的每一個可對應(yīng)于較寬的目的地操作數(shù)725中的打包數(shù)據(jù)結(jié)果的不同結(jié)果數(shù)據(jù)元素。在圖示中,對應(yīng)的數(shù)據(jù)元素及其對應(yīng)的掩碼位相對于彼此垂直對齊。每個掩碼位被置位為二進(jìn)制一(即,I)或清除為二進(jìn)制零(即,O)。被置位為二進(jìn)制一(即,I)掩碼位表示未被掩碼的位,而清除為二進(jìn)制零(即,O)的掩碼位表不被掩碼的位。
[0068]響應(yīng)于經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作將512位結(jié)果打包數(shù)據(jù)存儲在較寬的目的地操作數(shù)725中 。在一些實施例中,通過全寄存器寫入或存儲將512位結(jié)果打包數(shù)據(jù)存儲在較寬的目的地操作數(shù)(例如,512位寄存器)中。在一些實施例中,512位結(jié)果打包數(shù)據(jù)和/或較寬的目的地操作數(shù)725包括由對應(yīng)的部分寄存器訪問指令指示的較窄的128位目的地操作數(shù)724。在該特定示例中,經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作是經(jīng)掩碼的打包數(shù)據(jù)加法操作,該操作基于來自打包數(shù)據(jù)操作掩碼708的對應(yīng)掩碼位的斷言將來自第一和第二較寬的源打包數(shù)據(jù)的對應(yīng)數(shù)據(jù)元素對之和有條件地存儲在較寬的目的地操作數(shù)725中作為結(jié)果打包數(shù)據(jù)。當(dāng)給定的掩碼位被置位(即,I)時,允許對應(yīng)的源數(shù)據(jù)元素對之和存儲在對應(yīng)的結(jié)果數(shù)據(jù)元素中。相反,當(dāng)給定的掩碼位被清除(即,O)時,不允許對應(yīng)的源數(shù)據(jù)元素對之和存儲在對應(yīng)的結(jié)果數(shù)據(jù)元素中。當(dāng)然,在一些實施例中,該結(jié)果數(shù)據(jù)元素中的原始/開始值可保留或保持不變。
[0069]在一些實施例中,可使與較寬的目的地操作數(shù)中但不在較窄的目的地操作數(shù)中的結(jié)果數(shù)據(jù)元素對應(yīng)的掩碼元素均被故意掩碼掉。在一些實施例中,可使與較窄的目的地操作數(shù)中但不在較寬的目的地操作數(shù)中的結(jié)果數(shù)據(jù)元素對應(yīng)的所有掩碼元素均不被掩碼(例如,除非部分寄存器訪問指令本身使用斷言以掩碼掉這些結(jié)果數(shù)據(jù)元素中的一些)。例如,與較窄的目的地操作數(shù)中的結(jié)果數(shù)據(jù)元素相同數(shù)量的最低階或最低有效掩碼位被置位為二進(jìn)制一,而與較寬的目的地操作數(shù)中但不在較窄的目的地操作數(shù)中的結(jié)果數(shù)據(jù)元素相同數(shù)量的最高階或最高有效掩碼位可被清除為二進(jìn)制零。再次參考所示的實施例,源打包數(shù)據(jù)操作掩碼從最低有效位置(在右側(cè))至最高有效位置(在左側(cè))具有值1、1、1、1、0、0、…
O。即,四個最低階掩碼位被置位,而十二個最高階掩碼位被清除。可在執(zhí)行時動態(tài)確定掩碼位,而一般在編譯時靜態(tài)固定部分寄存器訪問。對于被置位的每個掩碼位,可將和存儲在對應(yīng)的結(jié)果數(shù)據(jù)元素中。例如,如圖所示,最低階的四個結(jié)果數(shù)據(jù)元素存儲值A(chǔ)1+B1、A2+B2、A3+B3和A4+B4。在該實施例中,屬于原始部分寄存器訪問指令/操作(例如,圖6的指令/操作)的512位操作數(shù)的較低階的128位部分內(nèi)的所有數(shù)據(jù)元素均未被掩碼。
[0070]相反,位511:128中的所有較高階數(shù)據(jù)元素均被掩碼掉,因為它們不屬于僅使用128位操作數(shù)的原始部分寄存器訪問指令/操作。對于被清除的每個掩碼位,可將除和之外的另一個值存儲在對應(yīng)的結(jié)果數(shù)據(jù)元素中。例如,在源被重新用作目的地的一些實施例中,可執(zhí)行合并-掩碼,其中來自較寬的源打包數(shù)據(jù)的數(shù)據(jù)元素的對應(yīng)值可被存儲在給定的被掩碼掉的結(jié)果數(shù)據(jù)元素中。例如,如圖所示,來自第一較寬的源打包數(shù)據(jù)的位511:128的值A(chǔ)5至A16可被存儲在較寬的目的地操作數(shù)的位511:128中?;蛘撸诹硪粋€實施例中,值B5至B16可被存儲在較寬的目的地操作數(shù)的位511:128中。在其它實施例中,如果目的地是不同于源寄存器的寄存器,目的地的被掩碼掉的結(jié)果數(shù)據(jù)元素中的原始內(nèi)容可被保留或保持不變。有利地,這些被清除的最高有效掩碼位可被用于掩碼掉較寬的512位寄存器中(僅使用128位操作數(shù)的)原始部分寄存器訪問指令(例如,圖6的指令/操作)不需要的那部分。
[0071]掩碼位可按不同方式實現(xiàn)。作為一個示例,在一些實施例中,可執(zhí)行選擇操作,其中操作的結(jié)果被選擇成被寫入對應(yīng)的結(jié)果數(shù)據(jù)元素,或目的地中的對應(yīng)結(jié)果數(shù)據(jù)元素的原始值(即原始/開始內(nèi)容)可被選擇成回寫到對應(yīng)的結(jié)果數(shù)據(jù)元素。作為另一個示例,在其它實施例中,可執(zhí)行有條件寫入,其中掩碼位控制是否將操作的結(jié)果寫入對應(yīng)的結(jié)果數(shù)據(jù)元素,或不執(zhí)行寫,從而使結(jié)果數(shù)據(jù)元素保留其原始/開始內(nèi)容。
[0072]應(yīng)意識到這僅僅是在較寬的操作數(shù)上的經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作的一個說明性示例,其可用于實現(xiàn)指示較窄操作數(shù)的部分寄存器訪問打包數(shù)據(jù)指令。在兩個源打包數(shù)據(jù)上的其它操作,諸如減法、乘法、除法、打包比較等,也是適當(dāng)?shù)摹S忠恍┢渌m當(dāng)?shù)牟僮魃婕皢蝹€源打包數(shù)據(jù)操作數(shù)。示例包括但不限于打包移位、打包旋轉(zhuǎn)、打包量值縮放、打包平方根倒數(shù)等等。又一些其它適當(dāng)?shù)牟僮靼▋蓚€以上的源打包數(shù)據(jù)、不同尺寸的源打包數(shù)據(jù)、不同數(shù)量的數(shù)據(jù)元素的源打包數(shù)據(jù)上的操作、以水平或非垂直對準(zhǔn)方式執(zhí)行的操作、部分標(biāo)量和部分打包操作、以及本領(lǐng)域中已知的又一些其它操作。
[0073]在其它實施例中,部分寄存器訪問指令/操作和/或用于實現(xiàn)它們的對應(yīng)的經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作可以在寄存器中的中間位上操作。例如,中間位可表示最低有效的位范圍(例如,一個或多個打包數(shù)據(jù)元素)和最高有效的位范圍(例如,一個或多個打包數(shù)據(jù)元素)之間的連續(xù)的位范圍(例如,一個或多個打包數(shù)據(jù)元素)。
[0074]圖8是示出部分寄存器訪問操作803的框圖,可響應(yīng)于部分寄存器訪問指令,在重疊在較寬操作數(shù)上的較窄操作數(shù)上執(zhí)行該部分寄存器訪問操作。部分寄存器訪問指令可指定或以其它方式指示第一較窄的源打包數(shù)據(jù)822-1,可指定或以其它方式指示第二較窄的源打包數(shù)據(jù)822-2,可指定或以其它方式指示可存儲結(jié)果打包數(shù)據(jù)的較窄的目的地操作數(shù)824 (例如,存儲位置)。在所示的示例中,第一較窄的源操作數(shù)、第二較窄的源操作數(shù)和較窄的目的地操作數(shù)中的每一個均是128位寬且包括兩個64位數(shù)據(jù)元素,但本發(fā)明的范圍不限于此。在圖示中,第一較窄的源打包數(shù)據(jù)從最低有效位置(在右側(cè))至最高有效位置(在左側(cè))具有值A(chǔ)l和A2。類似地,第二較窄的源打包數(shù)據(jù)從最低有效位置(在右側(cè))至最高有效位置(在左側(cè))具有值BI和B2。其它示例可使用其它的打包數(shù)據(jù)寬度(例如,64位、256位、512位等),且具有較窄(例如,8位、16位等)或較寬(例如,64位)的數(shù)據(jù)元素。
[0075]較窄的128位操作數(shù)被存儲在較寬的寄存器中。在圖示中,較寬的寄存器是256位寄存器。具體地,第一較窄的源打包數(shù)據(jù)822-1被存儲在第一 256位寄存器807-1,第二較窄的源打包數(shù)據(jù)822-2被存儲在第二 256位寄存器807-2,較窄的目的地操作數(shù)824被存儲在第三256位寄存器807-3。在其它實施例中,可使用其它寄存器寬度,例如512位寄存器或1024位寄存器。第一 256位寄存器的位255:128存儲值A(chǔ)3和A4。類似地,第二 256位寄存器的位255:128存儲值B3和B4。
[0076]響應(yīng)于指令/操作生成結(jié)果打包數(shù)據(jù),并將其存儲在較窄的目的地操作數(shù)824中。在所示的示例中,結(jié)果打包數(shù)據(jù)是128位寬且包括兩個數(shù)據(jù)元素。位63:0中的最低階數(shù)據(jù)元素包括來自第一源打包數(shù)據(jù)的對應(yīng)數(shù)據(jù)元素的值A(chǔ)l。在這種情況下,不執(zhí)行生成該數(shù)據(jù)元素的加法操作。位127:64中的較高階數(shù)據(jù)元素包括和A2+B2,它表示來自第一和第二源打包數(shù)據(jù)的對應(yīng)數(shù)據(jù)元素對之和。因為128位第一和第二較窄的源打包數(shù)據(jù)822-1、822-2僅僅是較寬的第一和第二 256位寄存器807-1、807-2的一部分,所以訪問較窄的源操作數(shù)可涉及部分寄存器讀取。此外,因為較窄的128位結(jié)果打包數(shù)據(jù)和/或較窄的128位目的地操作數(shù)僅僅是較寬的第三256位寄存器807-3的一部分,所以存儲結(jié)果可涉及部分寄存器寫入。例如,在一些實施例中,第一 256位寄存器可再次用作目的地操作數(shù),且和A2+B2可被存儲在該256位寄存器的位127:64中,而不覆寫該寄存器的其它預(yù)先存在的內(nèi)容(例如,不覆寫A1、A3和A4)。這可涉及部分寄存器寫入。在一些實施例中,可能期望避免或至少減少這種部分寄存器訪問的數(shù)量。
[0077]圖9是可響應(yīng)于指示較窄操作數(shù)的部分寄存器訪問打包數(shù)據(jù)指令在較寬操作數(shù)上執(zhí)行的經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作940的示例實施例的框圖。在一些實施例中,處理器或其一部分(例如,解碼單元)可將部分寄存器訪問打包數(shù)據(jù)指令映射到經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作,以用由經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作執(zhí)行的一個或多個對應(yīng)的全寄存器訪問替換本來由部分寄存器訪問打包數(shù)據(jù)指令執(zhí)行的一個或多個部分寄存器訪問。在一些實施例中,圖9的經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作可用于實現(xiàn)圖8的部分寄存器訪問指令和/或操作。
[0078]經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作可使用具有由部分寄存器訪問指令指示的第一較窄的源打包數(shù)據(jù)922-1的第一較寬的源打包數(shù)據(jù)923-1和具有由部分寄存器訪問指令指示的第二較窄的源打包數(shù)據(jù)922-2的第二較寬的源打包數(shù)據(jù)923-2。在所示的實施例中,第一和第二較寬的源打包數(shù)據(jù)中的每一個是256位寬且具有四個64位數(shù)據(jù)元素,且第一和第二較窄的源打包數(shù)據(jù)中的每一個是128位寬且具有兩個64位數(shù)據(jù)元素,但本發(fā)明的范圍不限于此。在圖示中,第一較寬的源打包數(shù)據(jù)從最低有效位置(在右側(cè))至最高有效位置(在左側(cè))具有值A(chǔ)1、A2、A3和A4。在圖示中,第二較寬的源打包數(shù)據(jù)從最低有效位置(在右側(cè))至最高有效位置(在左側(cè))具有值B1、B2、B3和B4。在其它實施例中,可替代地使用任何其它適當(dāng)?shù)妮^寬和較窄的源打包數(shù)據(jù)寬度。此外,在其它實施例中,可任選地使用其它數(shù)據(jù)元素寬度。
[0079]經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作還可使用源打包數(shù)據(jù)操作掩碼908。在所示的實施例中,因為目的地操作數(shù)中有四個數(shù)據(jù)元素,所以有四個對應(yīng)的掩碼位。在該示例中,源打包數(shù)據(jù)操作掩碼從最低有效位置(在右側(cè))至最高有效位置(在左側(cè))具有值O、1、O、O0
[0080]響應(yīng)于經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作將256位結(jié)果打包數(shù)據(jù)存儲在較寬的目的地操作數(shù)925中。在一些實施例中,通過全寄存器寫入或存儲將256位結(jié)果打包數(shù)據(jù)存儲在較寬的目的地操作數(shù)(例如,256位寄存器)中。在一些實施例中,256位結(jié)果打包數(shù)據(jù)和/或較寬的目的地操作數(shù)925包括由對應(yīng)的部分寄存器訪問指令指示的較窄的128位目的地操作數(shù)924。如圖所示,僅單個和可被存儲在256位結(jié)果打包數(shù)據(jù)中。S卩,和A2+B2可被存儲在目的地操作數(shù)925的位127:64中。與要存儲和A2+B2的目的地操作數(shù)925的位127:64對應(yīng)的僅單個掩碼位被置位。所有其它的掩碼位被清除。對于每個被清除的掩碼位,來自第一較寬的源打包數(shù)據(jù)923-1的對應(yīng)數(shù)據(jù)元素的值被存儲在目的地操作數(shù)925中。具體地,值A(chǔ)l被存儲在目的地操作數(shù)的位63:0中,值A(chǔ)3被存儲在目的地操作數(shù)的位191:128中,且值A(chǔ)4被存儲在目的地操作數(shù)的位255:192中。這些其它掩碼位被掩碼掉,因為它們不屬于根據(jù)原始部分寄存器訪問指令/操作的單個和A2+B2。有利地,這些被清除的最高有效掩碼位可被用于掩碼掉較寬的256位寄存器中原始部分寄存器訪問指令(例如,圖8的指令/操作)不需要的那部分,并且允許執(zhí)行全寄存器訪問而不是部分寄存器訪問。如前,很多其它的算法和/或邏輯操作也是適當(dāng)?shù)摹?br>
[0081]圖6-7示出較窄的操作數(shù)占據(jù)較寬的操作數(shù)的最低有效位的實施例。圖8-9示出較窄的操作數(shù)或較窄操作數(shù)的至少感興趣的部分占據(jù)較寬操作數(shù)的最低有效和最高有效端之間的中間部分的實施例。在又一些其它實施例中,較窄的操作數(shù)可占據(jù)較寬操作數(shù)的最高有效部分。在又一些其它實施例中,可任選地使用這些位置的組合。
[0082]在上述示例中,在對應(yīng)的數(shù)據(jù)元素對上操作部分寄存器訪問指令/操作(B卩,第一和第二源操作數(shù)內(nèi)的對應(yīng)相對位位置中的那些)。在圖示中,這些對應(yīng)的數(shù)據(jù)元素對垂直對齊。在其它實施例中,部分寄存器訪問指令/操作可在至少一些非對應(yīng)數(shù)據(jù)元素(即,不在第一和第二源操作數(shù)內(nèi)的對應(yīng)相對位位置中的那些)上操作。這些非對應(yīng)的數(shù)據(jù)元素可被稱為非對齊。在一些實施例中,可執(zhí)行移位、混洗、置換或其它數(shù)據(jù)重排操作,以幫助對齊非對應(yīng)的數(shù)據(jù)元素,使得它們處于第一和第二源操作數(shù)中的對齊/對應(yīng)的相對位位置,使得可通過用于實現(xiàn)部分寄存器訪問指令/操作的經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作,在第一和第二源操作數(shù)中的對齊/對應(yīng)數(shù)據(jù)元素上執(zhí)行垂直SMD操作。在一些實施例中,數(shù)據(jù)重排操作可用于將第一操作數(shù)或來自第一操作數(shù)的一個或多個數(shù)據(jù)元素與第二操作數(shù)或來自第二操作數(shù)的一個或多個數(shù)據(jù)元素和/或與目的地操作數(shù)或來自目的地操作數(shù)的一個或多個數(shù)據(jù)元素對齊。在一些實施例中,可由解碼器在解碼部分寄存器訪問打包數(shù)據(jù)指令和確定通過數(shù)據(jù)重排操作和經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作實現(xiàn)部分寄存器訪問打包數(shù)據(jù)指令后,確定數(shù)據(jù)重排操作。
[0083]以下描述的圖10和11分別具有與前面描述的圖8和9某些類似性。為了避免混淆描述,以下的討論傾向于強調(diào)圖10和11的新的或不同的特征和/或方面,而不贅述可任選地相同或類似的所有特征和/或方面。然而,應(yīng)意識到,之前針對圖8和9描述的可任選特征和/或方法及變形一般也適用于圖10和11,除非另外陳述或另外顯而易見。
[0084]圖10是示出部分寄存器訪問操作1003的框圖,可響應(yīng)于部分寄存器訪問指令,在重疊在較寬操作數(shù)上的較窄操作數(shù)的非對應(yīng)和/或非對齊的數(shù)據(jù)元素上執(zhí)行該部分寄存器訪問操作。部分寄存器訪問指令可指定或以其它方式指示第一較窄的源打包數(shù)據(jù)1022-1、第二較窄的源打包數(shù)據(jù)1022-2和較窄的目的地操作數(shù)1024。在所示的示例中,第一較窄的源操作數(shù)、第二較窄的源操作數(shù)和較窄的目的地操作數(shù)中的每一個均是128位寬且包括兩個64位數(shù)據(jù)元素,但本發(fā)明的范圍不限于此。在圖示中,第一較窄的源打包數(shù)據(jù)具有值A(chǔ)l和A2。類似地,第二較窄的源打包數(shù)據(jù)具有值BI和B2。第一較窄的源打包數(shù)據(jù)1022-1被存儲在第一較寬的256位寄存器1007-1中,第二較窄的源打包數(shù)據(jù)1022-2被存儲在第二較寬的256位寄存器1007-2中,較窄的目的地操作數(shù)1024被存儲在第三較寬的256位寄存器1007-3中。第一較寬的256位寄存器的位255:128存儲值A(chǔ)3和A4。類似地,第二較寬的256位寄存器的位255:128存儲值B3和B4。
[0085]響應(yīng)于指令/操作生成結(jié)果打包數(shù)據(jù),并將其存儲在較窄的目的地操作數(shù)1024中。在所示的示例中,結(jié)果打包數(shù)據(jù)是128位寬且包括兩個數(shù)據(jù)元素。位63:0中的最低階數(shù)據(jù)元素包括來自第一源打包數(shù)據(jù)的對應(yīng)數(shù)據(jù)元素的值A(chǔ)l。在這種情況下,不執(zhí)行生成該數(shù)據(jù)元素的加法操作。位127:64中的較高階的數(shù)據(jù)元素包括和A2+B1。注意,這是第一和第二較窄的源打包數(shù)據(jù)中的非對應(yīng)數(shù)據(jù)元素之和。具體地,第一較窄的源打包數(shù)據(jù)的位127:64中的數(shù)據(jù)元素A2被加到第二較窄的源打包數(shù)據(jù)的位63:0中的數(shù)據(jù)元素BI。數(shù)據(jù)元素A2和BI占據(jù)第一和第二源打包數(shù)據(jù)中的非對應(yīng)或非對齊位位置。
[0086]圖11是經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作1140的示例實施例的框圖,可在較寬操作數(shù)的對應(yīng)和/或?qū)R數(shù)據(jù)元素上執(zhí)行該經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作1140,可響應(yīng)于指示較窄操作數(shù)的非對應(yīng)和/或非對齊數(shù)據(jù)元素上的操作的部分寄存器訪問打包數(shù)據(jù)指令執(zhí)行該經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作1140。在一些實施例中,處理器或其一部分(例如,解碼單元)可將部分寄存器訪問打包數(shù)據(jù)指令映射到經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作,以用由經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作執(zhí)行的一個或多個對應(yīng)的全寄存器訪問替換本來由部分寄存器訪問打包數(shù)據(jù)指令執(zhí)行的一個或多個部分寄存器訪問。在一些實施例中,涉及圖11的對應(yīng)和/或?qū)R數(shù)據(jù)元素的經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作可用于實現(xiàn)涉及圖10的非對應(yīng)和/或非對齊數(shù)據(jù)元素的部分寄存器訪問指令和/或操作。
[0087]經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作可使用具有由部分寄存器訪問指令指示的第一較窄的源打包數(shù)據(jù)1122-1的第一較寬的源打包數(shù)據(jù)1123-1和具有由部分寄存器訪問指令指示的第二較窄的源打包數(shù)據(jù)1122-2的第二較寬的源打包數(shù)據(jù)1123-2。在所示的實施例中,第一和第二較寬的源打包數(shù)據(jù)中的每一個是256位寬且具有四個64位數(shù)據(jù)元素,且第一和第二較窄的源打包數(shù)據(jù)中的每一個是128位寬且具有兩個64位數(shù)據(jù)元素,但本發(fā)明的范圍不限于此。在圖示中,第一較寬的源打包數(shù)據(jù)具有值A(chǔ)l、A2、A3和A4。第二較寬的源打包數(shù)據(jù)具有值B1、B2、B3和B4。在其它實施例中,替代地,可任選地使用任何其它適當(dāng)?shù)妮^寬和較窄的源打包數(shù)據(jù)寬度和/或任何其它適當(dāng)?shù)臄?shù)據(jù)元素寬度。
[0088]在一些實施例中,可執(zhí)行移位、混洗、置換或其它數(shù)據(jù)重排操作,以幫助對齊將由部分寄存器訪問指令指示操作的非對應(yīng)和/或非對齊的數(shù)據(jù)元素,使得以對齊方式通過在較寬的操作數(shù)上的經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作對它們進(jìn)行操作。例如,可執(zhí)行移位、混洗、置換或其它數(shù)據(jù)重排操作,以幫助在圖11的經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作之前對齊圖10的部分寄存器訪問打包數(shù)據(jù)指令/操作的非對應(yīng)和/或非對齊數(shù)據(jù)元素A2和BI。如圖所示,在所示的實施例中,第二較寬的源打包數(shù)據(jù)1123-2可移位64位,使得具有值BI的數(shù)據(jù)元素在第二較寬的源打包數(shù)據(jù)的位127:64中,而不是在第二較寬的源打包數(shù)據(jù)的位63:0中。現(xiàn)在,值A(chǔ)2和BI在對應(yīng)的位位置中的對應(yīng)數(shù)據(jù)元素中,和/或彼此相對地對齊。有利地,這可允許執(zhí)行垂直類型的SIMD操作(例如,打包加法)。在其它實施例中,取代移位,可執(zhí)行其它數(shù)據(jù)重排操作,諸如旋轉(zhuǎn)、混洗、置換或本領(lǐng)域中已知的且適用于實現(xiàn)對齊所需的特定重排的各種其它數(shù)據(jù)重排操作。
[0089]對于一些部分寄存器訪問指令/操作(例如,圖6和8所示的那些),不需要對齊或數(shù)據(jù)重排操作。在一些實施例中,如果處理器使用這種對齊或數(shù)據(jù)重排操作,則對齊或數(shù)據(jù)重排操作在不需要時可被取消。例如,取代實際的移位,可執(zhí)行移位O位。作為另一個示例,混洗或置換操作可將數(shù)據(jù)元素混洗或置換到其原始開始位置。
[0090]經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作還可使用源打包數(shù)據(jù)操作掩碼1108。在所示的實施例中,因為目的地操作數(shù)中有四個數(shù)據(jù)元素,所以有四個對應(yīng)的掩碼位。在該示例中,源打包數(shù)據(jù)操作掩碼從最低有效位置(在右側(cè))至最高有效位置(在左側(cè))具有值O、1、0、O0
[0091]響應(yīng)于經(jīng)掩碼的全寄存器訪問打包數(shù)據(jù)操作將256位結(jié)果打包數(shù)據(jù)存儲在較寬的256位目的地操作數(shù)1125中。在一些實施例中,通過全寄存器寫入或存儲將256位結(jié)果打包數(shù)據(jù)存儲在較寬的目的地操作數(shù)(例如,256位寄存器)中。在一些實施例中,256位結(jié)果打包數(shù)據(jù)和/或較寬的目的地操作數(shù)1125包括由對應(yīng)的部分寄存器訪問指令指示的較窄的128位目的地操作數(shù)1124。如圖所示,僅單個和可被存儲在256位結(jié)果打包數(shù)據(jù)中。SP,和A2+B1可被存儲在目的地操作數(shù)1125的位127:64中。與將存儲和A2+B1的目的地操作數(shù)1125的位127:64對應(yīng)的僅單個掩碼位被置位。所有其它的掩碼位被清除。對于每個被清除的掩碼位,來自第一較寬的源打包數(shù)據(jù)1123-1的對應(yīng)數(shù)據(jù)元素的值被存儲在目的地操作數(shù)1125中。具體地,值A(chǔ)l被存儲在目的地操作數(shù)的位63:0中,值A(chǔ)3被存儲在目的地操作數(shù)的位191:128中,且值A(chǔ)4被存儲在目的地操作數(shù)的位255:192中。這些其它掩碼位被掩碼掉,因為它們不屬于根據(jù)原始部分寄存器訪問指令/操作的單個和A2+B1。有利地,這些被清除的最高有效掩碼位可被用于掩碼掉較寬的256位寄存器中原始部分寄存器訪問指令(例如,圖10的指令/操作)不需要的那部分,并且允許執(zhí)行全寄存器訪問而不是部分寄存器訪問。如前,除加法外的很多其它的算法和/或邏輯操作也是適當(dāng)?shù)?選擇地適當(dāng)?shù)摹?br>
[0092]圖12是示出打包數(shù)據(jù)操作掩碼位的數(shù)目依賴于打包數(shù)據(jù)寬度和打包數(shù)據(jù)元素寬度的表格1250。示出128位、256位和512位的打包數(shù)據(jù)寬度,但是其它寬度也是可能的。8位字節(jié)、16位字、32位雙字(dword)或單精度浮點、以及64位四倍字(Qword)或雙精度浮點的打包數(shù)據(jù)元素寬度被考慮,然而其它寬度也是可能的。如圖所示,當(dāng)打包數(shù)據(jù)寬度是128位時,當(dāng)打包數(shù)據(jù)元素寬度是8位時可將16位用于掩碼,當(dāng)打包數(shù)據(jù)元素寬度是16位時可將8位用于掩碼,當(dāng)打包數(shù)據(jù)元素寬度是32位時可將4位用于掩碼,當(dāng)打包數(shù)據(jù)元素寬度是64位時可將2位用于掩碼。當(dāng)打包數(shù)據(jù)寬度是256位時,當(dāng)打包數(shù)據(jù)元素寬度是8位時可將32位用于掩碼,當(dāng)打包數(shù)據(jù)元素寬度是16位時可將16位用于掩碼,當(dāng)打包數(shù)據(jù)元素寬度是32位時可將8位用于掩碼,當(dāng)打包數(shù)據(jù)元素寬度是64位時可將4位用于掩碼。當(dāng)打包數(shù)據(jù)寬度是512位時,當(dāng)打包數(shù)據(jù)元素寬度是8位時可將64位用于掩碼,當(dāng)打包數(shù)據(jù)元素寬度是16位時可將32位用于掩碼,當(dāng)打包數(shù)據(jù)元素寬度是32位時可將16位用于掩碼,當(dāng)打包數(shù)據(jù)元素寬度是64位時可將8位用于掩碼。
[0093]圖13是一組合適的打包數(shù)據(jù)操作掩碼寄存器1308的示例實施例的框圖。打包數(shù)據(jù)操作掩碼寄存器中的每一個可用于存儲打包數(shù)據(jù)操作掩碼。在所例示的實施例中,該組包括標(biāo)示為KO至k7的八個打包數(shù)據(jù)操作掩碼寄存器。替代的實施例可包括比八個更少(例如,兩個、四個、六個等)或比八個更多(例如,十個、十六個、三十二個等)打包數(shù)據(jù)操作掩碼寄存器。在所例示的實施例中,打包數(shù)據(jù)操作掩碼寄存器中的每一個為64位。在替代實施例中,打包數(shù)據(jù)操作掩碼寄存器的寬度可以比64位更寬(例如,128位等)或比64位更窄(例如,8位、16位、32位等)。打包數(shù)據(jù)操作掩碼寄存器可通過使用公知技術(shù)以不同方式實現(xiàn),并且不限于任何已知的特定類型的電路。在一些實施例中,打包數(shù)據(jù)操作掩碼寄存器可以是分開的專用架構(gòu)寄存器集合。在一些實施例中,指令可按位或字段編碼或指定打包數(shù)據(jù)操作掩碼寄存器。作為示例,斷言指令可使用三個位(例如,3位字段)來編碼或指定八個打包數(shù)據(jù)操作掩碼寄存器中的任一個。在替代實施例中,在分別有更少或更多打包數(shù)據(jù)操作掩碼寄存器時,可使用更少或更多位。
[0094]圖14是示出打包數(shù)據(jù)操作掩碼寄存器1408的示例實施例并且示出可被用作打包數(shù)據(jù)操作掩碼和/或用于進(jìn)行掩碼的位的數(shù)目依賴于打包數(shù)據(jù)寬度和數(shù)據(jù)元素寬度的示圖。所示的掩碼寄存器是64位寬,但這不是必須的。依據(jù)打包數(shù)據(jù)和數(shù)據(jù)元素的寬度,所有的64位或僅64位的子集可被用于掩碼。一般而言,當(dāng)單個每元素掩碼位被使用時,用于進(jìn)行掩碼的掩碼位的數(shù)目等于打包數(shù)據(jù)寬度除以打包數(shù)據(jù)元素寬度。示出針對512位寬度的打包數(shù)據(jù)的若干說明性示例。即,當(dāng)打包數(shù)據(jù)寬度為512位而數(shù)據(jù)元素寬度為64位時,則僅寄存器的8位(例如,最低階的8位)被用于掩碼。當(dāng)打包數(shù)據(jù)寬度是512位且數(shù)據(jù)元素寬度是32位時,僅16位用于掩碼。當(dāng)打包數(shù)據(jù)寬度是512位且數(shù)據(jù)元素寬度是16位時,僅32位用于掩碼。當(dāng)打包數(shù)據(jù)寬度是512位且數(shù)據(jù)元素寬度是8位時,所有的64位用于掩碼。斷言的指令可基于該指令相關(guān)聯(lián)的打包數(shù)據(jù)和數(shù)據(jù)元素寬度,僅訪問和/或利用掩碼所需的位的子集(例如,最低階或最低有效位子集)。在所例示的實施例中,寄存器的最低階子集或部分被用于進(jìn)行掩碼,但是并不要求如此。在替代實施例中,可任選地使用最高階子集或某一其他子集。此外,在所例示的實施例中,僅512位打包數(shù)據(jù)寬度被考慮,然而,相同的原理適用于其他打包數(shù)據(jù)寬度,諸如例如256位和128位寬度。
[0095]示例性核架構(gòu)、處理器和計算機架構(gòu)
[0096]處理器核可以用出于不同目的的不同方式在不同的處理器中實現(xiàn)。例如,這樣的核的實現(xiàn)可以包括:1)旨在用于通用計算的通用有序核;2)預(yù)期用于通用計算的高性能通用無序核;3)主要預(yù)期用于圖形和/或科學(xué)(吞吐量)計算的專用核。不同處理器的實現(xiàn)可包括:包括預(yù)期用于通用計算的一個或多個通用有序核和/或預(yù)期用于通用計算的一個或多個通用無序核的CPU ;以及2)包括主要預(yù)期用于圖形和/或科學(xué)(吞吐量)的一個或多個專用核的協(xié)處理器。這樣的不同處理器導(dǎo)致不同的計算機系統(tǒng)架構(gòu),其可包括:1)在與CPU分開的芯片上的協(xié)處理器;2)在與CPU相同的封裝中但分開的管芯上的協(xié)處理器;3)與CPU在相同管芯上的協(xié)處理器(在該情況下,這樣的協(xié)處理器有時被稱為諸如集成圖形和/或科學(xué)(吞吐量)邏輯等專用邏輯,或被稱為專用核);以及4)可以將所描述的CPU (有時被稱為應(yīng)用核或應(yīng)用處理器)、以上描述的協(xié)處理器和附加功能包括在同一管芯上的片上系統(tǒng)。接著描述示例性核架構(gòu),隨后描述示例性處理器和計算機架構(gòu)。
[0097]示例性核架構(gòu)
[0098]有序和無序核框圖
[0099]圖15A是示出根據(jù)本發(fā)明的各實施例的示例性有序流水線和示例性的寄存器重命名的無序發(fā)布/執(zhí)行流水線的框圖。圖15B是示出根據(jù)本發(fā)明的各實施例的要包括在處理器中的有序架構(gòu)核的示例性實施例和示例性的寄存器重命名的無序發(fā)布/執(zhí)行架構(gòu)核的框圖。圖15A-B中的實線框示出有序流水線和有序核,而任選增加的虛線框示出寄存器重命名的無序發(fā)布/執(zhí)行流水線和核。給定有序方面是無序方面的子集的情況下,無序方面將被描述。
[0100]在圖15A中,處理器流水線1500包括提取級1502、長度解碼級1504、解碼級1506、分配級1508、重命名級1510、調(diào)度(也稱為分派或發(fā)布)級1512、寄存器讀取/存儲器讀取級1514、執(zhí)行級1516、寫回/存儲器寫入級1518、異常處理級1522和提交級1524。
[0101]圖15B示出處理器核1590,該核1590包括耦合到執(zhí)行引擎單元1550的前端單元1530,并且兩者耦合到存儲器單元1570。核1590可以是精簡指令集合計算(RISC)核、復(fù)雜指令集合計算(CISC)核、非常長的指令字(VLIW)核或混合或替代核類型。作為又一選項,核1590可以是專用核,諸如例如網(wǎng)絡(luò)或通信核、壓縮引擎、協(xié)處理器核、通用計算圖形處理器單元(GPGPU)核、或圖形核等等。
[0102]前端單元1530包括耦合到指令高速緩存單元1534的分支預(yù)測單元1532,該高速緩存單元1534被耦合到指令翻譯后備緩沖器(TLB) 1536,該指令翻譯后備緩沖器被耦合到解碼單元1540。解碼單元1540 (或解碼器)可解碼指令,并生成從原始指令解碼出的、或以其他方式反映原始指令的、或從原始指令導(dǎo)出的一個或多個微操作、微代碼進(jìn)入點、微指令、其他指令、或其他控制信號作為輸出。解碼單元1540可使用各種不同的機制來實現(xiàn)。合適的機制的示例包括但不限于查找表、硬件實現(xiàn)、可編程邏輯陣列(0LA)、微代碼只讀存儲器(ROM)等。在一個實施例中,核1590包括存儲(例如,在解碼單元1540中或否則在前端單元1530內(nèi)的)某些宏指令的微代碼的微代碼ROM或其他介質(zhì)。解碼單元1540耦合到執(zhí)行引擎單元1550中的重命名/分配器單元1552。
[0103]執(zhí)行引擎單元1550包括重命名/分配器單元1552,該重命名/分配器單元1552耦合至引退單元1554和一個或多個調(diào)度器單元1556的集合。調(diào)度器單元1556表示任何數(shù)目的不同調(diào)度器,包括預(yù)留站、中央指令窗等。調(diào)度器單元1556被耦合到物理寄存器文件單元1558。每個物理寄存器文件單元1558表示一個或多個物理寄存器文件,其中不同的物理寄存器文件存儲一種或多種不同的數(shù)據(jù)類型,諸如標(biāo)量整數(shù)、標(biāo)量浮點、打包整數(shù)、打包浮點、向量整數(shù)、向量浮點、狀態(tài)(例如,作為要執(zhí)行的下一指令的地址的指令指針)等。在一個實施例中,物理寄存器文件單元1558包括向量寄存器單元、寫掩碼寄存器單元和標(biāo)量寄存器單元。這些寄存器單元可以提供架構(gòu)向量寄存器、向量掩碼寄存器、和通用寄存器。物理寄存器文件單元1558被引退單元1554覆蓋以示出可以用來實現(xiàn)寄存器重命名和無序執(zhí)行的各種方式(例如,使用記錄器緩沖器和引退寄存器文件;使用將來的文件、歷史緩沖器和引退寄存器文件;使用寄存器圖和寄存器池等等)。引退單元1554和物理寄存器文件單元1558被耦合到執(zhí)行群集1560。執(zhí)行群集1560包括一個或多個執(zhí)行單元1562的集合和一個或多個存儲器訪問單元1564的集合。執(zhí)行單元1562可以執(zhí)行各種操作(例如,移位、加法、減法、乘法),以及對各種類型的數(shù)據(jù)(例如,標(biāo)量浮點、打包整數(shù)、打包浮點、向量整型、向量浮點)執(zhí)行。盡管某些實施例可以包括專用于特定功能或功能集合的多個執(zhí)行單元,但其他實施例可包括全部執(zhí)行所有函數(shù)的僅一個執(zhí)行單元或多個執(zhí)行單元。調(diào)度器單元1556、物理寄存器文件單元1558和執(zhí)行群集1560被示為可能有多個,因為某些實施例為某些類型的數(shù)據(jù)/操作(例如,標(biāo)量整型流水線、標(biāo)量浮點/打包整型/打包浮點/向量整型/向量浮點流水線,和/或各自具有其自己的調(diào)度器單元、物理寄存器單元和/或執(zhí)行群集的存儲器訪問流水線一以及在分開的存儲器訪問流水線的情況下,實現(xiàn)其中僅該流水線的執(zhí)行群集具有存儲器訪問單元1564的某些實施例)創(chuàng)建分開的流水線。還應(yīng)當(dāng)理解,在分開的流水線被使用的情況下,這些流水線中的一個或多個可以為無序發(fā)布/執(zhí)行,并且其余流水線可以為有序發(fā)布/執(zhí)行。
[0104]存儲器訪問單元1564的集合被耦合到存儲器單元1570,該存儲器單元1570包括耦合到數(shù)據(jù)高速緩存單元1574的數(shù)據(jù)TLB單元1572,其中數(shù)據(jù)高速緩存單元1574耦合到二級(L2)高速緩存單元1576。在一個示例性實施例中,存儲器存取單元1564可包括負(fù)載單元、存儲地址單元、以及存儲數(shù)據(jù)單元,這些單元中的每一個稱合到存儲器單元1570中的數(shù)據(jù)TLB單元1572。指令高速緩存單元1534還耦合到存儲器單元1570中的二級(L2)高速緩存單元1576。L2高速緩存單元1576被耦合到一個或多個其他級的高速緩存,并最終耦合到主存儲器。
[0105]作為示例,示例性寄存器重命名的、無序發(fā)布/執(zhí)行核架構(gòu)可以如下實現(xiàn)流水線1500:1)指令提取1538執(zhí)行提取和長度解碼級1502和1504 ;2)解碼單元1540執(zhí)行解碼級1506 ;3)重命名/分配器單元1552執(zhí)行分配級1508和重命名級1510 ;4)調(diào)度器單元1556執(zhí)行調(diào)度級1512 ;5)物理寄存器文件單元1558和存儲器單元1570執(zhí)行寄存器讀取/存儲器讀取級1514 ;執(zhí)行群集1560執(zhí)行執(zhí)行級1516 ;6)存儲器單元1570和物理寄存器文件單元1558執(zhí)行寫回/存儲器寫入級1518 ;7)各單元可牽涉到異常處理級1522 ;以及8)引退單元1554和物理寄存器文件單元1558執(zhí)行提交級1524。
[0106]核1590可支持一個或多個指令集合(例如,x86指令集合(具有與較新版本一起添加的某些擴展);加利福尼亞州桑尼維爾市的MIPS技術(shù)公司的MIPS指令集合;加利福尼州桑尼維爾市的ARM控股的ARM指令集合(具有諸如NEON等可選附加擴展)),其中包括本文中描述的各指令。在一個實施例中,核1590包括支持打包數(shù)據(jù)指令集合擴展(例如,AVXUAVX2)的邏輯,由此允許被許多多媒體應(yīng)用使用的操作將使用打包數(shù)據(jù)來執(zhí)行。
[0107]應(yīng)當(dāng)理解,核可支持多線程化(執(zhí)行兩個或更多個并行的操作或線程的集合),并且可以按各種方式來完成該多線程化,此各種方式包括時分多線程化、同步多線程化(其中單個物理核為物理核正同步多線程化的各線程中的每一個線程提供邏輯核)、或其組合(例如,時分提取和解碼以及此后諸如用Intel?超線程化技術(shù)來同步多線程化)。
[0108]盡管在無序執(zhí)行的上下文中描述了寄存器重命名,但應(yīng)當(dāng)理解,可以在有序架構(gòu)中使用寄存器重命名。盡管所解說的處理器的實施例還包括分開的指令和數(shù)據(jù)高速緩存單元1534/1574以及共享L2高速緩存單元1576,但替換實施例可以具有用于指令和數(shù)據(jù)兩者的單個內(nèi)部高速緩存,諸如例如一級(LI)內(nèi)部高速緩存或多個級別的內(nèi)部緩存。在某些實施例中,該系統(tǒng)可包括內(nèi)部高速緩存和在核和/或處理器外部的外部高速緩存的組合?;蛘撸懈咚倬彺娑伎梢栽诤撕?或處理器的外部。
[0109]具體的示例性有序核架構(gòu)
[0110]圖16A-B示出了更具體的示例性有序核架構(gòu)的框圖,該核將是芯片中的若干邏輯塊之一(包括相同類型和/或不同類型的其他核)。這些邏輯塊通過高帶寬的互連網(wǎng)絡(luò)(例如,環(huán)形網(wǎng)絡(luò))與某些固定的功能邏輯、存儲器I/O接口和其它必要的I/O邏輯通信,這依賴于應(yīng)用。
[0111]圖16A是根據(jù)本發(fā)明的實施例的連接到管芯上互聯(lián)網(wǎng)絡(luò)1602且具有第二級(L2)高速緩存的本地子集1604的單一處理器核的框圖。在一個實施例中,指令解碼器1600支持具有打包數(shù)據(jù)指令集合擴展的x86指令集。LI高速緩存1606允許對標(biāo)量和向量單元中的高速緩存存儲器的低等待時間訪問。盡管在一個實施例中(為了簡化設(shè)計),標(biāo)量單元1608和向量單元1610使用分開的寄存器集合(分別為標(biāo)量寄存器1612和向量寄存器1614),并且在這些寄存器之間轉(zhuǎn)移的數(shù)據(jù)被寫入到存儲器并隨后從一級(LI)高速緩存1606讀回,但是本發(fā)明的替換實施例可以使用不同的方法(例如使用單個寄存器集合或包括允許數(shù)據(jù)在這兩個寄存器文件之間傳輸而無需被寫入和讀回的通信路徑)。
[0112]L2高速緩存的本地子集1604是全局L2高速緩存的一部分,該全局L2高速緩存被劃分成多個分開的本地子集,即每個處理器核一個本地子集。每個處理器核具有到其自己的L2高速緩存1604的本地子集的直接訪問路徑。被處理器核讀出的數(shù)據(jù)被存儲在其L2高速緩存子集1604中,并且可以被快速訪問,該訪問與其他處理器核訪問其自己的本地L2高速緩存子集并行。被處理器核寫入的數(shù)據(jù)被存儲在其子集的L2高速緩存子集1604中,并在必要的情況下從其它子集清除。環(huán)形網(wǎng)絡(luò)確保共享數(shù)據(jù)的一致性。環(huán)形網(wǎng)絡(luò)是雙向的,以允許諸如處理器核、L2高速緩存和其它邏輯塊之類的代理在芯片內(nèi)彼此通信。每個環(huán)形數(shù)據(jù)路徑為每個方向1012位寬。
[0113]圖16B是根據(jù)本發(fā)明的各實施例的圖16A中的處理器核的一部分的展開圖。圖16B包括作為LI高速緩存1604的LI數(shù)據(jù)高速緩存1606A部分,以及關(guān)于向量單元1610和向量寄存器1614的更多細(xì)節(jié)。具體地說,向量單元1610是16寬向量處理單元(VPU)(見16寬ALU1628),該單元執(zhí)行整型、單精度浮點以及雙精度浮點指令中的一個或多個。該VPU通過混合單元1620支持對寄存器輸入的混合、通過數(shù)值轉(zhuǎn)換單元1622A-B支持?jǐn)?shù)值轉(zhuǎn)換,并通過復(fù)制單元1624支持對存儲器輸入的復(fù)制。寫掩碼寄存器1626允許斷言所得的向量寫入。
[0114]具有集成存儲器控制器和圖形器件的處理器
[0115]圖17是根據(jù)本發(fā)明的實施例的可具有一個以上核、可具有集成存儲器控制器、并且可具有集成圖形器件的處理器1700的框圖。圖17中的實線框示出具有單一核1702A、系統(tǒng)代理1710、一組一個或多個總線控制器單元1716的處理器1700,而任選增加的虛線框示出具有多個核1702A-N、系統(tǒng)代理單元1710中的一組一個或多個集成存儲器控制器單元1714、以及專用邏輯1708的替換處理器1700。
[0116]因此,處理器1700的不同實現(xiàn)可包括:1)CPU,其中專用邏輯1708是集成圖形和/或科學(xué)(吞吐量)邏輯(其可包括一個或多個核),并且核1702A-N是一個或多個通用核(例如,通用的有序核、通用的無序核、這兩者的組合);2)協(xié)處理器,其中核1702A-N是主要預(yù)期用于圖形和/或科學(xué)(吞吐量)的大量專用核;以及3)協(xié)處理器,其中核1702A-N是大量通用有序核。因此,處理器1700可以是通用處理器、協(xié)處理器或?qū)S锰幚砥鳎T如例如網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU (通用圖形處理單元)、高吞吐量的集成眾核(MIC)協(xié)處理器(包括30個或更多核)、或嵌入式處理器等。該處理器可以被實現(xiàn)在一個或多個芯片上。處理器1700可以是一個或多個襯底的一部分,和/或可以使用諸如例如BiCMOSXMOS或NMOS等的多個加工技術(shù)中的任何一個技術(shù)將其實現(xiàn)在一個或多個襯底上。
[0117]存儲器層次結(jié)構(gòu)包括在各核內(nèi)的一個或多個級別的高速緩存、一個或多個共享高速緩存單元1706的集合、以及耦合至集成存儲器控制器單元1714的集合的外部存儲器(未示出)。該共享高速緩存單元1706的集合可以包括一個或多個中間級高速緩存,諸如二級(L2)、三級(L3)、四級(L4)或其他級別的高速緩存、末級高速緩存(LLC)、和/或其組合。盡管在一個實施例中,基于環(huán)的互連單元1712將集成圖形邏輯1708、共享高速緩存單元1706的集合以及系統(tǒng)代理單元1710/集成存儲器控制器單元1714互連,但替代實施例可使用任何數(shù)量的公知技術(shù)來將這些單元互連。在一個實施例中,在一個或多個高速緩存單元1706與核1702A-N之間維持一致性。
[0118]在某些實施例中,核1702A-N中的一個或多個核能夠多線程化。系統(tǒng)代理1710包括協(xié)調(diào)和操作核1702A-N的那些組件。系統(tǒng)代理單元1710可包括例如功率控制單元(PCU)和顯示單元。P⑶可以是或包括調(diào)整核1702A-N和集成圖形邏輯1708的功率狀態(tài)所需的邏輯和組件。顯示單元用于驅(qū)動一個或多個外部連接的顯示器。
[0119]核1702A-N在架構(gòu)指令集合方面可以是同構(gòu)的或異構(gòu)的;8卩,這些核1702A-N中的兩個或更多個核可能能夠執(zhí)行相同的指令集合,而其他核可能能夠執(zhí)行該指令集合的僅僅子集或不同的指令集合。
[0120]示例性計算機架構(gòu)
[0121]圖18-21是示例性計算機架構(gòu)的框圖。本領(lǐng)域已知的對膝上型設(shè)備、臺式機、手持PC、個人數(shù)字助理、工程工作站、服務(wù)器、網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)集線器、交換機、嵌入式處理器、數(shù)字信號處理器(DSP)、圖形設(shè)備、視頻游戲設(shè)備、機頂盒、微控制器、蜂窩電話、便攜式媒體播放器、手持設(shè)備以及各種其他電子設(shè)備的其他系統(tǒng)設(shè)計和配置也是合適的。一般來說,能夠納入本文中所公開的處理器和/或其它執(zhí)行邏輯的大量系統(tǒng)和電子設(shè)備一般都是合適的。
[0122]現(xiàn)在參考圖18,示出了根據(jù)本發(fā)明的一個實施例的系統(tǒng)1800的框圖。系統(tǒng)1800可以包括一個或多個處理器1810、1815,這些處理器耦合到控制器中樞1820。在一個實施例中,控制器中樞1820包括圖形存儲器控制器中樞(GMCH) 1890和輸入/輸出中樞(1H)1850 (其可以在分開的芯片上);GMCH1890包括存儲器1840和協(xié)處理器1845耦合到的存儲器和圖形控制器;10H1850將輸入/輸出(I/O)設(shè)備1860耦合到GMCH1890。替換地,存儲器和圖形控制器中的一個或兩個在處理器(如本文中所描述的)內(nèi)集成,存儲器1840和協(xié)處理器1845直接耦合到處理器1810、以及在單一芯片中具有10H1850的控制器中樞1820。
[0123]附加的處理器1815的任選性在圖18中通過虛線來表示。每一處理器1810、1815可包括本文中描述的處理核中的一個或多個,并且可以是處理器1700的某一版本。
[0124]存儲器1840可以是例如動態(tài)隨機存取存儲器(DRAM)、相變化存儲器(PCM)或這兩者的組合。對于至少一個實施例,控制器中樞1820經(jīng)由諸如前側(cè)總線(FSB)之類的多點總線(mult1-drop bus)、諸如快速通道互連(QPI)之類的點對點接口、或者類似的連接1895與處理器1810、1815進(jìn)行通信。
[0125]在一個實施例中,協(xié)處理器1845是專用處理器,諸如例如高吞吐量MIC處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器等等。在一個實施例中,控制器中樞1820可以包括集成圖形加速計。
[0126]在包括架構(gòu)、微架構(gòu)、熱、功耗特性等的優(yōu)點度量的范圍方面,在物理資源1810之間可存在各種差異。
[0127]在一個實施例中,處理器1810執(zhí)行控制一般類型的數(shù)據(jù)處理操作的指令。嵌入在這些指令中的可以是協(xié)處理器指令。處理器1810識別如具有應(yīng)當(dāng)由附連的協(xié)處理器1845執(zhí)行的類型的這些協(xié)處理器指令。因此,處理器1810在協(xié)處理器總線或者其他互連上將這些協(xié)處理器指令(或者表示協(xié)處理器指令的控制信號)發(fā)布到協(xié)處理器1845。協(xié)處理器1845接受并執(zhí)行所接收的協(xié)處理器指令。
[0128]現(xiàn)在參考圖19,示出了根據(jù)本發(fā)明的一個實施例的第一更具體的示例性系統(tǒng)1900的框圖。如圖19所示,多處理器系統(tǒng)1900是點對點互連系統(tǒng),且包括經(jīng)由點對點互連1950耦合的第一處理器1970和第二處理器1980。處理器1970和1980中的每一個都可以是處理器1700的某一版本。在本發(fā)明的一個實施例中,處理器1970和1980分別是處理器1810和1815,而協(xié)處理器1938是協(xié)處理器1845。在另一實施例中,處理器1970和1980分別是處理器1810和協(xié)處理器1845。
[0129]處理器1970和1980被示為分別包括集成存儲器控制器(MC)單元1972和1982。處理器1970還包括作為其總線控制器單元的一部分的點對點(P-P)接口 1976和1978 ;類似地,第二處理器1980包括點對點接口 1986和1988。處理器1970、1980可以使用點對點(P-P)電路1978、1988經(jīng)由P-P接口 1950來交換信息。如圖19所示,MC1972和1982將處理器耦合到相應(yīng)的存儲器,即存儲器1932和存儲器1934,這些存儲器可以是本地附連到相應(yīng)處理器的主存儲器的部分。
[0130]處理器1970、1980可各自經(jīng)由使用點對點接口電路1976、1994、1986、1998的各個P-P接口 1952、1954與芯片組1990交換信息。芯片組1990可以可選地經(jīng)由高性能接口 1939與處理器1938交換信息。在一個實施例中,協(xié)處理器1938是專用處理器,諸如例如高吞吐量MIC處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器等等。
[0131 ] 共享高速緩存(未示出)可以被包括在任一處理器之內(nèi)或被包括兩個處理器外部但仍經(jīng)由P-P互連與這些處理器連接,從而如果將某處理器置于低功率模式時,可將任一處理器或兩個處理器的本地高速緩存信息存儲在該共享高速緩存中。
[0132]芯片組1990可經(jīng)由接口 1996耦合至第一總線1916。在一個實施例中,第一總線1916可以是外圍部件互連(PCI)總線,或諸如PCI Express總線或其它第三代I/O互連總線之類的總線,但本發(fā)明的范圍并不受此限制。
[0133]如圖19所示,各種I/O設(shè)備1914可連同總線橋1918 —起耦合到第一總線1916,總線橋1918將第一總線1916耦合到第二總線1920。在一個實施例中,諸如協(xié)處理器、高吞吐量MIC處理器、GPGPU的處理器、加速計(諸如例如圖形加速計或數(shù)字信號處理器(DSP)單元)、場可編程門陣列或任何其他處理器的一個或多個附加處理器1915被耦合到第一總線1916。在一個實施例中,第二總線1920可以是低引腳計數(shù)(LPC)總線。各種設(shè)備可以被耦合至第二總線1920,在一個實施例中這些設(shè)備包括例如鍵盤/鼠標(biāo)1922、通信設(shè)備1927以及諸如可包括指令/代碼和數(shù)據(jù)1930的盤驅(qū)動器或其它海量存儲設(shè)備的存儲單元1928。此外,音頻1/01924可以被耦合至第二總線1920。注意,其它架構(gòu)是可能的。例如,代替圖19的點對點架構(gòu),系統(tǒng)可實現(xiàn)多點總線或者其他此類架構(gòu)。
[0134]現(xiàn)在參考圖20,示出了根據(jù)本發(fā)明實施例的第二更具體的示例性系統(tǒng)2000的框圖。圖19和20中的相似元件具有相似的附圖標(biāo)記,并且圖19的特定方面已經(jīng)從圖20中省略以避免混淆圖20的其他方面。
[0135]圖20示出處理器1970、1980可分別包括集成存儲器和I/O控制邏輯(“CL”)1972和1982。因此,CL1972、1982包括集成存儲器控制器單元并包括I/O控制邏輯。圖20示出:不僅存儲器1932、1934耦合至CL1972、1982,I/O設(shè)備2014也耦合至控制邏輯1972、1982。傳統(tǒng)I/O設(shè)備2015被耦合至芯片組1990。
[0136]現(xiàn)在參考圖21,示出了根據(jù)本發(fā)明實施例的SoC2100的框圖。圖17中的類似元件具有相似的附圖標(biāo)記。另外,虛線框是更先進(jìn)的SoC的可選特征。在圖21中,互連單元2102被耦合至:應(yīng)用處理器2110,該應(yīng)用處理器包括一個或多個核202A-N的集合以及共享高速緩存單元1706 ;系統(tǒng)代理單元1710 ;總線控制器單元1716 ;集成存儲器控制器單元1714 ;—個或多個協(xié)處理器2120的集合,該集合可包括集成圖形邏輯1214、圖形處理器、音頻處理器和視頻處理器;靜態(tài)隨機存取存儲器(SRAM)單元2130 ;直接存儲器存取(DMA)單元2132 ;以及用于耦合至一個或多個外部顯示器的顯示單元2140。在一個實施例中,協(xié)處理器2120包括專用處理器,諸如例如網(wǎng)絡(luò)或通信處理器、壓縮引擎、GPGPU、高吞吐量MIC處理器、或嵌入式處理器等等。
[0137]本文公開的機制的各實施例可以被實現(xiàn)在硬件、軟件、固件或這些實現(xiàn)方法的組合中。本發(fā)明的實施例可實現(xiàn)為在可編程系統(tǒng)上執(zhí)行的計算機程序或程序代碼,該可編程系統(tǒng)包括至少一個處理器、存儲系統(tǒng)(包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設(shè)備以及至少一個輸出設(shè)備。
[0138]諸如圖19所示的代碼1930之類的程序代碼可應(yīng)用于輸入指令,以執(zhí)行本文中所描述的功能并生成輸出信息。輸出信息可以按已知方式被應(yīng)用于一個或多個輸出設(shè)備。為了本申請的目的,處理系統(tǒng)包括具有諸如例如數(shù)字信號處理器(DSP)、微控制器、專用集成電路(ASIC)或微處理器之類的處理器的任何系統(tǒng)。
[0139]程序代碼可以用高級程序化語言或面向?qū)ο蟮木幊陶Z言來實現(xiàn),以便與處理系統(tǒng)通信。程序代碼也可以在需要的情況下用匯編語言或機器語言來實現(xiàn)。事實上,本文中描述的機制不僅限于任何特定編程語言的范圍。在任一情形下,語言可以是編譯語言或解釋
;五古
P口口 ο
[0140]至少一個實施例的一個或多個方面可以由存儲在機器可讀介質(zhì)上的代表性指令來實現(xiàn),該指令表示處理器中的各種邏輯,其在被機器讀取時使得該機器生成執(zhí)行本文描述的技術(shù)的邏輯。被稱為“IP核”的這些表示可以被存儲在有形的機器可讀介質(zhì)上,并被提供給多個客戶或生產(chǎn)設(shè)施以加載到實際制造該邏輯或處理器的制造機器中?!?br>
[0141]這樣的機器可讀存儲介質(zhì)可以包括但不限于通過機器或設(shè)備制造或形成的物品的非瞬態(tài)、有形安排,其包括存儲介質(zhì),諸如硬盤;任何其它類型的盤,包括軟盤、光盤、緊致盤只讀存儲器(CD-ROM)、緊致盤可重寫(CD-RW)的以及磁光盤;半導(dǎo)體器件,例如只讀存儲器(ROM)、諸如動態(tài)隨機存取存儲器(DRAM)和靜態(tài)隨機存取存儲器(SRAM)的隨機存取存儲器(RAM)、可擦除可編程只讀存儲器(EPROM)、閃存、電可擦除可編程只讀存儲器(EEPROM);相變化存儲器(PCM);磁卡或光卡;或適于存儲電子指令的任何其它類型的介質(zhì)。
[0142]因此,本發(fā)明的各實施例還包括非瞬態(tài)、有形機器可讀介質(zhì),該介質(zhì)包含指令或包含設(shè)計數(shù)據(jù),諸如硬件描述語言(HDL),它定義本文中描述的結(jié)構(gòu)、電路、裝置、處理器和/或系統(tǒng)特性。這些實施例也被稱為程序產(chǎn)品。
[0143]仿真(包括二進(jìn)制變換、代碼變形等)
[0144]在某些情況下,指令轉(zhuǎn)換器可用來將指令從源指令集轉(zhuǎn)換至目標(biāo)指令集。例如,指令轉(zhuǎn)換器可以變換(例如使用靜態(tài)二進(jìn)制變換、包括動態(tài)編譯的動態(tài)二進(jìn)制變換)、變形、仿真或以其它方式將指令轉(zhuǎn)換成將由核來處理的一個或多個其它指令。指令轉(zhuǎn)換器可以用軟件、硬件、固件、或其組合實現(xiàn)。指令轉(zhuǎn)換器可以在處理器上、在處理器外、或者部分在處理器上部分在處理器外。
[0145]圖22是根據(jù)本發(fā)明的各實施例的對照使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn)制指令轉(zhuǎn)換成目標(biāo)指令集中的二進(jìn)制指令的框圖。在所示的實施例中,指令轉(zhuǎn)換器是軟件指令轉(zhuǎn)換器,但作為替代該指令轉(zhuǎn)換器可以用軟件、固件、硬件或其各種組合來實現(xiàn)。圖22以高級語言2202示出了程序,該程序可使用x86編譯器2204來編譯以生成x86 二進(jìn)制代碼2206,該二進(jìn)制代碼可原生地由具有至少一個x86指令集核心的處理器2216來執(zhí)行。具有至少一個x86指令集核2216的處理器表示任何處理器,這些處理器能通過兼容地執(zhí)行或以其他方式處理以下內(nèi)容來執(zhí)行與具有至少一個x86指令集核的英特爾處理器基本相同的功能:1)英特爾x86指令集核的指令集的本質(zhì)部分,或2)被定向為在具有至少一個x86指令集核的英特爾處理器上運行的應(yīng)用或其它程序的對象代碼版本,以便取得與具有至少一個x86指令集核的英特爾處理器基本相同的結(jié)果。x86編譯器2204表示用于生成x86 二進(jìn)制代碼2206 (例如,對象代碼)的編譯器,該二進(jìn)制代碼2206可通過或不通過附加的關(guān)聯(lián)處理在具有至少一個x86指令集核2216的處理器上執(zhí)行。類似地,圖22以高級語言2202示出了程序,該程序可使用替換指令集編譯器2208來編譯以生成替換性指令集二級制代碼2210,替換性指令集二級制代碼2210可由不具有至少一個x86指令集核2214的處理器(諸如,具有可執(zhí)行加利福尼亞州桑尼威爾的MIPS技術(shù)公司的MIPS指令集的處理器和/或執(zhí)行加利福尼亞州桑尼威爾的ARM控股公司的ARM指令集的處理器)原生地執(zhí)行。指令轉(zhuǎn)換器2212被用來將x86 二進(jìn)制代碼2206轉(zhuǎn)換成可以由不具有x86指令集核2214的處理器原生執(zhí)行的代碼。該轉(zhuǎn)換后的代碼不大可能與替換性指令集二進(jìn)制代碼2210相同,因為能夠這樣做的指令轉(zhuǎn)換器難以制造;然而,轉(zhuǎn)換后的代碼將完成一般操作并由來自替換性指令集的指令構(gòu)成。因此,指令轉(zhuǎn)換器2212通過仿真、模擬或任何其它過程來表示允許不具有x86指令集處理器或核的處理器或其它電子設(shè)備執(zhí)行x86 二進(jìn)制代碼2206的軟件、固件、硬件或其組合。
[0146]針對圖2、3A、3B和6_14中的任一圖所描述的組件、特征、以及細(xì)節(jié)還可任選地用于圖4-5中的任一圖中。此外,本文中針對這些裝置中的任何一個描述的組件、特性和細(xì)節(jié)也可以可選地在本文中描述的各方法中的任何一種方法中被使用,這些方法在各實施例中可以由該裝置和/或用該裝置執(zhí)行。
[0147]示例實施例
[0148]以下示例屬于進(jìn)一步的實施例。這些實施例中的細(xì)節(jié)可以在一個或多個實施例的任何地方被使用。
[0149]示例I是一種處理器,包括:解碼單元,用于將打包數(shù)據(jù)指令映射到經(jīng)掩碼的打包數(shù)據(jù)操作,該打包數(shù)據(jù)指令至少指示第一較窄的源打包數(shù)據(jù)操作數(shù)和較窄的目的地操作數(shù)。經(jīng)掩碼的打包數(shù)據(jù)操作至少指示比第一較窄的源打包數(shù)據(jù)操作數(shù)寬且包括第一較窄的源打包數(shù)據(jù)操作數(shù)的第一較寬的源打包數(shù)據(jù)操作數(shù),且指示比較窄的目的地操作數(shù)寬且包括較窄的目的地操作數(shù)的較寬的目的地操作數(shù)。該處理器還包括與解碼單元耦合的執(zhí)行單元。執(zhí)行單元利用打包數(shù)據(jù)操作掩碼執(zhí)行經(jīng)掩碼的打包數(shù)據(jù)操作。打包數(shù)據(jù)操作掩碼包括用于由經(jīng)掩碼的打包數(shù)據(jù)操作存儲的打包數(shù)據(jù)結(jié)果的每個對應(yīng)結(jié)果數(shù)據(jù)元素的掩碼元素。與由經(jīng)掩碼的打包數(shù)據(jù)操作存儲的、本來不會由打包數(shù)據(jù)指令存儲的結(jié)果數(shù)據(jù)元素對應(yīng)的所有掩碼元素被掩碼掉。執(zhí)行單元將打包數(shù)據(jù)結(jié)果存儲在較寬的目的地操作數(shù)中。
[0150]示例2包括任何前述示例的處理器,且任選地其中執(zhí)行單元用于寫入與較寬目的地操作數(shù)對應(yīng)的寄存器的整個寬度,任選地其中較窄的目的地操作數(shù)僅對應(yīng)于所述寄存器的寬度的一部分。
[0151]示例3包括任何前述示例的處理器,且任選地其中執(zhí)行單元用于存儲打包數(shù)據(jù)結(jié)果,其中要由與打包數(shù)據(jù)指令相關(guān)聯(lián)的操作更新的結(jié)果數(shù)據(jù)元素僅占據(jù)在寄存器的最低有效部分和寄存器的最高有效部分之間的寄存器中間部分。
[0152]示例4包括任何前述示例的處理器,且任選地其中所述解碼單元用于接收打包數(shù)據(jù)指令,打包數(shù)據(jù)指令還指示第二較窄的源打包數(shù)據(jù)操作數(shù),且任選地其中解碼單元用于將打包數(shù)據(jù)指令映射到經(jīng)掩碼的打包數(shù)據(jù)操作,經(jīng)掩碼的打包數(shù)據(jù)操作指示比第二較窄的源打包數(shù)據(jù)操作數(shù)寬且包括第二較窄的源打包數(shù)據(jù)操作數(shù)的第二較寬的源打包數(shù)據(jù)操作數(shù)。
[0153]示例5包括任何前述示例的處理器,且任選地其中所述解碼單元用于接收打包數(shù)據(jù)指令,所述打包數(shù)據(jù)指令指示第一和第二較窄的源打包數(shù)據(jù)操作數(shù)中的至少一個非對應(yīng)數(shù)據(jù)元素對上的操作,非對應(yīng)數(shù)據(jù)元素不在對應(yīng)的位位置中,且任選地其中所述處理器還用于執(zhí)行將所述非對應(yīng)數(shù)據(jù)元素對置于對應(yīng)的位位置中的操作,以便由執(zhí)行單元在執(zhí)行經(jīng)掩碼的打包數(shù)據(jù)操作時對其進(jìn)行操作。
[0154]示例6包括任何前述示例的處理器,且任選地其中所述處理器用于通過執(zhí)行移位操作、混洗操作和置換操作之一來執(zhí)行將所述非對應(yīng)數(shù)據(jù)元素對置于對應(yīng)的位位置中的操作
[0155]示例7包括任何前述示例的處理器,且任選地其中打包數(shù)據(jù)指令不指示打包數(shù)據(jù)操作掩碼。
[0156]示例8包括任何前述示例的處理器,且任選地其中所述打包數(shù)據(jù)指令指示打包數(shù)據(jù)操作掩碼,所述打包數(shù)據(jù)操作掩碼具有比由所述執(zhí)行單元用于執(zhí)行經(jīng)掩碼的打包數(shù)據(jù)操作的打包數(shù)據(jù)操作掩碼少的掩碼元素。
[0157]示例9包括任何前述示例的處理器,且任選地其中執(zhí)行單元用于存儲打包數(shù)據(jù)結(jié)果,其中與被掩碼掉的掩碼元素對應(yīng)的每個結(jié)果數(shù)據(jù)元素的值不變,且任選地其中與未被掩碼的掩碼元素對應(yīng)的每個結(jié)果數(shù)據(jù)元素的值通過與打包數(shù)據(jù)指令相關(guān)聯(lián)的操作更新。
[0158]示例10是一種處理器中的方法,包括接收打包數(shù)據(jù)指令,該指令至少指示第一較窄的源打包數(shù)據(jù)操作數(shù)和較窄的目的地操作數(shù)。該方法還包括將打包數(shù)據(jù)指令映射到經(jīng)掩碼的打包數(shù)據(jù)操作,經(jīng)掩碼的打包數(shù)據(jù)操作至少指示比第一較窄的源打包數(shù)據(jù)操作數(shù)寬且包括第一較窄的源打包數(shù)據(jù)操作數(shù)的第一較寬的源打包數(shù)據(jù)操作數(shù),且指示比所述較窄的目的地操作數(shù)寬且包括所述較窄的目的地操作數(shù)的較寬的目的地操作數(shù)。該方法還包括生成打包數(shù)據(jù)操作掩碼,打包數(shù)據(jù)操作掩碼包括用于由經(jīng)掩碼的打包數(shù)據(jù)操作存儲的打包數(shù)據(jù)結(jié)果的每個對應(yīng)結(jié)果數(shù)據(jù)元素的掩碼元素。與由經(jīng)掩碼的打包數(shù)據(jù)操作存儲的、本來不會由打包數(shù)據(jù)指令存儲的結(jié)果數(shù)據(jù)元素對應(yīng)的所有掩碼元素被掩碼掉。該方法還包括利用打包數(shù)據(jù)操作掩碼執(zhí)行經(jīng)掩碼的打包數(shù)據(jù)操作。該方法還包括將打包數(shù)據(jù)結(jié)果存儲在較寬的目的地操作數(shù)中。
[0159]示例11包括任何前述示例的方法,且任選地其中存儲打包數(shù)據(jù)結(jié)果包括寫入與較寬的目的地操作數(shù)對應(yīng)的寄存器的整個寬度,任選地其中較窄的目的地操作數(shù)僅對應(yīng)于寄存器的寬度的一部分。
[0160]示例12包括任何前述示例的方法,且任選地其中存儲包括存儲打包數(shù)據(jù)結(jié)果,其中由與打包數(shù)據(jù)指令相關(guān)聯(lián)的操作更新的結(jié)果數(shù)據(jù)元素僅占據(jù)在寄存器的最低有效部分和寄存器的最聞有效部分之間的寄存器的中間部分。
[0161]示例13包括任何前述示例的方法,且任選地其中接收包括接收所述打包數(shù)據(jù)指令,所述打包數(shù)據(jù)指令還指示第二較窄的源打包數(shù)據(jù)操作數(shù),且任選地其中映射包括將所述打包數(shù)據(jù)指令映射到經(jīng)掩碼的打包數(shù)據(jù)操作,所述經(jīng)掩碼的打包數(shù)據(jù)操作指示比第二較窄的源打包數(shù)據(jù)操作數(shù)寬且包括第二較窄的源打包數(shù)據(jù)操作數(shù)的第二較寬的源打包數(shù)據(jù)操作數(shù)。
[0162]示例14包括任何前述示例的方法,且任選地其中接收包括接收打包數(shù)據(jù)指令,打包數(shù)據(jù)指令指示第一和第二較窄的源打包數(shù)據(jù)操作數(shù)中的至少一個非對應(yīng)數(shù)據(jù)元素對上的操作,所述非對應(yīng)數(shù)據(jù)元素不在對應(yīng)的位位置中,且任選地還包括執(zhí)行將所述非對應(yīng)數(shù)據(jù)元素對置于對應(yīng)的位位置中的操作,以便由經(jīng)掩碼的打包數(shù)據(jù)操作對其進(jìn)行操作。
[0163]示例15包括任何前述示例的方法,且任選地其中執(zhí)行將所述非對應(yīng)數(shù)據(jù)元素對置于對應(yīng)的位位置中的操作包括執(zhí)行移位操作、混洗操作和置換操作之一。
[0164]示例16包括任何前述示例的方法,且任選地其中接收包括接收不指示打包數(shù)據(jù)操作掩碼的打包數(shù)據(jù)指令。
[0165]示例17包括任何前述示例的方法,且任選地其中接收包括接收指示第二打包數(shù)據(jù)操作掩碼的打包數(shù)據(jù)指令,所述第二打包數(shù)據(jù)操作掩碼具有比所生成的打包數(shù)據(jù)操作掩碼少的掩碼元素。
[0166]示例18包括任何前述示例的方法,且任選地其中所述第一較窄的源打包數(shù)據(jù)操作數(shù)重疊在寄存器中的第一較寬的源打包數(shù)據(jù)操作數(shù)上。
[0167]示例19包括任何前述示例的方法,且任選地其中存儲包括存儲打包數(shù)據(jù)結(jié)果,其中與被掩碼掉的掩碼元素對應(yīng)的每個結(jié)果數(shù)據(jù)元素的值不變,且任選地其中與未被掩碼的掩碼元素對應(yīng)的每個結(jié)果數(shù)據(jù)元素的值由與打包數(shù)據(jù)指令相關(guān)聯(lián)的操作更新。
[0168]示例20是處理指令的系統(tǒng),該系統(tǒng)包括互連和與該互連耦合的處理器。該處理器包括第一單元,用于將打包數(shù)據(jù)指令映射到經(jīng)掩碼的打包數(shù)據(jù)操作,所述打包數(shù)據(jù)指令至少指示第一較窄的源打包數(shù)據(jù)操作數(shù)和較窄的目的地操作數(shù),所述經(jīng)掩碼的打包數(shù)據(jù)操作至少指示比所述第一較窄的源打包數(shù)據(jù)操作數(shù)寬且包括第一較窄的源打包數(shù)據(jù)操作數(shù)的第一較寬的源打包數(shù)據(jù)操作數(shù),且指示比所述較窄的目的地操作數(shù)寬且包括所述較窄的目的地操作數(shù)的較寬的目的地操作數(shù)。該處理器還包括與第一單元耦合的集成電路。該集成電路利用掩碼執(zhí)行經(jīng)掩碼的打包數(shù)據(jù)操作,掩碼包括用于由經(jīng)掩碼的打包數(shù)據(jù)操作存儲的打包數(shù)據(jù)結(jié)果的每個對應(yīng)數(shù)據(jù)元素的掩碼位。僅允許與由打包數(shù)據(jù)指令存儲的數(shù)據(jù)元素對應(yīng)的掩碼位不被掩碼掉。該系統(tǒng)還包括與所述互連耦合的動態(tài)隨機存取存儲器(DRAM)。
[0169]示例21包括示例20的系統(tǒng),且任選地其中所述集成電路還用于執(zhí)行數(shù)據(jù)重排操作,以使所述第一較窄的源打包數(shù)據(jù)操作數(shù)的數(shù)據(jù)元素與所述打包數(shù)據(jù)結(jié)果的數(shù)據(jù)元素對齊。
[0170]示例22是一種處理器,包括用于接收打包數(shù)據(jù)指令的裝置,該指令至少指示第一較窄的源打包數(shù)據(jù)操作數(shù)和較窄的目的地操作數(shù)。該處理器還包括用于將打包數(shù)據(jù)指令映射到經(jīng)掩碼的打包數(shù)據(jù)操作的裝置,經(jīng)掩碼的打包數(shù)據(jù)操作至少指示比第一較窄的源打包數(shù)據(jù)操作數(shù)寬且包括第一較窄的源打包數(shù)據(jù)操作數(shù)的第一較寬的源打包數(shù)據(jù)操作數(shù),且指示比所述較窄的目的地操作數(shù)寬且包括所述較窄的目的地操作數(shù)的較寬的目的地操作數(shù)。該處理器還包括用于生成打包數(shù)據(jù)操作掩碼的裝置,打包數(shù)據(jù)操作掩碼包括用于由經(jīng)掩碼的打包數(shù)據(jù)操作存儲的打包數(shù)據(jù)結(jié)果的每個對應(yīng)結(jié)果數(shù)據(jù)元素的掩碼元素。與由經(jīng)掩碼的打包數(shù)據(jù)操作存儲的、本來不會由打包數(shù)據(jù)指令存儲的結(jié)果數(shù)據(jù)元素對應(yīng)的所有掩碼元素被掩碼掉。
[0171]示例23包括示例22的系統(tǒng),且任選地還包括用于將第一較窄的源打包數(shù)據(jù)操作數(shù)與打包數(shù)據(jù)結(jié)果的數(shù)據(jù)元素對齊的裝置。
[0172]示例24包括一種執(zhí)行示例10-19中的任一個的方法的設(shè)備。
[0173]示例25包括一種包括用于執(zhí)行示例10-19中的任一個的方法的裝置的設(shè)備。
[0174]示例26包括一種包括用于執(zhí)行示例10-19中的任一個的方法的裝置的處理器。
[0175]示例27包括計算機系統(tǒng),包括動態(tài)隨機存取存儲器(DRAM)和與DRAM耦合的處理器,其包括用于執(zhí)行示例10-19中的任一個的方法的裝置。
[0176]示例28包括一種執(zhí)行基本如本文中所描述的方法的裝置。
[0177]示例29包括一種設(shè)備,該設(shè)備包括用于執(zhí)行基本如本文中所描述的方法的裝置。
[0178]在說明書和權(quán)利要求書中,可使用術(shù)語“耦合的”和“連接的”及其衍生詞。應(yīng)當(dāng)理解,這些術(shù)語并不旨在作為彼此的同義詞。相反,在具體實施例中,“連接的”用于指示兩個或更多個要素彼此直接物理或電接觸。“耦合的”可意味著兩個或多個元件直接物理或電氣接觸。然而,“耦合的”也可表示兩個或更多個要素可能并未彼此直接接觸,但是仍然彼此協(xié)作、彼此作用。在附圖中,箭頭用于示出連接和耦合。
[0179]在說明書和權(quán)利要求書中,可能使用了術(shù)語“邏輯”。如本文中所使用,邏輯可包括硬件、固件、軟件、或它們的組合。邏輯的示例包括集成電路、專用集成電路、模擬電路、數(shù)字電路、編程邏輯設(shè)備、包括指令的存儲器設(shè)備等。在某些實施例中,硬件設(shè)備可包括晶體管和/或門控,并潛在地包括其他電路組件。
[0180]術(shù)語“和/或”可能已被使用。如本文中所使用的,術(shù)語“和/或”意指一個或其他或兩者(例如,A和/或B意指A或B或者A和B兩者)。
[0181]在以上描述中,為解釋起見,闡明了眾多具體細(xì)節(jié)以提供對本發(fā)明的各實施例的透徹理解。然而,將對本領(lǐng)域技術(shù)人員明顯的是,沒有這些具體細(xì)節(jié)中的一些也可實踐一個或多個其他實施例。提供所描述的具體實施例不是為了限制本發(fā)明而是為了通過示例實施例來說明本發(fā)明。本發(fā)明的范圍不是由具體示例來確定的,而是僅由權(quán)利要求書來確定的。在其它實例中,以方框圖形式而非以細(xì)節(jié)地示出了公知的電路、結(jié)構(gòu)、設(shè)備和操作以避免使說明書的理解變得晦澀。
[0182]在認(rèn)為適宜之處,附圖標(biāo)記或附圖標(biāo)記的結(jié)尾部分在諸附圖當(dāng)中被重復(fù)以指示可選地具有類似特性或相同特征的對應(yīng)或類似的要素,除非以其他方式來指定或顯而易見。在描述了多個組件的一些情況下,它們可被結(jié)合到單一組件中。在描述了單一組件的其他情況下,它可被分割成多個組件。
[0183]已描述了各種操作和方法。已經(jīng)以流程圖方式以相對基礎(chǔ)的方式對一些方法進(jìn)行了描述,但這些操作可選擇地被添加至這些方法和/或從這些方法中移去。另外,盡管流程圖示出根據(jù)示例實施例的操作的特定順序,但該特定順序是示例性的。替換實施例可任選地以不同方式執(zhí)行這些操作、組合某些操作、覆蓋某些操作等。
[0184]某些實施例包括制品(例如,計算機程序產(chǎn)品),所述制品包括機器可讀介質(zhì)。該介質(zhì)可包括以機器可讀的形式提供(例如,存儲)信息的機制。機器可讀介質(zhì)可包括或者已存儲有一個或多個指令,這些指令如果被機器執(zhí)行和/或在被機器執(zhí)行時用于引起該機器執(zhí)行和/或?qū)е略摍C器執(zhí)行本文中公開的一個或多個操作、方法或技術(shù)。
[0185]在某些實施例中,機器可讀介質(zhì)可包括有形的和/或無形的機器可讀存儲介質(zhì)。例如,有形的和/或無形的機器可讀存儲介質(zhì)可包括軟盤、光存儲介質(zhì)、光盤、光學(xué)數(shù)據(jù)存儲設(shè)備、CD-ROM、磁盤、磁光盤、只讀存儲器(ROM)、可編程ROM (PR0M)、可擦除可編程ROM(EPROM)、電可擦除可編程ROM (EEPROM)、隨機存取存儲器(RAM)、靜態(tài)RAM (SRAM)、動態(tài)RAM(DRAM)、閃存、相變化存儲器、相變化數(shù)據(jù)存儲材料、非易失性存儲器、非易失性數(shù)據(jù)存儲設(shè)備、非瞬時存儲器、或非瞬時數(shù)據(jù)存儲設(shè)備等。非瞬態(tài)機器可讀存儲介質(zhì)不由瞬態(tài)傳播的信號組成。在另一實施例中,機器可讀介質(zhì)可包括瞬態(tài)機器可讀通信介質(zhì),例如電、光、聲、或者其他形式的傳播信號,諸如載波、紅外信號、數(shù)字信號等。
[0186]合適機器的示例包括但不限于,通用處理器、專用處理器、指令處理裝置、數(shù)字邏輯電路、集成電路等。合適的機器的又一些示例包括合并有這樣的處理器、指令處理裝置、數(shù)字邏輯電路或集成電路的計算設(shè)備和其他電子設(shè)備。這樣的計算設(shè)備和電子設(shè)備的示例包括但不限于臺式機、膝上型計算機、筆記本電腦、平板計算機、上網(wǎng)本、智能電話、蜂窩電話、服務(wù)器、網(wǎng)絡(luò)設(shè)備(例如,路由器和交換機)、移動網(wǎng)絡(luò)設(shè)備(MID)、媒體播放器、智能電視、迷你桌上型設(shè)備、機頂盒和視頻游戲控制器。
[0187]還應(yīng)當(dāng)理解,說明書全文對“一個實施例”、“一實施例”或“一個或多個實施例”的引用例如表示特定特征可包含在本發(fā)明實施例的實踐中。類似地應(yīng)當(dāng)理解,在本說明書中,各個特征有時被一起編組在單個實施例、附圖或其描述中以使本公開變得流暢并幫助理解各個創(chuàng)新性方面。然而,該公開方法不應(yīng)被解釋成反映本發(fā)明需要比每項權(quán)利要求中所明確記載的更多特征的意圖。相反,如下面權(quán)利要求反映的,各創(chuàng)新性方面可具有比單個公開的實施例的全部特征更少的特征。因此,說明書之后所附的權(quán)利要求因此被明確納入該說明書中,每一項權(quán)利要求獨自作為本發(fā)明單獨的實施例。
【權(quán)利要求】
1.一種處理器,包括: 解碼單元,用于將打包數(shù)據(jù)指令映射到經(jīng)掩碼的打包數(shù)據(jù)操作,所述打包數(shù)據(jù)指令至少指示第一較窄的源打包數(shù)據(jù)操作數(shù)和較窄的目的地操作數(shù),所述經(jīng)掩碼的打包數(shù)據(jù)操作至少指示比所述第一較窄的源打包數(shù)據(jù)操作數(shù)寬且包括第一較窄的源打包數(shù)據(jù)操作數(shù)的第一較寬的源打包數(shù)據(jù)操作數(shù),且指示比所述較窄的目的地操作數(shù)寬且包括所述較窄的目的地操作數(shù)的較寬的目的地操作數(shù);以及 與所述解碼單元耦合的執(zhí)行單元,所述執(zhí)行單元用于利用打包數(shù)據(jù)操作掩碼執(zhí)行所述經(jīng)掩碼的打包數(shù)據(jù)操作,所述打包數(shù)據(jù)操作掩碼包括用于由經(jīng)掩碼的打包數(shù)據(jù)操作存儲的打包數(shù)據(jù)結(jié)果的每個對應(yīng)結(jié)果數(shù)據(jù)元素的掩碼元素,其中與由經(jīng)掩碼的打包數(shù)據(jù)操作存儲的、本來不會由打包數(shù)據(jù)指令存儲的結(jié)果數(shù)據(jù)元素對應(yīng)的所有掩碼元素被掩碼掉,所述執(zhí)行單元用于將打包數(shù)據(jù)結(jié)果存儲在較寬的目的地操作數(shù)中。
2.如權(quán)利要求1所述的處理器,其特征在于,所述執(zhí)行單元用于寫入與較寬的目的地操作數(shù)對應(yīng)的寄存器的整個寬度,其中所述較窄的目的地操作數(shù)僅對應(yīng)于所述寄存器的寬度的一部分。
3.如權(quán)利要求1所述的處理器,其特征在于,所述執(zhí)行單元用于存儲打包數(shù)據(jù)結(jié)果,其中將由與打包數(shù)據(jù)指令相關(guān)聯(lián)的操作更新的結(jié)果數(shù)據(jù)元素僅占據(jù)在寄存器的最低有效部分和寄存器的最高有效部分之間的寄存器的中間部分。
4.如權(quán)利要求1所述的處理器,其特征在于,所述解碼單元用于接收打包數(shù)據(jù)指令,所述打包數(shù)據(jù)指令還指示第二較窄的源打包數(shù)據(jù)操作數(shù),且其中所述解碼單元用于所述打包數(shù)據(jù)指令映射到經(jīng)掩碼的打包數(shù)據(jù)操作,所述經(jīng)掩碼的打包數(shù)據(jù)操作指示比第二較窄的源打包數(shù)據(jù)操作數(shù)寬且 包括第二較窄的源打包數(shù)據(jù)操作數(shù)的第二較寬的源打包數(shù)據(jù)操作數(shù)。
5.如權(quán)利要求4所述的處理器,其特征在于,所述解碼單元用于接收打包數(shù)據(jù)指令,所述打包數(shù)據(jù)指令指示第一和第二較窄的源打包數(shù)據(jù)操作數(shù)中的至少一個非對應(yīng)數(shù)據(jù)元素對上的操作,所述非對應(yīng)數(shù)據(jù)元素不在對應(yīng)的位位置中,且其中所述處理器還用于執(zhí)行將所述非對應(yīng)數(shù)據(jù)元素對置于對應(yīng)的位位置中的操作,以便由執(zhí)行單元在執(zhí)行經(jīng)掩碼的打包數(shù)據(jù)操作時對其進(jìn)行操作。
6.如權(quán)利要求5所述的處理器,其特征在于,所述處理器用于通過執(zhí)行移位操作、混洗操作和置換操作之一來執(zhí)行將所述非對應(yīng)數(shù)據(jù)元素對置于對應(yīng)的位位置中的操作
7.如權(quán)利要求1所述的處理器,其特征在于,所述打包數(shù)據(jù)指令不指示打包數(shù)據(jù)操作掩碼。
8.如權(quán)利要求1所述的處理器,其特征在于,所述打包數(shù)據(jù)指令指示打包數(shù)據(jù)操作掩碼,所述打包數(shù)據(jù)操作掩碼具有比由所述執(zhí)行單元用于執(zhí)行經(jīng)掩碼的打包數(shù)據(jù)操作的打包數(shù)據(jù)操作掩碼少的掩碼元素。
9.如權(quán)利要求1所述的處理器,其特征在于,所述執(zhí)行單元用于存儲打包數(shù)據(jù)結(jié)果,其中與被掩碼掉的掩碼元素對應(yīng)的每個結(jié)果數(shù)據(jù)元素的值不變,且其中與未被掩碼的掩碼元素對應(yīng)的每個結(jié)果數(shù)據(jù)元素的值由與打包數(shù)據(jù)指令相關(guān)聯(lián)的操作更新。
10.一種在處理器中的方法,包括: 接收打包數(shù)據(jù)指令,所述打包數(shù)據(jù)指令至少指示第一較窄的源打包數(shù)據(jù)操作數(shù)和較窄的目的地操作數(shù);將所述打包數(shù)據(jù)指令映射到經(jīng)掩碼的打包數(shù)據(jù)操作,所述經(jīng)掩碼的打包數(shù)據(jù)操作至少指示比所述第一較窄的源打包數(shù)據(jù)操作數(shù)寬且包括第一較窄的源打包數(shù)據(jù)操作數(shù)的第一較寬的源打包數(shù)據(jù)操作數(shù),且指示比所述較窄的目的地操作數(shù)寬且包括所述較窄的目的地操作數(shù)的較寬的目的地操作數(shù); 生成打包數(shù)據(jù)操作掩碼,所述打包數(shù)據(jù)操作掩碼包括用于由經(jīng)掩碼的打包數(shù)據(jù)操作存儲的打包數(shù)據(jù)結(jié)果的每個對應(yīng)結(jié)果數(shù)據(jù)元素的掩碼元素,其中與由經(jīng)掩碼的打包數(shù)據(jù)操作存儲的、本來不會由打包數(shù)據(jù)指令存儲的結(jié)果數(shù)據(jù)元素對應(yīng)的所有掩碼元素被掩碼掉; 利用所述打包數(shù)據(jù)操作掩碼執(zhí)行經(jīng)掩碼的打包數(shù)據(jù)操作;以及 將打包數(shù)據(jù)結(jié)果存儲在較寬的目的地操作數(shù)中。
11.如權(quán)利要求10所述的方法,其特征在于,存儲所述打包數(shù)據(jù)結(jié)果包括寫入與較寬的目的地操作數(shù)對應(yīng)的寄存器的整個寬度,其中所述較窄的目的地操作數(shù)僅對應(yīng)于所述寄存器的寬度的一部分。
12.如權(quán)利要求10所述的方法,其特征在于,存儲包括存儲所述打包數(shù)據(jù)結(jié)果,其中由與打包數(shù)據(jù)指令相關(guān)聯(lián)的操作更新的結(jié)果數(shù)據(jù)元素僅占據(jù)在寄存器的最低有效部分和寄存器的最高有效部分之間的寄存器的中間部分。
13.如權(quán)利要求10所述的方法,其特征在于,接收包括接收所述打包數(shù)據(jù)指令,所述打包數(shù)據(jù)指令還指示第二較窄的源打包數(shù)據(jù)操作數(shù),且其中映射包括將所述打包數(shù)據(jù)指令映射到經(jīng)掩碼的打包數(shù)據(jù)操作,所述經(jīng)掩碼的打包數(shù)據(jù)操作指示比第二較窄的源打包數(shù)據(jù)操作數(shù)寬且包括第二較窄的源打包數(shù)據(jù)操作數(shù)的第二較寬的源打包數(shù)據(jù)操作數(shù)。
14.如權(quán)利要求13所述的方法,其特征在于,接收包括接收打包數(shù)據(jù)指令,所述打包數(shù)據(jù)指令指示第一和第二較窄的源打包數(shù)據(jù)操作數(shù)中的至少一個非對應(yīng)數(shù)據(jù)元素對上的操作,所述非對應(yīng)數(shù)據(jù)元素不在對應(yīng)的位位置中,且還包括執(zhí)行將所述非對應(yīng)數(shù)據(jù)元素對置于對應(yīng)的位位置中的操作,以便由經(jīng)掩碼的打包數(shù)據(jù)操作對其進(jìn)行操作。
15.如權(quán)利要求14所述的方法,其特征在于,執(zhí)行將所述非對應(yīng)數(shù)據(jù)元素對置于對應(yīng)的位位置中的操作包括執(zhí)行移位操作、混洗操作和置換操作之一。
16.如權(quán)利要求10所述的方法,其特征在于,接收包括接收不指示打包數(shù)據(jù)操作掩碼的打包數(shù)據(jù)指令。
17.如權(quán)利要求10所述的方法,其特征在于,接收包括接收指示第二打包數(shù)據(jù)操作掩碼的所述打包數(shù)據(jù)指令,所述第二打包數(shù)據(jù)操作掩碼具有比所生成的打包數(shù)據(jù)操作掩碼少的掩碼元素。
18.如權(quán)利要求10所述的方法,其特征在于,所述第一較窄的源打包數(shù)據(jù)操作數(shù)重疊在寄存器中的第一較寬的源打包數(shù)據(jù)操作數(shù)上。
19.如權(quán)利要求10所述的方法,其特征在于,存儲包括存儲打包數(shù)據(jù)結(jié)果,其中與被掩碼掉的掩碼元素對應(yīng)的每個結(jié)果數(shù)據(jù)元素的值不變,且其中與未被掩碼的掩碼元素對應(yīng)的每個結(jié)果數(shù)據(jù)元素的值由與打包數(shù)據(jù)指令相關(guān)聯(lián)的操作更新。
20.一種處理指令的系統(tǒng),包括: 互連; 與所述互連耦合的處理器,所述處理器包括: 第一單元,用于將打包數(shù)據(jù)指令映射到經(jīng)掩碼的打包數(shù)據(jù)操作,所述打包數(shù)據(jù)指令至少指示第一較窄的源打包數(shù)據(jù)操作數(shù)和較窄的目的地操作數(shù),所述經(jīng)掩碼的打包數(shù)據(jù)操作至少指示比所述第一較窄的源打包數(shù)據(jù)操作數(shù)寬且包括第一較窄的源打包數(shù)據(jù)操作數(shù)的第一較寬的源打包數(shù)據(jù)操作數(shù),且指示比所述較窄的目的地操作數(shù)寬且包括所述較窄的目的地操作數(shù)的較寬的目的地操作數(shù);以及 與第一單元耦合的集成電路,所述集成電路用于利用掩碼執(zhí)行經(jīng)掩碼的打包數(shù)據(jù)操作,所述掩碼包括用于由經(jīng)掩碼的打包數(shù)據(jù)操作存儲的打包數(shù)據(jù)結(jié)果的每個對應(yīng)結(jié)果數(shù)據(jù)元素的掩碼位,其中僅允許與由打包數(shù)據(jù)指令存儲的數(shù)據(jù)元素對應(yīng)的掩碼位不被掩碼掉;以及 與所述互連耦合的動態(tài)隨機存取存儲器(DRAM)。
21.如權(quán)利要求20所述的系統(tǒng),其特征在于,所述集成電路還用于執(zhí)行數(shù)據(jù)重排操作,以使所述第一較窄的源打包數(shù)據(jù)操作數(shù)的數(shù)據(jù)元素與所述打包數(shù)據(jù)結(jié)果的數(shù)據(jù)元素對齊。
【文檔編號】G06F9/38GK104077107SQ201410122763
【公開日】2014年10月1日 申請日期:2014年3月28日 優(yōu)先權(quán)日:2013年3月30日
【發(fā)明者】E·T·格羅科斯基, S·Y·索托德, B·M·蓋 申請人:英特爾公司