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

從4D坐標計算4DZ曲線索引的機器級指令的制作方法

文檔序號:12512615閱讀:690來源:國知局
從4D坐標計算4D Z曲線索引的機器級指令的制作方法與工藝

實施例大體涉及計算機處理器的領域。更具體地,涉及包括機器級指令以從4D坐標計算4D Z曲線索引的裝置。



背景技術:

Z序曲線是一類空間填充曲線,它是域為單位區(qū)間[0,1]的連續(xù)函數(shù)。Z排序(例如,Morton排序)可以對大的數(shù)據集提供明顯的性能提高,在該大的數(shù)據集中多維局部性是重要的,其包括疏和密矩陣運算(尤其是矩陣乘法)、有限元分析、圖像分析、地震分析、光線跟蹤及其他。然而,從坐標計算Z序曲線索引可能是計算密集型的。

附圖說明

可以從下列詳細描述結合下列圖獲得對本實施例的更好理解,其中:

圖1A-B圖示對于8×8矩陣的示范性Z序映射;

圖2A-B圖示根據實施例對于硬件Z曲線索引實現(xiàn)的示范性多級邏輯;

圖3示出根據實施例實現(xiàn)32位4D Z曲線索引指令的多級邏輯設置的框圖;

圖4示出根據實施例實現(xiàn)64位4D Z曲線索引指令的多級邏輯設置的框圖;

圖5是根據實施例從四個坐標計算4D Z曲線索引的指令的操作數(shù)和邏輯的框圖;

圖6是根據實施例執(zhí)行指令以從四個坐標計算4D Z曲線索引的額外邏輯的框圖;

圖7是根據實施例用于處理4D Z曲線索引指令的流程圖;

圖8A-B是圖示根據實施例的通用向量友好指令格式及其指令模板的框圖;

圖9A-D是圖示根據實施例的示范性特定向量友好指令格式的框圖;

圖10是根據一個實施例的寄存器架構的框圖;

圖11A是圖示示范性有序提取、解碼、引退流水線和示范性寄存器重命名、無序發(fā)出/執(zhí)行流水線兩者的框圖;

圖11B是圖示要包括在實施例中的有序提取、解碼、引退核和示范性寄存器重命名、無序發(fā)出/執(zhí)行架構核兩者的示范性實施例的框圖;

圖12A-B圖示示范性有序核架構的框圖;

圖13是根據實施例具有超過一個核、集成存儲器控制器和集成圖形的處理器的框圖;

圖14圖示示范性計算系統(tǒng)的框圖;

圖15圖示第二示范性計算系統(tǒng)的框圖;

圖16圖示第三示范性計算系統(tǒng)的框圖;

圖17圖示根據實施例的芯片上系統(tǒng)(SoC)的框圖;以及

圖18圖示對比軟件指令轉換器的使用的框圖,其將源指令集中的二進制指令轉換成目標指令集中的二進制指令。

具體實施方式

在下列描述中,為了解釋目的,闡述許多特定細節(jié)以便提供對下文描述的實施例的全面解釋。然而,實施例可以在沒有這些特定細節(jié)中的一些的情況下實踐,這對于本領域內技術人員將是明顯的。在其它實例中,以框圖的形式示出眾所周知的結構和設備以避免使實施例的基本原理難以理解。在一個實施例中,描述架構擴展,其擴展Intel架構(IA),但基本原理不限于任何特定ISA。

向量和SIMD指令綜覽

某些類型的應用通常需要對大量數(shù)據項執(zhí)行相同操作(稱為“數(shù)據并行性”)。單指令多數(shù)據(SIMD)指促使處理器對多個數(shù)據項執(zhí)行操作的一類指令。SIMD技術尤其適合于處理器,其可以將寄存器中的位邏輯分成許多大小固定的數(shù)據元素,其中每個代表單獨值。例如,256位寄存器中的位可以規(guī)定為要作為四個單獨64位緊縮(packed)數(shù)據元素(四字(Q)大小數(shù)據元素)、八個單獨32位緊縮數(shù)據元素(雙字(D)大小數(shù)據元素)、十六個單獨16位緊縮數(shù)據元素(字(W)大小數(shù)據元素)或三十二個單獨8位數(shù)據元素(字節(jié)(B)大小數(shù)據元素)操作的源操作數(shù)。該類型的數(shù)據稱為“緊縮”數(shù)據類型或“向量”數(shù)據類型,并且該數(shù)據類型的操作數(shù)稱為緊縮數(shù)據操作數(shù)或向量操作數(shù)。也就是說,緊縮數(shù)據項或向量指緊縮數(shù)據元素序列,并且緊縮數(shù)據操作數(shù)或向量操作數(shù)是SIMD指令的源或目的地操作數(shù)(也稱為緊縮數(shù)據指令或向量指令)。

SIMD技術(例如由Intel? Core?處理器采用的具有指令集的技術,該指令集包括x86、MMX?、流播SIMD擴展(SSE)、SSE2、SSE3、SSE4.1和SSE4.2指令)在應用性能方面實現(xiàn)明顯提高。已發(fā)布額外SIMD擴展集(稱為高級向量擴展(AVX)(AVX1和AVX2)并且使用向量擴展(VEX)編碼方案)(參見,例如參見2014年9月的Intel? 64和IA-32架構軟件開發(fā)商手冊;以及參見2014年9月的Intel? Intel?架構指令集擴展編程參考)。

Z曲線索引化綜覽

圖1A圖示對于圖示的8×8矩陣100的每個元素的Z序鍵映射(Z-order key mapping)。在顯示的每個元素內,較高階位在頂部并且較低階位在底部。Z曲線排序的一個實現(xiàn)通過使每個維度中原始索引的每個的位交織(例如,洗牌)來執(zhí)行。在圖示的矩陣100的每個元素中示出的Z排序通過矩陣100中每個元素的dimension_1 101和dimension_2 102的逐位交織而生成。

例如,通過使每個維度的坐標的位交織可以確定坐標[2,3](例如,在dimension_1 101的二進制010以及在dimension_2 102的二進制011)處元素的Z曲線索引,從而得到001101(例如,0x0D)的二進制Z曲線索引。示范性Z曲線索引值指示坐標[2,3]處的矩陣元素是示范性矩陣100的Z序曲線中的第13個(零索引,以10為基)索引。

圖1B是通過相繼跟蹤Z序中元素的矩陣元素所創(chuàng)建的Z曲線200的圖形圖示。為了示范性目的在圖1B中示出簡單的2D Z曲線和關聯(lián)的索引。對于具有有限位長的有限數(shù)量的坐標,用預先計算的值填充的查找表可以用于快速確定坐標集的Z曲線索引。這可能因為坐標的數(shù)量和大小在增加而變得不切實際。在一個實施例中,處理器包括32位和64位機器級指令來計算4D Z曲線索引以在分析較大數(shù)據集時降低計算開銷并且提高應用性能。

計算4D Z曲線索引的機器級指令

在一個實施例中,機器指令促使處理器通過對輸入坐標值執(zhí)行位操縱操作來計算4D Z曲線索引。

下面的表1示出示范性32位4D Z曲線索引的位操作。

表1- 32位Z曲線位洗牌

如在表1中示出的,32位z曲線索引指令將每個源坐標的八個低階位洗牌到32位目的地。在一個實施例中,x坐標值和y坐標值打包到由第一源操作數(shù)指示的寄存器。z坐標和t坐標打包到由第二源操作數(shù)指示的寄存器。每個坐標值的位交錯分布到目的地,其中每源具有四位跨步且在源之間具有一位偏移,使得位分布到零位,然后在規(guī)定范圍內每四個位。例如,x坐標的位分布到位0、4、8…28;y坐標位分布到位1、5、8…29;z坐標位分布到位2、6、10…30;并且t坐標分布到位3、7、11…31。

下文的表2示出64位4D Z曲線索引指令的位操作。

表2-64位Z曲線位洗牌

如在表2中示出的,64位z曲線索引指令將每個源坐標的16個低階位洗牌到64位目的地。在一個實施例中,兩個坐標值打包到寄存器內,如采用32位指令。每個坐標值的16個低階位交錯分布到目的地,其中每源具有四位跨步且在源之間具有一位偏移,使得位分布到零位,然后在規(guī)定范圍內每三個位。例如,x坐標的位分布到位0、4、8…60;y坐標位分布到位1、5、8…61;z坐標位分布到位2、6、10…62;并且t坐標分布到位3、7、11…63。用于計算32位Z曲線索引的示范性高級偽代碼在下文的表3中示出。用于計算64位Z曲線索引的示范性高級偽代碼在下文的表4中示出。偽代碼證實可以用于執(zhí)行在上文的表1和表2中示出的位分布的示范性高級邏輯。

表3-32位Z曲線索引偽代碼

表4-64位Z曲線索引偽代碼

圖2A-B圖示根據實施例對于硬件Z曲線索引實現(xiàn)的示范性多級邏輯。圖2A示出單級邏輯210,其包括XOR門212、移位電路214和AND門216。源輸入202可以是來自之前的邏輯級的輸入或源坐標值。在一個實施例中,多個維度打包到單個操作數(shù),如在表1和表2中示出的。在處理邏輯中包括額外邏輯來劃分來自源操作數(shù)的維度值。在一個實施例中,包括單級邏輯210的多個實例來并行處理來自每個源操作數(shù)的多個維度。

在一個實施例中,臨時寄存器集(例如,temp_A 204、temp_2 306)用于供應控制值,其中temp_A 204向移位電路供應移位值并且temp_B 206供應位掩蔽,其將在經由stage_out 218輸出數(shù)據之前施加。stage_out 218值對除最后的級以外的每個連續(xù)邏輯級供應SRC 202。對于最后的級,stage_out 218是對應于作為源(例如,SRC 202)提供的初始坐標的目的地輸出的一部分。

圖2B示出根據實施例實現(xiàn)4D Z曲線索引指令的多級邏輯設置的框圖。在這樣的實施例中,處理器包括執(zhí)行單元,其配置成對每個源輸入執(zhí)行邏輯操作并且使每坐標分量組合成單個輸出。在一個實施例中,單級邏輯210的多個實例220(例如,對于32位是220A-F、對于64位是220A-G)設置成對單個輸入坐標計算4D Z曲線索引的一部分。除最后的級以外的所有stage_out 218提供后續(xù)級的源。最后的級的stage_out 218提供與單個初始輸入坐標關聯(lián)的Z曲線索引的部分。在一個實施例中,相應坐標的輸出則在輸出到目的地寄存器之前組合。

在執(zhí)行單元中可以串行或并行執(zhí)行計算每個Z曲線索引的相應分量的操作。例如,計算Z曲線索引的單個宏指令可以解碼成多個微操作,其各自促使一個或多個執(zhí)行單元在使單獨中間值組合之前對每個源坐標執(zhí)行操作。

