亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

四維莫頓坐標轉(zhuǎn)換處理器、方法、系統(tǒng)和指令與流程

文檔序號:11450211閱讀:285來源:國知局
四維莫頓坐標轉(zhuǎn)換處理器、方法、系統(tǒng)和指令與流程
背景本文中所描述的各實施例一般涉及處理器。具體而言,本文中所描述的實施例一般涉及在處理器內(nèi)的不同坐標系統(tǒng)之間轉(zhuǎn)換。背景信息計算機系統(tǒng)和其他電子設備通常利用組織在數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)。數(shù)據(jù)結(jié)構(gòu)可以表示數(shù)據(jù)的特定排列或組織。在計算機系統(tǒng)中經(jīng)常使用的一個常見類型的數(shù)據(jù)結(jié)構(gòu)是數(shù)組,例如二維(2d)數(shù)組。圖1示出其中數(shù)據(jù)項(例如,值7、16、24、27等等)被排列在兩個維度中的二維(2d)數(shù)組100的示例。典型地,2d數(shù)據(jù)結(jié)構(gòu)可以表示表、矩陣等等。在圖示中,由第一維度或x軸102和第二維度或y軸104來定義兩個維度。x軸和y軸相互垂直并且定義在其中排列數(shù)據(jù)項的2d網(wǎng)格。2d數(shù)組中的數(shù)據(jù)項可以由沿著兩條軸的x和y指數(shù)或坐標的值來標識。x坐標表示從兩條軸相交的原點測量的沿x軸的距離和/或相對位置,而y坐標表示從原點測量的沿y軸的距離和/或相對位置。在示出的示例中,x坐標和y坐標具有0、1、2和3的值。典型地,坐標或指數(shù)可以表示行數(shù)和列數(shù)。作為示例,具有14的值的數(shù)據(jù)項可以由x,y坐標(1,2)標識,x,y坐標(1,2)可以指示在第2列第3行中的數(shù)據(jù)項。構(gòu)想了其他示例,其中2d數(shù)據(jù)結(jié)構(gòu)表示笛卡爾坐標系統(tǒng),并且坐標可以表示笛卡爾坐標系統(tǒng)中的點的位置。在計算機系統(tǒng)和其他電子設備內(nèi),可以將此類數(shù)組和其他數(shù)據(jù)結(jié)構(gòu)存儲在存儲器或其他線性存儲設備中。將2d和其他多維數(shù)組存儲在存儲器中的不同方式是可能的。例如,可以將2d數(shù)組按照行主序(row-majororder)存儲。在行主序中,數(shù)組的行在存儲器中是連續(xù)的。例如,可以將數(shù)據(jù)項按照27、3、8、11、9、24、7、1、8、14、16、2、7、16、4和20的順序存儲在存儲器中。替代地,可以將2d數(shù)組按照列主序(column-majororder)存儲在存儲器中。在列主序中,數(shù)組的列在存儲器中是連續(xù)的。例如,可以將數(shù)據(jù)項按照27、9、8、7、3、24、14、16、8、7、16、4、11、1、2和20的順序存儲在存儲器中。附圖說明通過參考用于說明實施例的以下描述和所附附圖,可最佳地理解本發(fā)明。在附圖中:圖1示出二維(2d)數(shù)組的示例。圖2示出映射到圖1的2d數(shù)組的莫頓(morton)序曲線的示例。圖3是用于執(zhí)行4d莫頓坐標轉(zhuǎn)換指令的實施例的處理器的實施例的框圖。圖4是執(zhí)行4d莫頓坐標轉(zhuǎn)換指令的實施例的方法的實施例的流程框圖。圖5是示出4d莫頓坐標轉(zhuǎn)換操作的示例實施例的框圖,4d莫頓坐標轉(zhuǎn)換操作用于將4d莫頓坐標轉(zhuǎn)換為存儲在第一和第二結(jié)果緊縮數(shù)據(jù)操作數(shù)的兩個對應的32位數(shù)據(jù)元素中的對應的四個4d坐標的集合。圖6是示出4d莫頓坐標轉(zhuǎn)換操作的示例實施例的框圖,4d莫頓坐標轉(zhuǎn)換操作用于將4d莫頓坐標轉(zhuǎn)換為存儲在第一和第二結(jié)果緊縮數(shù)據(jù)操作數(shù)的兩個對應的64位數(shù)據(jù)元素中的對應的四個4d坐標的集合。圖7是示出4d莫頓坐標轉(zhuǎn)換操作的示例實施例的框圖,4d莫頓坐標轉(zhuǎn)換操作用于將4d莫頓坐標轉(zhuǎn)換為存儲在結(jié)果緊縮數(shù)據(jù)操作數(shù)的單個對應的32位數(shù)據(jù)元素中的對應的四個4d坐標的集合。圖8是示出4d莫頓坐標轉(zhuǎn)換操作的示例實施例的框圖,4d莫頓坐標轉(zhuǎn)換操作用于將4d莫頓坐標轉(zhuǎn)換為存儲在結(jié)果緊縮數(shù)據(jù)操作數(shù)的單個對應的64位數(shù)據(jù)元素中的對應的四個4d坐標的集合。.圖9是用于執(zhí)行莫頓坐標轉(zhuǎn)換指令的實施例的合適的處理器的更詳細的示例實施例的框圖。圖10是坐標轉(zhuǎn)換指令的實施例的框圖。圖11a-11c是示出根據(jù)本發(fā)明的多個實施例的通用向量友好指令格式及其指令模板的框圖。圖12a-b是示出根據(jù)本發(fā)明的多個實施例的示例性專用向量友好指令格式和操作碼字段的框圖。圖13a-d是示出根據(jù)本發(fā)明的多個實施例的示例性專用向量友好指令格式及其多個字段的框圖。圖14是寄存器架構(gòu)的實施例的框圖。圖15a是示出有序流水線的實施例以及寄存器重命名的亂序發(fā)布/執(zhí)行流水線的實施例的框圖。圖15b是處理器核的實施例的框圖,該處理器核包括耦合到執(zhí)行引擎單元的前端單元,并且前端單元和執(zhí)行引擎單元兩者都耦合到存儲器單元。圖16a是單個處理器核以及它與管芯上互連網(wǎng)絡的連接及其第二級(l2)高速緩存的本地子集的實施例的框圖。圖16b是圖16a的處理器核的部分的展開圖的實施例的框圖。圖17是可具有多于一個的核、可具有集成存儲器控制器并且可具有集成圖形器件的處理器的實施例的框圖。圖18是計算機架構(gòu)的第一實施例的框圖。圖19是計算機架構(gòu)的第二實施例的框圖。圖20是計算機架構(gòu)的第三實施例的框圖。圖21是計算機架構(gòu)的第四實施例的框圖。圖22是根據(jù)本發(fā)明的實施例的使用軟件指令轉(zhuǎn)換器將源指令集中的二進制指令轉(zhuǎn)換為目標指令集中的二進制指令的框圖。具體實施方式本文中公開了用于將四維(4d)莫頓坐標轉(zhuǎn)換為四個4d坐標(例如,x、y、z和t坐標)的4d莫頓坐標轉(zhuǎn)換指令、用于執(zhí)行這些指令的處理器、當處理或執(zhí)行指令時由處理器執(zhí)行的方法、以及包括用于處理或執(zhí)行這些指令的一個或多個處理器的系統(tǒng)。在以下描述中,闡述了多個特定細節(jié)(例如,特定指令操作、數(shù)據(jù)格式、處理器配置、微架構(gòu)細節(jié)、操作序列等)。然而,在沒有這些特定細節(jié)的情況下,也可實踐實施例。在其他實例中,未詳細示出公知的電路、結(jié)構(gòu)和技術以避免混淆對本描述的理解。一個挑戰(zhàn)是將數(shù)據(jù)項存儲在存儲器或線性存儲設備中的方式可能顯著地影響使用這些數(shù)據(jù)項的算法的性能。一方面,數(shù)據(jù)項一般需要被從存儲器讀取到處理器中,但是一次只有有限數(shù)量的位可以被從存儲器讀取到處理器中。例如,通常處理器一次(例如,在單個讀取操作中)只能從存儲器讀取連續(xù)數(shù)據(jù)的512位。不同的數(shù)據(jù)項將被按照連續(xù)的順序讀取,取決于數(shù)據(jù)項是按照行主序、列主序還是其他順序存儲的。例如,如果數(shù)據(jù)項是按照行主序存儲的,則可以按照27、3、8、11、9、24等等的順序讀取數(shù)據(jù)項,直到512位的最大值。相反,如果數(shù)據(jù)項是按照行主序存儲的,則可以按照27、9、8、7、3、24等等的順序讀取數(shù)據(jù)項,直到512位的最大值。一般而言,從存儲器的每個讀取操作可能只能從數(shù)組獲得感興趣的數(shù)據(jù)項中的一些。作為示例,尤其當數(shù)組是大的時(例如,至少具有多于512位),如果按照行主序存儲數(shù)據(jù)項,則甚至可能不能在同一讀取操作中獲得來自數(shù)組的第一列的在不同行但相同列中的相鄰數(shù)據(jù)(例如,數(shù)據(jù)項27和9),即使這些數(shù)據(jù)項在數(shù)組中相互毗鄰。當數(shù)據(jù)是按照列主序時并且對于3d和4d數(shù)組的數(shù)據(jù)的存儲可能遇到類似的情形。在存儲器中排列數(shù)據(jù)項的方式一般也影響有效地將數(shù)據(jù)項高速緩存在處理器的一個或多個高速緩存中的能力。對高速緩存中的數(shù)據(jù)項的訪問通常具有低于對存儲器中的數(shù)據(jù)項的訪問的等待時間。然而,即使感興趣的數(shù)據(jù)項在高速緩存中,如果數(shù)據(jù)項分散在許多不同的高速緩存行中,往往可能產(chǎn)生較差的高速緩存利用率。通常,每個高速緩存行存儲已經(jīng)從存儲器讀取的512位的連續(xù)數(shù)據(jù)。如果沒有按照對于使用數(shù)據(jù)的相關算法有效的方式在存儲器中排列數(shù)據(jù)項,則數(shù)據(jù)項在高速緩存行中可能是稀疏的。在更嚴重的情形下,每個高速緩存行可能只保存單個感興趣的數(shù)據(jù)項。相反,如果將按照對于特定算法高度有效的方式在存儲器中排列數(shù)據(jù)項,則感興趣的數(shù)據(jù)項可以被更密集地緊縮在高速緩存行內(nèi),每個高速緩存行包括從多個到許多感興趣的數(shù)據(jù)項。這可以幫助改善高速緩存的有效性。類似地,如果按照對于特定算法高度有效的方式在存儲器中排列數(shù)據(jù)項,則在每個讀取操作中至少按平均更多感興趣的數(shù)據(jù)項可以被讀取到處理器中。因此,將會允許按照對于特定算法有效的方式在存儲器中排列數(shù)據(jù)的方法可以幫助改善性能。存在多種不同類型的嘗試處理相對于其他數(shù)據(jù)具有多維位置或接近度的數(shù)據(jù)的算法。作為一個示例,圖像處理算法(例如,紅眼減弱、壓縮等等)經(jīng)常嘗試一起或同時處理毗鄰的、相鄰的或以其他方式接近的像素的組的數(shù)據(jù)。算法可能相對地對相鄰像素塊的數(shù)據(jù)而不是在單個行或列中的所有像素的數(shù)據(jù)(例如,可能是在行主或列主排列中的情形)更感興趣。類似地,在許多視頻處理算法(例如,壓縮、視頻監(jiān)視分析、機器人視覺等等)中,通常一起或同時處理相鄰像素組的數(shù)據(jù)或順序視頻幀的對應的像素中的數(shù)據(jù)。例如,經(jīng)常通過存儲此類像素之間的區(qū)別而不是絕對像素值來實現(xiàn)壓縮。也趨向于利用具有多維位置的數(shù)據(jù)的其他應用或算法的示例包括但不限于層析成像分析、地震分析、幾何建模、矩陣操作(例如,矩陣乘和/或轉(zhuǎn)置)、有限元分析、光線跟蹤、傅里葉變換、并行數(shù)據(jù)構(gòu)建應用、以及圖形應用等等。然而,如上所討論的,尤其當涉及相對大的數(shù)組時,行主序的、列主序的、和多種其他排列的數(shù)據(jù)經(jīng)常不為頻繁利用具有多維位置的數(shù)據(jù)的應用提供有效的數(shù)據(jù)排列。因此,保留多維位置的組織數(shù)據(jù)的其他方式往往將為某些應用提供某些優(yōu)勢。z順序的曲線,也被稱為莫頓序曲線,是連續(xù)的填充空間的曲線或函數(shù),其能夠?qū)⒍嗑S數(shù)據(jù)映射到單個維度同時保留數(shù)據(jù)的多維位置或接近度。換言之,莫頓序曲線可以按照保留數(shù)據(jù)的多維位置的方式將2d、3d、4d或其他多維空間中的數(shù)據(jù)映射到線性列表或排列的數(shù)據(jù)上(例如,具有多維空間中的位置的數(shù)據(jù)在莫頓曲線提供的線性列表或排列中也具有位置)。沿著莫頓序曲線的數(shù)據(jù)的順序被稱為z曲線順序或莫頓序。莫頓序反映在每個點的莫頓代碼或莫頓坐標中。z順序曲線具有作為基礎單元的線性地連接四個點的z形曲線。整體z順序空間填充曲線是通過將多個或許多這些z形曲線或單元連接在一起以填充2d、3d、4d或其他多維空間而形成的。圖2示出映射到圖1的2d數(shù)組100的z順序曲線或莫頓序曲線206的示例。如圖所示,在線性排列中可以將數(shù)個z形曲線或單元(在該示例中四個)連接在一起以穿過或填充2d數(shù)組中的所有點。在該示例中,由于2d數(shù)組中存在十六個數(shù)據(jù)項,每個具有四個點的四個z形單元完全遍歷十六個數(shù)據(jù)項2d數(shù)組。在圖示中,坐標以十進制記數(shù)示出(例如,1、2、3等等)。坐標的等效的二進制表示207也被示出在十進制坐標旁邊的括號中(例如,10,11)。作為示例,十進制坐標值2相當于二進制指數(shù)值“10”。將莫頓序曲線映射到數(shù)組涉及確定數(shù)組的點或數(shù)據(jù)項的莫頓代碼或坐標208。可以通過以固定模式交織多個多維坐標的二進制表示的位來計算沿著莫頓序曲線的各個點的莫頓坐標。例如,如果x坐標的第一和第二位分別表示為x1和x2,并且如果y坐標的第一和第二位分別表示為y1和y2,則可以通過將這些位交織為順序x1y1x2y2來計算點的莫頓坐標。為了進一步說明,可以通過交織這些坐標的二進制表示(即,01,00)的位以得到值“0001”的莫頓坐標208來得出點(x=l,y=0)的莫頓坐標。類似地,在3d和4d中,可以分別通過交織三個和四個坐標的二進制表示的位來得出3d或4d莫頓坐標。在相反的方向中,計算多個多維坐標的二進制表示涉及將莫頓坐標的位逆固定解交織為分開的坐標。例如,可以通過將位x1y1x2y2解交織以生成x1x2的x坐標和y1y2的y坐標而將莫頓坐標x1y1x2y2轉(zhuǎn)換為x和y坐標的二進制表示。為了進一步說明,可以將莫頓坐標“0001”轉(zhuǎn)換為x坐標“01”和y坐標“00”的二進制表示。類似地,在3d和4d中,可以通過將3d或4d莫頓坐標的位解交織來得出三個或四個不同坐標的二進制表示。部分地由于其表示數(shù)據(jù)中的多維位置的能力,可以將2d、3d或4d數(shù)組重新排列為對應的2d、3d或4d莫頓序表示以幫助改善某些類型的應用的性能。例如,在應用處理數(shù)據(jù)之前,可以在存儲器中將數(shù)據(jù)從2d、3d或4d數(shù)組重新排列為對應的2d、3d或4d莫頓序表示。在該應用處理了數(shù)據(jù)之后,可能想要將2d、3d或4d莫頓序表示轉(zhuǎn)換回2d、3d或4d數(shù)組。在其他情形下,最初可以按2d、3d或4d莫頓序表示組織數(shù)據(jù),并且為了改善性能或為了其他原因可以將數(shù)據(jù)重新排列為2d、3d或4d數(shù)組。在任意情況下,通常期望在莫頓序排列和多維數(shù)組和/或多維空間之間轉(zhuǎn)換。此類轉(zhuǎn)換一般往往是計算密集的。能夠加速此類轉(zhuǎn)換的指令可以幫助改善性能。圖3是用于執(zhí)行4d莫頓坐標轉(zhuǎn)換指令312的實施例的處理器310的實施例的框圖。在一些實施例中,該處理器可以是通用處理器(例如,在臺式計算機、膝上型計算機或其他計算機中所使用類型的通用微處理器或中央處理單元(cpu))。替代地,處理器可以是專用處理器。合適的專用處理器的示例包括但不限于,網(wǎng)絡處理器、通信處理器、加密處理器、圖形處理器、協(xié)處理器、嵌入式處理器、數(shù)字信號處理器(dsp)以及控制器(例如,微控制器)。該處理器可具有各種復雜指令集計算(cisc)架構(gòu)、精簡指令集計算(risc)架構(gòu)、超長指令字(vliw)架構(gòu)、混合架構(gòu)、其他類型的架構(gòu)中的任一者,或具有不同架構(gòu)的組合(例如,不同的核可具有不同的架構(gòu))。在操作期間,處理器310可以接收4d莫頓坐標轉(zhuǎn)換指令312。例如,可從互連上的存儲器取出或以其他方式接收該指令。指令可表示宏指令、匯編語言指令、機器代碼指令、或其他指令、或處理器的指令集的控制信號。再次參考圖3,該處理器包括解碼單元或解碼器314。解碼單元可接收并解碼4d莫頓坐標轉(zhuǎn)換指令。4d莫頓坐標轉(zhuǎn)換指令可以是處理器的指令集的一部分。解碼單元可輸出反映、表示相對較高級的4d莫頓坐標轉(zhuǎn)換指令和/或從相對較高級的4d莫頓坐標轉(zhuǎn)換指令導出的一個或多個相對較低級的指令或控制信號(例如,一個或多個微指令、微操作、微代碼進入點、經(jīng)解碼的指令或控制信號等)??墒褂酶鞣N不同機制來實現(xiàn)該解碼單元,包括但不限于,微代碼只讀存儲器(rom)、查找表、硬件實現(xiàn)、可編程邏輯陣列(pla)和適于實現(xiàn)解碼單元的其他機制。在一些實施例中,作為被直接提供給解碼單元的4d莫頓坐標轉(zhuǎn)換指令的替代方案,可以任選地使用指令仿真器、翻譯器、變形器、解釋器或其它指令轉(zhuǎn)換模塊。各種類型的合適的指令轉(zhuǎn)換模塊可以以軟件、硬件、固件或其組合來實現(xiàn)。在一些實施例中,該指令轉(zhuǎn)換模塊可位于處理器之外,諸如例如,在單獨的管芯上和/或在存儲器中(例如,作為靜態(tài)的、動態(tài)的或運行時仿真模塊)。作為示例,指令轉(zhuǎn)換模塊可接收可以是第一指令集中的4d莫頓坐標轉(zhuǎn)換指令,并且可將該4d莫頓坐標轉(zhuǎn)換指令仿真、變換、變形、解釋或以其它方式轉(zhuǎn)換為可以是第二不同指令集中的一個或多個對應的中間指令或控制信號??蓪⒌诙噶罴械脑撘粋€或多個中間指令或控制信號提供給解碼單元,該解碼單元可將它們解碼為可由處理器的原生硬件(例如,一個或多個執(zhí)行單元)執(zhí)行的一個或多個較低級指令或控制信號。再次參考圖3,該處理器還包括一組緊縮數(shù)據(jù)寄存器318。緊縮數(shù)據(jù)寄存器中的每一個都可以表示可用于存儲緊縮數(shù)據(jù)、向量數(shù)據(jù)、或單指令多數(shù)據(jù)(simd)數(shù)據(jù)的管芯上的存儲位置。在simd架構(gòu)中,緊縮數(shù)據(jù)指令、向量指令或者simd指令可同時或并行地對多個數(shù)據(jù)元素或者多對數(shù)據(jù)元素進行操作。處理器可具有并行執(zhí)行硬件,該并行執(zhí)行硬件響應于緊縮數(shù)據(jù)指令來同時或并行地執(zhí)行多個操作。多個數(shù)據(jù)元素可在一個寄存器或存儲器位置內(nèi)被緊縮為緊縮數(shù)據(jù)或向量數(shù)據(jù)。在緊縮數(shù)據(jù)中,寄存器或者其他存儲位置的位可邏輯地分成數(shù)據(jù)元素序列。例如,256位寬緊縮數(shù)據(jù)寄存器可具有四個64位寬數(shù)據(jù)元素、八個32位數(shù)據(jù)元素、十六個16位數(shù)據(jù)元素等。每一數(shù)據(jù)元素可表示單一獨立的一段數(shù)據(jù)(例如,像素顏色、坐標等),該段數(shù)據(jù)可單獨地操作和/或與其他數(shù)據(jù)獨立地操作。緊縮數(shù)據(jù)寄存器可表示對軟件和/或編程者可見的架構(gòu)可見或架構(gòu)寄存器,并且/或者是由處理器的指令集中的指令所指示以便標識操作數(shù)的寄存器。這些架構(gòu)寄存器不同于給定微架構(gòu)中的其他非架構(gòu)式寄存器(例如,臨時寄存器、重排序緩沖器、引退寄存器等)。可以使用已知技術將緊縮數(shù)據(jù)寄存器在不同的微架構(gòu)中以不同的方式實現(xiàn),并且不限于任何特定類型的設計。合適類型的寄存器的示例包括但不限于,專用物理寄存器、使用寄存器重命名的動態(tài)地分配的物理寄存器、以及它們的組合。在一些實施例中,該指令可以明確指定(例如通過一個或多個字段或位集合)或者以其它方式指示(例如隱含指示)將包括多個4d莫頓坐標的源緊縮數(shù)據(jù)操作數(shù)320,并且可以指定或以其它方式指示其中將存儲一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)324的一個或多個目的地存儲位置。作為一個示例,該指令可具有操作數(shù)指定字段以指定寄存器、存儲器位置、或其他存儲位置以用于源和結(jié)果操作數(shù)中的一個或多個。替代地,該操作數(shù)中的一個或多個可任選地對于該指令是隱含的(例如,對該指令的操作碼是隱含的)。作為另一選項,也可以將用于源操作數(shù)的存儲位置作為結(jié)果操作數(shù)重新使用(例如,使用最初用于源操作數(shù)而后來用于結(jié)果操作數(shù)的同一存儲位置對于指令可以是隱含的)。如圖所示,在一些實施例中,可以可選地將源緊縮數(shù)據(jù)操作數(shù)320存儲在第一緊縮數(shù)據(jù)寄存器中。如圖進一步所示,在一些實施例中,可以將一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)324存儲在一個或多個緊縮數(shù)據(jù)寄存器中。替代地,在一些實施例中,用于源緊縮數(shù)據(jù)操作數(shù)的緊縮數(shù)據(jù)寄存器可任選地被重新用于存儲結(jié)果緊縮數(shù)據(jù)操作數(shù)。在一方面,源/目的地寄存器可隱式地或隱含地被理解成用于源操作數(shù)和結(jié)果操作數(shù)兩者。此外,由于存儲器位置或其他存儲位置可任選地用于操作數(shù)中的一個或多個,對緊縮數(shù)據(jù)寄存器的使用不是必須的。再次參考圖3,執(zhí)行單元316與解碼單元314以及緊縮數(shù)據(jù)寄存器318耦合。響應于4d莫頓坐標轉(zhuǎn)換指令和/或作為其結(jié)果(例如,響應于從該指令解碼的一個或多個指令或控制信號),執(zhí)行單元用于將一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)324存儲在由該指令指示的一個或多個目的地存儲位置中。在一些實施例中,該一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)可以包括多個四個4d坐標的集合。在一些實施例中,四個4d坐標可以表示4d空間、4d數(shù)組或其他4d數(shù)據(jù)結(jié)構(gòu)的x、y、z和t坐標。在本文中廣泛地使用x、y、z和t以指定四個不同的維度,并且不限于是空間、時間或任意其他維度的那些維度。相反,四個不同的維度(例如,x、y、z和t)可以表示為特定實現(xiàn)所需的任意其他維度或坐標。合適的坐標或維度的示例包括但不限于3d空間維度、時間、壓力、溫度、強度、電流、電壓、頻率等等,以及其各種組合。4d坐標的集合中的每一個(例如,x、y、z和t坐標的每個集合)可以對應于4d莫頓坐標中的不同的一個(例如,從4d莫頓坐標生成的)。在一些實施例中,結(jié)果可以是針對圖5-8所示出或描述的那些結(jié)果中的任一者,但是本發(fā)明的范圍不限于此。在一些實施例中,指令可以通過執(zhí)行將對應的4d莫頓坐標的位四路按位固定解交織為四個連續(xù)位串,每個連續(xù)位串對應于四個4d坐標中的不同的一個,使得執(zhí)行單元生成四個4d坐標的集合中的每一個。例如,可以將從第一位開始的給定的4d莫頓坐標的每個第四位位置的值存儲、收集、或串接在一起,作為表示在一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)中的對應的第一坐標(例如,x坐標)的第一連續(xù)位串,可以將從第二位開始的給定的4d莫頓坐標的每個第四位位置的值存儲、串接在一起,作為在一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)中的第二對應坐標(例如,y坐標),可以將從第三位開始的給定的4d莫頓坐標的每個第四位位置的值存儲、串接在一起,作為在一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)中的第三對應坐標(例如,z坐標),并且可以將從第四位開始的給定的4d莫頓坐標的每個第四位位置的值存儲為串接在一起,作為在一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)中的第四對應坐標(例如,t坐標)。為了進一步說明,執(zhí)行單元可以將至少在位置0、4、8、12、16、20和24(并且在一些實施例中(取決于4d坐標的位寬)、可選地在位置28、32、36、40、44、48、52、56和60中的一個或多個)處的位的值存儲在對應于第一4d坐標(例如,x坐標)的連續(xù)位串中。類似地,執(zhí)行單元可以將至少在位置1、5、9、13、17、21和25(并且在一些實施例中可選地在位置29、33、37、41、45、49、53、57和61中的一個或多個)處的位的值存儲在對應于第二4d坐標(例如,y坐標)的連續(xù)位串中。同樣,執(zhí)行單元可以將至少在位置2、6、10、14、18、22和26(并且在一些實施例中可選地在位置30、34、38、42、46、50、54、58和62中的一個或多個)處的位的值存儲在對應于第三4d坐標(例如,z坐標)的連續(xù)位串中。此外,執(zhí)行單元可以將至少在位置3、7、11、15、19、23和27(并且在一些實施例中可選地在位置31、35、39、43、47、51、55、59和63中的一個或多個)處的位的值存儲在對應于第四4d坐標(例如,t坐標)的連續(xù)位串中。在一些實施例中,執(zhí)行單元可以將兩個結(jié)果緊縮數(shù)據(jù)操作數(shù)存儲在由指令指示的兩個不同的目的地存儲位置中。兩個結(jié)果緊縮數(shù)據(jù)操作數(shù)中的一個可以存儲每個四個4d坐標的集合的前兩個坐標(例如,x和y坐標),而兩個結(jié)果緊縮數(shù)據(jù)操作數(shù)中的另一個可以存儲每個四個4d坐標的集合的后兩個坐標(例如,z和t坐標)。不同大小的4d莫頓坐標和對應的4d坐標是可能的。在一些實施例中,可以將每個4d莫頓坐標存儲在源緊縮數(shù)據(jù)操作數(shù)的不同的32位數(shù)據(jù)元素中。每個4d莫頓坐標可以對應于四個4d坐標的集合??梢詫⒚總€集合的第一對坐標(例如,x和y坐標)存儲在第一結(jié)果緊縮數(shù)據(jù)操作數(shù)的對應的32位數(shù)據(jù)元素的最低階16位之中或該32位數(shù)據(jù)元素中的對應于4d莫頓坐標的其他部分之中??梢詫⒚總€集合的第二對坐標(例如,z和t坐標)存儲在第二結(jié)果緊縮數(shù)據(jù)操作數(shù)的對應的32位數(shù)據(jù)元素的最低階16位之中或該32位數(shù)據(jù)元素中的對應于4d莫頓坐標的其他部分之中。在其他實施例中,可以將每個4d莫頓坐標存儲在源緊縮數(shù)據(jù)操作數(shù)的不同的64位數(shù)據(jù)元素中。可以將每個集合的第一對坐標(例如,x和y坐標)存儲在第一結(jié)果緊縮數(shù)據(jù)操作數(shù)的對應的64位數(shù)據(jù)元素的最低階32位之中或該64位數(shù)據(jù)元素中的對應于4d莫頓坐標的其他部分之中??梢詫⒚總€集合的第二對坐標(例如,z和t坐標)存儲在第二結(jié)果緊縮數(shù)據(jù)操作數(shù)的對應的64位數(shù)據(jù)元素的最低階32位之中或該64位數(shù)據(jù)元素中的對應于4d莫頓坐標的其他部分之中。其他實施例不限于此。在其他實施例中,執(zhí)行單元可以將單個結(jié)果緊縮數(shù)據(jù)操作數(shù)存儲在由4d莫頓坐標轉(zhuǎn)換指令指示的單個目的地存儲位置中??梢詫⒚總€四個4d坐標的集合存儲在單個結(jié)果緊縮數(shù)據(jù)操作數(shù)的不同的數(shù)據(jù)元素之中或?qū)趯?d莫頓坐標(例如,在操作數(shù)中的相同的相對位位置中)的其他部分之中。在一些實施例中,可以將每個4d莫頓坐標存儲在源緊縮數(shù)據(jù)操作數(shù)的不同的32位數(shù)據(jù)元素中。在此類實施例中,可以將對應于32位數(shù)據(jù)元素中的4d莫頓坐標的四個4d坐標的集合中的每個坐標存儲在單個結(jié)果緊縮數(shù)據(jù)操作數(shù)的對應的32位數(shù)據(jù)元素的不同的8位數(shù)據(jù)元素之中、或其他部分之中、或?qū)?例如,在相同的相對位置)具有對應的4d莫頓坐標的32位數(shù)據(jù)元素的其他部分之中。在其他實施例中,可以將每個4d莫頓坐標存儲在源緊縮數(shù)據(jù)操作數(shù)的不同的64位數(shù)據(jù)元素中。在此類實施例中,可以將對應于64位數(shù)據(jù)元素中的4d莫頓坐標的四個4d坐標的集合中的每個坐標存儲在單個結(jié)果緊縮數(shù)據(jù)操作數(shù)的對應的64位數(shù)據(jù)元素的不同的16位數(shù)據(jù)元素之中、或其他部分之中、或?qū)?例如,在相同的相對位置)具有對應的4d莫頓坐標的64位數(shù)據(jù)元素的其他部分之中。這些只是數(shù)個說明性示例。還構(gòu)想了將四個4d坐標存儲和排列在一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)中的其他方式。例如,可以任選地將三個坐標(例如,x、y和z坐標)存儲在一個結(jié)果緊縮數(shù)據(jù)操作數(shù)中,并且可以任選地將第四個坐標(例如,t坐標)存儲在另一個結(jié)果緊縮數(shù)據(jù)操作數(shù)中。執(zhí)行單元和/或處理器可包括用于響應于4d莫頓坐標轉(zhuǎn)換指令和/或作為其結(jié)果(例如,響應于從該4d莫頓坐標轉(zhuǎn)換指令解碼的一個或多個指令或控制信號)而執(zhí)行該4d莫頓坐標轉(zhuǎn)換指令和/或存儲結(jié)果的具體的或特定的邏輯(例如,潛在地與固件(例如,存儲在非易失性存儲器中的指令)和/或軟件組合的晶體管、集成電路或其他硬件)。作為示例,執(zhí)行單元可包括邏輯單元、算術邏輯單元等等。在一些實施例中,執(zhí)行單元可利用復用器以執(zhí)行四路按位固定解交織。在其他實施例中,各種不同類型的掩碼和邏輯操作可以用于執(zhí)行四路按位固定解交織。為避免使描述模糊,已示出和描述了相對簡單的處理器310。然而,處理器可以任選地包括其他組件。此類組件的可能的示例包括但不限于針對圖9和/或圖16-19中的任一個所示出和描述的組件。各種不同的實施例可以包括此類組件的各種不同的組合和配置。此類組件可以相互耦合以允許它們根據(jù)它們的操作來操作。在一些實施例中,可以將所有組件包括在處理器的至少一個核、一些核、核的子集或所有核中。在各種實施例中,處理器可以具有至少一個、兩個、四個、八個、十六個、三十二個或更多核。圖4是執(zhí)行4d莫頓坐標轉(zhuǎn)換指令的實施例的方法430的實施例的流程框圖。在各種實施例中,可由處理器、指令處理裝置或其他數(shù)字邏輯設備來執(zhí)行該方法。在一些實施例中,可由圖3的處理器執(zhí)行圖4的方法和/或可在圖3的處理器內(nèi)執(zhí)行圖4的方法。本文中針對圖3的處理器所描述的組件、特征和具體可選細節(jié)也可任選地應用于圖4的方法??商娲?,圖4的方法可由類似的或不同的處理器或裝置執(zhí)行,和/或在類似的或不同的處理器或裝置內(nèi)執(zhí)行。此外,圖3的處理器可以執(zhí)行與圖4的那些方法相同、類似或不同的方法。該方法包括在框432處接收4d莫頓坐標轉(zhuǎn)換指令。在各方面,可以在處理器或其一部分(例如,指令取出單元、解碼單元、總線接口單元等等)處接收該指令。在各方面中,可從處理器外或管芯外的源(例如,從存儲器、互連等)或從處理器上或管芯上的源(例如,從指令高速緩存、指令隊列等)接收該指令。4d莫頓坐標轉(zhuǎn)換指令可以指定或以其他方式指示包括多個4d莫頓坐標的源緊縮數(shù)據(jù)操作數(shù),并且可以指定或以其他方式指示一個或多個目的地存儲位置。然后,在框434處,響應于4d莫頓坐標轉(zhuǎn)換指令和/或作為其結(jié)果,可以將一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)存儲在一個或多個目的地存儲位置中。在一些實施例中,一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)可以包括多個四個4d坐標(例如,x、y、z和t坐標)的集合。四個4d坐標的集合中的每一個可以對應于4d莫頓坐標中的不同的一個。例如,四個4d坐標的集合中的每一個可以從對應的4d莫頓坐標生成。在一些實施例中,可以將四個4d坐標的集合中的每一個存儲在結(jié)果緊縮數(shù)據(jù)操作數(shù)的與對應的4d莫頓坐標在相同的相對位位置中的數(shù)據(jù)元素或其他部分中。所示的方法涉及架構(gòu)操作(例如,那些從軟件角度可見的操作)。在其他實施例中,該方法可以可選地包括一個或多個微架構(gòu)操作。作為示例,指令可以被預取、被存儲在指令高速緩存中、被指令取出單元取出、被解碼、被調(diào)度,源操作數(shù)可以被訪問、相對于其他指令被亂序執(zhí)行,執(zhí)行單元可以執(zhí)行微架構(gòu)操作以實現(xiàn)該指令等等。圖5是示出4d莫頓坐標轉(zhuǎn)換操作540的示例實施例的框圖,4d莫頓坐標轉(zhuǎn)換操作540用于將每個存儲在源緊縮數(shù)據(jù)操作數(shù)520的不同的32位數(shù)據(jù)元素中的4d莫頓坐標(m)轉(zhuǎn)換為存儲在第一和第二結(jié)果緊縮數(shù)據(jù)操作數(shù)542、544的兩個對應的32位數(shù)據(jù)元素中的對應的四個4d坐標(x、y、z和t)的集合??梢皂憫?d莫頓坐標轉(zhuǎn)換為四個4d坐標指令的示例實施例執(zhí)行該操作。指令可以指定或以其他方式指示源緊縮數(shù)據(jù)操作數(shù)520。源緊縮數(shù)據(jù)操作數(shù)具有多個4d莫頓坐標(m)。4d莫頓坐標中的每一個存儲在源緊縮數(shù)據(jù)操作數(shù)的不同的32位數(shù)據(jù)元素中。在特定示出的實施例中,源緊縮數(shù)據(jù)操作數(shù)是具有十六個32位數(shù)據(jù)元素的512位源緊縮數(shù)據(jù)操作數(shù),十六個32位數(shù)據(jù)元素中的每一個包括十六個4d莫頓坐標(m1到m16)中的不同的對應的一個,但是本發(fā)明的范圍不限于此。在其他實施例中,可任選地使用其他寬度的源緊縮數(shù)據(jù)操作數(shù)和/或其他數(shù)量的4d莫頓坐標。例如,在各種實施例中,源緊縮數(shù)據(jù)操作數(shù)的寬度可以是64位、128位、256位、512位或1024位,但是本發(fā)明的范圍并不限于此。在該示例實施例中,數(shù)據(jù)元素為32位數(shù)據(jù)元素,但是本發(fā)明的范圍并不限于此。其他大小的數(shù)據(jù)元素也是合適的,諸如例如,64位數(shù)據(jù)元素。源緊縮數(shù)據(jù)操作數(shù)中的數(shù)據(jù)元素和/或4d莫頓坐標的數(shù)量可以是源緊縮數(shù)據(jù)操作數(shù)的以位表示的寬度除以數(shù)據(jù)元素中的每一個的以位表示的寬度。在各實施例中,在源緊縮數(shù)據(jù)操作數(shù)中可存在至少兩個、至少四個、至少八個、至少十六個、至少三十二個、或多于三十二個數(shù)據(jù)元素和/或4d莫頓坐標。在該示例實施例中,響應于指令,可以生成(例如,由執(zhí)行單元516進行)和存儲兩個結(jié)果緊縮數(shù)據(jù)操作數(shù)542、544。具體地,可以生成第一結(jié)果緊縮數(shù)據(jù)操作數(shù)542和第二結(jié)果緊縮數(shù)據(jù)操作數(shù)544。可以將這兩個結(jié)果緊縮數(shù)據(jù)操作數(shù)存儲在可以由指令指定或以其他方式指示的兩個對應的目的地存儲位置中。在各實施例中,目的地存儲位置可以是緊縮數(shù)據(jù)寄存器、存儲器位置、其它存儲位置、或其組合。在一些實施例中,用于源緊縮數(shù)據(jù)操作數(shù)的存儲位置還可以任選地隱含地用于兩個結(jié)果緊縮數(shù)據(jù)操作數(shù)中的一個。兩個結(jié)果緊縮數(shù)據(jù)操作數(shù)共同包括與源緊縮數(shù)據(jù)操作數(shù)中的4d莫頓坐標的數(shù)量相同的數(shù)量的四個4d坐標的集合。4d莫頓坐標中的每一個可以對應于并且可以被轉(zhuǎn)換為兩個結(jié)果緊縮數(shù)據(jù)操作數(shù)中的不同的對應的四個4d坐標的集合。通常,可以將4d莫頓坐標和對應的四個4d坐標的集合存儲在源和結(jié)果操作數(shù)的相同的相對位位置之中。例如,可以將源緊縮數(shù)據(jù)操作數(shù)的最低有效(最右邊)32位數(shù)據(jù)元素中的4d莫頓坐標(m1)轉(zhuǎn)換為對應的四個4d坐標(x1、y1、z1和t1)的集合,可以將該四個4d坐標存儲在第一和第二結(jié)果緊縮數(shù)據(jù)操作數(shù)中的每一個的對應的最低有效(最右邊)32位數(shù)據(jù)元素中。類似地,可以將源緊縮數(shù)據(jù)操作數(shù)的最高有效(最左邊)32位數(shù)據(jù)元素中的4d莫頓坐標(m16)轉(zhuǎn)換為對應的四個4d坐標(x16、y16、z16和t16)的集合,可以將該四個4d坐標存儲在第一和第二結(jié)果緊縮數(shù)據(jù)操作數(shù)中的每一個的對應的最高有效(最左邊)32位數(shù)據(jù)元素中??梢詫⑺衅渌鴺讼嗨频鼗蝾愃频剞D(zhuǎn)換。四個4d坐標(x、y、z和t)的集合在不同的實施例中可以按各種不同的方式分布在第一和第二結(jié)果緊縮數(shù)據(jù)操作數(shù)的32位數(shù)據(jù)元素中或排列在其內(nèi)。如圖所示,在一些實施例中,可以將四個4d坐標中的前兩個存儲在結(jié)果緊縮數(shù)據(jù)操作數(shù)中的一個的對應的數(shù)據(jù)元素中,而可以將四個4d坐標中的另外兩個存儲在另一個結(jié)果緊縮數(shù)據(jù)操作數(shù)中的對應的數(shù)據(jù)元素中。例如,如圖所示,在一個實施例中,可以將x和y坐標存儲在對應的結(jié)果數(shù)據(jù)元素中的一個(例如,最低有效16位)中,并且可以將z和t坐標存儲在另一個對應的結(jié)果數(shù)據(jù)元素(例如,最低有效16位)中,但這不是必須的。例如,可以將x1存儲在第一結(jié)果緊縮數(shù)據(jù)操作數(shù)的最低有效數(shù)據(jù)元素的位[7:0]中,并且可以將y1存儲在第一結(jié)果緊縮數(shù)據(jù)操作數(shù)的最低有效數(shù)據(jù)元素的位[15:8]中,并且可以將z1存儲在第二結(jié)果緊縮數(shù)據(jù)操作數(shù)的最低有效數(shù)據(jù)元素的位[7:0]中,并且可以將t1存儲在第二結(jié)果緊縮數(shù)據(jù)操作數(shù)的最低有效數(shù)據(jù)元素的位[15:8]中,但該特定排列當然不是必須的。在該示圖中,星號(*)用于表示不關心的值。替代地,構(gòu)想了各種其他分布和排列。例如,可以將x和z坐標包括在數(shù)據(jù)元素中的一個中,而將y和t坐標包括在另一個數(shù)據(jù)元素中,可以將x、y和z坐標包括在數(shù)據(jù)元素中的一個中,而將t坐標包括在另一個數(shù)據(jù)元素中,此處僅是列舉幾個可能的替換方案。一般而言,許多不同的分布和排列是可能的。取決于特定的預期用途,從整體算法角度來看,一些分布和排列可能比其他分布和排列相對更好。如前所述,通過執(zhí)行將對應的4d莫頓坐標的位固定四路按位解交織為四個連續(xù)位串,每個位串對應于四個4d坐標中的不同的一個,四個4d坐標的集合中的每一個可以從對應的4d莫頓坐標生成。在示出的示例實施例中,4d莫頓坐標(m)每個是32位,四個對應的4d坐標(x、y、z和t)中的每一個各自為8位,但是本發(fā)明的范圍不限于此。每個8位的四個集合是x、y、z和t坐標能夠作為莫頓坐標被包含在單個32位數(shù)據(jù)元素中的最大大小(即,8+8+8+8=32)。在其他實施例中,結(jié)果緊縮數(shù)據(jù)操作數(shù)中的四個4d坐標中的每一個可以任選地表示為少于8位,諸如例如,6位或7位。在一些實施例中,為了幫助改善處理這些坐標的效率,可以任選地將這些6位或7位坐標中的每一個存儲在結(jié)果緊縮數(shù)據(jù)操作數(shù)的不同的8位字節(jié)中。這可以幫助允許執(zhí)行按字節(jié)粒度的操作(例如,緊縮字節(jié)操作),而不需要執(zhí)行按位操作,但這不是必須的。一般而言,4d坐標中的位越多,可以表示的點越多并且/或者可以表示的4d空間越大,使得對于許多應用將為4d坐標使用所有8位。以下可以表示將存儲在32位源數(shù)據(jù)元素(src1)中的給定的4d莫頓坐標(例如,m1)轉(zhuǎn)換為四個對應的8位4d坐標(x1,y1,z1,t1)的操作的示例實施例,x1和y1存儲在第一32位結(jié)果數(shù)據(jù)元素(res1)的最低有效半部分中,并且z1和t1存儲在第二32位結(jié)果數(shù)據(jù)元素(res2)的最低有效半部分中,其中“0:28:4”中的“4”表示以4位的跨度跳過位。src1[0:28:4]→res1[0:7]=x1src1[1:29:4]→res1[8:15]=y(tǒng)1src1[2:30:4]→res2[0:7]=z1src1[3:31:4]→res2[8:15]=t1注意,對于每個坐標,存在4位的跨度,并且x坐標具有0位偏移,y坐標具有1位偏移,z坐標具有2位偏移,以及t坐標具有3位偏移。每個8位x坐標可以存儲對應的32位4d莫頓坐標的位0、4、8、12、16、20、24和28的值。每個8位y坐標可以存儲對應的32位4d莫頓坐標的位1、5、9、13、17、21、25和29的值。每個8位z坐標可以存儲對應的32位4d莫頓坐標的位2、6、10、14、18、22、26和30的值。每個8位t坐標可以存儲對應的32位4d莫頓坐標的位3、7、11、15、19、23、27和31的值。為了進一步說明,以下表1列出4d莫頓坐標(m)和其對應的四個4d坐標(x,y,z)的一個可能的示例,最低階位示出在右邊,對應于x坐標的位在莫頓坐標中被加粗。表14d莫頓到四個4d坐標的轉(zhuǎn)換的示例坐標位串m11011100000110011010101010100001x10110001y00001110z11000000t11011110在示出的實施例中,結(jié)果緊縮數(shù)據(jù)操作數(shù)中的每一個可選地具有與源緊縮數(shù)據(jù)操作數(shù)相同的寬度,但是這不是必須的。由于四個4d坐標中的每一個只具有4d莫頓坐標的四分之一數(shù)量的位,并且由于如示出的實施例所示四個4d坐標中只有兩個可以存儲在結(jié)果緊縮數(shù)據(jù)操作數(shù)的對應的數(shù)據(jù)元素中,在需要時可以任選地使用更小的結(jié)果緊縮數(shù)據(jù)操作數(shù)。例如,兩個結(jié)果緊縮數(shù)據(jù)操作數(shù)中的每一個可以任選地具有源緊縮數(shù)據(jù)操作數(shù)的位數(shù)的一半。圖6是示出4d莫頓坐標轉(zhuǎn)換操作641的示例實施例的框圖,4d莫頓坐標轉(zhuǎn)換操作641用于將每個存儲在源緊縮數(shù)據(jù)操作數(shù)620的不同的64位數(shù)據(jù)元素中的4d莫頓坐標(m)轉(zhuǎn)換為存儲在第一和第二結(jié)果緊縮數(shù)據(jù)操作數(shù)642、644的兩個對應的64位數(shù)據(jù)元素中的對應的四個4d坐標(x、y、z和t)的集合。響應于4d莫頓坐標轉(zhuǎn)換為四個4d坐標指令的示例實施例可以執(zhí)行操作。圖6的操作與圖5的操作具有某些類似性,并且主要區(qū)別于數(shù)據(jù)元素是64位數(shù)據(jù)元素而不是32位數(shù)據(jù)元素,并且主要區(qū)別于增加的4d莫頓坐標和對應的4d坐標(x、y、z和t)的寬度。為了避免混淆描述,主要描述圖6的操作的不同和/或附加特性,而不重復相對于圖5的操作的所有任選的類似或通用的特性和細節(jié)。然而,應該理解,前面描述的圖5的操作的特征和細節(jié),包括前文所述的變型和替代,也可以任選地應用于圖6的操作,除非另行指出或者以其它方式顯而易見。如前所述,指令可以指定或以其他方式指示源緊縮數(shù)據(jù)操作數(shù)620。在該實施例中,4d莫頓坐標中的每一個存儲在源緊縮數(shù)據(jù)操作數(shù)的不同的64位數(shù)據(jù)元素中。在特定示出的實施例中,源緊縮數(shù)據(jù)操作數(shù)是具有八個64位數(shù)據(jù)元素和/或八個64位4d莫頓坐標(m1到m8)的512位源緊縮數(shù)據(jù)操作數(shù),但是本發(fā)明的范圍不限于此。在其他實施例中,源緊縮數(shù)據(jù)操作數(shù)可以寬于或窄于512位(例如,128位、256位、1024位等等)并且/或者可以具有少于或多于八個4d莫頓坐標。在該示例實施例中,響應于指令,可以(例如,由執(zhí)行單元616)生成和存儲兩個結(jié)果緊縮數(shù)據(jù)操作數(shù)642、644。4d莫頓坐標中的每一個可以對應于并且可以被轉(zhuǎn)換為存儲在兩個結(jié)果緊縮數(shù)據(jù)操作數(shù)中的不同的對應的四個4d坐標的集合。例如,可以將源緊縮數(shù)據(jù)操作數(shù)的最低有效(最右邊)64位數(shù)據(jù)元素中的4d莫頓坐標(m1)轉(zhuǎn)換為對應的四個4d坐標(x1、y1、z1和t1)的集合,可以將該四個4d坐標存儲在第一和第二結(jié)果緊縮數(shù)據(jù)操作數(shù)中的每一個的對應的最低有效(最右邊)64位數(shù)據(jù)元素中。可以將所有其他坐標相似地或類似地轉(zhuǎn)換。如前所述,四個4d坐標(x、y、z和t)的集合在不同的實施例中可以按各種不同的方式分布在第一和第二結(jié)果緊縮數(shù)據(jù)操作數(shù)的64位數(shù)據(jù)元素中或排列在其內(nèi)。如圖所示,在一些實施例中,可以將四個4d坐標中的前兩個存儲在結(jié)果緊縮數(shù)據(jù)操作數(shù)中的一個的對應的數(shù)據(jù)元素中,而可以將四個4d坐標中的另外兩個存儲在另一個結(jié)果緊縮數(shù)據(jù)操作數(shù)中的對應的數(shù)據(jù)元素中。例如,如圖所示,在一個實施例中,可以將x和y坐標存儲在對應的結(jié)果數(shù)據(jù)元素中的一個(例如,最低有效32位)中,并且可以將z和t坐標存儲在另一個對應的結(jié)果數(shù)據(jù)元素(例如,最低有效32位)中,但這不是必須的。替代地,如前所述,構(gòu)想了各種其他分布和排列。如前所述,通過執(zhí)行將對應的4d莫頓坐標的位固定四路按位解交織為四個連續(xù)位串,每個位串對應于四個4d坐標中的不同的一個,四個4d坐標的集合中的每一個可以從對應的4d莫頓坐標生成。在示出的示例實施例中,4d莫頓坐標(m)每個是64位,四個對應的4d坐標(x、y、z和t)中的每一個各自為16位,但是本發(fā)明的范圍不限于此。每個16位的四個集合是x、y、z和t坐標能夠作為莫頓坐標被包含在單個64位數(shù)據(jù)元素中的最大大小(即,16+16+16+16=64)。在其他實施例中,結(jié)果緊縮數(shù)據(jù)操作數(shù)中的四個4d坐標中的每一個可以任選地表示為少于16位,諸如例如,從8位到16位,或從10位到16位,或從12位到16位,或從14位到16位。在一些實施例中,為了幫助改善處理這些坐標的效率,可以任選地將這些8位到15位坐標存儲在結(jié)果緊縮數(shù)據(jù)操作數(shù)的不同的16位數(shù)據(jù)元素中。這可以幫助對齊在16位邊界上的坐標,其可以幫助促進處理(例如,通過允許緊縮數(shù)據(jù)操作、通過避免需要執(zhí)行位操縱操作等等)。一般而言,4d坐標中的位越多,可以表示的點越多并且/或者可以表示的4d空間越大,使得對于許多應用可以為x、y、z和t坐標中的每一個使用至少約12位到16位。以下可以表示將存儲在64位源數(shù)據(jù)元素(src1)中的給定的4d莫頓坐標(例如,m1)轉(zhuǎn)換為四個對應的16位4d坐標(x1,y1,z1,t1)的操作的示例實施例,x1和y1存儲在第一64位結(jié)果數(shù)據(jù)元素(res1)的最低有效半部分中,并且z1和t1存儲在第二64位結(jié)果數(shù)據(jù)元素(res2)的最低有效半部分中,其中“0:60:4”中的“4”表示以4位的跨度跳過位。src1[0:60:4]→res1[0:15]=x1src1[1:61:4]→res1[16:31]=y(tǒng)1src1[2:62:4]→res2[0:15]=z1src1[3:63:4]→res2[16:31]=t1每個16位x坐標可以存儲對應的64位4d莫頓坐標的位0、4、8、12、16、20、24、28、32、36、40、44、48、52、56和60的值。每個16位y坐標可以存儲對應的64位4d莫頓坐標的位1、5、9、13、17、21、25、29、33、37、41、45、49、53、57和61的值。每個16位z坐標可以存儲對應的64位4d莫頓坐標的位2、6、10、14、18、22、26、30、34、38、42、46、50、54、58和62的值。每個16位t坐標可以存儲對應的64位4d莫頓坐標的位3、7、11、15、19、23、27、31、35、39、43、47、51、55、59和63的值。在示出的實施例中,結(jié)果緊縮數(shù)據(jù)操作數(shù)中的每一個可選地具有與源緊縮數(shù)據(jù)操作數(shù)相同的寬度,但是這不是必須的。由于四個4d坐標中的每一個只具有4d莫頓坐標的四分之一數(shù)量的位,并且由于如示出的實施例所示四個4d坐標中只有兩個可以存儲在結(jié)果緊縮數(shù)據(jù)操作數(shù)的對應的數(shù)據(jù)元素中,在需要時可以任選地使用更小的結(jié)果緊縮數(shù)據(jù)操作數(shù)。例如,兩個結(jié)果緊縮數(shù)據(jù)操作數(shù)中的每一個可以任選地具有源緊縮數(shù)據(jù)操作數(shù)的位數(shù)的一半。圖7是示出4d莫頓坐標轉(zhuǎn)換操作750的示例實施例的框圖,4d莫頓坐標轉(zhuǎn)換操作750用于將每個存儲在源緊縮數(shù)據(jù)操作數(shù)720的不同的32位數(shù)據(jù)元素中的4d莫頓坐標(m)轉(zhuǎn)換為存儲在結(jié)果緊縮數(shù)據(jù)操作數(shù)746的單個對應的32位數(shù)據(jù)元素中的對應的四個4d坐標(x、y、z和t)的集合。響應于4d莫頓坐標轉(zhuǎn)換為四個4d坐標指令的示例實施例可以執(zhí)行該操作。圖7的操作與圖5的操作具有某些類似性,并且主要區(qū)別于四個4d坐標(x、y、z和t)全部存儲在單個結(jié)果緊縮數(shù)據(jù)操作數(shù)的同一數(shù)據(jù)元素中。為了避免混淆描述,主要描述圖7的操作的不同和/或附加特性,而不重復相對于圖5的操作的所有任選的類似或通用的特性和細節(jié)。然而,應該理解,前面描述的圖5的操作的特征和細節(jié),包括前文所述的變型和替代,也可以任選地應用于圖7的操作,除非另行指出或者以其它方式顯而易見。如前所述,指令可以指定或以其他方式指示源緊縮數(shù)據(jù)操作數(shù)720。在該實施例中,4d莫頓坐標中的每一個存儲在源緊縮數(shù)據(jù)操作數(shù)的不同的32位數(shù)據(jù)元素中。在特定示出的實施例中,源緊縮數(shù)據(jù)操作數(shù)是具有十六個32位數(shù)據(jù)元素和/或十六個32位4d莫頓坐標(m1到m16)的512位源緊縮數(shù)據(jù)操作數(shù),但是本發(fā)明的范圍不限于此。在其他實施例中,源緊縮數(shù)據(jù)操作數(shù)可以寬于或窄于512位(例如,128位、256位、1024位等等)并且/或者可以具有少于或多于十六個4d莫頓坐標。在該示例實施例中,響應于指令,可以(例如,由執(zhí)行單元716)生成和存儲單個結(jié)果緊縮數(shù)據(jù)操作數(shù)746。4d莫頓坐標中的每一個可以對應于并且可以被轉(zhuǎn)換為不同的對應的四個4d坐標的集合。在一些實施例中,可以將全部四個4d坐標存儲在結(jié)果緊縮數(shù)據(jù)操作數(shù)中的同一對應的32位結(jié)果數(shù)據(jù)元素的不同部分(例如,不同字節(jié))中。例如,可以將源緊縮數(shù)據(jù)操作數(shù)的最低有效(最右邊)32位數(shù)據(jù)元素中的4d莫頓坐標(m1)轉(zhuǎn)換為對應的四個4d坐標(x1、y1、z1和t1)的集合,可以將該四個4d坐標全部存儲在結(jié)果緊縮數(shù)據(jù)操作數(shù)的對應的最低有效(最右邊)32位數(shù)據(jù)元素中。可以將所有其他坐標相似地或類似地轉(zhuǎn)換。四個4d坐標(x、y、z和t)的集合在不同的實施例中可以按各種不同的方式排列在結(jié)果緊縮數(shù)據(jù)操作數(shù)的32位數(shù)據(jù)元素內(nèi)。如圖所示,在一些實施例中,可以將x坐標存儲在32位結(jié)果數(shù)據(jù)元素的最低有效字節(jié)中,可以將y坐標存儲在32位結(jié)果數(shù)據(jù)元素的次低有效字節(jié)中,可以將z坐標存儲在32位結(jié)果數(shù)據(jù)元素的次高有效字節(jié)中,并且可以將t坐標存儲在32位結(jié)果數(shù)據(jù)元素的最高有效字節(jié)中,但是本發(fā)明的范圍不限于此。還構(gòu)想了x、y、z和t坐標在結(jié)果緊縮數(shù)據(jù)操作數(shù)內(nèi)的各種其他排列。例如,從右邊的最低有效位位置到左邊的最高有效位位置,可以將坐標按xyzt、txyz、ytzx或xtyz的順序存儲,此處僅是列舉數(shù)例。本發(fā)明的范圍不限于坐標和數(shù)據(jù)元素的任何已知排列。取決于特定的預期用途,從整體算法角度來看,一些排列可能比其他排列相對更好。如前所述,通過執(zhí)行將對應的4d莫頓坐標的位固定四路按位解交織為四個連續(xù)位串,每個位串對應于四個4d坐標中的不同的一個,四個4d坐標的集合中的每一個可以從對應的4d莫頓坐標生成。在示出的示例實施例中,4d莫頓坐標(m)每個是32位,四個對應的4d坐標(x、y、z和t)中的每一個各自為8位,但是本發(fā)明的范圍不限于此。在其他實施例中,結(jié)果緊縮數(shù)據(jù)操作數(shù)中的四個4d坐標中的每一個可以任選地表示為少于8位,諸如例如,6位或7位。在一些實施例中,為了幫助改善處理這些坐標的效率,可以任選地將這些6位或7位坐標中的每一個存儲在結(jié)果緊縮數(shù)據(jù)操作數(shù)的不同的8位字節(jié)中。以下可以表示將存儲在32位源數(shù)據(jù)元素(src1)中的給定的4d莫頓坐標(例如,m1)轉(zhuǎn)換為全部存儲在32位結(jié)果數(shù)據(jù)元素(res1)中的四個對應的8位4d坐標(例如,x1,y1,z1,t1)的操作的示例實施例:src1[0:28:4]→res1[0:7]=x1src1[1:29:4]→res1[8:15]=y(tǒng)1src1[2:30:4]→res1[16:23]=z1src1[3:31:4]→res1[24:31]=t1圖8是示出4d莫頓坐標轉(zhuǎn)換操作851的示例實施例的框圖,4d莫頓坐標轉(zhuǎn)換操作851用于將每個存儲在源緊縮數(shù)據(jù)操作數(shù)820的不同的64位數(shù)據(jù)元素中的4d莫頓坐標(m)轉(zhuǎn)換為存儲在結(jié)果緊縮數(shù)據(jù)操作數(shù)846的單個對應的64位數(shù)據(jù)元素中的對應的四個4d坐標(x、y、z和t)的集合。響應于4d莫頓坐標轉(zhuǎn)換為四個4d坐標指令的示例實施例可以執(zhí)行該操作。圖8的操作與圖7的操作具有某些類似性,并且主要區(qū)別于數(shù)據(jù)元素是64位而不是32位,并且主要區(qū)別于莫頓坐標和四個4d坐標(x、y、z和t)的大小。為了避免混淆描述,主要描述圖8的操作的不同和/或附加特性,而不重復相對于圖7的操作的所有任選的類似或通用的特性和細節(jié)。然而,應該理解,前面描述的圖7的操作的特征和細節(jié),包括前文所述的變型和替代,也可以任選地應用于圖8的操作,除非另行指出或者以其它方式顯而易見。如前所述,指令可以指定或以其他方式指示源緊縮數(shù)據(jù)操作數(shù)820。在該實施例中,4d莫頓坐標中的每一個存儲在源緊縮數(shù)據(jù)操作數(shù)的不同的64位數(shù)據(jù)元素中。在特定示出的實施例中,源緊縮數(shù)據(jù)操作數(shù)是具有八個64位數(shù)據(jù)元素和/或八個64位4d莫頓坐標(m1到m8)的512位源緊縮數(shù)據(jù)操作數(shù),但是本發(fā)明的范圍不限于此。在其他實施例中,源緊縮數(shù)據(jù)操作數(shù)可以寬于或窄于512位(例如,128位、256位、1024位等等)并且/或者可以具有少于或多于八個4d莫頓坐標。在該示例實施例中,響應于指令,可以生成(例如,由執(zhí)行單元816進行)和存儲單個結(jié)果緊縮數(shù)據(jù)操作數(shù)846。4d莫頓坐標中的每一個可以對應于并且可以被轉(zhuǎn)換為不同的對應的四個4d坐標的集合。在一些實施例中,可以將全部四個4d坐標存儲在結(jié)果緊縮數(shù)據(jù)操作數(shù)中的同一對應的64位結(jié)果數(shù)據(jù)元素的不同部分(例如,不同16位字或部分)中。例如,可以將源緊縮數(shù)據(jù)操作數(shù)的最低有效(最右邊)64位數(shù)據(jù)元素中的4d莫頓坐標(m1)轉(zhuǎn)換為對應的四個4d坐標(x1、y1、z1和t1)的集合,可以將這四個4d坐標全部存儲在結(jié)果緊縮數(shù)據(jù)操作數(shù)的對應的最低有效(最右邊)64位數(shù)據(jù)元素中??梢詫⑺衅渌鴺讼嗨频鼗蝾愃频剞D(zhuǎn)換。四個4d坐標(x、y、z和t)的集合在不同的實施例中可以按各種不同的方式排列在結(jié)果緊縮數(shù)據(jù)操作數(shù)的64位數(shù)據(jù)元素內(nèi)。如圖所示,在一些實施例中,可以將x坐標存儲在64位結(jié)果數(shù)據(jù)元素的最低有效16位字中,可以將y坐標存儲在64位結(jié)果數(shù)據(jù)元素的次低有效16位字中,可以將z坐標存儲在64位結(jié)果數(shù)據(jù)元素的次高有效16位字中,并且可以將t坐標存儲在64位結(jié)果數(shù)據(jù)元素的最高有效16位字中,但是本發(fā)明的范圍不限于此。如前所述,還構(gòu)想了x、y、z和t坐標在結(jié)果緊縮數(shù)據(jù)操作數(shù)內(nèi)的各種其他排列。如前所述,通過執(zhí)行將對應的4d莫頓坐標的位固定四路按位解交織為四個連續(xù)位串,每個位串對應于四個4d坐標中的不同的一個,四個4d坐標的集合中的每一個可以生成自對應的4d莫頓坐標。在示出的示例實施例中,4d莫頓坐標(m)每個是64位,四個對應的4d坐標(x、y、z和t)中的每一個各自為16位,但是本發(fā)明的范圍不限于此。在其他實施例中,結(jié)果緊縮數(shù)據(jù)操作數(shù)中的四個4d坐標中的每一個可以任選地用少于16位來表示,諸如例如,8位到16位,或12位到16位。在一些實施例中,為了幫助改善處理這些坐標的效率,可以任選地將這些6位或7位坐標中的每一個存儲在結(jié)果緊縮數(shù)據(jù)操作數(shù)的不同的16位字節(jié)中。以下可以表示將存儲在64位源數(shù)據(jù)元素(src1)中的給定的4d莫頓坐標(例如,m1)轉(zhuǎn)換為全部存儲在64位結(jié)果數(shù)據(jù)元素(res1)中的四個對應的16位4d坐標(例如,x1,y1,z1,t1)的操作的示例實施例:src1[0:60:4]→res1[0:15]=x1src1[1:61:4]→res1[16:31]=y(tǒng)1src1[2:62:4]→res1[32:47]=z1src1[3:63:4]→res1[48:63]=t1圖9是用于執(zhí)行莫頓坐標轉(zhuǎn)換指令的實施例的合適的處理器的更詳細的示例實施例的框圖。處理器包括核980。處理器可以任選地具有多個核(例如,至少兩個、至少四個、至少八個、至少三十個等等)。在一些情形下,所有核可以與示出的核相同,或者在其他情形下,一些核可以是不同的(例如,具有不同的組件或指令集)。在一些情形下,所有核可能能夠執(zhí)行本文中所公開的莫頓坐標轉(zhuǎn)換,或者在其他情形下,只有一些核可以執(zhí)行本文中所公開的莫頓坐標轉(zhuǎn)換。核980包括用于預測分支程序流的分支預測單元981。分支預測單元與指令預取單元982耦合。指令預取單元可以通過與其耦合的存儲器單元989從外部存儲器預取或以其他方式接收指令,包括莫頓坐標轉(zhuǎn)換指令。第1級(l1)指令高速緩存與指令預取單元耦合。l1指令高速緩存可以高速緩存或以其他方式存儲被預取的或以其他方式接收的指令,包括莫頓坐標轉(zhuǎn)換指令。指令取出單元984與l1指令高速緩存和解碼單元914耦合。指令取出單元可以從l1指令高速緩存取出或以其他方式接收指令,包括莫頓坐標轉(zhuǎn)換指令,并且可以向解碼單元提供包括莫頓坐標轉(zhuǎn)換指令的指令。解碼單元可以與本文中所描述的其他解碼單元相同或類似。該處理器包括一個或多個寄存器堆單元918。通常,寄存器堆單元可以包括各種不同類型的寄存器,諸如例如,緊縮數(shù)據(jù)寄存器、通用寄存器、狀態(tài)或標志寄存器、控制或配置寄存器等等。在使用亂序(ooo)執(zhí)行的實施例中,處理器還可以任選地包括與寄存器堆單元耦合的寄存器重命名和/或分配器單元以在寄存器(例如,與莫頓坐標轉(zhuǎn)換指令相關聯(lián)的緊縮數(shù)據(jù)寄存器)上分配資源和執(zhí)行寄存器重命名。此外,在ooo執(zhí)行的情形下,處理器可以任選地包括與解碼單元、重命名/分配單元耦合的一個或多個調(diào)度器單元986和一個或多個執(zhí)行單元916。調(diào)度器單元可以調(diào)度在執(zhí)行單元上的操作。至少一個執(zhí)行單元可以與本文中所公開的其他執(zhí)行單元相同或相似。通常,處理器可以任選地具有多個不同類型的執(zhí)行單元,諸如例如,整數(shù)執(zhí)行單元、浮點執(zhí)行單元、向量執(zhí)行單元、一個或多個存儲器訪問單元987或總線接口單元等等。在使用亂序(ooo)執(zhí)行的實施例中,處理器還可以任選地包括與寄存器堆單元和重命名/分配器單元985耦合的引退或提交單元991以引退或提交指令。處理器可以包括l1數(shù)據(jù)高速緩存單元974以高速緩存或以其他方式存儲包括數(shù)據(jù)元素和/或用于包括莫頓坐標轉(zhuǎn)換指令的指令的操作數(shù)的數(shù)據(jù)??梢匀芜x地包括第2級(l2)高速緩存單元990并且可以任選地由多個核共享l2高速緩存單元990。l2高速緩存單元可以存儲數(shù)據(jù)和包括莫頓坐標轉(zhuǎn)換指令的指令。處理器還可以任選地包括一個或多個變換后備緩沖器(未示出)以高速緩存地址變換數(shù)據(jù)。在使用亂序(ooo)執(zhí)行的實施例中,處理器還可以任選地包括重排序緩沖器(未示出)以將執(zhí)行結(jié)果和/或一個或多個預留站(未示出)重排序。處理器的各種實施例可以包括這些組件中的一些或全部的各種不同的組合和配置。多個實施例不限于任何已知的這種組合或配置。圖10是4d莫頓坐標轉(zhuǎn)換指令1012的實施例的框圖。指令包括操作代碼或操作碼1080。該操作碼可表示可用于標識要執(zhí)行的指令和/或操作(例如,將4d莫頓坐標轉(zhuǎn)換為四個4d坐標的集合)的多個位或者一個或多個字段。指令還包括源操作數(shù)說明符1082以明確地指定用于存儲源緊縮數(shù)據(jù)操作數(shù)的寄存器、存儲器位置或其他存儲位置。指令還包括第一目的地存儲位置說明符1084以明確地指定用于存儲第一結(jié)果緊縮數(shù)據(jù)操作數(shù)的寄存器或其他存儲位置、可選的第二目的地存儲位置說明符1086以明確地指定用于存儲可選的第二結(jié)果緊縮數(shù)據(jù)操作數(shù)的寄存器或其他存儲位置、以及可選的第三目的地存儲位置說明符1088以明確地指定用于存儲可選的第三結(jié)果緊縮數(shù)據(jù)操作數(shù)的寄存器或其他存儲位置。作為示例,這些說明符中的每一個可包括一組位或者一個或多個字段以明確指定寄存器的地址、存儲器位置或者其他存儲位置。替代地,如前所述,在需要時可以任選地使用單個結(jié)果緊縮數(shù)據(jù)操作數(shù)和單個對應的目的地存儲位置。此外,代替針對這些存儲位置中的每一個具有明確說明符的指令,,指令可以可選地具有一個或多個隱含存儲位置(例如,對指令的操作碼隱含)以用于源操作數(shù)和目的地存儲位置中的一個或多個。例如,對指令的操作碼而言,為源操作數(shù)或目的地存儲位置中的一個使用給定的固定寄存器可以是隱含的,以便不需要明確指定給定的固定寄存器。作為另一個示例,為源操作數(shù)并作為存儲結(jié)果操作數(shù)中的一個的目的地存儲位置重復使用同一個寄存器或其他存儲位置(例如,一旦被指令明確指定)可以是隱含的(例如,隱含的源/目的地寄存器)。在一些實施例中,指令可以具有其他字段或位,諸如例如,用于指示32位或64位執(zhí)行狀態(tài)或模式的位。應當理解,這只是合適的4d莫頓坐標轉(zhuǎn)換指令的一個說明性示例。替代的實施例可包括所示字段/說明符的子集,可添加附加的字段/說明符,可重疊某些字段/說明符等。此外,字段/說明符的所示順序以及布置不是必需的??梢砸愿鞣N方式重新安排字段/說明符。此外,字段/說明符不需要包括連續(xù)的位序列,相反地可包括非連續(xù)的或分開的位。在一些實施例中,指令格式可以具有如本文別處所公開的vex或evex編碼或指令格式或?qū)傩?,但是本發(fā)明的范圍不限于此。下面進一步討論了關于vex與evex編碼與格式的進一步細節(jié)。指令集包括一個或多個指令格式。給定指令格式定義各種字段(位的數(shù)量、位的位置)以指定將要執(zhí)行的操作(操作碼)以及將對其執(zhí)行該操作的操作數(shù),等等。通過指令模板(或子格式)的定義來進一步分解一些指令格式。例如,可將給定指令格式的指令模板定義為具有指令格式的字段的不同子集(所包括的字段通常按相同的順序,但是至少一些字段具有不同的位的位置,因為有較少的字段被包括)和/或定義為具有以不同的方式來解釋的給定字段。如此,isa的每一條指令使用給定的指令格式來表達(并且如果經(jīng)定義,則按照該指令格式的指令模板中的給定指令模板),并包括用于指定操作和操作數(shù)的字段。例如,示例性add指令具有特定的操作碼和指令格式,該指令格式包括用于指定該操作碼的操作碼字段和用于選擇操作數(shù)(源1/目的地以及源2)的操作數(shù)字段;并且該add指令在指令流中的出現(xiàn)將具有選擇特定操作數(shù)的操作數(shù)字段中的特定內(nèi)容。已發(fā)布和/或出版了被稱為高級向量擴展(avx)(avx1和avx2)并使用向量擴展(vex)編碼方案的simd擴展集(例如,參見2011年10月的《64和ia-32架構(gòu)軟件開發(fā)者手冊》(“64andia-32architecturessoftwaredevelopersmanual”);并且參見2011年6月的《高級向量擴展編程參考》(“advancedvectorextensionsprogrammingreference))?!笔纠灾噶罡袷奖疚闹兴枋龅闹噶畹膶嵤├梢圆煌母袷襟w現(xiàn)。另外,在下文中詳述示例性系統(tǒng)、架構(gòu)、以及流水線。指令的實施例可在這些系統(tǒng)、架構(gòu)、以及流水線上執(zhí)行,但是不限于詳述的系統(tǒng)、架構(gòu)、以及流水線。vex指令格式vex編碼允許指令具有兩個以上操作數(shù),并且允許simd向量寄存器比128位長。vex前綴的使用提供了三操作數(shù)(或者更多)句法。例如,先前的兩操作數(shù)指令執(zhí)行改寫源操作數(shù)的操作(諸如a=a+b)。vex前綴的使用使操作數(shù)能執(zhí)行非破壞性操作,諸如a=b+c。圖11a示出示例性avx指令格式,包括vex前綴1102、實操作碼字段1130、modr/m字節(jié)1140、sib字節(jié)1150、位移字段1162以及imm81172。圖11b示出來自圖11a的哪些字段構(gòu)成完整操作碼字段1174和基礎操作字段1142。圖11c示出來自圖11a的哪些字段構(gòu)成寄存器索引字段1144。vex前綴(字節(jié)0-2)1102以三字節(jié)形式進行編碼。第一字節(jié)是格式字段1140(vex字節(jié)0,位[7:0]),該格式字段1140包含顯式的c4字節(jié)值(用于區(qū)分c4指令格式的唯一值)。第二-第三字節(jié)(vex字節(jié)1-2)包括提供專用能力的多個位字段。具體地,rex字段1105(vex字節(jié)1,位[7-5])由vex.r位字段(vex字節(jié)1,位[7]–r)、vex.x位字段(vex字節(jié)1,位[6]–x)以及vex.b位字段(vex字節(jié)1,位[5]–b)組成。這些指令的其他字段對如在本領域中已知的寄存器索引的較低三個位(rrr、xxx以及bbb)進行編碼,由此可通過增加vex.r、vex.x以及vex.b來形成rrrr、xxxx以及bbbb。操作碼映射字段1115(vex字節(jié)1,位[4:0]–mmmmm)包括對隱含的前導操作碼字節(jié)進行編碼的內(nèi)容。w字段1164(vex字節(jié)2,位[7]–w)由記號vex.w表示,并且提供取決于該指令而不同的功能。vex.vvvv1120(vex字節(jié)2,位[6:3]-vvvv)的作用可包括如下:1)vex.vvvv編碼第一源寄存器操作數(shù)且對具有兩個或兩個以上源操作數(shù)的指令有效,第一源寄存器操作數(shù)以反轉(zhuǎn)(1補碼)形式被指定;2)vex.vvvv編碼目的地寄存器操作數(shù),目的地寄存器操作數(shù)針對特定向量位移以1補碼的形式被指定;或者3)vex.vvvv不編碼任何操作數(shù),保留該字段,并且應當包含1111b。如果vex.l1168大小字段(vex字節(jié)2,位[2]-l)=0,則它指示128位向量;如果vex.l=1,則它指示256位向量。前綴編碼字段1125(vex字節(jié)2,位[1:0]-pp)提供了用于基礎操作字段的附加位。實操作碼字段1130(字節(jié)3)也稱為操作碼字節(jié)。操作碼的一部分在該字段中被指定。modr/m字段1140(字節(jié)4)包括mod字段1142(位[7-6])、reg字段1144(位[5-3])和r/m字段1146(位[2-0])。reg字段1144的作用可包括如下:對目的地寄存器操作數(shù)或源寄存器操作數(shù)(rrrr中的rrr)進行編碼,或者被視為操作碼擴展且不用于對任何指令操作數(shù)進行編碼。r/m字段1146的作用可包括如下:對引用存儲器地址的指令操作數(shù)進行編碼,或者對目的地寄存器操作數(shù)或源寄存器操作數(shù)進行編碼。比例、索引、基址(sib)-比例字段1150(字節(jié)5)的內(nèi)容包括用于存儲器地址生成的ss1152(位[7-6])。先前已經(jīng)針對寄存器索引xxxx和bbbb參考了sib.xxx1154(位[5-3])和sib.bbb1156(位[2-0])的內(nèi)容。位移字段1162和立即數(shù)字段(imm8)1172包含地址數(shù)據(jù)。向量友好指令格式是適于向量指令(例如,存在專用于向量操作的特定字段)的指令格式。盡管描述了其中通過向量友好指令格式支持向量和標量運算兩者的實施例,但是替代實施例僅使用通過向量友好指令格式的向量運算。通用向量友好指令格式圖12a-12b是示出根據(jù)本發(fā)明的各實施例的通用向量友好指令格式及其指令模板的框圖。圖12a是示出根據(jù)本發(fā)明的實施例的通用向量友好指令格式及其a類指令模板的框圖;而圖12b是示出根據(jù)本發(fā)明的實施例的通用向量友好指令格式及其b類指令模板的框圖。具體而言,為通用向量友好指令格式1200定義了a類和b類指令模板,這兩類指令模板都包括無存儲器訪問1205指令模板和存儲器訪問1220指令模板。在向量友好指令格式的上下文中的術語“通用”指不束縛于任何專用指令集的指令格式。盡管將描述其中向量友好指令格式支持以下情況的本發(fā)明的實施例,即:64字節(jié)向量操作數(shù)長度(或大小)與32位(4字節(jié))或64位(8字節(jié))數(shù)據(jù)元素寬度(或大小)(并且由此,64字節(jié)向量由16個雙字大小的元素或者替代地8個四字大小的元素組成);64字節(jié)向量操作數(shù)長度(或大小)與16位(2字節(jié))或8位(1字節(jié))數(shù)據(jù)元素寬度(或大小);32字節(jié)向量操作數(shù)長度(或大小)與32位(4字節(jié))、64位(8字節(jié))、16位(2字節(jié))、或8位(1字節(jié))數(shù)據(jù)元素寬度(或大小);以及16字節(jié)向量操作數(shù)長度(或大小)與32位(4字節(jié))、64位(8字節(jié))、16位(2字節(jié))、或8位(1字節(jié))數(shù)據(jù)元素寬度(或大小);但是,替代實施例可支持更大、更小、和/或不同的向量操作數(shù)大小(例如,256字節(jié)向量操作數(shù))與更大、更小或不同的數(shù)據(jù)元素寬度(例如,128位(16字節(jié))數(shù)據(jù)元素寬度)。圖12a中的a類指令模板包括:1)在無存儲器訪問1205的指令模板內(nèi),示出無存儲器訪問的完全舍入控制型操作1210的指令模板以及無存儲器訪問的數(shù)據(jù)變換型操作1215的指令模板;以及2)在存儲器訪問1220的指令模板內(nèi),示出存儲器訪問的時效性的1225的指令模板和存儲器訪問的非時效性的1230的指令模板。圖12b中的b類指令模板包括:1)在無存儲器訪問1205的指令模板內(nèi),示出無存儲器訪問的寫掩碼控制的部分舍入控制型操作1212的指令模板以及無存儲器訪問的寫掩碼控制的vsize型操作1217的指令模板;以及2)在存儲器訪問1220的指令模板內(nèi),示出存儲器訪問的寫掩碼控制1227的指令模板。通用向量友好指令格式1200包括下文中按照圖12a-12b中所示出的順序列出的下列字段。格式字段1240-該字段中的特定值(指令格式標識符值)唯一地標識向量友好指令格式,并且由此標識指令在指令流中以向量友好指令格式出現(xiàn)。由此,該字段對于僅具有通用向量友好指令格式的指令集是不需要的,在這個意義上該字段是任選的?;A操作字段1242-其內(nèi)容區(qū)分不同的基礎操作。寄存器索引字段1244-其內(nèi)容直接或者通過地址生成來指定源和目的地操作數(shù)在寄存器中或者在存儲器中的位置。這些字段包括足夠數(shù)量的位以從pxq(例如,32x512、16x128、32x1024、64x1024)個寄存器堆中選擇n個寄存器。盡管在一個實施例中n可高達三個源和一個目的地寄存器,但是替代實施例可支持更多或更少的源和目的地寄存器(例如,可支持高達兩個源,其中這些源中的一個源還用作目的地,可支持高達三個源,其中這些源中的一個源還用作目的地,可支持高達兩個源和一個目的地)。修飾符(modifier)字段1246-其內(nèi)容將指定存儲器訪問的以通用向量指令格式出現(xiàn)的指令與不指定存儲器訪問的以通用向量指令格式出現(xiàn)的指令區(qū)分開;即在無存儲器訪問1205的指令模板與存儲器訪問1220的指令模板之間進行區(qū)分。存儲器訪問操作讀取和/或?qū)懭氲酱鎯ζ鲗哟?在一些情況下,使用寄存器中的值來指定源和/或目的地地址),而非存儲器訪問操作不這樣(例如,源和/或目的地是寄存器)。盡管在一個實施例中,該字段還在三種不同的方式之間選擇以執(zhí)行存儲器地址計算,但是替代實施例可支持更多、更少或不同的方式來執(zhí)行存儲器地址計算。擴充操作字段1250-其內(nèi)容區(qū)分除基礎操作以外還要執(zhí)行各種不同操作中的哪一個操作。該字段是針對上下文的。在本發(fā)明的一個實施例中,此字段被劃分為類字段1268、α字段1252以及β字段1254。擴充操作字段1250允許在單條指令而非2條、3條或4條指令中執(zhí)行多組共同的操作。比例字段1260-其內(nèi)容允許用于存儲器地址生成(例如,用于使用2比例*索引+基址的地址生成)的索引字段的內(nèi)容的按比例縮放。位移字段1262a-其內(nèi)容用作存儲器地址生成的一部分(例如,用于使用2比例*索引+基址+位移的地址生成)。位移因數(shù)字段1262b(注意,位移字段1262a直接在位移因數(shù)字段1262b上的并置指示使用一個或另一個)-其內(nèi)容用作地址生成的一部分,它指定通過存儲器訪問的大小(n)按比例縮放的位移因數(shù),其中n是存儲器訪問中的字節(jié)數(shù)量(例如,用于使用2比例*索引+基址+按比例縮放的位移的地址生成)。忽略冗余的低階位,并且因此將位移因數(shù)字段的內(nèi)容乘以存儲器操作數(shù)總大小(n)以生成要在計算有效地址時使用的最終位移。n的值由處理器硬件在運行時基于完整操作碼字段1274(稍候在本文中描述)和數(shù)據(jù)操縱字段1254c確定。位移字段1262a和位移因數(shù)字段1262b不用于無存儲器訪問1205指令模板,和/或不同的實施例可以實現(xiàn)僅一者或兩者都不實現(xiàn),從這個意義上說,位移字段1262a和位移因數(shù)字段1262b是任選的。數(shù)據(jù)元素寬度字段1264-其內(nèi)容區(qū)分將使用多個數(shù)據(jù)元素寬度中的哪一個(在一些實施例中用于所有指令,在其他實施例中僅用于指令中的一些)。如果支持僅一個數(shù)據(jù)元素寬度和/或使用操作碼的某一方面來支持數(shù)據(jù)元素寬度,則該字段是不需要的,在這個意義上該字段是任選的。寫掩碼字段1270-其內(nèi)容在每一數(shù)據(jù)元素位置的基礎上控制目的地向量操作數(shù)中的數(shù)據(jù)元素位置是否反映基礎操作和擴充操作的結(jié)果。a類指令模板支持合并-寫掩碼操作,而b類指令模板支持合并寫掩碼操作和歸零寫掩碼操作兩者。當合并時,向量掩碼允許在執(zhí)行任何操作期間保護目的地中的任何元素集免于更新(由基礎操作和擴充操作指定);在另一實施例中,保持其中對應掩碼位具有0的目的地的每一元素的舊值。相反,當歸零時,向量掩碼允許在執(zhí)行任何操作期間使目的地中的元素的任何集合歸零(由基礎操作和擴充操作指定);在一個實施例中,目的地的元素在對應掩碼位具有0值時被設為0。該功能的子集是控制執(zhí)行的操作的向量長度的能力(即,從第一個到最后一個要修改的元素的跨度),然而,被修改的元素不一定要是連續(xù)的。如此,寫掩碼字段1270允許部分向量操作,包括加載、存儲、算術、邏輯等等。盡管描述了其中寫掩碼字段1270的內(nèi)容選擇了多個寫掩碼寄存器中的包含要使用的寫掩碼的一個寫掩碼寄存器(并且由此寫掩碼字段1270的內(nèi)容間接地標識了要執(zhí)行的掩碼操作)的本發(fā)明的實施例,但是替代實施例相反或另外允許掩碼寫字段1270的內(nèi)容直接地指定要執(zhí)行的掩碼操作。立即數(shù)字段1272-其內(nèi)容允許對立即數(shù)的指定。該字段在實現(xiàn)不支持立即數(shù)的通用向量友好格式中不存在且在不使用立即數(shù)的指令中不存在,在這個意義上該字段是任選的。類字段1268-其內(nèi)容在不同類的指令之間進行區(qū)分。參考圖12a-b,該字段的內(nèi)容在a類和b類指令之間進行選擇。在圖12a-b中,使用圓角方形來指示在字段中存在專用值(例如,在圖12a-b中,分別是針對類字段1268的a類1268a和b類1268b)。a類指令模板在a類非存儲器訪問1205的指令模板的情況下,α字段1252被解釋為rs字段1252a,其內(nèi)容區(qū)分將執(zhí)行不同的擴充操作類型中的哪一種(例如,分別為無存儲器訪問的舍入型操作1210以及無存儲器訪問的數(shù)據(jù)變換型操作1215指令模板指定的舍入1252a.1和數(shù)據(jù)變換1252a.2),而β字段1254區(qū)別將執(zhí)行指定的類型的操作中的哪一個。在無存儲器訪問1205的指令模板中,比例字段1260、位移字段1262a以及位移比例字段1262b不存在。無存儲器訪問的指令模板-完全舍入控制型操作在無存儲器訪問的完整舍入控制型操作1210指令模板中,β字段1254被解釋為舍入控制字段1254a,其內(nèi)容提供靜態(tài)舍入操作。盡管在本發(fā)明的所描述的實施例中,舍入控制字段1254a包括抑制所有浮點異常(sae)字段1256和舍入操作控制字段1258,但是替代實施例可以支持將這兩個概念編碼為同一個字段,或僅具有這些概念/字段中的一個或另一個(例如,可以僅具有舍入操作控制字段1258)。sae字段1256-其內(nèi)容區(qū)分是否禁用異常事件報告;當sae字段1256的內(nèi)容指示啟用抑制時,給定的指令不報告任何種類的浮點異常標志,并且不喚起任何浮點異常處理程序。舍入操作控制字段1258-其內(nèi)容區(qū)分執(zhí)行一組舍入操作中的哪一個(例如,向上舍入、向下舍入、向零舍入、以及就近舍入)。如此,舍入操作控制字段1258允許逐指令地改變舍入模式。在其中處理器包括用于指定舍入模式的控制寄存器的本發(fā)明的一個實施例中,舍入操作控制字段1250的內(nèi)容優(yōu)先于該寄存器值。無存儲器訪問的指令模板-數(shù)據(jù)變換型操作在無存儲器訪問的數(shù)據(jù)變換型操作1215指令模板中,β字段1254被解釋為數(shù)據(jù)變換字段1254b,其內(nèi)容區(qū)分將執(zhí)行數(shù)個數(shù)據(jù)變換中的哪一個(例如,無數(shù)據(jù)變換、混合、廣播)。在a類存儲器訪問1220的指令模板的情況下,α字段1252被解釋為驅(qū)逐提示字段1252b,其內(nèi)容區(qū)分要使用驅(qū)逐提示中的哪一個(在圖12a中,為存儲器訪問時效性的1225指令模板和存儲器訪問非時效性的1230的指令模板分別指定時效性的1252b.1和非時效性的1252b.2),而β字段1254被解釋為數(shù)據(jù)操縱字段1254c,其內(nèi)容區(qū)分要執(zhí)行大量數(shù)據(jù)操縱操作(也稱為基元(primitive))中的哪一個(例如,無操縱、廣播、源的向上轉(zhuǎn)換、以及目的地的向下轉(zhuǎn)換)。存儲器訪問1220指令模板包括比例字段1260,并且任選地包括位移字段1262a或位移比例字段1262b。向量存儲器指令使用轉(zhuǎn)換支持來執(zhí)行來自存儲器的向量加載并將向量存儲到存儲器。如同尋常的向量指令,向量存儲器指令以數(shù)據(jù)元素式的方式與存儲器來回傳輸數(shù)據(jù),其中實際傳輸?shù)脑赜蛇x為寫掩碼的向量掩碼的內(nèi)容規(guī)定。存儲器訪問的指令模板-時效性的時效性的數(shù)據(jù)是可能足夠快地重新使用以從高速緩存受益的數(shù)據(jù)。然而,這是提示,且不同的處理器可以不同的方式實現(xiàn)它,包括完全忽略該提示。存儲器訪問的指令模板-非時效性的非時效性數(shù)據(jù)是不大可能足夠快地重復使用以從第1級高緩存中的高速緩存操作獲益且應當給予驅(qū)逐優(yōu)先級的數(shù)據(jù)。然而,這是提示,且不同的處理器可以不同的方式實現(xiàn)它,包括完全忽略該提示。b類指令模板在b類指令模板的情況下,α字段1252被解釋為寫掩碼控制(z)字段1252c,其內(nèi)容區(qū)分由寫掩碼字段1270控制的寫掩碼應當是合并還是歸零。在b類非存儲器訪問1205指令模板的情況下,β字段1254的部分被解釋為rl字段1257a,其內(nèi)容區(qū)分將執(zhí)行不同的擴充操作類型中的哪一種(例如,分別為無存儲器訪問的寫掩碼控制部分舍入控制型操作1212指令模板和無存儲器訪問的寫掩碼控制vsize型操作1217指令模板指定的舍入1257a.1和向量長度(vsize)1257a.2),而β字段1254的其余部分區(qū)分將執(zhí)行指定類型的操作中的哪一個。在無存儲器訪問1205的指令模板中,比例字段1260、位移字段1262a以及位移比例字段1262b不存在。在無存儲器訪問的寫掩碼控制部分舍入控制型操作1210指令模板中,β字段1254的其余部分被解釋為舍入操作字段1259a,并且異常事件報告被禁用(給定的指令不報告任何種類的浮點異常標志,并且不引發(fā)任何浮點異常處理程序)。舍入操作控制字段1259a-正如舍入操作控制字段1258,其內(nèi)容區(qū)分執(zhí)行一組舍入操作中的哪一個(例如,向上舍入、向下舍入、向零舍入、以及就近舍入)。由此,舍入操作控制字段1259a允許在每一指令的基礎上改變舍入模式。在其中處理器包括用于指定舍入模式的控制寄存器的本發(fā)明的一個實施例中,舍入操作控制字段1250的內(nèi)容優(yōu)先于該寄存器值。在無存儲器訪問的寫掩碼控制vsize型操作1217指令模板中,β字段1254的其余部分被解釋為向量長度字段1259b,其內(nèi)容區(qū)分將執(zhí)行數(shù)個數(shù)據(jù)向量長度中的哪一個(例如,128、256或512字節(jié))。在b類存儲器訪問1220指令模板的情況下,β字段1254的部分被解釋為廣播字段1257b,其內(nèi)容區(qū)分是否將執(zhí)行廣播類型數(shù)據(jù)操縱操作,而β字段1254的其余部分被解釋為向量長度字段1259b。存儲器訪問1220指令模板包括比例字段1260,并且任選地包括位移字段1262a或位移比例字段1262b。就通用向量友好指令格式1200而言,完整操作碼字段1274示出為包括格式字段1240、基礎操作字段1242以及數(shù)據(jù)元素寬度字段1264。盡管示出了其中完整操作碼字段1274包括所有這些字段的一個實施例,但是,在不是支持所有這些字段的實施例中,完全操作碼字段1274包括少于全部這些字段。完全操作碼字段1274提供操作代碼(操作碼)。擴充操作字段1250、數(shù)據(jù)元素寬度字段1264以及寫掩碼字段1270允許以通用向量友好指令格式逐指令地指定這些特征。寫掩碼字段和數(shù)據(jù)元素寬度字段的組合創(chuàng)建各種類型的指令,因為這些指令允許基于不同的數(shù)據(jù)元素寬度應用該掩碼。在a類和b類內(nèi)出現(xiàn)的各種指令模板在不同的情形下是有益的。在本發(fā)明的一些實施例中,不同處理器或者處理器內(nèi)的不同核可支持僅a類、僅b類、或者可支持兩類。舉例而言,旨在用于通用計算的高性能通用亂序核可僅支持b類,旨在主要用于圖形和/或科學(吞吐量)計算的核可僅支持a類,并且旨在用于兩者的核可支持兩者(當然,具有來自兩類的模板和指令的一些混合、但是并非來自兩類的所有模板和指令的核在本發(fā)明的范圍內(nèi))。同樣,單一處理器可包括多個核,所有核支持相同的類或者其中不同的核支持不同的類。舉例而言,在具有單獨的圖形和通用核的處理器中,圖形核中的旨在主要用于圖形和/或科學計算的一個核可僅支持a類,而通用核中的一個或多個可以是具有旨在用于通用計算的僅支持b類的亂序執(zhí)行和寄存器重命名的高性能通用核。不具有單獨的圖形核的另一處理器可包括既支持a類又支持b類的一個或多個通用有序或亂序核。當然,在本發(fā)明的不同實施例中,來自一類的特征也可在其他類中實現(xiàn)??墒挂愿呒壵Z言撰寫的程序成為(例如,及時編譯或者靜態(tài)編譯)各種不同的可執(zhí)行形式,包括:1)僅具有目標處理器支持以執(zhí)行的類的指令的形式;或者2)具有使用所有類的指令的不同組合而編寫的替代例程且具有選擇這些例程以基于由當前正在執(zhí)行代碼的處理器支持的指令而執(zhí)行的控制流代碼的形式。示例性專用向量友好指令格式圖13是示出根據(jù)本發(fā)明的多個實施例的示例性專用向量友好指令格式的框圖。圖13示出專用向量友好指令格式1300,其指定位置、大小、解釋、字段的次序、以及那些字段中的一些字段的值,在這個意義上向量友好指令格式1300是專用的。專用向量友好指令格式1300可以被用來擴展x86指令集,并且由此,這些字段中的一些與用于現(xiàn)有的x86指令集及其擴展(例如,avx)中的那些字段類似或相同。該格式保持與具有擴展的現(xiàn)有x86指令集的前綴編碼字段、實操作碼字節(jié)字段、modr/m字段、sib字段、位移字段、以及立即數(shù)字段一致。示出來自圖12的字段,來自圖13的字段映射到來自圖12的字段。應當理解,雖然出于說明的目的在通用向量友好指令格式1200的上下文中,本發(fā)明的實施例參考專用向量友好指令格式1300進行了描述,但是本發(fā)明不限于專用向量友好指令格式1300,聲明的地方除外。例如,通用向量友好指令格式1200構(gòu)想了各種字段的各種可能的大小,而專用向量友好指令格式1300示出為具有特定大小的字段。作為具體示例,盡管數(shù)據(jù)元素寬度字段1264示出為專用向量友好指令格式1300中的一個位字段,但是本發(fā)明不限于此(也就是說,通用向量友好指令格式1200構(gòu)想數(shù)據(jù)元素寬度字段1264的其他大小)。通用向量友好指令格式1200包括下文中按照圖13a中所示出的順序列出的字段。evex前綴(字節(jié)0-3)1302——以四字節(jié)形式進行編碼。格式字段1240(evex字節(jié)0,位[7:0])——第一字節(jié)(evex字節(jié)0)是格式字段1240,并且它包含0x62(在本發(fā)明的一個實施例中用于區(qū)分向量友好指令格式的唯一值)。第二-第四字節(jié)(evex字節(jié)1-3)包括提供專用能力的多個位字段。rex字段1305(evex字節(jié)1,位[7-5])-由evex.r位字段(evex字節(jié)1,位[7]–r)、evex.x位字段(evex字節(jié)1,位[6]–x)以及(1257bex字節(jié)1,位[5]–b)組成。evex.r、evex.x和evex.b位字段提供與對應vex位字段相同的功能,并且使用1補碼的形式進行編碼,即zmm0被編碼為1111b,zmm15被編碼為0000b。這些指令的其他字段對如在本領域中已知的寄存器索引的較低三個位(rrr、xxx、以及bbb)進行編碼,由此可通過增加evex.r、evex.x以及evex.b來形成rrrr、xxxx以及bbbb。rex’字段1210-這是rex’字段1210的第一部分,并且是用于對擴展的32個寄存器集合的較高16個或較低16個寄存器進行編碼的evex.r’位字段(evex字節(jié)1,位[4]–r’)。在本發(fā)明的一個實施例中,該位與以下指示的其他位一起以位反轉(zhuǎn)的格式存儲以(在公知x86的32位模式下)與實操作碼字節(jié)是62的bound指令進行區(qū)分,但是在modr/m字段(在下文中描述)中不接受mod字段中的值11;本發(fā)明的替代實施例不以反轉(zhuǎn)的格式存儲該指示的位以及下文中其他指示的位。值1用于對較低16個寄存器進行編碼。換言之,r'rrrr是通過組合來自其他字段的evex.r'、evex.r以及其他rrr而形成的。操作碼映射字段1315(evex字節(jié)1,位[3:0]–mmmm)–其內(nèi)容對隱含的前導操作碼字節(jié)(0f、0f38、或0f3)進行編碼。數(shù)據(jù)元素寬度字段1264(evex字節(jié)2,位[7]–w)-由記號evex.w表示。evex.w用于定義數(shù)據(jù)類型的粒度(大小)(32位數(shù)據(jù)元素或64位數(shù)據(jù)元素)。evex.vvvv1320(evex字節(jié)2,位[6:3]-vvvv)——evex.vvvv的作用可包括如下:1)evex.vvvv編碼第一源寄存器操作數(shù)且對具有兩個或兩個以上源操作數(shù)的指令有效,第一源寄存器操作數(shù)以反轉(zhuǎn)(1補碼)形式被指定;2)evex.vvvv編碼目的地寄存器操作數(shù),目的地寄存器操作數(shù)針對特定向量位移以1補碼的形式被指定;或者3)evex.vvvv不編碼任何操作數(shù),保留該字段,并且應當包含1111b。由此,evex.vvvv字段1320對以反轉(zhuǎn)(1補碼)的形式存儲的第一源寄存器說明符的4個低階位進行編碼。取決于該指令,額外不同的evex位字段用于將說明符大小擴展到32個寄存器。evex.u1268類字段(evex字節(jié)2,位[2]-u)——如果evex.u=0,則它指示a類或evex.u0;如果evex.u=1,則它指示b類或evex.u1。前綴編碼字段1325(evex字節(jié)2,位[1:0]-pp)-提供了用于基礎操作字段的附加位。除了對以evex前綴格式的傳統(tǒng)sse指令提供支持以外,這也具有緊縮simd前綴的益處(evex前綴只需要2位,而不是需要字節(jié)來表達simd前綴)。在一個實施例中,為了支持使用以傳統(tǒng)格式和以evex前綴格式兩者的simd前綴(66h、f2h、f3h)的傳統(tǒng)sse指令,將這些傳統(tǒng)simd前綴編碼為simd前綴編碼字段;在提供給解碼器的pla之前,在運行時可被擴展為傳統(tǒng)simd前綴(因此,pla可執(zhí)行傳統(tǒng)和evex格式的這些傳統(tǒng)指令,而無需修改)。雖然較新的指令可以直接將evex前綴編碼字段的內(nèi)容用作操作碼擴展,但是某些實施例為了一致性而以類似的方式擴展,但是允許由這些傳統(tǒng)simd前綴指定的不同含義。替代實施例可重新設計pla以支持2位simd前綴編碼,并且由此不需要擴展。α字段1252(evex字節(jié)3,位[7]–eh;也稱為evex.eh、evex.rs、evex.rl、evex.寫掩碼控制、以及evex.n;也以α示出)-如先前所述,該字段是針對上下文的。β字段1254(evex字節(jié)3,位[6:4]-sss,也稱為evex.s2-0、evex.r2-0、evex.rr1、evex.ll0、evex.llb;也以βββ示出)-如先前所述,該字段是針對上下文的。rex’字段1210-這是rex’字段的其余部分,并且是可用于對擴展的32個寄存器集合的較高16個或較低16個寄存器進行編碼的evex.v’位字段(evex字節(jié)3,位[3]–v’)。該位以位反轉(zhuǎn)的格式存儲。值1用于對較低16個寄存器進行編碼。換言之,v'vvvv是通過組合evex.v'、evex.vvvv而形成的。寫掩碼字段1270(evex字節(jié)3,位[2:0]-kkk)-其內(nèi)容指定寫掩碼寄存器中的寄存器索引,如先前所述。在本發(fā)明的一個實施例中,特定值evex.kkk=000具有暗示沒有寫掩碼用于特定指令的特殊行為(這可以各種方式實現(xiàn),包括使用硬連線成全部為1的寫掩碼或者旁路掩碼硬件的硬件來實現(xiàn))。實操作碼字段1330(字節(jié)4)也稱為操作碼字節(jié)。操作碼的一部分在該字段中被指定。modr/m字段1340(字節(jié)5)包括mod字段1342、reg字段1344以及r/m字段1346。如前所述,mod字段1342的內(nèi)容在存儲器訪問操作與非存儲器訪問操作之間進行區(qū)分。reg字段1344的作用可被歸結(jié)為兩種情形:對目的地寄存器操作數(shù)或源寄存器操作數(shù)進行編碼;或者被視為操作碼擴展且不用于對任何指令操作數(shù)進行編碼。r/m字段1346的作用可包括如下:對引用存儲器地址的指令操作數(shù)進行編碼,或者對目的地寄存器操作數(shù)或源寄存器操作數(shù)進行編碼。比例、索引、基址(sib)字節(jié)(字節(jié)6)-如先前所述的,比例字段1250的內(nèi)容用于存儲器地址生成。sib.xxx1354和sib.bbb1356-先前已經(jīng)針對寄存器索引xxxx和bbbb提及了這些字段的內(nèi)容。位移字段1262a(字節(jié)7-10)-當mod字段1342包含10時,字節(jié)7-10是位移字段1262a,并且它以與傳統(tǒng)32位位移(disp32)相同的方式工作,以字節(jié)粒度工作。位移因數(shù)字段1262b(字節(jié)7)-當mod字段1342包含01時,字節(jié)7是位移因數(shù)字段1262b。該字段的位置與傳統(tǒng)x86指令集8位位移(disp8)的位置相同,它以字節(jié)粒度工作。由于disp8是符號擴展的,因此它僅能在-128和127字節(jié)偏移量之間尋址;在64字節(jié)高速緩存行的方面,disp8使用可被設為僅四個真正有用的值-128、-64、0和64的8位;由于常常需要更大的范圍,所以使用disp32;然而,disp32需要4個字節(jié)。與disp8和disp32對比,位移因數(shù)字段1262b是disp8的重新解釋;當使用位移因數(shù)字段1262b時,通過將位移因數(shù)字段的內(nèi)容乘以存儲器操作數(shù)訪問的大小(n)來確定實際位移。這種類型的位移被稱為disp8*n。這減小了平均指令長度(用于位移的單個字節(jié),但是具有大得多的范圍)。這種壓縮位移基于有效位移是存儲器訪問的粒度的倍數(shù)的假設,并且由此地址偏移量的冗余低階位不需要被編碼。換句話說,位移因數(shù)字段1262b替代傳統(tǒng)x86指令集8位位移。由此,位移因數(shù)字段1262b以與x86指令集8位位移相同的方式(因此在modrm/sib編碼規(guī)則中沒有變化)進行編碼,唯一的不同在于,將disp8超載至disp8*n。換句話說,在編碼規(guī)則或編碼長度中沒有變化,而僅在通過硬件對位移值的解釋中有變化(這需要按存儲器操作數(shù)的大小按比例縮放位移量以獲得字節(jié)式地址偏移量)。立即數(shù)字段1272如先前所述那樣進行操作。完整操作碼字段圖13b是示出根據(jù)本發(fā)明的一個實施例的構(gòu)成完整操作碼字段1274的專用向量友好指令格式1300中的字段的框圖。具體而言,完整操作碼字段1274包括格式字段1240、基礎操作字段1242以及數(shù)據(jù)元素寬度(w)字段1264?;A操作字段1242包括前綴編碼字段1325、操作碼映射字段1315以及實操作碼字段1330。寄存器索引字段圖13c是示出根據(jù)本發(fā)明的一個實施例的構(gòu)成寄存器索引字段1244的專用向量友好指令格式1300中的字段的框圖。具體地,寄存器索引字段1244包括rex字段1305、rex’字段1310、modr/m.reg字段1344、modr/m.r/m字段1346、vvvv字段1320、xxx字段1354以及bbb字段1356。擴充操作字段圖13d是示出根據(jù)本發(fā)明的一個實施例的構(gòu)成擴充操作字段1250的專用向量友好指令格式1300中的字段的框圖。當類(u)字段1268包含0時,它表示evex.u0(a類1268a);當它包含1時,它表示evex.u1(b類1268b)。當u=0并且mod字段1342包含11(表示無存儲器訪問操作)時,α字段1252(evex字節(jié)3,位[7]-eh)被解釋為rs字段1252a。當rs字段1252a包含1(舍入1252a.1)時,β字段1254(evex字節(jié)3、位[6:4]-sss)被解釋為舍入控制字段1254a。舍入控制字段1254a包括一位的sae字段1256和兩位的舍入操作字段1258。當rs字段1252a包含0(數(shù)據(jù)變換1252a.2)時,β字段1254(evex字節(jié)3,位[6:4]-sss)被解釋為三位的數(shù)據(jù)變換字段1254b。當u=0且mod字段1342包含00、01或10(表示存儲器訪問操作)時,α字段1252(evex字節(jié)3,位[7]–eh)被解釋為驅(qū)逐提示(eh)字段1252b且β字段1254(evex字節(jié)3,位[6:4]-sss)被解釋為三位的數(shù)據(jù)操縱字段1254c。當u=1時,α字段1252(evex字節(jié)3,位[7]–eh)被解釋為寫掩碼控制(z)字段1252c。當u=1且mod字段1342包含11(表示無存儲器訪問操作)時,β字段1254的一部分(evex字節(jié)3,位[4]–s0)被解釋為rl字段1257a;當它包含1(舍入1257a.1)時,β字段1254的其余部分(evex字節(jié)3,位[6-5]–s2-1)被解釋為舍入操作字段1259a,而當rl字段1257a包含0(vsize1257.a2)時,β字段1254的其余部分(evex字節(jié)3,位[6-5]–s2-1)被解釋為向量長度字段1259b(evex字節(jié)3,位[6-5]–l1-0)。當u=1且mod字段1342包含00、01或10(表示存儲器訪問操作)時,β字段1254(evex字節(jié)3,位[6:4]–sss)被解釋為向量長度字段1259b(evex字節(jié)3,位[6-5]–l1-0)和廣播字段1257b(evex字節(jié)3,位[4]–b)。示例性寄存器架構(gòu)圖14是根據(jù)本發(fā)明的一個實施例的寄存器架構(gòu)1400的框圖。在所示出的實施例中,有32個512位寬的向量寄存器1410;這些寄存器被引用為zmm0到zmm31。較低的16個zmm寄存器的較低階256個位覆蓋在寄存器ymm0-16上。較低的16個zmm寄存器的較低階128個位(ymm寄存器的較低階128個位)覆蓋在寄存器xmm0-15上。專用向量友好指令格式1300按下表中所示方式對這些重疊寄存器堆進行操作。換句話說,向量長度字段1259b在最大長度與一個或多個其他較短長度之間進行選擇,其中每一這種較短長度是前一長度的一半,并且不具有向量長度字段1259b的指令模板對最大向量長度操作。此外,在一個實施例中,專用向量友好指令格式1300的b類指令模板對緊縮或標量單/雙精度浮點數(shù)據(jù)以及緊縮或標量整數(shù)數(shù)據(jù)操作。標量操作是對zmm/ymm/xmm寄存器中的最低階數(shù)據(jù)元素位置執(zhí)行的操作;取決于本實施例,較高階數(shù)據(jù)元素位置保持與在指令之前相同或者歸零。寫掩碼寄存器1415——在所示實施例中,有8個寫掩碼寄存器(k0到k7),每一個的大小都是64位。在替代實施例中,寫掩碼寄存器1415的大小為16位。如先前所述的,在本發(fā)明的一個實施例中,向量掩碼寄存器k0無法用作寫掩碼;當正常指示k0的編碼用作寫掩碼時,它選擇硬連線的寫掩碼0xffff,從而有效地停用該指令的寫掩碼操作。通用寄存器1425——在所示實施例中,有十六個64位通用寄存器,這些寄存器與現(xiàn)有的x86尋址模式一起使用來對存儲器操作數(shù)尋址。這些寄存器通過名稱rax、rbx、rcx、rdx、rbp、rsi、rdi、rsp以及r8到r15來引用。標量浮點棧寄存器堆(x87棧)1445,在其上重疊了mmx緊縮整數(shù)平坦寄存器堆1450——在所示出的實施例中,x87棧是用于使用x87指令集擴展來對32/64/80位浮點數(shù)據(jù)執(zhí)行標量浮點操作的八元素棧;而使用mmx寄存器來對64位緊縮整數(shù)數(shù)據(jù)執(zhí)行操作,以及為在mmx和xmm寄存器之間執(zhí)行的某些操作保存操作數(shù)。本發(fā)明的替代實施例可以使用較寬的或較窄的寄存器。另外,本發(fā)明的替代實施例可以使用更多、更少或不同的寄存器堆和寄存器。示例性核架構(gòu)、處理器和計算機架構(gòu)處理器核可以以不同方式、出于不同目的、在不同的處理器中實現(xiàn)。例如,這樣的核的實現(xiàn)可以包括:1)旨在用于通用計算的通用有序核;2)旨在用于通用計算的高性能通用亂序核;3)旨在主要用于圖形和/或科學(吞吐量)計算的專用核。不同處理器的實現(xiàn)可包括:1)包括旨在用于通用計算的一個或多個通用有序核和/或旨在用于通用計算的一個或多個通用亂序核的cpu;以及2)包括旨在主要用于圖形和/或科學(吞吐量)的一個或多個專用核的協(xié)處理器。這樣的不同處理器導致不同的計算機系統(tǒng)架構(gòu),其可包括:1)在與cpu分開的芯片上的協(xié)處理器;2)在與cpu相同的封裝中但分開的管芯上的協(xié)處理器;3)與cpu在相同管芯上的協(xié)處理器(在該情況下,這樣的協(xié)處理器有時被稱為諸如集成圖形和/或科學(吞吐量)邏輯等的專用邏輯,或被稱為專用核);以及4)可以將所描述的cpu(有時被稱為應用核或應用處理器)、以上描述的協(xié)處理器和附加功能包括在同一管芯上的芯片上系統(tǒng)。接著描述示例性核架構(gòu),隨后描述示例性處理器和計算機架構(gòu)。示例性核架構(gòu)有序和亂序核框圖圖15a是示出根據(jù)本發(fā)明的各實施例的示例性有序流水線和示例性的寄存器重命名的亂序發(fā)布/執(zhí)行流水線的框圖。圖15b是示出根據(jù)本發(fā)明的各實施例的要被包括在處理器中的有序架構(gòu)核的和示例性寄存器重命名的亂序發(fā)布/執(zhí)行架構(gòu)核的示例性實施例的框圖。圖15a-b中的實線框示出了有序流水線和有序核,而可選增加的虛線框示出了寄存器重命名的、亂序發(fā)布/執(zhí)行流水線和核。給定有序方面是亂序方面的子集的情況下,將描述亂序方面。在圖15a中,處理器流水線1500包括取出級1502、長度解碼級1504、解碼級1506、分配級1508、重命名級1510、調(diào)度(也稱為分派或發(fā)布)級1512、寄存器讀取/存儲器讀取級1514、執(zhí)行級1516、寫回/存儲器寫入級1518、異常處理級1522以及提交級1524。圖15b示出了包括耦合到執(zhí)行引擎單元1550的前端單元1530的處理器核1590,且執(zhí)行引擎單元和前端單元兩者都耦合到存儲器單元1570。核1590可以是精簡指令集計算(risc)核、復雜指令集計算(cisc)核、超長指令字(vliw)核或混合或替代核類型。作為又一選項,核1590可以是專用核,諸如例如網(wǎng)絡或通信核、緊縮引擎、協(xié)處理器核、通用計算圖形處理單元(gpgpu)核、圖形核、等等。前端單元1530包括耦合至指令高速緩存單元1534的分支預測單元1532,指令高速緩存單元1534耦合至指令轉(zhuǎn)換后備緩沖器(tlb)1536,指令轉(zhuǎn)換后備緩沖器1536耦合至指令取出單元1538,指令取出單元1538耦合至解碼單元1540。解碼單元1540(或解碼器)可解碼指令,并生成從原始指令解碼出的、或以其它方式反映原始指令的、或從原始指令導出的一個或多個微操作、微代碼進入點、微指令、其它指令、或其它控制信號作為輸出。解碼單元1540可使用各種不同的機制來實現(xiàn)。合適的機制的示例包括但不僅限于,查找表、硬件實現(xiàn)、可編程邏輯陣列(pla)、微代碼只讀存儲器(rom)等等。在一個實施例中,核1590包括(例如,在解碼單元1540中或以其他方式在前端單元1530內(nèi)的)用于存儲某些宏指令的微代碼的微代碼rom或其他介質(zhì)。解碼單元1540耦合至執(zhí)行引擎單元1550中的重命名/分配器單元1552。執(zhí)行引擎單元1550包括耦合至引退單元1554的重命名/分配器單元1552以及一組一個或多個調(diào)度器單元1556。調(diào)度器單元1556表示任意數(shù)量的不同調(diào)度器,包括預留站、中心指令窗等。調(diào)度器單元1556耦合到物理寄存器堆單元1558。每個物理寄存器堆單元1558表示一個或多個物理寄存器堆,其中不同的物理寄存器堆存儲一種或多種不同的數(shù)據(jù)類型,諸如標量整數(shù)、標量浮點、緊縮整數(shù)、緊縮浮點、向量整數(shù)、向量浮點、狀態(tài)(例如,作為要執(zhí)行的下一指令的地址的指令指針)等。在一個實施例中,物理寄存器堆單元1558包括向量寄存器單元、寫掩碼寄存器單元和標量寄存器單元。這些寄存器單元可以提供架構(gòu)向量寄存器、向量掩碼寄存器、和通用寄存器。物理寄存器堆單元1558與引退單元1554重疊以示出可以用來實現(xiàn)寄存器重命名和亂序執(zhí)行的各種方式(例如,使用重新排序緩沖器和引退寄存器堆;使用將來的文件、歷史緩沖器和引退寄存器堆;使用寄存器映射和寄存器池等等)。引退單元1554和物理寄存器堆單元1558耦合到執(zhí)行群集1560。執(zhí)行群集1560包括一組一個或多個執(zhí)行單元1562和一組一個或多個存儲器訪問單元1564。執(zhí)行單元1562可以對各種類型的數(shù)據(jù)(例如,標量浮點、緊縮整數(shù)、緊縮浮點、向量整型、向量浮點)執(zhí)行各種操作(例如,移位、加法、減法、乘法)。盡管一些實施例可以包括專用于特定功能或功能組的數(shù)個執(zhí)行單元,但是其他實施例可以僅包括一個執(zhí)行單元或全部都執(zhí)行所有功能的多個執(zhí)行單元。調(diào)度器單元1556、物理寄存器堆單元1558以及執(zhí)行群集1560示出為可能是復數(shù)個,因為某些實施例為某些類型的數(shù)據(jù)/操作創(chuàng)建單獨的流水線(例如,各自都具有其自身的調(diào)度器單元、物理寄存器堆單元和/或執(zhí)行群集的標量整數(shù)流水線、標量浮點/緊縮整數(shù)/緊縮浮點/向量整數(shù)/向量浮點流水線和/或存儲器訪問流水線——并且在單獨的存儲器訪問流水線的情況下,實現(xiàn)了其中僅此流水線的執(zhí)行群集具有存儲器訪問單元1564的某些實施例)。還應當理解,在使用分開的流水線的情況下,這些流水線中的一個或多個可以是亂序發(fā)布/執(zhí)行的,而其余的是有序的。存儲器訪問單元1564的集合耦合到存儲器單元1570,該存儲器單元包括耦合到數(shù)據(jù)高速緩存單元1574的數(shù)據(jù)tlb單元1572,其中數(shù)據(jù)高速緩存單元耦合到第2級(l2)高速緩存單元1576。在一個示例性實施例中,存儲器訪問單元1564可包括加載單元、存儲地址單元和存儲數(shù)據(jù)單元,其中的每一個均耦合至存儲器單元1570中的數(shù)據(jù)tlb單元1572。指令高速緩存單元1534還耦合到存儲器單元1570中的第2級(l2)高速緩存單元1576。l2高速緩存單元1576被耦合到一個或多個其他級的高速緩存,并最終被耦合到主存儲器。作為示例,示例性寄存器重命名的、亂序發(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。核1590可支持一個或多個指令集(例如,x86指令集(具有與較新版本一起添加的一些擴展);加利福尼亞州桑尼維爾市的mips技術公司的mips指令集;加利福尼州桑尼維爾市的arm控股的arm指令集(具有諸如neon等可選附加擴展)),其中包括本文中描述的各指令。在一個實施例中,核1590包括用于支持緊縮數(shù)據(jù)指令集擴展(例如,avx1、avx2)的邏輯,進而允許由許多多媒體應用使用的操作通過使用緊縮數(shù)據(jù)來執(zhí)行。應當理解,核可以支持多線程操作(執(zhí)行兩個或更多個并行的操作或線程的集合),并且可以按各種方式來完成該多線程操作,各種方式包括時分多線程操作、同步多線程操作(其中,單個物理核為物理核正在同步進行多線程操作的多個線程中的每一個線程提供邏輯核)或其組合(例如,時分取出和解碼以及此后諸如利用超線程技術的同步多線程操作)。盡管在亂序執(zhí)行的上下文中描述了寄存器重命名,但是,應當理解,寄存器重命名可以用于有序架構(gòu)中。盡管所示出的處理器的實施例還包括分開的指令和數(shù)據(jù)高速緩存單元1534/1574以及共享l2高速緩存單元1576,但替代實施例可以具有用于指令和數(shù)據(jù)兩者的單個內(nèi)部高速緩存,諸如例如第1級(l1)內(nèi)部高速緩存或多個級別的內(nèi)部高速緩存。在一些實施例中,系統(tǒng)可以包括內(nèi)部高速緩存以及在核和/或處理器外部的外部高速緩存的組合?;蛘?,所有高速緩存都可以在核和/或處理器的外部。具體的示例性有序核架構(gòu)圖16a-b示出更具體的示例性有序核架構(gòu)的框圖,該核將是芯片中的多個邏輯塊中的一個(包括相同類型和/或不同類型的其他核)。根據(jù)應用,這些邏輯塊通過高帶寬的互連網(wǎng)絡(例如,環(huán)形網(wǎng)絡)與一些固定的功能邏輯、存儲器i/o接口和其它必要的i/o邏輯通信。圖16a是根據(jù)本發(fā)明的各實施例的單個處理器核以及它與管芯上互連網(wǎng)絡1602的連接及其第2級(l2)高速緩存的本地子集1604的框圖。在一個實施例中,指令解碼器1600支持具有緊縮數(shù)據(jù)指令集擴展的x86指令集。l1高速緩存1606允許對進入標量和向量單元中的高速緩存存儲器的低等待時間訪問。盡管在一個實施例中(為了簡化設計),標量單元1608和向量單元1610使用分開的寄存器集合(分別為標量寄存器1612和向量寄存器1614),并且在這些寄存器之間轉(zhuǎn)移的數(shù)據(jù)被寫入到存儲器并隨后從第1級(l1)高速緩存1606讀回,但是本發(fā)明的替代實施例可以使用不同的方法(例如使用單個寄存器集合或包括允許數(shù)據(jù)在這兩個寄存器堆之間傳輸而無需被寫入和讀回的通信路徑)。l2高速緩存的本地子集1604是全局l2高速緩存的一部分,該全局l2高速緩存被劃分成多個分開的本地子集,即每個處理器核一個本地子集。每個處理器核具有到其自己的l2高速緩存的本地子集1604的直接訪問路徑。被處理器核讀出的數(shù)據(jù)被存儲在其l2高速緩存子集1604中,并且可以與其它處理器核訪問其自己的本地l2高速緩存子集并行地被快速訪問。被處理器核寫入的數(shù)據(jù)被存儲在其自己的l2高速緩存子集1604中,并在必要的情況下從其它子集轉(zhuǎn)儲清除。環(huán)形網(wǎng)絡確保共享數(shù)據(jù)的一致性。環(huán)形網(wǎng)絡是雙向的,以允許諸如處理器核、l2高速緩存和其它邏輯塊之類的代理在芯片內(nèi)彼此通信。每個環(huán)形數(shù)據(jù)路徑為每個方向1012位寬。圖16b是根據(jù)本發(fā)明的各實施例的圖16a中的處理器核的一部分的展開圖。圖16b包括l1高速緩存1604的l1數(shù)據(jù)高速緩存1606a部分,以及關于向量單元1610和向量寄存器1614的更多細節(jié)。具體地說,向量單元1610是16寬向量處理單元(vpu)(見16寬alu1628),該單元執(zhí)行整型、單精度浮點以及雙精度浮點指令中的一個或多個。該vpu通過混合單元1620支持對寄存器輸入的混合、通過數(shù)值轉(zhuǎn)換單元1622a-b支持數(shù)值轉(zhuǎn)換、并通過復制單元1624支持對存儲器輸入的復制。寫掩碼寄存器1626允許斷言所得的向量寫入。具有集成存儲器控制器和圖形器件的處理器圖17是根據(jù)本發(fā)明的各實施例的可具有多于一個的核、可具有集成存儲器控制器、以及可具有集成圖形器件的處理器1700的框圖。圖17中的實線框示出具有單一核1702a、系統(tǒng)代理1710、一組一個或多個總線控制器單元1716的處理器1700,而任選增加的虛線框示出具有多個核1702a-n、系統(tǒng)代理單元1710中的一組一個或多個集成存儲器控制器單元1714、以及專用邏輯1708的替換處理器1700。因此,處理器1700的不同實現(xiàn)可包括:1)cpu,其中專用邏輯1708是集成圖形和/或科學(吞吐量)邏輯(其可包括一個或多個核),并且核1702a-n是一個或多個通用核(例如,通用的有序核、通用的亂序核、這兩者的組合);2)協(xié)處理器,其中核1702a-n是旨在主要用于圖形和/或科學(吞吐量)的多個專用核;以及3)協(xié)處理器,其中核1702a-n是多個通用有序核。因此,處理器1700可以是通用處理器、協(xié)處理器或?qū)S锰幚砥?,諸如例如網(wǎng)絡或通信處理器、緊縮引擎、圖形處理器、gpgpu(通用圖形處理單元)、高吞吐量的集成眾核(mic)協(xié)處理器(包括30個或更多核)、或嵌入式處理器等。該處理器可以被實現(xiàn)在一個或多個芯片上。處理器1700可以是一個或多個襯底的一部分,和/或可以使用諸如例如bicmos、cmos或nmos等的多個工藝技術中的任何一個技術將該處理器實現(xiàn)在一個或多個襯底上。存儲器層次結(jié)構(gòu)包括核內(nèi)的一個或多個層級的高速緩存、一組或一個或多個共享高速緩存單元1706以及耦合到集成存儲器控制器單元1714的集合的外部存儲器(未示出)。共享高速緩存單元1706的集合可以包括一個或多個中級高速緩存,諸如,第2級(l2)、第3級(l3)、第4級(l4),或其他層級的高速緩存,末級高速緩存(llc),和/或上述各項的組合。盡管在一個實施例中,基于環(huán)的互連單元1712將集成圖形邏輯1708、共享高速緩存單元1706的集合以及系統(tǒng)代理單元1710/集成存儲器控制器單元1714互連,但替代實施例可使用任何數(shù)量的公知技術來將這些單元互連。在一個實施例中,可以維護一個或多個高速緩存單元1706和核1702-a-n之間的一致性。在一些實施例中,核1702a-n中的一個或多個能夠?qū)崿F(xiàn)多線程。系統(tǒng)代理1710包括協(xié)調(diào)和操作核1702a-n的那些組件。系統(tǒng)代理單元1710可包括例如功率控制單元(pcu)和顯示單元。pcu可以是或可包括用于調(diào)節(jié)核1702a-n和集成圖形邏輯1708的功率狀態(tài)所需的邏輯和組件。顯示單元用于驅(qū)動一個或多個從外部連接的顯示器。核1702a-n在架構(gòu)指令集方面可以是同構(gòu)的或異構(gòu)的;即,這些核1702a-n中的兩個或更多個核可能能夠執(zhí)行相同的指令集,而其它核可能能夠執(zhí)行該指令集的僅僅子集或不同的指令集。示例性計算機架構(gòu)圖18-21是示例性計算機架構(gòu)的框圖。本領域已知的對膝上型設備、臺式機、手持pc、個人數(shù)字助理、工程工作站、服務器、網(wǎng)絡設備、網(wǎng)絡集線器、交換機、嵌入式處理器、數(shù)字信號處理器(dsp)、圖形設備、視頻游戲設備、機頂盒、微控制器、蜂窩電話、便攜式媒體播放器、手持設備以及各種其它電子設備的其它系統(tǒng)設計和配置也是合適的。一般地,能夠包含本文中所公開的處理器和/或其它執(zhí)行邏輯的多個系統(tǒng)或電子設備一般都是合適的?,F(xiàn)在參見圖18,所示是根據(jù)本發(fā)明的一個實施例的系統(tǒng)1800的框圖。系統(tǒng)1800可以包括一個或多個處理器1810、1815,這些處理器耦合到控制器中樞1820。在一個實施例中,控制器中樞1820包括圖形存儲器控制器中樞(gmch)1890和輸入/輸出中樞(ioh)1850(其可以在分開的芯片上);gmch1890包括存儲器和圖形控制器,存儲器1840和協(xié)處理器1845耦合到該存儲器和圖形控制器;ioh1850將輸入/輸出(i/o)設備1860耦合到gmch1890??商娲兀鎯ζ骱蛨D形控制器中的一個或兩個在處理器(如本文中所描述的)內(nèi)集成,存儲器1840和協(xié)處理器1845直接耦合到處理器1810、以及在單一芯片中具有ioh1850的控制器中樞1820。在圖18中以虛線表示附加的處理器1815的可選的性質(zhì)。每個處理器1810、1815可包括本文中描述的處理核中的一個或多個,并且可以是處理器1700的某一版本。存儲器1840可以是例如動態(tài)隨機存取存儲器(dram)、相變存儲器(pcm)或這兩者的組合。對于至少一個實施例,控制器中樞1820經(jīng)由諸如前端總線(fsb)之類的多分支總線、諸如快速通道互連(qpi)之類的點對點接口、或者類似的連接1895與處理器1810、1815進行通信。在一個實施例中,協(xié)處理器1845是專用處理器,諸如例如高吞吐量mic處理器、網(wǎng)絡或通信處理器、緊縮引擎、圖形處理器、gpgpu、或嵌入式處理器等等。在一個實施例中,控制器中樞1820可以包括集成圖形加速器。在物理資源1810、1815之間會存在包括架構(gòu)、微架構(gòu)、熱、功耗特性等的一系列品質(zhì)度量方面的各種差異。在一個實施例中,處理器1810執(zhí)行控制一般類型的數(shù)據(jù)處理操作的指令。協(xié)處理器指令可嵌入在這些指令中。處理器1810將這些協(xié)處理器指令識別為應當由附連的協(xié)處理器1845執(zhí)行的類型。因此,處理器1810在協(xié)處理器總線或者其它互連上將這些協(xié)處理器指令(或者表示協(xié)處理器指令的控制信號)發(fā)布到協(xié)處理器1845。協(xié)處理器1845接受并執(zhí)行所接收的協(xié)處理器指令。現(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。處理器1970和1980被示為分別包括集成存儲器控制器(imc)單元1972和1982。處理器1970還包括點對點(p-p)接口1976和1978作為其總線控制器單元的部分;類似地,第二處理器1980包括p-p接口1986和1988。處理器1970、1980可以經(jīng)由使用點對點(p-p)接口電路1978、1988的p-p接口1950來交換信息。如圖19所示,imc1972和1982將處理器耦合至相應的存儲器,即,存儲器1932和存儲器1934,它們可以是本地連接到相應的處理器的主存儲器的部分。處理器1970、1980可各自經(jīng)由使用點對點接口電路1976、1994、1986、1998的各個p-p接口1952、1954與芯片組1990交換信息。芯片組1990可任選地經(jīng)由高性能接口1939與協(xié)處理器1938交換信息。在一個實施例中,協(xié)處理器1938是專用處理器,諸如例如高吞吐量mic處理器、網(wǎng)絡或通信處理器、緊縮引擎、圖形處理器、gpgpu、或嵌入式處理器等等。共享高速緩存(未示出)可以被包括在任一處理器之內(nèi),或被包括在兩個處理器外部但仍經(jīng)由p-p互連與這些處理器連接,使得如果將某處理器置于低功率模式時,可將任一處理器或兩個處理器的本地高速緩存信息存儲在該共享高速緩存中。芯片組1990可經(jīng)由接口1996耦合至第一總線1916。在一個實施例中,第一總線1916可以是外圍組件互連(pci)總線,或諸如pciexpress總線或其它第三代i/o互連總線之類的總線,但本發(fā)明的范圍并不受此限制。如圖19所示,各種i/o設備1914可以連同總線橋1918被耦合至第一總線1916,總線橋1918將第一總線1916耦合至第二總線1920。在一個實施例中,諸如協(xié)處理器、高吞吐量mic處理器、gpgpu的處理器、加速器(諸如例如圖形加速器或數(shù)字信號處理(dsp)單元)、現(xiàn)場可編程門陣列或任何其它處理器的一個或多個附加處理器1915耦合到第一總線1916。在一個實施例中,第二總線1920可以是低引腳數(shù)(lpc)總線。在一個實施例中,各種設備可以耦合到第二總線1920,各種設備包括例如,鍵盤和/或鼠標1922、通信設備1927以及存儲單元1928,存儲單元1928諸如,可包括指令/代碼和數(shù)據(jù)1930的磁盤驅(qū)動器或其他大容量存儲設備。此外,音頻i/o1924可以被耦合至第二總線1920。注意,其他架構(gòu)是可能的。例如,系統(tǒng)可實現(xiàn)多分支總線或者其他此類架構(gòu),而不是圖19中的點對點架構(gòu)?,F(xiàn)在參考圖20,所示為根據(jù)本發(fā)明的實施例的更具體的第二示例性系統(tǒng)2000的框圖。圖19和20中的相似元件具有相似的附圖標記,并且圖19的特定方面已經(jīng)從圖20中省略以避免混淆圖20的其他方面。圖20示出處理器1970、1980可以分別包括集成存儲器和i/o控制邏輯(“cl”)1972和1982。因此,cl1972、1982包括集成存儲器控制器單元并包括i/o控制邏輯。圖20示出不僅存儲器1932、1934耦合到cl1972、1982,而且i/o設備2014也耦合到控制邏輯1972、1982。傳統(tǒng)i/o設備2015被耦合至芯片組1990。現(xiàn)在參照圖21,所示出的是根據(jù)本發(fā)明一個實施例的soc2100的框圖。圖17中相似的部件具有同樣的附圖標記。另外,虛線框是更先進的soc的可選特征。在圖21中,互連單元2102被耦合至:應用處理器2110,該應用處理器包括一個或多個核202a-n的集合以及共享高速緩存單元1706;系統(tǒng)代理單元1710;總線控制器單元1716;集成存儲器控制器單元1714;一組或一個或多個協(xié)處理器2120,其可包括集成圖形邏輯、圖像處理器、音頻處理器和視頻處理器;靜態(tài)隨機存取存儲器(sram)單元2130;直接存儲器存取(dma)單元2132;以及用于耦合至一個或多個外部顯示器的顯示單元2140。在一個實施例中,協(xié)處理器2120包括專用處理器,諸如例如網(wǎng)絡或通信處理器、緊縮引擎、gpgpu、高吞吐量mic處理器、或嵌入式處理器等等。本文公開的機制的各實施例可以被實現(xiàn)在硬件、軟件、固件或這些實現(xiàn)方法的組合中。本發(fā)明的實施例可實現(xiàn)為在可編程系統(tǒng)上執(zhí)行的計算機程序或程序代碼,該可編程系統(tǒng)包括至少一個處理器、存儲系統(tǒng)(包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設備以及至少一個輸出設備??蓪⒊绦虼a(諸如圖19中示出的代碼1930)應用于輸入指令,以執(zhí)行本文描述的各功能并生成輸出信息??梢园匆阎绞綄⑤敵鲂畔糜谝粋€或多個輸出設備。為了本申請的目的,處理系統(tǒng)包括具有諸如例如數(shù)字信號處理器(dsp)、微控制器、專用集成電路(asic)或微處理器之類的處理器的任何系統(tǒng)。程序代碼可以用高級程序化語言或面向?qū)ο蟮木幊陶Z言來實現(xiàn),以便與處理系統(tǒng)通信。在需要時,也可用匯編語言或機器語言來實現(xiàn)程序代碼。事實上,本文中描述的機制不限于任何特定編程語言的范圍。在任一情形下,該語言可以是編譯語言或解釋語言。至少一個實施例的一個或多個方面可以由存儲在機器可讀介質(zhì)上的表示性指令來實現(xiàn),指令表示處理器中的各種邏輯,指令在被機器讀取時使得該機器制作用于執(zhí)行本文所述的技術的邏輯。被稱為“ip核”的這些表示可以被存儲在有形的機器可讀介質(zhì)上,并被提供給多個客戶或生產(chǎn)設施以加載到實際制造該邏輯或處理器的制造機器中。這樣的機器可讀存儲介質(zhì)可以包括但不限于通過機器或設備制造或形成的物品的非瞬態(tài)的有形安排,其包括存儲介質(zhì),諸如:硬盤;任何其它類型的盤,包括軟盤、光盤、緊致盤只讀存儲器(cd-rom)、緊致盤可重寫(cd-rw)以及磁光盤;半導體器件,例如只讀存儲器(rom)、諸如動態(tài)隨機存取存儲器(dram)和靜態(tài)隨機存取存儲器(sram)之類的隨機存取存儲器(ram)、可擦除可編程只讀存儲器(eprom)、閃存、電可擦除可編程只讀存儲器(eeprom);相變存儲器(pcm);磁卡或光卡;或適于存儲電子指令的任何其它類型的介質(zhì)。因此,本發(fā)明的各實施例還包括非暫態(tài)有形機器可讀介質(zhì),該介質(zhì)包含指令或包含設計數(shù)據(jù),諸如硬件描述語言(hdl),它定義本文中描述的結(jié)構(gòu)、電路、裝置、處理器和/或系統(tǒng)特征。這些實施例也被稱為程序產(chǎn)品。仿真(包括二進制變換、代碼變形等)在一些情況下,指令轉(zhuǎn)換器可用來將指令從源指令集轉(zhuǎn)換至目標指令集。例如,指令轉(zhuǎn)換器可以變換(例如使用靜態(tài)二進制變換、包括動態(tài)編譯的動態(tài)二進制變換)、變形、仿真或以其它方式將指令轉(zhuǎn)換成將由核來處理的一個或多個其它指令。指令轉(zhuǎn)換器可以用軟件、硬件、固件、或其組合實現(xiàn)。指令轉(zhuǎn)換器可以在處理器上、在處理器外、或者部分在處理器上且部分在處理器外。圖22是根據(jù)本發(fā)明的各實施例的對照使用軟件指令轉(zhuǎn)換器將源指令集中的二進制指令轉(zhuǎn)換成目標指令集中的二進制指令的框圖。在所示的實施例中,指令轉(zhuǎn)換器是軟件指令轉(zhuǎn)換器,但作為替代,該指令轉(zhuǎn)換器可以用軟件、固件、硬件或其各種組合來實現(xiàn)。圖22示出可以使用x86編譯器2204來編譯高級語言2202形式的程序以生成可由具有至少一個x86指令集核的處理器2216原生地執(zhí)行的x86二進制代碼2206。具有至少一個x86指令集核的處理器2216表示能通過兼容地執(zhí)行或以其他方式處理以下內(nèi)容來執(zhí)行與具有至少一個x86指令集核的英特爾處理器基本相同的功能的任何處理器:(1)英特爾x86指令集核的指令集的本質(zhì)部分,或(2)目標為在具有至少一個x86指令集核的英特爾處理器上運行以實現(xiàn)與具有至少一個x86指令集核的英特爾處理器基本相同的結(jié)果的應用或其他軟件的目標代碼版本。x86編譯器2204表示用于生成x86二進制代碼2206(例如,目標代碼)的編譯器,該x86二進制代碼2206可利用或不利用附加的鏈路處理而在具有至少一個x86指令集核的處理器2216上執(zhí)行。類似地,圖22示出可以使用替代的指令集編譯器2208來編譯高級語言2202的程序以生成可由不具有至少一個x86指令集核的處理器2214(例如,具有執(zhí)行加利福尼亞州桑尼維爾市的mips技術公司的mips指令集和/或執(zhí)行加利福尼州桑尼維爾市的arm控股公司的arm指令集的核的處理器)原生地執(zhí)行的替代的指令集二進制代碼2210。指令轉(zhuǎn)換器2212用于將x86二進制代碼2206轉(zhuǎn)換成可以由不具有x86指令集核的處理器2214原生地執(zhí)行的代碼。該轉(zhuǎn)換后的代碼不大可能與替代的指令集二進制代碼2210相同,因為能夠這樣做的指令轉(zhuǎn)換器難以制造;然而,轉(zhuǎn)換后的代碼將完成通用操作,并且將由來自替代指令集的指令構(gòu)成。因此,指令轉(zhuǎn)換器2212表示軟件、固件、硬件或它們的組合,這些軟件、固件、硬件或它們的組合通過仿真、模擬或任何其他過程允許不具有x86指令集處理器或核的處理器或其他電子設備執(zhí)行x86二進制代碼2206。也可以可選地將針對圖5-10中任意一個所描述的組件、特征和細節(jié)應用于圖3-4中的任意一個。此外,針對任一裝置所描述的組件、特征、以及細節(jié)還可任選地應用于在實施例中可由這種裝置和/或使用這種裝置執(zhí)行的任一方法中。可將本文所述的處理器中的任意一個包括在本文所公開的芯片上系統(tǒng)(soc)和/或計算機系統(tǒng)的任意一個中和/或其他計算機系統(tǒng)(例如,臺式計算機或手機)和/或其他soc中。在一些實施例中,計算機系統(tǒng)可以包括互連、與該互連耦合的處理器,以及與該互連耦合的動態(tài)隨機存取存儲器(dram)?;蛘?,替代dram,可使用不需要被刷新的其他類型的易失性存儲器,或者可使用閃存??梢匀芜x地與soc中的處理器被集成或包括在管芯上或在芯片上的其他組件的示例包括但不限于存儲器控制器、存儲器(例如,只讀存儲器(rom)、隨機存取存儲器(ram)、和/或閃存)、圖形設備(例如,圖形處理單元(gpu)、圖形核、或圖形處理器等等)、數(shù)字信號處理器、圖像信號處理器、液晶顯示器(lcd)或其他顯示控制器、以及為一個或多個外部接口(例如,通用串行總線(usb)、通用異步接收機/發(fā)射機(uart)、火線、以太網(wǎng)、藍牙等等)提供控制的一個或多個輸入和/或輸出(i/o)控制器。用于手機的soc還可以任選地包括長期演進(lte)調(diào)制解調(diào)器、傳感器引擎、衛(wèi)星導航系統(tǒng)控制器(例如,全球定位衛(wèi)星(gps)、伽利略、和/或北斗)。在一些實施例中,指令可具有本文所公開的指令格式的特征或細節(jié),但是這并非是必需的。在說明書和權利要求書中,可能已經(jīng)使用了術語“耦合的”和/或“連接的”及其衍生詞。這些術語不旨在互為同義詞。相反,在多個實施例中,“連接的”用于指示兩個或更多元件彼此直接物理和/或電接觸。“耦合的”可意味著兩個或更多個元件彼此直接物理和/或電接觸。然而,“耦合的”也可意味著兩個或更多個元件彼此并不直接接觸,但是仍然彼此協(xié)作或相互作用。例如,執(zhí)行單元可通過一個或多個中間組件與寄存器和/或解碼單元耦合。在附圖中,箭頭用于示出連接和耦合??赡芤呀?jīng)使用了術語“和/或”。如本文中所使用的,術語“和/或”意思是一個或另一個或兩者(例如,a和/或b意思是:a或b,或者a和b兩者)。在以上描述中,為了提供對實施例的透徹理解,已闡述了特定的細節(jié)。然而,可以在沒有這些特定細節(jié)中的一些的情況下來實踐其他實施例。本發(fā)明的范圍不是由以上所提供的具體示例來確定的,而僅由所附權利要求確定。在其他實例中,已經(jīng)以框圖形式和/或沒有細節(jié)的形式示出了公知的電路、結(jié)構(gòu)、設備和操作,以避免使對說明書的理解變得模糊。在認為合適的地方,已在諸附圖之間重復了附圖標記或附圖標記的結(jié)尾部分以指示可能可選地具有類似或相同特性的對應或類似的元件,除非另外指定或是顯而易見的。某些操作可由硬件組件執(zhí)行,或者能以機器可執(zhí)行或電路可執(zhí)行指令來具體化,這些機器可執(zhí)行指令或電路可執(zhí)行指令可用于使得和/或者導致機器、電路、或硬件組件(例如,處理器、處理器的部分、電路等)利用執(zhí)行這些操作的指令來編程。這些操作還可任選地由硬件和軟件的組合執(zhí)行。處理器、機器、電路或硬件可包括專用或特定電路或其他邏輯(例如,可能與固件和/或軟件組合的硬件),該專用或特定電路或其他邏輯用于執(zhí)行和/或處理指令,并且響應于該指令而存儲結(jié)果。一些實施例包括制品(例如,計算機程序產(chǎn)品),所述制品包括機器可讀介質(zhì)。該介質(zhì)可包括以機器可讀形式提供(例如,存儲)信息的機制。機器可讀介質(zhì)可提供或在其上存儲有指令或指令序列,如果和/或當由機器執(zhí)行所述指令或指令序列時,所述指令或指令序列可用于使所述機器執(zhí)行和/或?qū)е滤鰴C器執(zhí)行本文中所公開的一種或多種操作、方法或技術。在一些實施例中,機器可讀介質(zhì)可包括非暫態(tài)機器可讀存儲介質(zhì)。例如,非暫態(tài)機器可讀存儲介質(zhì)可包括,軟盤、光存儲介質(zhì)、光盤、光學數(shù)據(jù)存儲設備、cd-rom、磁盤、磁光盤、只讀存儲器(rom)、可編程rom(prom)、可擦除可編程rom(eprom)、電可擦除可編程rom(eeprom)、隨機存取存儲器(ram)、靜態(tài)ram(sram)、動態(tài)ram(dram)、閃存、相變存儲器、相變數(shù)據(jù)存儲材料、非易失性存儲器、非易失性數(shù)據(jù)存儲設備、非暫態(tài)存儲器、或非暫態(tài)數(shù)據(jù)存儲設備等。非暫態(tài)機器可讀存儲介質(zhì)不由暫態(tài)傳播的信號組成。在一些實施例中,存儲介質(zhì)可包括:包含固態(tài)物質(zhì)的有形介質(zhì)。合適機器的示例包括但不限于,通用處理器、專用處理器、數(shù)字邏輯電路、集成電路、片上系統(tǒng)(soc)等。合適的機器的另一些示例包括,包含處理器、數(shù)字邏輯電路或集成電路的計算機系統(tǒng)或其他電子設備。此類計算機系統(tǒng)或電子設備的示例包括但不限于,臺式計算機、膝上型計算機、筆記本計算機、平板計算機、上網(wǎng)本、蜂窩電話(例如,智能電話)、服務器、網(wǎng)絡設備(例如,路由器和交換機)、移動互聯(lián)網(wǎng)設備(mid)、媒體播放器、智能電視、上網(wǎng)計算機、機頂盒和視頻游戲控制器。貫穿本說明書對例如“一個實施例”、“實施例”、“一個或多個實施例”、“一些實施例”的引用指示,可將特定的特征包括在本發(fā)明的實施中,但是不一定要求這么做。類似地,在該描述中,為了使本公開流暢并輔助對各個發(fā)明性方面的理解,有時將各種特征一起歸組在單個實施例、附圖或?qū)λ鼈兊拿枋鲋小H欢?,不應當將該公開方法解釋為反映本發(fā)明需要比每項權利要求中所明確記載的更多特征的意圖。相反,如所附權利要求所反映,發(fā)明性方面在于少于單個的公開實施例的所有特征。因此,將遵循具體實施方式的各項權利要求明確地結(jié)合進該具體實施方式,每一項權利要求獨立地作為本發(fā)明單獨的實施例而存在。示例實施例以下示例關于進一步的實施例。這些示例中的細節(jié)可以在一個或多個實施例中的任何地方被使用。示例1是處理器或其他裝置,其包括多個緊縮數(shù)據(jù)寄存器和用于解碼四維(4d)莫頓坐標轉(zhuǎn)換指令的解碼單元。4d莫頓坐標轉(zhuǎn)換指令用于指示用來包括多個4d莫頓坐標的源緊縮數(shù)據(jù)操作數(shù),并且用于指示一個或多個目的地存儲位置。執(zhí)行單元與緊縮數(shù)據(jù)寄存器和解碼單元耦合。執(zhí)行單元用于,響應于解碼單元解碼4d莫頓坐標轉(zhuǎn)換指令,將一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)存儲在一個或多個目的地存儲位置中。一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)用來包括多個四個4d坐標的集合。四個4d坐標的集合中的每一個用來對應于4d莫頓坐標中的不同的一個。示例2包括示例1的處理器,其中執(zhí)行單元用于:響應于解碼單元解碼4d莫頓坐標轉(zhuǎn)換指令,通過執(zhí)行將對應的4d莫頓坐標的位四路按位解交織為四個連續(xù)位串,每個連續(xù)位串對應于四個4d坐標中的不同的一個,來生成四個4d坐標的集合中的每一個。示例3包括示例1到2中的任一項的處理器,其中執(zhí)行單元用于響應于解碼單元解碼4d莫頓坐標轉(zhuǎn)換指令:將至少在給定的4d莫頓坐標的位置0、4、8、12、16、20和24處的位的值作為第一連續(xù)位串存儲在一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)中,第一連續(xù)位串用來對應于給定的四個4d坐標的集合的第一4d坐標,給定的四個4d坐標的集合對應于給定的4d莫頓坐標。執(zhí)行單元還可選地用于將至少在給定的4d莫頓坐標的位置1、5、9、13、17、21和25處的位的值作為第二連續(xù)位串存儲在一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)中,第二連續(xù)位串將對應于給定的四個4d坐標的集合的第二4d坐標。執(zhí)行單元還可選地用于將至少在給定的4d莫頓坐標的位置2、6、10、14、18、22和26處的位的值作為第三連續(xù)位串存儲在一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)中,第三連續(xù)位串將對應于給定的四個4d坐標的集合的第三4d坐標。執(zhí)行單元還可選地用于將至少在給定的4d莫頓坐標的位置3、7、11、15、19、23和27處的位的值作為第四連續(xù)位串存儲在一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)中,第四連續(xù)位串將對應于給定的四個4d坐標的集合的第四4d坐標。示例4包括示例1到2中的任一項的處理器,其中響應于解碼單元解碼4d莫頓坐標轉(zhuǎn)換指令,執(zhí)行單元用于將至少在給定的4d莫頓坐標的位置0、4、8、12、16、20、24、28、32和36處的位的值作為第一連續(xù)位串存儲在一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)中,第一連續(xù)位串將對應于給定的四個4d坐標的集合的第一4d坐標,給定的四個4d坐標的集合對應于給定的4d莫頓坐標。執(zhí)行單元還可選地用于將至少在給定的4d莫頓坐標的位置1、5、9、13、17、21、25、29、33和37處的位的值作為第二連續(xù)位串存儲在一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)中,第二連續(xù)位串將對應于給定的四個4d坐標的集合的第二4d坐標。執(zhí)行單元還可選地用于將至少在給定的4d莫頓坐標的位置2、6、10、14、18、22、26、30、34和38處的位的值作為第三連續(xù)位串存儲在一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)中,第三連續(xù)位串將對應于給定的四個4d坐標的集合的第三4d坐標。執(zhí)行單元還可選地用于將至少在給定的4d莫頓坐標的位置3、7、11、15、19、23、27、31、35和39處的位的值作為第四連續(xù)位串存儲在一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)中,第四連續(xù)位串將對應于給定的四個4d坐標的集合的第四4d坐標。示例5包括示例1的處理器,其中響應于解碼單元解碼4d莫頓坐標轉(zhuǎn)換指令,執(zhí)行單元用于將兩個結(jié)果緊縮數(shù)據(jù)操作數(shù)存儲在由4d莫頓坐標轉(zhuǎn)換指令指示的兩個目的地存儲位置中。結(jié)果緊縮數(shù)據(jù)操作數(shù)中的一個可選地用來存儲每個四個4d坐標的集合中的前兩個。結(jié)果緊縮數(shù)據(jù)操作數(shù)中的另一個可選地用來存儲每個四個4d坐標的集合中的后兩個。示例6包括示例5的處理器,其中給定的4d莫頓坐標用來被存儲在源緊縮數(shù)據(jù)操作數(shù)的32位數(shù)據(jù)元素中。對應于給定的4d莫頓坐標的四個4d坐標的集合中的前兩個用來被存儲在所述一個結(jié)果緊縮數(shù)據(jù)操作數(shù)的與32位數(shù)據(jù)元素在相同位位置中的32位部分的最低階16位中。四個4d坐標的集合中的后兩個用來被存儲在所述另一個結(jié)果緊縮數(shù)據(jù)操作數(shù)的與32位數(shù)據(jù)元素在相同位位置中的32位部分的最低階16位中。示例7包括示例5的處理器,其中給定的4d莫頓坐標用來被存儲在源緊縮數(shù)據(jù)操作數(shù)的64位數(shù)據(jù)元素中。對應于給定的4d莫頓坐標的四個4d坐標的集合中的前兩個用來被存儲在所述一個結(jié)果緊縮數(shù)據(jù)操作數(shù)的與64位數(shù)據(jù)元素在相同位位置中的64位部分的最低階32位中。四個4d坐標的集合中的后兩個將被存儲在所述另一個結(jié)果緊縮數(shù)據(jù)操作數(shù)的與64位數(shù)據(jù)元素在相同位位置中的64位部分的最低階32位中。示例8包括示例1的處理器,其中執(zhí)行單元可選地用于:響應于解碼單元解碼4d莫頓坐標轉(zhuǎn)換指令,將單個結(jié)果緊縮數(shù)據(jù)操作數(shù)存儲在由4d莫頓坐標轉(zhuǎn)換指令指示的單個目的地存儲位置中。每個四個4d坐標的集合可選地用來被存儲在單個結(jié)果緊縮數(shù)據(jù)操作數(shù)的與具有對應的4d莫頓坐標的源緊縮數(shù)據(jù)操作數(shù)的數(shù)據(jù)元素在相同相對位位置中的不同部分中。示例9包括示例8的處理器,其中給定的4d莫頓坐標將被存儲在源緊縮數(shù)據(jù)操作數(shù)的32位數(shù)據(jù)元素中。此外,對應于給定的4d莫頓坐標的給定的四個4d坐標的集合的每個坐標將被存儲在單個結(jié)果緊縮數(shù)據(jù)操作數(shù)的與32位數(shù)據(jù)元素在相同位位置中的32位部分的不同的8位部分中。示例10包括示例8的處理器,其中給定的4d莫頓坐標將被存儲在源緊縮數(shù)據(jù)操作數(shù)的64位數(shù)據(jù)元素中。此外,對應于給定的4d莫頓坐標的給定的四個4d坐標的集合的每個坐標將被存儲在單個結(jié)果緊縮數(shù)據(jù)操作數(shù)的與64位數(shù)據(jù)元素在相同位位置中的64位部分的不同的16位部分中。示例11包括示例1到10中的任一項的處理器,進一步包括可選的用于預測分支的分支預測單元,以及可選的與分支預測單元耦合的指令預取單元。指令預取單元用于預取包括4d莫頓坐標轉(zhuǎn)換指令的指令。可選的第1級(l1)指令高速緩存與指令預取單元耦合。l1指令高速緩存用于存儲包括4d莫頓坐標轉(zhuǎn)換指令的指令??蛇x的l1數(shù)據(jù)高速緩存被包括以存儲數(shù)據(jù)??蛇x的第2級(l2)高速緩存被包括以存儲數(shù)據(jù)和包括4d莫頓坐標轉(zhuǎn)換指令的指令。可選的指令取出單元與l1指令高速緩存和解碼單元耦合以從l1指令高速緩存中取出4d莫頓坐標轉(zhuǎn)換指令并且向解碼單元提供4d莫頓坐標轉(zhuǎn)換指令。可選的寄存器重命名單元與緊縮數(shù)據(jù)寄存器耦合以將緊縮數(shù)據(jù)寄存器重命名。示例12是處理器中的方法,包括接收四維(4d)莫頓坐標轉(zhuǎn)換指令。4d莫頓坐標轉(zhuǎn)換指令指示包括多個4d莫頓坐標的源緊縮數(shù)據(jù)操作數(shù),并且指示一個或多個目的地存儲位置。方法還包括將一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)存儲在一個或多個目的地存儲位置中。一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)包括多個四個4d坐標的集合。四維坐標的集合中的每一個可以對應于四維莫頓坐標中的不同的一個。示例13包括示例12的方法,進一步包括通過執(zhí)行將對應的4d莫頓坐標的位四路按位解交織為四個連續(xù)位串,每個連續(xù)位串對應于四個4d坐標中的不同的一個,來生成四個4d坐標的集合中的每一個。示例14包括示例12的方法,其中存儲一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)包括將至少在給定的4d莫頓坐標的位置0、4、8、12、16、20和24處的位的值作為第一連續(xù)位串存儲在一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)中,第一連續(xù)位串將對應于給定的四個4d坐標的集合的第一4d坐標,給定的四個4d坐標的集合對應于給定的4d莫頓坐標。此外,將至少在給定的4d莫頓坐標的位置1、5、9、13、17、21和25處的位的值作為第二連續(xù)位串存儲在一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)中,第二連續(xù)位串將對應于給定的四個4d坐標的集合的第二4d坐標。此外,將至少在給定的4d莫頓坐標的位置2、6、10、14、18、22和26處的位的值作為第三連續(xù)位串存儲在一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)中,第三連續(xù)位串將對應于給定的四個4d坐標的集合的第三4d坐標。此外,將至少在給定的4d莫頓坐標的位置3、7、11、15、19、23和27處的位的值作為第四連續(xù)位串存儲在一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)中,第四連續(xù)位串將對應于給定的四個4d坐標的集合的第四4d坐標。示例15包括示例12的方法,其中存儲一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)包括將至少在給定的4d莫頓坐標的位置0、4、8、12、16、20、24、28、32和36處的位的值作為第一連續(xù)位串存儲在一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)中,第一連續(xù)位串將對應于給定的四個4d坐標的集合的第一4d坐標,給定的四個4d坐標的集合對應于給定的4d莫頓坐標。此外,將至少在給定的4d莫頓坐標的位置1、5、9、13、17、21、25、29、33和37處的位的值作為第二連續(xù)位串存儲在一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)中,第二連續(xù)位串將對應于給定的四個4d坐標的集合的第二4d坐標。此外,將至少在給定的4d莫頓坐標的位置2、6、10、14、18、22、26、30、34和38處的位的值作為第三連續(xù)位串存儲在一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)中,第三連續(xù)位串將對應于給定的四個4d坐標的集合的第三4d坐標。此外,將至少在給定的4d莫頓坐標的位置3、7、11、15、19、23、27、31、35和39處的位的值作為第四連續(xù)位串存儲在一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)中,第四連續(xù)位串將對應于給定的四個4d坐標的集合的第四4d坐標。示例16包括示例12的方法,其中存儲一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)包括將兩個結(jié)果緊縮數(shù)據(jù)操作數(shù)存儲在由4d莫頓坐標轉(zhuǎn)換指令指示的兩個目的地存儲位置中。存儲包括將每個四個4d坐標的集合中的前兩個存儲在結(jié)果緊縮數(shù)據(jù)操作數(shù)中的一個中,并且將每個四個4d坐標的集合中的后兩個存儲在結(jié)果緊縮數(shù)據(jù)操作數(shù)中的另一個中。示例17包括示例16的方法,進一步包括將對應于源緊縮數(shù)據(jù)操作數(shù)的32位數(shù)據(jù)元素中的給定的4d莫頓坐標的四個4d坐標的集合中的前兩個存儲在所述一個結(jié)果緊縮數(shù)據(jù)操作數(shù)的32位部分的最低階16位中,32位部分與32位數(shù)據(jù)元素在相同位位置中。方法還包括將四個4d坐標的集合中的后兩個存儲在所述另一個結(jié)果緊縮數(shù)據(jù)操作數(shù)的與32位數(shù)據(jù)元素在相同位位置中的32位部分的最低階16位中。示例18包括示例16的方法,進一步包括將對應于源緊縮數(shù)據(jù)操作數(shù)的64位數(shù)據(jù)元素中的給定的4d莫頓坐標的四個4d坐標的集合中的前兩個存儲在所述一個結(jié)果緊縮數(shù)據(jù)操作數(shù)的64位部分的最低階32位中,64位部分與64位數(shù)據(jù)元素在相同位位置中。方法還可選地包括將四個4d坐標的集合中的后兩個存儲在所述另一個結(jié)果緊縮數(shù)據(jù)操作數(shù)的與64位數(shù)據(jù)元素在相同位位置中的64位部分的最低階32位中。示例19包括示例12的方法,其中存儲一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)包括將單個結(jié)果緊縮數(shù)據(jù)操作數(shù)存儲在由4d莫頓坐標轉(zhuǎn)換指令指示的單個目的地存儲位置中。存儲可以包括將每個四個4d坐標的集合存儲在單個結(jié)果緊縮數(shù)據(jù)操作數(shù)的與具有對應的4d莫頓坐標的源緊縮數(shù)據(jù)操作數(shù)的數(shù)據(jù)元素在相同相對位位置中的不同部分中。示例20包括示例19的方法,進一步包括將對應于源緊縮數(shù)據(jù)操作數(shù)的32位數(shù)據(jù)元素中的給定的4d莫頓坐標的給定的四個4d坐標的集合的每個坐標存儲在單個結(jié)果緊縮數(shù)據(jù)操作數(shù)的32位部分的不同的8位部分中。32位部分可以與32位數(shù)據(jù)元素在相同位位置中。示例21包括示例19的方法,進一步包括將對應于源緊縮數(shù)據(jù)操作數(shù)的64位數(shù)據(jù)元素中的給定的4d莫頓坐標的給定的四個4d坐標的集合的每個坐標存儲在單個結(jié)果緊縮數(shù)據(jù)操作數(shù)的64位部分的不同的16位部分中。64位部分可以與64位數(shù)據(jù)元素在相同位位置中。示例22是處理指令的系統(tǒng),系統(tǒng)包括互連和與互連耦合的處理器。處理器用于接收用于指示用于包括多個數(shù)據(jù)元素的源緊縮數(shù)據(jù)操作數(shù),并且用于指示一個或多個目的地存儲位置。響應于指令,處理器將一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)存儲在一個或多個目的地存儲位置中。一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)包括源緊縮數(shù)據(jù)操作數(shù)中的每個數(shù)據(jù)元素的對應的四個位串的集合。每個四個位串的集合將包括第一位串、第二位串、第三位串和第四位串。每個第一位串將包括至少在源緊縮數(shù)據(jù)操作數(shù)的對應的數(shù)據(jù)元素的位置0、4、8、12、16、20和24處的位的值。每個第二位串將包括至少在源緊縮數(shù)據(jù)操作數(shù)的對應的數(shù)據(jù)元素的位置1、5、9、13、17、21和25處的位的值。每個第三位串將包括至少在源緊縮數(shù)據(jù)操作數(shù)的對應的數(shù)據(jù)元素的位置2、6、10、14、18、22和26處的位的值。每個第四位串將包括至少在源緊縮數(shù)據(jù)操作數(shù)的對應的數(shù)據(jù)元素的位置3、7、11、15、19、23和27處的位的值。系統(tǒng)還包括與互連耦合的動態(tài)隨機存取存儲器(dram)。示例23包括示例22的系統(tǒng),其中響應于指令,處理器用于將單個結(jié)果緊縮數(shù)據(jù)操作數(shù)存儲在單個目的地存儲位置中,以及其中單個結(jié)果緊縮數(shù)據(jù)操作數(shù)將為源緊縮數(shù)據(jù)操作數(shù)中的每個數(shù)據(jù)元素具有四個位串的集合。示例24是一種制品,制品包括非暫態(tài)機器可讀存儲介質(zhì)。非暫態(tài)機器可讀存儲介質(zhì)存儲指令。指令用于指示用于包括多個數(shù)據(jù)元素的源緊縮數(shù)據(jù)操作數(shù),并且用于指示一個或多個目的地存儲位置。指令如果被機器執(zhí)行,將使得機器執(zhí)行包括將一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)存儲在一個或多個目的地存儲位置中的操作。一個或多個結(jié)果緊縮數(shù)據(jù)操作數(shù)將包括源緊縮數(shù)據(jù)操作數(shù)中的每個數(shù)據(jù)元素的對應的四個位串的集合。每個四個位串的集合將包括第一位串、第二位串、第三位串和第四位串。每個第一位串將包括至少在源緊縮數(shù)據(jù)操作數(shù)的對應的數(shù)據(jù)元素的位置0、4、8、12、16、20和24處的位的值。每個第二位串將包括至少在源緊縮數(shù)據(jù)操作數(shù)的對應的數(shù)據(jù)元素的位置1、5、9、13、17、21和25處的位的值。每個第三位串將包括至少在源緊縮數(shù)據(jù)操作數(shù)的對應的數(shù)據(jù)元素的位置2、6、10、14、18、22和26處的位的值。每個第四位串將包括至少在源緊縮數(shù)據(jù)操作數(shù)的對應的數(shù)據(jù)元素的位置3、7、11、15、19、23和27處的位的值。示例25包括示例24的制品,其中指令將使得機器將第一和第二位串全部存儲在第一結(jié)果緊縮數(shù)據(jù)操作數(shù)中,并且將第三和第四位串全部存儲在第二結(jié)果緊縮數(shù)據(jù)操作數(shù)中。示例26是處理器或其他裝置,其用于執(zhí)行示例12到21中的任一項的方法。示例27是處理器或其他設備,其包括用于執(zhí)行示例12到21中的任一項的方法的裝置。示例28是包括用于執(zhí)行示例12到21中的任一項的方法的模塊和/或單元和/或邏輯和/或電路和/或設備的任何組合的處理器或其他裝置。示例29是制品,其包括可選地非暫態(tài)機器可讀介質(zhì),非暫態(tài)機器可讀介質(zhì)可選地存儲或以其他方式提供指令,如果和/或當由處理器、計算機系統(tǒng)、電子設備或其他機器執(zhí)行指令時,指令用于使機器執(zhí)行示例12到21中的任一項的方法。示例30是基本上如本文中所述的處理器或其他裝置。示例31是用于執(zhí)行基本上如本文中所述的任意方法的處理器或其他裝置。當前第1頁12
當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1