圖3示出根據實施例實現(xiàn)32位4D Z曲線索引指令的多級邏輯設置的框圖。在一個實施例中,在圖2A中示出的邏輯210的多個實例可以耦合,如由圖2B中示出的邏輯級220A-F示出的。多級邏輯可以用于對每個坐標執(zhí)行Z曲線索引位洗牌。第一邏輯級220A接受32位源輸入302,連同0x000000ff的掩蔽值306和零左移位304。第一邏輯級220A輸出308作為第二邏輯級220B的源而提供,該第二邏輯級220B接受0x00c0003f的掩蔽值316和16位左移位314作為輸入。第二邏輯級220B輸出318作為第三邏輯級220C的源而提供,該第三邏輯級220C接受0x00c03807的掩蔽值326和八位左移位324作為輸入。來自第三邏輯級220C的輸出328作為第四邏輯級220D的源而提供,該第四邏輯級220D接受0x08530853的掩蔽值336和四位左移位334作為輸入。來自第四邏輯級220D的輸出338作為第五邏輯級220E的源而提供,該第五邏輯級220E接受0x09090909的掩蔽值346和兩位左移位344作為輸入。第五邏輯級220E的輸出348作為第六邏輯級220F的源而提供,該第六邏輯級220F接受0x11111111的掩蔽值356和一位左移位354作為輸入。第六邏輯級220F的輸出358移位并且與其他源坐標的輸出組合并且作為4D Z曲線索引結果而輸出。每個源輸入經歷相似邏輯流水線。在一個實施例中,對每個輸入并行執(zhí)行微操作。

圖4示出根據實施例實現(xiàn)64位4D Z曲線索引指令的多級邏輯設置的框圖。圖2B中示出的每個邏輯級220A-F可以用于對每個坐標執(zhí)行Z曲線索引位洗牌。在一個實施例中,邏輯級配置成以至少64位的精度執(zhí)行操作來產生64位輸出。第一邏輯級220A接受64位源輸入402,連同零左移位404和0x0000ffff的掩蔽值406。第一邏輯級220A輸出408作為第二邏輯級220B的源而提供,該第二邏輯級220B接受32位左移位414和0x0000f800000007ff的掩蔽值416作為輸入。第二邏輯級220B輸出418作為第三邏輯級220C的源而提供,該第三邏輯級220C接受16位左移位424和0x0000f80007c0003f的掩蔽值426作為輸入。第三邏輯級220C輸出428作為第四邏輯級220D的源而提供,該第四邏輯級220D接受8位左移位434和0x00c0380700c03807的掩蔽值436作為輸入。第四邏輯級220D輸出438作為第五邏輯級220E的源而提供,該第五邏輯級220E接受4位左移位444和0x0843084308430843的掩蔽值446作為輸入。第五邏輯級220E輸出448作為第五邏輯級220E的源而提供,其接受兩位左移位454和0x0909090909090909的掩蔽值456作為輸入。第五邏輯級220E輸出458作為第六邏輯級220F的源而提供,其接受一位左移位464和0x1111111111111111的掩蔽值466作為輸入。第七邏輯級220G的輸出468移位并且與其他源坐標的輸出組合并且作為4D Z曲線索引結果而返回。每個源輸入經歷相似邏輯流水線。在一個實施例中,對每個輸入并行執(zhí)行微操作。

圖5是根據實施例從四個坐標計算4D Z曲線索引的指令的操作數(shù)和邏輯的框圖。指令的實施例包括兩個源操作數(shù)。每個源操作數(shù)指示將第一坐標存儲在高階位并且將第二坐標存儲在低階位中的單個寄存器、存儲器地址或立即值。例如,圖5示出第一源操作數(shù)(例如,SRC 1 502),其指示或包括維度X坐標值501和維度Y坐標值503。第二源操作數(shù)(例如,SRC 1 506)包括對維度Z坐標值505和維度T坐標值507的指示。在微操作級,與操作數(shù)關聯(lián)的坐標在被執(zhí)行單元處理之前存儲在處理器寄存器中。在一個實施例中,坐標在被Z序邏輯處理之前從操作數(shù)解包到單獨寄存器。在一個實施例中,復用器(例如,mux 508)使源寄存器耦合于處理器執(zhí)行單元中的z序邏輯510,其從源坐標計算Z序索引。輸入、32位預輸出和最后的輸出的示范性表示在下文的表5中示出。

表5-Z序邏輯輸出

上文的表5示出每個源輸入的預輸出。表5中的每個x、y、z或t值指示所指示的坐標值的單個位,其中具有向右最低有效位以及左邊最高有效位。盡管在SRC 1 502和SRC2 506的低階位示出y和t坐標,該設置是示范性的并且其他設置是可能的。在一個實施例中,源SRC 1 502和SRC2 506操作數(shù)中的打包維度解包到臨時寄存器并且由Z序邏輯510處理。

如在表5中示出的,Z序邏輯510基于SRC1 502操作數(shù)向臨時寄存器SRC1A和SRC1B輸出值。Z序邏輯510基于SRC2 506操作數(shù)向臨時寄存器SRC2A和SRC2B輸出值。每個坐標值的位以四位跨步分布到臨時寄存器。Z序索引通過使臨時寄存器中的值左移位并且然后通過對移位值執(zhí)行逐位OR操作來使值組合而創(chuàng)建。如由表3中示出的偽代碼所指示的,寄存器SRC1B中y坐標的位左移位一個位。寄存器SRC2A中z坐標的位左移位兩個位。寄存器SRC2B中t坐標的位左移位三個位。臨時寄存器中的移位預輸出值被組合并且輸出到由指令的目的地操作數(shù)512規(guī)定的DEST位點。在一個實施例中,示出的寄存器是SIMD/向量寄存器并且指令是執(zhí)行向量操作的SIMD指令。

圖6是根據實施例執(zhí)行指令以從四個坐標計算4D Z曲線索引的額外邏輯的框圖。在一個實施例中,由Z序邏輯510并行處理每個源操作數(shù)(例如,SRC 600)中的兩個坐標值。在一個實施例中,第一交織邏輯塊(例如,interleave_logic_1 620A)包括計算32位或64位Z序索引的邏輯,例如圖2B的多級邏輯220(例如,對于32位的220A-F、對于64位的220A-G)。在處理期間,位掩蔽使包含兩個坐標值中的一個的較高階位歸零(zero out)??梢园ǖ诙豢椷壿媺K(例如,interleave_logic_2 620B)來并行處理較高階位中包含的坐標值,其通過移位器電路602移位或旋轉到低階位,該移位器電路602配置成執(zhí)行右移位、旋轉右移或旋轉左移操作。在一個實施例中,組合邏輯604在預輸出值輸出到指令的目的地操作數(shù)所指示的目的地(例如,DEST 600)之前使預輸出值移位并且使其組合到中間臨時寄存器內。然后對第二源操作數(shù)重復處理操作。

圖7是根據實施例用于處理4D Z曲線索引指令的流程圖。如在框702處示出的,指令流水線在處理器提取單個z曲線索引指令來計算4D Z曲線索引時開始。指令具有第一和第二源操作數(shù)以及目的地操作數(shù),如在框702處示出的。

如在框704處示出的,處理器將Z曲線索引指令解碼為解碼指令。在一個實施例中,解碼指令是單個操作。在一個實施例中,解碼指令是或包括一個或多個邏輯微操作來執(zhí)行指令的每個子元素。微操作可以是硬接線或微代碼操作以可以促使處理器的部件(例如執(zhí)行單元)執(zhí)行各種操作來實現(xiàn)指令。

在一個實施例中,解碼指令促使處理器的部件(例如執(zhí)行單元)執(zhí)行各種操作,其包括提取由源操作數(shù)指示的源操作數(shù)值的操作,如在框706處示出的。在各種實施例中,源操作數(shù)可以包括寄存器標識符、存儲器地址或立即值(immediate value)。

在一個實施例中,如在框708處示出的,處理器內的邏輯單元執(zhí)行額外操作以通過使坐標值旋轉或移位到個體臨時寄存器內而從源操作數(shù)值提取源坐標值。在一個實施例中,邏輯單元包括硬件來使源坐標值與源操作數(shù)自動隔離而不需要解包操作。例如,每個源坐標可以是向量指令中的單獨數(shù)據元素。

如在框710處示出的,一旦提取源坐標值,解碼指令促使一個或多個執(zhí)行單元計算Z曲線索引。在一個實施例中,Z曲線索引基于每個源坐標值的至少8個低階位并且通過使源坐標值的構成位交織而計算。在一個實施例中,所得的Z曲線索引在長度上是至少32個位。在一個實施例中,所得的Z曲線索引在長度上是至少64個位。對于64位指令,可以處理每個源值的至少16個低階位來產生64位Z曲線索引。如在框712處示出的,處理器可以將Z曲線索引指令的結果存儲到目的地操作數(shù)所指示的位點內。對于32位指令,Z曲線索引存儲到32位輸出寄存器。對于64位指令,Z曲線索引存儲在64位輸出寄存器中。

本文描述的實施例指使用X、Y、Z和T坐標的操作,它們是用于在四維空間內定義位置的坐標。本領域內技術人員將理解使用的坐標是示范性的并且X、Y、Z和T坐標一般指用于在Z曲線排序能適用的四維空間中定義第一、第二、第三或第四維度的位點的任何坐標集。

本文描述的指令的實施例對源坐標值內的高階或低階位操作。如本文使用的,高階和低階位定義為最高有效和最低有效位,與在構成數(shù)據字的字節(jié)存儲在計算機存儲器中時用于解釋那些字節(jié)的約定無關。也就是說,根據在使用中的字節(jié)順序約定,低階或最低有效位可以存儲在數(shù)據字內的最小地址或最大地址中。

本文描述的實施例在處理裝置或數(shù)據處理系統(tǒng)中實現(xiàn)。在前面的描述中,闡述許多特定細節(jié)以便提供對本文描述的實施例的全面理解。然而,實施例可以在沒有這些特定細節(jié)中的一些的情況下實踐,如對于本領域內技術人員將顯而易見的。描述的架構特征中的一些是Intel架構(IA)的擴展。然而,基本原理不限于任何特定指令集。

指令集或指令集架構(ISA)是與編程有關的計算機架構的部分,包括原生數(shù)據類型、指令、寄存器架構、尋址模式、存儲器架構、中斷和異常處理以及外部輸入和輸出(I/O)。應注意術語“指令”在本文一般指宏指令-其是提供給處理器以供執(zhí)行的指令-如與之相對的是,微指令或微操作(例如,micro-ops)-其是處理器的解碼器解碼宏指令的結果。微指令或micro-ops可以配置成指示處理器上的執(zhí)行單元執(zhí)行操作來實現(xiàn)與宏指令關聯(lián)的邏輯。

ISA與微架構區(qū)分開,該微架構是用于實現(xiàn)指令集的處理器設計技術集。具有不同微架構的處理器可以共享共用指令集。例如,Intel? Pentium 4處理器、Intel? Core?處理器和來自加利福尼亞州Sunnyvale市的Advanced Micro Devices, Inc.的處理器實現(xiàn)x86指令集的幾乎相同版本(具有添加有較新版本的一些擴展),但具有不同的內部設計。例如,ISA的相同寄存器架構可以采用不同方式使用眾所周知的技術在不同微架構中實現(xiàn),其包括專用物理寄存器、使用寄存器重命名機制(例如,使用寄存器別名表(RAT)、重排序緩沖器(ROB)和引退寄存器堆)的一個或多個動態(tài)分配的物理寄存器。除非另外規(guī)定,短語寄存器架構、寄存器堆和寄存器在本文用于指對軟件/編程者可見的以及指令規(guī)定寄存器所采用的方式。在需要區(qū)分的情況下,形容詞“邏輯的”、“架構的”或“軟件可見的”將用于指示寄存器架構中的寄存器/文件,而不同的形容詞將用于指定給定微架構中的寄存器(例如,物理寄存器、重排序緩沖器、引退寄存器、寄存器池)。

指令集包括一個或多個指令格式。給定指令格式定義各種字段(位的數(shù)量、位的位點)以用于除其他外還規(guī)定要執(zhí)行的操作和要執(zhí)行操作的操作數(shù)。一些指令格式通過指令模板(或子格式)的定義而進一步分解。例如,給定指令格式的指令模板可以定義成具有指令格式的字段的不同子集(包括的字段典型地按相同順序,但因為包括有較少字段,至少一些具有不同位位置)和/或定義成具有不同解釋的給定字段。給定指令使用給定指令格式(并且如定義的話,采用該指令格式的指令模板中的給定一個模板)來表達并且規(guī)定操作和操作數(shù)。指令流是指令的特定序列,其中序列中的每個指令是采用指令格式(并且如定義的話,是該指令格式的指令模板中的給定一個模板)的指令的發(fā)生。

示范性指令格式

本文描述的指令的實施例可以采用不同格式體現(xiàn)。另外,示范性系統(tǒng)、架構和流水線在下文詳述。指令的實施例可以在這樣的系統(tǒng)、架構和流水線上執(zhí)行,但不限于詳述的那些。

向量友好指令格式是適合于向量指令的指令格式(例如,存在向量操作特定的某些字段)。盡管描述其中通過向量友好指令格式支持向量和標量操作兩者的實施例,備選實施例僅使用向量友好指令格式的向量操作。

圖8A-8B是圖示根據實施例的通用向量友好指令格式及其指令模板的框圖。圖8A是圖示根據實施例的通用向量友好指令格式及其類別A指令模板的框圖;而圖8B是圖示根據實施例的通用友好指令格式及其類別B指令模板的框圖。具體地,針對通用向量友好指令格式800定義類別A和類別B指令模板,這兩個都包括無存儲器訪問805指令模板和存儲器訪問820指令模板。術語通用在向量友好指令格式的上下文中指未與任何特定指令集綁定的指令格式。

將描述實施例,其中向量友好指令格式支持以下內容:具有32位(4字節(jié))或64位(8字節(jié))數(shù)據元素寬(或大?。┑?4字節(jié)向量操作數(shù)長度(或大?。ú⑶覐亩?,64字節(jié)向量由16個雙字大小的元素或備選地8個四字大小的元素組成);具有16位(2字節(jié))或8位(1字節(jié))數(shù)據元素寬(或大?。┑?4字節(jié)向量操作數(shù)長度(或大小);具有32位(4字節(jié))、64位(8字節(jié))、16位(2字節(jié))或8位(1字節(jié))數(shù)據元素寬(或大小)的32字節(jié)向量操作數(shù)長度(或大?。?;以及具有32位(4字節(jié))、64位(8字節(jié))、16位(2字節(jié))或8位(1字節(jié))數(shù)據元素寬(或大?。┑?6字節(jié)向量操作數(shù)長度(或大小)。然而,備選實施例支持具有更多、更少或不同數(shù)據元素寬(例如,128位(16字節(jié))數(shù)據元素寬)的更多、更少和/或不同向量操作數(shù)大小(例如,256字節(jié)向量操作數(shù))。

圖8A中的類別A指令模板包括:1)在無存儲器訪問805指令模板內示出有無存儲器訪問的全舍入控制型操作810指令模板和無存儲器訪問的數(shù)據變換型操作815指令模板;和2)在存儲器訪問820指令模板內示出有存儲器訪問的暫時的825指令模板和存儲器訪問的非暫時的830指令模板。圖8b中的類別B指令包括:1)在無存儲器訪問805指令模板內示出有無存儲器訪問的寫掩蔽控制的部分舍入控制型操作812指令模板和無存儲器訪問的寫掩蔽控制的vsize型操作817指令模板;和2)在存儲器訪問820指令模板內示出有存儲器訪問的寫掩蔽控制827指令模板。

通用向量友好指令格式800包括在下文按圖8A-8B中圖示的順序列出的下列字段。

格式字段840-該字段中的特定值(指令格式標識符值)唯一識別向量友好指令格式,并且從而識別指令流中采用向量友好指令格式的指令的發(fā)生。如此,該字段在對于僅具有通用向量友好指令格式的指令集不需要它這一意義上是可選的。

基本操作字段842-它的內容區(qū)分不同基本操作。

寄存器索引字段844-它的內容直接或通過地址生成而規(guī)定源和目的地操作數(shù)的位點,不論它們是在寄存器中還是存儲器中。這些包括足夠數(shù)量的位來從P×Q(例如,32×512、16×128、32×1024、64×1024)寄存器堆選擇N個寄存器。盡管在一個實施例中N可以多至三個源和一個目的地寄存器,備選實施例可以支持更多或更少的源和目的地寄存器(例如,可以支持多至兩個源,其中這些源中的一個也充當目的地,可以支持多至三個源,其中這些源中的一個也充當目的地,可以支持多至兩個源和一個目的地)。

修改字段(modifier field)846-它的內容區(qū)分采用通用向量指令格式的規(guī)定存儲器訪問的指令的發(fā)生與沒有存儲器訪問的指令;即,在無存儲器訪問805指令模板與存儲器訪問820指令模板之間進行區(qū)分。存儲器訪問操作讀和/或寫入存儲器層級(在一些情況下使用寄存器中的值規(guī)定源和/或目的地地址),而非存儲器訪問操作則不這樣(例如,源和目的地是寄存器)。盡管在一個實施例中該字段也在執(zhí)行存儲器地址計算的三個方式之間選擇,備選實施例可以支持執(zhí)行存儲器地址計算的更多、更少或不同方式。

增廣操作字段850-它的內容區(qū)分除基本操作外還要執(zhí)行的多種不同操作中的哪一個。該字段是內容特定的。在本發(fā)明的一個實施例中,該字段分成類別字段868、alpha字段852和beta字段854。增廣操作字段850允許在單指令而不是2、3或4個指令中執(zhí)行共用操作組。

標度字段860-它的內容允許定標索引字段的內容用于存儲器地址生成(例如,用于使用2scale*索引+基址的地址生成)。

位移字段862A-它的內容用作存儲器地址生成的部分(例如,對于使用2scale*索引+基址+位移的地址生成)。

位移因數(shù)字段862B(注意位移字段862A直接在位移因數(shù)字段862B上的并置指示使用一個或另一個)-它的內容用作地址生成的部分;它規(guī)定要通過存儲器訪問的大?。∟)來定標的位移因數(shù)-其中N是存儲器訪問中字節(jié)的數(shù)量(例如,對于使用2scale*索引+基址+定標位移的地址生成)。冗余低階位被忽略,并且因此位移因數(shù)字段的內容乘以存儲器操作數(shù)總大?。∟)以便生成要在計算有效地址方面使用的最終位移。N的值由在運行時的處理器硬件基于全操作碼字段874(稍后在本文描述)和數(shù)據操縱字段854C確定。位移字段862A和位移因數(shù)字段862B在它們未用于無存儲器訪問805指令模板這一意義上是可選的和/或不同的實施例可以僅實現(xiàn)兩個中的一個或兩個都未實現(xiàn)。

數(shù)據元素寬度字段864-它的內容區(qū)分要使用的許多數(shù)據元素寬度中的哪一個(在一些實施例中對于所有指令;在其他實施例中僅對于指令中的一些)。該字段在如果使用操作碼的某一方面支持數(shù)據元素寬度和/或僅支持一個數(shù)據元素寬度則不需要該這字段這一意義上是可選的。

寫掩蔽字段870-它的內容在每數(shù)據元素位置基礎上控制目的地向量操作數(shù)中的數(shù)據元素位置是否反映基本操作和增廣操作的結果。類別A指令模板支持合并-寫掩蔽,而類別B指令模板既支持合并也支持歸零-寫掩蔽。在合并時,向量掩蔽允許保護目的地中的任何元素集在執(zhí)行任何操作(由基本操作和增廣操作規(guī)定)期間免于更新;在另一個實施例中,保留目的地的每個元素的舊值,其中對應掩蔽位具有0。相比之下,在歸零時,向量掩蔽允許目的地中的任何元素集在執(zhí)行任何操作(由基本操作和增廣操作規(guī)定)期間歸零;在一個實施例中,在對應掩蔽位具有0值時,目的地的元素設置為0。該功能性的子集是控制正在執(zhí)行的操作的向量長度的能力(即,正在修改的元素的跨度,從第一個到最后一個);然而,修改的元素是連續(xù)的,這不是必要的。從而,寫掩蔽字段870允許部分向量操作,其包括加載、存儲、算術、邏輯等。盡管描述其中寫掩蔽字段870的內容選擇包含要使用的寫掩蔽的許多寫掩蔽寄存器中的一個(因此寫掩蔽字段870的內容間接識別要執(zhí)行的掩蔽)的實施例,備選實施例相反或另外允許掩蔽寫字段870的內容直接規(guī)定要執(zhí)行的掩蔽。

立即字段872-它的內容允許規(guī)定立即(immediate)。該字段在它在不支持立即的通用向量友好格式的實現(xiàn)中不存在并且它在未使用立即的指令中不存在這一意義上是可選的。

類別字段868-它的內容區(qū)分不同類別的指令。參考圖8A-B,該字段的內容在類別A和類別B指令之間選擇。在圖8A-B中,圓角方形用于指示在字段中存在特定值(例如,在圖8A-B中分別是類別字段868的類別A 868A和類別B 868B)。

類別A的指令模板

在類別A的非存儲器訪問805指令模板的情況下,alpha字段852解釋為RS字段852A,它的內容區(qū)分要執(zhí)行的不同增廣操作類型中的哪一個(例如,舍入852A.1和數(shù)據變換852A.2分別對無存儲器訪問的舍入型操作810和無存儲器訪問的數(shù)據變換類型操作815指令模板規(guī)定),而beta字段854區(qū)分要執(zhí)行規(guī)定類型的操作中的哪個。在無存儲器訪問805指令模板中,標度字段860、位移字段862A和位移標度字段862B不存在。

無存儲器訪問指令模板-全舍入控制型操作

在無存儲器訪問全舍入控制型操作801指令模板中,beta字段854解釋為舍入控制字段854A,它的內容提供靜態(tài)舍入。盡管在描述的實施例中舍入控制字段854A包括抑制所有浮點異常(SAE)字段856和舍入操作控制字段858,備選實施例可以支持這些概念、可以將這些概念編碼為相同字段或僅具有這些概念/字段中的一個或另一個(例如,可以僅具有舍入操作控制字段858)。

SAE字段856-它的內容區(qū)分是否停用異常事件報告;在SAE字段856的內容指示啟用抑制時,給定指令未報告任何種類的浮點異常標志并且未引發(fā)任何浮點異常處理程序(handler)。

舍入操作控制字段858-它的內容區(qū)分執(zhí)行一組舍入操作中的哪一個(例如,上舍入、下舍入、朝零舍入和舍入到最接近)。從而,舍入操作控制字段858允許在每指令基礎上改變舍入模式。在本發(fā)明的一個實施例(其中處理器包括用于規(guī)定舍入模式的控制寄存器)中,舍入操作控制字段850的內容覆蓋寄存器值。

無存儲器訪問指令模板-數(shù)據變換型操作

在無存儲器訪問數(shù)據變換型操作815指令模板中,beta字段854解釋為數(shù)據變換字段854B,它的內容區(qū)分要執(zhí)行許多數(shù)據變換中的哪一個(例如,無數(shù)據變換、攪合(swizzle)、廣播)。

在類別A的存儲器訪問820指令模板的情況下,alpha字段852解釋為驅逐提示字段852B,它的內容區(qū)分要使用驅逐提示中的哪一個(在圖8A中,暫時852B.1和非暫時852B.2分別對存儲器訪問的暫時的825指令模板和存儲器訪問的非暫時的830指令模板規(guī)定),而beta字段854解釋為數(shù)據操縱字段854C,它的內容區(qū)分要執(zhí)行許多數(shù)據操縱操作(也稱為基元)中的哪一個(例如,無操縱;廣播;源的上轉換;和目的地的下轉換)。存儲器訪問820指令模板包括標度字段860,并且可選地包括位移字段862A或位移標度字段862B。

向量存儲器指令利用轉換支持來執(zhí)行從存儲器的向量加載和到存儲器的向量存儲。如與常規(guī)向量指令一樣,向量存儲器指令采用逐數(shù)據元素方式將數(shù)據傳輸?shù)酱鎯ζ?從存儲器傳輸,其中實際上傳輸?shù)脑赜蛇x為寫掩蔽的向量掩蔽的內容指定。

存儲器訪問指令模板-暫時

暫時數(shù)據是可能很快被重用以足以從高速緩存獲益的數(shù)據。然而,這是提示,并且不同處理器可以采用不同方式實現(xiàn)它,其包括完全忽略提示。

存儲器訪問指令模板-非暫時

非暫時數(shù)據是不太可能很快被重用以足以從第1級高速緩存中的高速緩存獲益的數(shù)據并且就驅逐來說應給予優(yōu)先級。然而這是提示并且不同處理器可以采用不同方式實現(xiàn)它,其包括完全忽略提示。

類別B的指令模板

在類別B的指令模板的情況下,alpha字段852解釋為寫掩蔽控制(Z)字段852C,它的內容區(qū)分由寫掩蔽字段870控制的寫掩蔽是應合并還是應歸零。

在類別B的非存儲器訪問805指令模板的情況下,beta字段854的部分解釋為RL字段857A,它的內容區(qū)分要執(zhí)行不同增廣操作類型中的哪一個(例如,舍入857A.1和向量長度(VSIZE)857A.2分別對無存儲器訪問的寫掩蔽控制的部分舍入控制型操作812指令模板和無存儲器訪問的寫掩蔽控制的VSIZE型操作817指令模板規(guī)定),而beta字段854的余下部分區(qū)分要執(zhí)行規(guī)定類型的操作中的哪個。在無存儲器訪問805指令模板中,標度字段860、位移字段862A和位移標度字段862B不存在。

在無存儲器訪問的寫掩蔽控制的部分舍入控制型操作810指令模板中,beta字段854的余下部分解釋為舍入操作字段859A并且停用異常事件報告(給定指令未報告任何種類的浮點異常標志并且未引發(fā)任何浮點異常處理程序)。

舍入操作控制字段859A-正如舍入操作控制字段858那樣,它的內容區(qū)分執(zhí)行一組舍入操作中的哪一個(例如,上舍入、下舍入、朝零舍入和舍入到最接近)。從而,舍入操作控制字段859A允許在每指令基礎上改變舍入模式。在本發(fā)明的一個實施例(其中處理器包括用于規(guī)定舍入模式的控制寄存器)中,舍入操作控制字段850的內容覆蓋該寄存器值。

在無存儲器訪問的寫掩蔽控制的VSIZE型操作817指令模板中,beta字段854的余下部分解釋為向量長度字段859B,它的內容區(qū)分要對其執(zhí)行的許多數(shù)據向量長度中的哪一個(例如,128、256或512字節(jié))。

在類別B的存儲器訪問820指令模板的情況下,beta字段854的部分解釋為廣播字段857B,它的內容區(qū)分是否要執(zhí)行廣播型數(shù)據操縱操作,而beta字段854的余下部分解釋為向量長度字段859B。存儲器訪問820指令模板包括標度字段860,并且可選地包括位移字段862A或位移標度字段862B。

關于通用向量友好指令格式800,示出全操作碼字段874,其包括格式字段840、基本操作字段842,和數(shù)據元素寬度字段864。盡管示出其中全操作碼字段874包括這些字段中的全部的一個實施例,全操作碼字段874在不支持這些字段中的全部的實施例中包括少于全部的這些字段。全操作碼字段874提供操作代碼(操作碼)。

增廣操作字段850、數(shù)據元素寬度字段864和寫掩蔽字段870允許采用通用向量友好指令格式在每指令基礎上規(guī)定這些特征。

因為寫掩蔽字段和數(shù)據元素寬度字段允許基于不同數(shù)據元素寬度施加掩蔽,它們的組合創(chuàng)建類型化指令。

在類別A和類別B內發(fā)現(xiàn)的各種指令模板在不同情形中是有益的。在一些實施例中,不同處理器或處理器內的不同核可以僅支持類別A、僅支持類別B或支持兩個類別。例如,預計用于通用計算的高性能通用無序核可以僅支持類別B,預計主要用于圖形和/或科學(吞吐量)計算的核可以僅支持類別A,并且預計用于兩者的核可以支持兩者(當然,具有來自兩個類別的模板和指令但不是來自兩個類型的所有模板和指令的某一混合的核在本發(fā)明的范圍內)。單個處理器還可以包括多個核,其中的全部支持相同類別或其中不同核支持不同類別。例如,在具有單獨圖形和通用核的處理器中,主要預計用于圖形和/或科學計算的圖形核中的一個可以僅支持類別A,而通用核中的一個或多個可以是僅支持類別B的具有預計用于通用計算的無序執(zhí)行和寄存器重命名的高性能通用核。不具有單獨圖形核的另一個處理器可以包括既支持類別A也支持類別B的一個或多個通用有序或無序核。當然,來自一個類別的特征在不同實施例中還可以在其他類別中實現(xiàn)。用高級語言編寫的程序將被置入(例如,適時編譯或靜態(tài)編譯)多個不同可執(zhí)行形式,其包括:1)僅具有得到目標處理器支持的類別的指令以用于執(zhí)行的形式;或2)具有使用所有類別的指令的不同組合編寫的備用例程并且具有控制流代碼的形式,該控制流代碼基于當前執(zhí)行代碼的處理器所支持的指令來選擇例程來執(zhí)行。

示范性特定向量友好指令格式

圖9是圖示根據實施例的示范性特定向量友好指令格式的框圖。圖9示出特定向量友好指令格式900,其在它規(guī)定字段的位點、大小、解釋和順序以及對于那些字段中的一些的值這一意義上是特定的。特定向量友好指令格式900可以用于擴展x86指令集,并且從而字段中的一些與在現(xiàn)有x86指令集及其擴展(例如,AVX)中使用的那些相似或相同。該格式與具有擴展的現(xiàn)有x86指令集的前綴編碼字段、實際操作碼字節(jié)字段、MOD R/M字段、SIB字段、位移字段和立即字段保持一致。圖示來自圖9的字段映射到的來自圖8的字段。

應理解,盡管為了說明目的在通用向量友好指令格式800的上下文中參考特定向量友好指令格式900描述實施例,本發(fā)明不限于特定向量友好指令格式900,但要求保護的情況下除外。例如,通用向量友好指令格式800對各種字段預想多種可能大小,而特定向量友好指令格式900示出為具有特定大小的字段。通過特定示例,盡管數(shù)據元素寬度字段864圖示為采用特定向量友好指令格式900的一位字段,本發(fā)明并不受此限制(即,通用向量友好指令格式800預想數(shù)據元素寬度字段864的其他大小)。

通用向量友好指令格式800包括在下文按圖9A中圖示的順序列出的下列字段。

EVEX前綴(字節(jié)0-3)902-采用四字節(jié)形式編碼。

格式字段840(EVEX字節(jié)0,位[7:0])-第一字節(jié)(EVEX字節(jié)0)是格式字段840并且它包含0x62(在本發(fā)明的一個實施例中用于區(qū)分向量友好指令格式的唯一值)。

第二-第四字節(jié)(EVEX字節(jié)1-3)包括提供特定能力的若干位字段。

REX字段905(EVEX字節(jié)1,位[7-5])-由EVEX.R位字段(EVEX字節(jié)1,位[7]-R)、EVEX.X位字段(EVEX字節(jié)1,位[6]-X)和857B EX字節(jié)1、位[5]-B)組成。EVEX.R、EVEX.X和EVEX.B位字段提供與對應VEX位字段相同的功能性,并且使用1s補碼形式編碼,即ZMM0編碼為1111B,ZMM15編碼為0000B。如本領域內眾所周知的,指令的其他字段對寄存器索引的較低三個位編碼(rrr、xxx和bbb),使得Rrrr、Xxxx和Bbbb可以通過添加EVEX.R、EVEX.X和EVEX.B而形成。

REX’字段810-這是REX’字段810的第一部分并且是用于對擴展32寄存器集的較高16或較低16編碼的EVEX.R’位字段(EVEX字節(jié)1,位[4]-R’)。在本發(fā)明的一個實施例中,該位連同如下文指示的其他采用位反轉格式存儲來與BOUND指令區(qū)分開(采用眾所周知的x86 32位模式),該BOUND指令的實際操作碼字節(jié)是62,但在MOD R/M字段(下文描述)中未接受MOD字段中的值11;備選實施例未存儲此以及在下文其他采用反轉格式的其他指示位。值1用于對較低16寄存器編碼。也就是說,R’Rrrr通過使EVEX.R’、EVEX.R和來自其他字段的其他RRR組合而形成。

操作碼映射字段915(EVEX字節(jié)1,位[3:0]-mmmm)-它的內容對暗指的前導操作碼字節(jié)(0F、0F 38或0F 3)編碼。

數(shù)據元素寬度字段864(EVEX字節(jié)2,位[7]-W)由標記EVEX.W表示。EVEX.W用于定義數(shù)據類型(32位數(shù)據元素或64位數(shù)據元素)的粒度(大小)。

EVEX.vvvv 920(EVEX字節(jié)2,位[6:3]-vvvv)-EVEX.vvvv的作用可以包括以下:1)EVEX.vvvv對采用反轉(1s補碼)形式規(guī)定的第一源寄存器操作數(shù)編碼并且對于具有2個或以上源操作數(shù)的指令有效;2)EVEX.vvvv對目的地寄存器操作數(shù)(對于某些向量移位采用1s補碼形式規(guī)定)編碼;或3)EVEX.vvvv未對任何操作數(shù)編碼,字段被保留并且應包含1111b。從而,EVEX.vvvv字段920對采用反轉(1s補碼)形式存儲的第一源寄存器說明符的4個低階位編碼。根據指令,附加的不同EVEX位字段用于將說明符大小擴展到32個寄存器。

EVEX.U 868類別字段(EVEX字節(jié)2,位[2]-U)-如果EVEX.U=0,它指示類別A或EVEX.U0;如果EVEX.U=1,它指示類別B或EVEX.U1。

前綴編碼字段925(EVEX字節(jié)2,位[1:0]-pp)-為基本操作字段提供額外位。除對采用EVEX前綴格式的遺留SSE指令提供支持外,這還具有使SIMD前綴緊湊的益處(而不需要字節(jié)來表達SIMD前綴,EVEX前綴僅需要2個位)。在一個實施例中,為了支持使用采用遺留格式和采用EVEX前綴格式兩者的SIMD前綴(66H、F2H、F3H)的遺留SSE指令,這些遺留SIMD前綴編碼為SIMD前綴編碼字段;并且在運行時間在提供給解碼器的PLA(因此PLA可以執(zhí)行這些遺留指令的遺留和EVEX格式兩者而沒有修改)之前擴充成遺留SIMD前綴。盡管較新指令可以直接使用EVEX前綴編碼字段的內容作為操作碼擴展,某些實施例為了一致性采用相似方式擴充但允許有由這些遺留SIMD前綴規(guī)定的不同含義。備選實施例可以重新設計PLA來支持2位SIMD前綴編碼,并且從而不需要擴充。

Alpha字段852(EVEX字節(jié)3,位[7]-EH;也稱為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.write mask control和EVEX.N;同樣用α圖示)-如之前描述的,該字段是上下文特定的。

Beta字段854(EVEX字節(jié)3,位[6:4]-SSS,也稱為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;同樣用圖示βββ)-如之前描述的,該字段是上下文特定的。

REX’字段810-這是REX’字段的剩余部分并且是可以用于對擴展32寄存器集的較高16或較低16編碼的EVEX.V’位字段(EVEX字節(jié)3,位[3]-V’)。該位采用位反轉格式存儲。值1用于對較低16寄存器編碼。也就是說,V’VVVV通過使EVEX.V’、EVEX.vvvv組合而形成。

寫掩蔽字段870(EVEX字節(jié)3,位[2:0]-kkk)-它的內容規(guī)定如之前描述的寫掩蔽寄存器中寄存器的索引。在本發(fā)明的一個實施例中,特定值EVEX.kkk=000具有暗指對于特定指令使用無寫掩蔽的特殊行為(這可以采用多種方式實現(xiàn),包括使用硬接線到所有繞過掩蔽硬件的硬件的寫掩蔽)。

實際操作碼字段930(字節(jié)4)也稱為操作碼字節(jié)。操作碼的部分在該字段中規(guī)定。

MOD R/M字段940(字節(jié)5)包括MOD字段942、Reg字段944和R/M字段946。如之前描述的,MOD字段942的內容區(qū)分存儲器訪問和非存儲器訪問操作。Reg字段944的作用可以總結為兩個情形:對目的地寄存器操作數(shù)或源寄存器操作數(shù)編碼,或被視為操作碼擴展且未用于對任何指令操作數(shù)編碼。R/M字段946的作用可以包括以下:對引用存儲器地址的指令操作數(shù)編碼,或對目的地寄存器操作數(shù)或源寄存器操作數(shù)編碼。

標度、索引、基址(Base)(SIB)字節(jié)(字節(jié)6)-如之前描述的,標度字段850的內容用于存儲器地址生成。SIB.xxx 954和SIB.bbb 956-這些字段的內容之前關于寄存器索引Xxxx和Bbbb而被提及。

位移字段862A(字節(jié)7-10)-在MOD字段942包含10時,字節(jié)7-10是位移字段862A,并且它與遺留32位移位(disp32)相同地運作并且以字節(jié)粒度運作。

位移因數(shù)字段862B(字節(jié)7)-在MOD字段942包含01時,字節(jié)7是位移因數(shù)字段862B。該字段的位點與以字節(jié)粒度運作的遺留x86指令集8位位移(disp8)的相同。因為disp8帶符號擴展,它可以僅在-128與127字節(jié)偏移之間尋址;從64字節(jié)高速緩存行方面來看,disp8使用8個位,其可以設置成僅僅四個實際有用的值-128、-64、0和64;因為通常需要較大范圍,使用disp32;然而,disp32需要4個字節(jié)。與disp8和disp32相比之下,位移因數(shù)字段862B是disp8的重新解釋;在使用位移因數(shù)字段862B時,實際位移通過位移因數(shù)字段的內容乘以存儲器操作數(shù)訪問的大?。∟)來確定。該類型的位移稱為disp8*N。這使平均指令長度減少(單個字節(jié)用于位移但具有大得多的范圍)。這樣的壓縮位移基于有效位移是存儲器訪問的粒度的倍數(shù)并且因此不需要對地址偏移的冗余低階位編碼這一假設。也就是說,位移因數(shù)字段862B替換遺留x86指令集8位位移。從而,采用與x86指令集8位位移相同的方式對位移因數(shù)字段862B編碼(因此在ModRM/SIB編碼規(guī)則中沒有改變),唯一例外是disp8過載成disp8*N。也就是說,在編碼規(guī)則或編碼長度方面沒有改變而僅在由硬件解釋位移值方面(這需要通過存儲器操作數(shù)的大小來定標位移以獲得逐字節(jié)地址偏移)有改變。

立即字段872如之前描述的那樣操作。

全操作碼字段

圖9B是圖示根據本發(fā)明的一個實施例構成全操作碼字段874的特定向量友好指令格式900的字段的框圖。具體地,全操作碼字段874包括格式字段840、基本操作字段842和數(shù)據元素寬度(W)字段864?;静僮髯侄?42包括前綴編碼字段925、操作碼映射字段915和實際操作碼字段930。

寄存器索引字段

圖9C是圖示根據本發(fā)明的一個實施例構成寄存器索引字段844的特定向量友好指令格式900的字段的框圖。具體地,寄存器索引字段844包括REX字段905、REX’字段910、MODR/M.reg字段944、MODR/M.r/m字段946、VVVV字段920、xxx字段954和bbb字段956。

增廣操作字段

圖9D是圖示根據本發(fā)明的一個實施例構成增廣操作字段850的特定向量友好指令格式900的框圖。在類別(U)字段868包含0時,它表示EVEX.U0(類別A 868A);在它包含1時,它表示EVEX.U1(類別B 868B)。在U=0并且MOD字段942包含11(表示無存儲器訪問操作)時,alpha字段852(EVEX字節(jié)3,位[7]-EH)解釋為rs字段852A。在rs字段852A包含1(舍入852A.1)時,beta字段854(EVEX字節(jié)3,位[6:4]-SSS)解釋為舍入控制字段854A。舍入控制字段854A包括一位SAE字段856和兩位舍入操作字段858。在rs字段852A包含0(數(shù)據變換852A.2)時,beta字段854(EVEX字節(jié)3,位[6:4]-SSS)解釋為三位數(shù)據變換字段854B。在U=0并且MOD字段942包含00、01或10(表示存儲器訪問操作)時,alpha字段852(EVEX字節(jié)3,位[7]-EH)解釋為驅逐提示(EH)字段852B并且beta字段854(EVEX字節(jié)3,位[6:4]-SSS)解釋為三位數(shù)據操縱字段854C。

在U=1時,alpha字段852(EVEX字節(jié)3,位[7]-EH)解釋為寫掩蔽控制(Z)字段852C。在U=1并且MOD字段942包含11(表示無存儲器訪問操作)時,beta字段854的部分(EVEX字節(jié)3,位[4]-S0)解釋為RL字段857A;在它包含1(舍入857A.1)時,beta字段854的余下部分(EVEX字節(jié)3,位[6-5]-S2-1)解釋為舍入操作字段859A,而在RL字段857A包含0(VSIZE 857.A2)時,beta字段854的余下部分(EVEX字節(jié)3,位[6-5]-S2-1)解釋為向量長度字段859B(EVEX字節(jié)3,位[6-5]-L1-0)。在U=1并且MOD字段942包含00、01或10(表示存儲器訪問操作)時,beta字段854(EVEX字節(jié)3,位[6:4]-SSS)解釋為向量長度字段859B(EVEX字節(jié)3,位[6-5]-L1-0)和廣播字段857B(EVEX字節(jié)3,位[4]-B)。

示范性寄存器架構

圖10是根據本發(fā)明的一個實施例的寄存器架構1000的框圖。在圖示的實施例中,存在32個向量寄存器1010,其是512位寬;這些寄存器引用為zmm0至zmm31。較低16個zmm寄存器的較低階256個位覆蓋在寄存器ymm0-16上。較低16個zmm寄存器的較低階128個位(ymm寄存器的較低階128個位)覆蓋在寄存器xmm0-15上。特定向量友好指令格式900對如在下文的表6中圖示的這些覆蓋寄存器堆上操作。

表6-寄存器

也就是說,向量長度字段859B在最大長度與一個或多個其他較短長度之間選擇,其中每個這樣的較短長度是預編碼長度的長度的一半;并且沒有向量長度字段859B的指令模板對最大向量長度操作。此外,在一個實施例中,特定向量友好指令格式900的類別B指令模板對緊縮或標量單/雙精度浮點數(shù)據和緊縮或標量整數(shù)數(shù)據操作。標量操作是對zmm/ymm/xmm寄存器中的最低階數(shù)據元素位置執(zhí)行的操作;較高階數(shù)據元素位置保留為與在指令之前一樣或歸零,這取決于實施例。

寫掩蔽寄存器1015-在圖示的實施例中,存在8個寫掩蔽寄存器(k0至k7),每個的大小是64個位。在備選實施例中,寫掩蔽寄存器1015的大小是16個位。如之前描述的,在本發(fā)明的一個實施例中,向量掩蔽寄存器k0無法用作寫掩蔽;在通常將指示k0的編碼用于寫掩蔽時,它選擇硬接線寫掩蔽0xFFFF,從而有效地對該指令停用寫掩蔽。

通用寄存器1025-在圖示的實施例中,存在十六個64位通用寄存器,其連同現(xiàn)有x86尋址模式一起使用來對存儲器操作數(shù)尋址。這些寄存器通過它們的名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP和R8至R15來引用。

標量浮點堆棧寄存器堆(x87堆棧)1045,在其上混疊(aliased)MMX緊縮整數(shù)平面寄存器堆1050-在圖示的實施例中,x87堆棧是用于使用x87指令集擴展對32/64/80位浮點數(shù)據執(zhí)行標量浮點運算的八元素堆棧;而MMX寄存器用于對64位緊縮整數(shù)數(shù)據執(zhí)行操作,以及用于對在MMX與XMM寄存器之間執(zhí)行的某些操作保持操作數(shù)。

備選實施例可以使用更寬或更窄寄存器。另外,備選實施例可以使用更多、更少或不同的寄存器堆和寄存器。

為了提供更完整理解,在下文提供示范性處理器核架構、處理器和計算機架構的綜覽。

示范性核架構、處理器和計算機架構

處理器核可以由于不同目的采用不同方式以及在不同處理器中實現(xiàn)。例如,這樣的核的實現(xiàn)可以包括:1)預計用于通用計算的通用有序核;2)預計用于通用計算的高性能通用無序核;3)主要預計用于圖形和/或科學(吞吐量)計算的專用核。不同處理器的實現(xiàn)可以包括:1)CPU,其包括預計用于通用計算的一個或多個通用有序核和/或預計用于通用計算的一個或多個通用無序核;以及2)協(xié)處理器,其包括主要預計用于圖形和/或科學(吞吐量)的一個或多個專用核。這樣的不同處理器導致不同的計算機系統(tǒng)架構,其可以包括:1)與CPU在分開芯片上的協(xié)處理器;2)與CPU在相同的封裝件中的單獨晶片上的協(xié)處理器;3)與CPU在相同晶片上的協(xié)處理器(在該情況下,這樣的協(xié)處理器有時稱為專用邏輯,例如集成圖形和/或科學(吞吐量)邏輯,或稱為專用核);以及4)芯片上系統(tǒng),其在相同晶片上可以包括描述的CPU(有時稱為應用核或應用處理器)、上文描述的協(xié)處理器和額外功能性。接著描述示范性核架構,后跟示范性處理器和計算機架構的描述。

示范性核架構

有序和無序核框圖

圖11A是圖示根據實施例的示范性有序流水線和示范性寄存器重命名、無序發(fā)出/執(zhí)行流水線兩者的框圖。圖11B是圖示有序架構核的示范性實施例和根據實施例在處理器中要包括的示范性寄存器重命名、無序發(fā)出/執(zhí)行架構核兩者的框圖。圖11A-B中的實線框圖示有序流水線和有序核,而虛線框的可選添加圖示寄存器重命名、無序發(fā)出/執(zhí)行流水線和核??紤]到有序方面是無序方面的子集,將描述無序方面。

在圖11A中,處理器流水線1100包括提取段1102、長度解碼段1104、解碼段1106、分配段1108、重命名段1110、調度(也稱為調派或發(fā)出)段1112、寄存器讀取/存儲器讀取段1114、執(zhí)行段1116、寫回/存儲器寫入段1118、異常處理段1122和提交段1124。

圖11B示出處理器核1190,其包括耦合于執(zhí)行引擎單元1150的前端單元1130,并且這兩者都耦合于存儲器單元1170。核1190可以是精簡指令集計算(RISC)核、復雜指令集計算(CISC)核、超長指令字(VLIW)核或混合或備選核類型。作為再另一個選項,核1190可以是專用核,例如網絡或通信核、壓縮引擎、協(xié)處理器核、通用計算圖形處理單元(GPGPU)核、圖形核或類似物。

前端單元1130包括分支預測單元1132,其耦合于指令高速緩存單元1134,該指令高速緩存單元1134耦合于指令翻譯后備緩沖器(TLB)1136,其耦合于指令提取單元1138,該指令提取單元1138耦合于解碼單元1140。解碼單元1140(或解碼器)可以對指令解碼,并且生成一個或多個微操作、微代碼入口點、微指令、其他指令或其他控制信號作為輸出,其從原始指令解碼或另外反映原始指令或從原始指令得出。解碼單元1140可以使用各種不同機制實現(xiàn)。適合機制的示例包括但不限于查找表、硬件實現(xiàn)、可編程邏輯陣列(PLA)、微代碼只讀存儲器(ROM)等。在一個實施例中,核1190包括微代碼ROM或存儲對于某些宏指令(例如,在解碼單元1140中或另外在前端單元1130內)的微代碼的其他介質。解碼單元1140耦合于執(zhí)行引擎單元1150中的重命名/分配器單元1152。

執(zhí)行引擎單元1150包括重命名/分配器單元1152,其耦合于引退單元1154和一個或多個調度器單元的集1156。調度器單元1156代表任意數(shù)量的不同調度器,包括保留站、中央指令窗口等。調度器單元1156耦合于物理寄存器堆單元1158。物理寄存器堆單元1158中的每個代表一個或多個物理寄存器堆,其中的不同物理寄存器堆存儲一個或多個不同數(shù)據類型,例如標量整數(shù)、標量浮點、緊縮整數(shù)、緊縮浮點、向量整數(shù)、向量浮點、狀態(tài)(例如,指令指針,其是要執(zhí)行的下一個指令的地址)等。在一個實施例中,物理寄存器堆單元1158包括向量寄存器單元、寫掩蔽寄存器單元和標量寄存器單元。這些寄存器單元可以提供架構向量寄存器、向量掩蔽寄存器和通用寄存器。物理寄存器堆單元1158被引退單元1154重疊來圖示可以實現(xiàn)寄存器重命名和無序執(zhí)行所采用的各種方式(例如,使用重排序緩沖器和引退寄存器堆;使用未來文件、歷史緩沖器和引退寄存器堆;使用寄存器映射和寄存器池;等)。引退單元1154和物理寄存器堆單元1158耦合于執(zhí)行集群1160。執(zhí)行集群1160包括一個或多個執(zhí)行單元的集1162和一個或多個存儲器訪問單元的集1164。執(zhí)行單元1162可以對各種類型的數(shù)據(例如,標量浮點、緊縮整數(shù)、緊縮浮點、向量整數(shù)、向量浮點)執(zhí)行各種操作(例如,移位、加法、減法、乘法)。盡管一些實施例可以包括專用于特定功能或功能集的許多執(zhí)行單元,其他實施例可以僅包括一個執(zhí)行單元或多個執(zhí)行單元,其全部執(zhí)行所有功能。調度器單元1156、物理寄存器堆單元1158和執(zhí)行集群1160示出為可能是復數(shù)個,因為某些實施例對某些類型的數(shù)據/操作創(chuàng)建單獨流水線(例如,標量整數(shù)流水線、標量浮點/緊縮整數(shù)/緊縮浮點/向量整數(shù)/向量浮點流水線,和/或存儲器訪問流水線,每個具有它們自身的調度器單元、物理寄存器堆單元和/或執(zhí)行集群-并且在單獨存儲器訪問流水線的情況下,實現(xiàn)某些實施例,其中僅該流水線的執(zhí)行集群具有存儲器訪問單元1164)。還應理解在使用單獨流水線的情況下,這些流水線中的一個或多個可以是無序發(fā)出/執(zhí)行并且余下的是有序的。

存儲器訪問單元集1164耦合于存儲器單元1170,其包括耦合于數(shù)據高速緩存單元1174的數(shù)據TLB單元1172,該數(shù)據高速緩存單元1174耦合于2級(L2)高速緩存單元1176。在一個示范性實施例中,存儲器訪問單元1164可以包括負載單元、存儲地址單元和存儲數(shù)據單元,其中的每個耦合于存儲器單元1170中的數(shù)據TLB單元1172。指令高速緩存單元1134進一步耦合于存儲器單元1170中的2級(L2)高速緩存單元1176。L2高速緩存單元1176耦合于一個或多個其他級高速緩存并且最終耦合于主存儲器。

通過示例,示范性寄存器重命名無序發(fā)出/執(zhí)行核架構可以如下實現(xiàn)流水線1100:1)指令提取1138執(zhí)行提取和長度解碼段1102和1104;2)解碼單元1140執(zhí)行解碼段1106;3)重命名/分配器單元1152執(zhí)行分配段1108和重命名段1110;4)調度器單元1156執(zhí)行調度段1112;5)物理寄存器堆單元1158和存儲器單元1170執(zhí)行寄存器讀取/存儲器讀取段1114;執(zhí)行集群1160執(zhí)行執(zhí)行段1117;6)存儲器單元1170和物理寄存器堆單元1158執(zhí)行寫回/存儲器寫入段1118;7)在異常處理段1122中可以牽涉各種單元;以及8)引退單元1154和物理寄存器堆單元1158執(zhí)行提交段1124。

核1190可以支持一個或多個指令集(例如,x86指令集(具有添加有較新版本的一些擴展);加利福尼亞州Sunnyvale市的MIPS Technologies的MIPS指令集;加利福尼亞州San Jose市的ARM Holdings的ARM指令集(具有可選的額外擴展,例如NEON)),其包括本文描述的指令。在一個實施例中,核1190包括支持緊縮數(shù)據指令集擴展(例如,AVX1、AVX2,和/或某一形式的通用向量友好指令格式(U=0和/或U=1),如之前描述)的邏輯,由此允許被許多多媒體應用使用的操作使用緊縮數(shù)據來執(zhí)行。

應理解,核可以支持多線程(執(zhí)行兩個或以上并行集合的操作或線程),并且可以采用多種方式這樣做,包括時間分片多線程、同時多線程(其中單個物理核對線程中的每個提供邏輯核,該物理核是同時多線程的)或其組合(例如,時間分片提取和解碼以及之后的同時多線程,例如在Intel? Hyperthreading技術中)。

盡管在無序執(zhí)行的上下文中描述寄存器重命名,應理解寄存器重命名可以在有序架構中使用。盡管處理器的圖示實施例還包括單獨指令和數(shù)據高速緩存單元1134/1174和共享L2高速緩存單元1176,備選實施例可以對于指令和數(shù)據兩者具有單個內部高速緩存,例如1級(L1)內部高速緩存,或多級內部高速緩存。在一些實施例中,系統(tǒng)可以包括內部高速緩存以及對于核和/或處理器在外部的外部高速緩存的組合。備選地,所有高速緩存可以在核和/或處理器外部。

特定示范性有序核架構

圖12A-B圖示更特定的示范性有序核架構的框圖,該核將是芯片中的若干邏輯塊(其包括相同類型和/或不同類型的其他核)中的一個。邏輯塊通過高帶寬互連網絡(例如,環(huán)型網絡)根據應用與某種固定功能邏輯、存儲器I/O接口和其他必要I/O邏輯通信。

圖12A是根據實施例的單個處理器核連同它到晶片上互連網絡1202的連接以及它的2級(L2)高速緩存1204的本地子集的框圖。在一個實施例中,指令解碼器1200支持具有緊縮數(shù)據指令集擴展的x86指令集。L1高速緩存1206允許對高速緩存存儲器直至標量和向量單元中的低延遲訪問。盡管在一個實施例中(為了簡化設計),標量單元1208和向量單元1210使用單獨寄存器集(分別地,標量寄存器1212和向量寄存器1214)并且在它們之間傳輸?shù)臄?shù)據被寫入存儲器并且然后從1級(L1)高速緩存1206讀回,備選實施例可以使用不同的方法(例如,使用單個寄存器集或包括通信路徑,其允許數(shù)據在兩個寄存器堆之間傳輸而不被寫和讀回)。

L2高速緩存1204的本地子集是全局L2高速緩存的部分,其分成單獨本地子集,每個處理器核一個。每個處理器核具有到它自己的L2高速緩存1204的本地子集的直接訪問路徑。處理器核讀取的數(shù)據存儲在它的L2高速緩存子集1204中并且可以與其他處理器核(訪問它們自己的本地L2高速緩存子集)并行地被快速訪問。處理器核寫入的數(shù)據存儲在它自己的L2高速緩存子集1204中并且如必要的話從其他子集刷新(flush)。環(huán)型網絡對共享數(shù)據確保一致性。環(huán)型網絡是雙向的,以允許例如處理器核、L2高速緩存和其他邏輯塊等代理在芯片內彼此通信。每個環(huán)型數(shù)據路徑每個方向是1012位寬。

圖12B是根據實施例的圖12A中的處理器核的部分的展開圖。圖12B包括L1高速緩存1204的L1數(shù)據高速緩存1206A部分,以及關于向量單元1210和向量寄存器1214的更多細節(jié)。具體地,向量單元1210是16寬向量處理單元(VPU)(參見16寬ALU 1228),其執(zhí)行整數(shù)、單精度浮點和雙精度浮點指令中的一個或多個。VPU支持用攪合單元1220攪合寄存器輸入、利用數(shù)值轉換單元1222A-B的數(shù)值轉換以及對存儲器輸入用復制單元1224復制。寫入掩蔽寄存器1226允許預測所得的向量寫入。

具有集成存儲器控制器和圖形的處理器

圖13是根據實施例可以具有超過一個核、可以具有集成存儲器控制器并且可以具有集成圖形的處理器1300的框圖。圖13中的實線框圖示處理器1300,其具有單核1302A、系統(tǒng)代理1310、一個或多個總線控制器單元的集1316,而虛線框的可選添加圖示備選處理器1300,其具有多個核1302A-N、系統(tǒng)代理單元1310中的一個或多個集成存儲器控制器單元的集1314和專用邏輯1308。

從而,處理器1300的不同實現(xiàn)可以包括:1)CPU,其中專用邏輯1308是集成圖形和/或科學(吞吐量)邏輯(其可以包括一個或多個核),并且核1302A-N是一個或多個通用核(例如,通用有序核、通用無序核、兩者的組合);2)協(xié)處理器,其中核1302A-N是主要預計用于圖形和/或科學(吞吐量)的大量專用核;以及3)協(xié)處理器,其中核1302A-N是大量通用有序核。從而,處理器1300可以是通用處理器、協(xié)處理器或專用處理器,例如網絡或通信處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高吞吐量的許多集成核(MIC)協(xié)處理器(其包括30個或以上的核)、嵌入式處理器或類似物。處理器可以在一個或多個芯片上實現(xiàn)。處理器1300可以是一個或多個襯底的一部分和/或可以在一個或多個襯底上使用許多工藝技術中的任一個來實現(xiàn),例如BiCMOS、CMOS或NMOS。

存儲器層級包括在核內的一個或多個級別的高速緩存、一個或多個共享高速緩存單元的集1306和耦合于集成存儲器控制器單元集1314的外部存儲器(未示出)。共享高速緩存單元集1306可以包括一個或多個中間級別的高速緩存,例如2級(L2)、3級(L3)、4級(L4)或其他級別的高速緩存、最后級別的高速緩存(LLC)和/或其組合。盡管在一個實施例中基于環(huán)的互連單元1312使集成圖形邏輯1308、共享高速緩存單元集1306和系統(tǒng)代理單元1310/集成存儲器控制器單元1314互連,備選實施例可以使用任意數(shù)量的眾所周知的技術用于互連這樣的單元。在一個實施例中,維持一個或多個高速緩存單元1306與核1302-A-N之間的一致性。

在一些實施例中,核1302A-N中的一個或多個能夠多線程。系統(tǒng)代理1310包括協(xié)調并且操作核1302A-N的那些部件。系統(tǒng)代理單元1310可包括例如功率控制單元(PCU)和顯示單元。PCU可以是或包括用于調節(jié)核1302A-N和集成圖形邏輯1308的功率狀態(tài)所需要的邏輯和部件。顯示單元用于驅動一個或多個外部連接的顯示器。

核1302A-N從架構指令集方面來看可以是同構或異構的;即,核1302A-N中的兩個或以上可以能夠執(zhí)行相同指令集,而其他可以僅能夠執(zhí)行該指令集的子集或不同指令集。

示范性計算機架構

圖14-17是示范性計算機架構的框圖。本領域內已知的對于便攜式電腦、臺式機、手持PC、個人數(shù)字助理、工程化工作站、服務器、網絡設備、網絡集線器、交換機、嵌入式處理器、數(shù)字信號處理器(DSP)、圖形設備、視頻游戲設備、機頂盒、微控制器、手機、便攜式媒體播放器、手持設備和各種其他電子設備的其他系統(tǒng)設計和配置也是適合的。一般,能夠包含如本文公開的處理器和/或其他執(zhí)行邏輯的很多種系統(tǒng)或電子設備一般是適合的。

現(xiàn)在參考圖14,示出根據本發(fā)明的一個實施例的系統(tǒng)1400的框圖。該系統(tǒng)1400可以包括一個或多個處理器1410、1415,其耦合于控制器中樞1420。在一個實施例中,控制器中樞1420包括圖形存儲器控制器中樞(GMCH)1490和輸入/輸出中樞(IOH)1450(其可以在單獨芯片上);GMCH 1490包括存儲器和圖形控制器,存儲器1440和協(xié)處理器1445耦合于這些控制器;IOH 1450使輸入/輸出(I/O)設備1460耦合于GMCH 1490。備選地,存儲器和圖形控制器中的一個或兩個在處理器內集成(如本文描述的),存儲器1440和協(xié)處理器1445直接耦合于處理器1410和在具有IOH 1450的單芯片中的控制器中樞1420。

額外處理器1415的可選性質在圖14中用折線指示。每個處理器1410、1415可以包括本文描述的處理核中的一個或多個并且可以是某一版本的處理器1300。

存儲器1440可以是例如動態(tài)隨機存取存儲器(DRAM)、相變存儲器(PCM)或兩者的組合。對于至少一個實施例,控制器中樞1420經由多點總線(例如前端總線(FSB))、點到點接口(例如QuickPath互連(QPI))或相似連接1495與處理器1410、1415通信。

在一個實施例中,協(xié)處理器1445是通用處理器,例如高吞吐量MIC處理器、網絡或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或類似物。在一個實施例中,控制器中樞1420可以包括集成圖形加速器。

從品質(包括架構、微架構、熱、功耗特性及類似物)的度量譜方面來看,在物理資源1410、1415之間可以存在多種差異。

在一個實施例中,處理器1410執(zhí)行指令,其控制通用類型的數(shù)據處理操作。協(xié)處理器指令可以嵌入指令內。處理器1410將這些協(xié)處理器指令識別為應由附連協(xié)處理器1445執(zhí)行的類型。因此,處理器1410在協(xié)處理器總線或其他互連上向協(xié)處理器1445發(fā)出這些協(xié)處理器指令(或代表協(xié)處理器指令的控制信號)。協(xié)處理器1445接受并且執(zhí)行接收的協(xié)處理器指令。

現(xiàn)在參考圖15,示出根據本發(fā)明的實施例的第一更具體示范性系統(tǒng)1500的框圖。如在圖15中示出的,多處理器系統(tǒng)1500是點到點互連系統(tǒng),并且包括經由點到點互連1550而耦合的第一處理器1570和第二處理器1580。處理器1570和1580中的每個可以是某一版本的處理器1300。在本發(fā)明的一個實施例中,處理器1570和1580分別是處理器1410和1415,而協(xié)處理器1538是協(xié)處理器1445。在另一個實施例中,處理器1570和1580分別是處理器1410和協(xié)處理器1445。

示出處理器1570和1580,其分別包括集成存儲器控制器(IMC)單元1572和1582。處理器1570還包括點到點(P-P)接口1576和1578作為它的總線控制器單元的部分;相似地,第二處理器1580包括P-P接口1586和1588。處理器1570、1580可經由點到點(P-P)接口1550使用P-P接口電路1578、1588交換信息。如在圖15中示出的,IMC 1572和1582使處理器耦合于相應的存儲器,即存儲器1532和存儲器1534,其可以是本地附連到相應處理器的主存儲器的部分。

處理器1570、1580每個可以使用點到點接口電路1576、1594、1586、1598經由個體P-P接口1552、1554與芯片集1590交換信息。芯片集1590可以可選地經由高性能接口1539與協(xié)處理器1538交換信息。在一個實施例中,協(xié)處理器1538是專用處理器,例如高吞吐量MIC處理器、網絡或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或類似物。

共享高速緩存(未示出)可以包括在任一處理器中或在兩個處理器外部,然而經由P-P互連與處理器連接,使得如果處理器置于低功率模式則任一或兩個處理器的本地高速緩存信息可以存儲在共享高速緩存中。

芯片集1590可以經由接口1596耦合于第一總線1516。在一個實施例中,第一總線1516可以是外圍部件互連(PCI)總線,或例如PCI Express總線或另一個第三代I/O互連總線等總線,但本發(fā)明的范圍不受此限制。

如在圖15中示出的,各種I/O設備1514連同總線橋1518可以耦合于第一總線1516,該總線橋1518使第一總線1516耦合于第二總線1520。在一個實施例中,例如協(xié)處理器、高吞吐量MIC處理器、GPGPU、加速器(例如,圖形加速器或數(shù)字信號處理(DSP)單元)、現(xiàn)場可編程門陣列或任何其他處理器等一個或多個額外處理器1515耦合于第一總線1516。在一個實施例中,第二總線1520可以是低引腳計數(shù)(LPC)總線。各種設備可以耦合到第二總線1520,其包括例如鍵盤和/或鼠標1522、通信設備1527和存儲單元1528,例如盤驅動器或其他大容量存儲設備,其在一個實施例中可以包括指令/代碼和數(shù)據1530。此外,音頻I/O 1524可以耦合于第二總線1520。注意其他架構是可能的。例如,代替圖15的點到點架構,系統(tǒng)可以實現(xiàn)多點總線或其他這樣的架構。

現(xiàn)在參考圖16,示出根據本發(fā)明的實施例的第二更具體的示范性系統(tǒng)1600的框圖。圖15和圖16中的類似元件具有類似的標號,并且圖15的某些方面已經從圖16省略以避免混淆圖16的其他方面。

圖16圖示處理器1570、1580可以分別包括集成存儲器和I/O控制邏輯(“CL”)1572和1582。從而,CL 1572、1582包括集成存儲器控制器單元并且包括I/O控制邏輯。圖16圖示不僅存儲器1532、1534耦合于CL 1572、1582,而且I/O設備1614也耦合于控制邏輯1572、1582。遺留I/O設備1615耦合于芯片集1590。

現(xiàn)在參考圖17,示出根據本發(fā)明的實施例的SoC 1700的框圖。圖13中的相似元件具有類似的標號。虛線框也是更先進SoC上的可選特征。在圖17中,互連單元1702耦合于:應用處理器1710,其包括:一個或多個核的集202A-N和共享高速緩存單元1306;系統(tǒng)代理單元1310;總線控制器單元1316;集成存儲器控制器單元1314;一個或多個協(xié)處理器的集1720,其可以包括集成圖形邏輯、圖像處理器、音頻處理器和視頻處理器;靜態(tài)隨機存取存儲器(SRAM)單元1730;直接存儲器訪問(DMA)單元1732;和顯示單元1740,用于耦合于一個或多個外部顯示器。在一個實施例中,協(xié)處理器1720包括專用處理器,例如網絡或通信處理器、壓縮引擎、GPGPU、高吞吐量MIC處理器、嵌入式處理器或類似物。

本文公開的機制的實施例在硬件、軟件、固件或這樣的實現(xiàn)方法的組合中實現(xiàn)。實施例實現(xiàn)為在可編程系統(tǒng)上執(zhí)行的計算機程序或程序代碼,這些可編程系統(tǒng)包括至少一個處理器、存儲系統(tǒng)(其包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設備和至少一個輸出設備。

程序代碼(例如在圖15中圖示的代碼1530)可以應用于輸入指令來執(zhí)行本文描述的功能并且生成輸出信息。該輸出信息可以采用已知方式應用于一個或多個輸出設備。為了該申請,處理系統(tǒng)包括具有處理器的任何系統(tǒng),例如;數(shù)字信號處理器(DSP)、微控制器、專用集成電路(ASIC)或微處理器。

程序代碼可以采用高級程序式或面向對象的編程語言實現(xiàn)來與處理系統(tǒng)通信。根據期望,程序代碼還可以采用匯編或機器語言實現(xiàn)。實際上,本文描述的機構在范圍上不限于任何特定編程語言。在任何情況下,語言可以是編譯或解釋語言。

至少一個實施例的一個或多個方面可以由存儲在機器可讀介質上的代表性指令來實現(xiàn),該機器可讀介質代表處理器內的各種邏輯,其在被機器讀取時促使該機器構造邏輯來執(zhí)行本文描述的技術。這樣的表示(稱為“IP核”)可以存儲在有形的機器可讀介質上并且供應給各種客戶或制造設施來裝入實際上構造邏輯或處理器的構造機器。

這樣的機器可讀存儲介質可以無限制地包括由機器或設備制造或形成的物品的非暫時性有形設置,包括存儲介質,例如硬盤、任何其他類型的盤(包括軟盤、光盤、壓縮盤只讀存儲器(CD-ROM)、壓縮盤可重寫(CD-RW)和磁光盤)、半導體器件例如只讀存儲器(ROM)、隨機存取存儲器(RAM)(例如動態(tài)隨機存取存儲器(DRAM)、靜態(tài)隨機存取存儲器(SRAM))、可擦除可編程只讀存儲器(EPROM)、閃速存儲器、電可擦除可編程只讀存儲器(EEPROM)、相變存儲器(PCM)、磁或光卡,或適合于存儲電子指令的任何其他類型的介質。

因此,實施例還包括非暫時性有形機器可讀介質,其包含指令或包含設計數(shù)據,例如硬件描述語言(HDL),其定義本文描述的結構、電路、裝置、處理器和/或系統(tǒng)特征。這樣的實施例還可以稱作程序產品。

仿真(其包括二進制翻譯、代碼變形等)

在一些情況下,指令轉換器可以用于將來自源指令集的指令轉換成目標指令集。例如,指令轉換器可將指令翻譯(例如,使用靜態(tài)二進制翻譯、動態(tài)二進制翻譯,其包括動態(tài)編譯)、變形、仿真或用別的方式轉換成要由核處理的一個或多個其他指令。指令轉換器可在軟件、硬件、固件或其組合中實現(xiàn)。指令轉換器可以在處理器上、脫離處理器或部分在處理器上而部分脫離處理器。

圖18是根據實施例對比軟件指令轉換器使用的框圖,軟件指令轉換器將源指令集中的二進制指令轉換成目標指令集中的二進制指令。在圖示的實施例中,指令轉換器是軟件指令轉換器,但備選地,指令轉換器可在軟件、固件、硬件或其各種組合中實現(xiàn)。圖18示出采用高級語言1802的程序可使用x86編譯器1804編譯來生成x86二進制代碼1806,其可以由具有至少一個x86指令集核1516的處理器本機執(zhí)行。

具有至少一個x86指令集核1816的處理器代表任何處理器,其可以通過以下步驟而執(zhí)行與具有至少一個x86指令集核的Intel處理器大致相同的功能以便實現(xiàn)與具有至少一個x86指令集核的Intel處理器大致相同的結果:兼容地執(zhí)行或另外處理(1)Intel x86指令集核的指令集的相當大一部分或(2)以在具有至少一個x86指令集核的Intel處理器上運行為目標的應用或其他軟件的目標代碼版本。x86編譯器1804代表能操作成生成x86二進制代碼1806(例如,目標代碼)的編譯器,這些x86二進制代碼1806可以在具有或沒有額外鏈接處理的情況下在具有至少一個x86指令集核1816的處理器上執(zhí)行。相似地,圖18示出采用高級語言1802的程序可使用備選指令集編譯器1808編譯來生成備選指令集二進制代碼1810,其可以由沒有至少一個x86指令集核1814的處理器(例如,具有執(zhí)行加利福尼亞州Sunnyvale市的MIPS Technologies的MIPS指令集和/或執(zhí)行加利福尼亞州San Jose市的ARM Holdings的ARM指令集的核的處理器)本機執(zhí)行。

指令轉換器1812用于將x86二進制代碼1806轉換成可以由沒有x86指令集核1814的處理器本機執(zhí)行的代碼。該轉換代碼不太可能與備選指令集二進制代碼1810相同,因為有此能力的指令轉換器難以制造;然而,轉換代碼將完成一般操作并且由來自備選指令集的指令構成。從而,指令轉換器1812代表軟件、固件、硬件或其組合,其通過仿真、模擬或任何其他過程而允許不具有x86指令集處理器或核的處理器或其他電子設備執(zhí)行x86二進制代碼1806。

在前面的說明中,參考本發(fā)明的特定示范性實施例來描述本發(fā)明。然而,可以對其做出各種修改和改變而不偏離如在附上的權利要求中闡述的本發(fā)明的更廣泛精神和范圍,這將是顯而易見的。說明書和圖因此要認為是在說明性而非限制性意義上。

本文描述的指令指硬件的特定配置,例如專用集成電路(ASIC),其配置成執(zhí)行某些操作或具有預定功能性。這樣的電子設備典型地包括一個或多個處理器的集,其耦合于一個或多個其他部件,例如一個或多個存儲設備(非暫時性機器可讀存儲介質)、用戶輸入/輸出設備(例如,鍵盤、觸屏和/或顯示器)和網絡連接。處理器集與其他部件的耦合典型地通過一個或多個總線和橋(也稱作總線控制器)。存儲設備和承載網絡業(yè)務的信號分別代表一個或多個機器可讀存儲介質和機器可讀通信介質。從而,給定電子設備的存儲設備典型地存儲代碼和/或數(shù)據以供在該電子設備的一個或多個處理器的集上執(zhí)行。

當然,本發(fā)明的實施例的一個或多個部分可以使用軟件、固件和/或硬件的不同組合來實現(xiàn)。在該整個詳細描述中,為了解釋目的,闡述許多特定細節(jié)以便提供對本發(fā)明的全面理解。然而,本發(fā)明可以在沒有這些特定細節(jié)中的一些的情況下實踐,這對于本領域技術人員將是明顯的。在某些實例中,未詳盡描述眾所周知的結構和功能以避免使本發(fā)明的主旨難以理解。因此,本發(fā)明的范圍和精神應從隨附的權利要求方面來判斷。

當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1