用于減少短整數(shù)乘法數(shù)量的系統(tǒng)、裝置和方法
【專利摘要】公開一種用于減少短整數(shù)乘法數(shù)量的系統(tǒng)、裝置和方法。描述用于僅使用一次乘法來計(jì)算第一源操作數(shù)數(shù)據(jù)值的平方、第二源操作數(shù)數(shù)據(jù)值的平方以及第一和第二源操作數(shù)數(shù)據(jù)的乘法的系統(tǒng)、方法和裝置。
【專利說明】明了本發(fā)明,其中類似標(biāo)記指示相似元素,
里器(處理器核)的示例性實(shí)施例的框圖。的實(shí)施例。
法的實(shí)施例。
過華的示例性方法。
?器架構(gòu)700的框圖。
民例性有序流水線以及示例性寄存器重命包括在處理器中的有序架構(gòu)核示例性實(shí)施構(gòu)核的框圖。
I構(gòu)的框圖,該核可以是芯片中的若干邏輯X132所述,使用多個(gè)寄存器映射和池)的一指出,否則短語寄存器架構(gòu)、寄存器文件和?指定寄存器的方式。在期望特殊性的情況字器架構(gòu)中的寄存器/文件,同時(shí)不同的形勿理寄存器、重排序緩沖器、引退寄存器、寄定的指令格式定義多個(gè)字段(位數(shù)、位的位I操作數(shù)。給定的指令利用給定的指令格式3勺指令序列,其中序列中的每個(gè)指令是指令
5用、咖3 (識(shí)別、挖掘和合成)應(yīng)用/視覺和:縮/解壓縮、語音識(shí)別算法和音頻處理)通居并行性”)。單指令多數(shù)據(jù)(3110)指的是卜類型。3頂0技術(shù)尤其適用于處理器,這些山分到多個(gè)固定大小的數(shù)據(jù)元素中,每個(gè)數(shù)可被指定為源操作數(shù),該源操作數(shù)作為四個(gè)元素,而目的地向量操作數(shù)中的數(shù)據(jù)元素被稱為目的地或結(jié)果數(shù)據(jù)元素。這些源向量操作數(shù)具有相同尺寸且包含相同寬度的數(shù)據(jù)元素,因此它們包含相同數(shù)量的數(shù)據(jù)元素。兩個(gè)源向量操作數(shù)中的相同位位置中的源數(shù)據(jù)元素形成數(shù)據(jù)元素對(duì)(也稱為相對(duì)應(yīng)的數(shù)據(jù)元素;即,每個(gè)源操作數(shù)的數(shù)據(jù)元素位置O中的數(shù)據(jù)元素相對(duì)應(yīng),每個(gè)源操作數(shù)的數(shù)據(jù)元素位置I中的數(shù)據(jù)元素相對(duì)應(yīng),等等)。SIMD指令指定的操作在這些源數(shù)據(jù)元素對(duì)中的每對(duì)上單獨(dú)執(zhí)行,以生成匹配數(shù)量的結(jié)果數(shù)據(jù)元素,并且因此每對(duì)源數(shù)據(jù)元素具有相對(duì)應(yīng)的結(jié)果數(shù)據(jù)元素。因?yàn)椴僮魇谴怪钡模乙驗(yàn)榻Y(jié)果向量操作數(shù)尺寸相同,具有相同數(shù)量的數(shù)據(jù)元素,且結(jié)果數(shù)據(jù)元素以與源向量操作數(shù)相同的數(shù)據(jù)元素順序存儲(chǔ),結(jié)果數(shù)據(jù)元素在結(jié)果向量操作數(shù)中的位位置與源向量操作數(shù)中的相對(duì)應(yīng)源數(shù)據(jù)元素對(duì)相同。除示例性SMD指令類型外,存在各種其它類型的SMD指令(例如,僅具有一個(gè)源向量操作數(shù)或具有兩個(gè)以上的源向量操作數(shù);以水平方式操作;生成不同尺寸的結(jié)果向量操作數(shù),具有不同尺寸的數(shù)據(jù)元素和/或具有不同的數(shù)據(jù)元素順序)。應(yīng)理解,術(shù)語目的地向量操作數(shù)(或目的地操作數(shù))被定義為執(zhí)行由指令指定的操作的直接結(jié)果,包括該目的地操作數(shù)在位置處的存儲(chǔ)(在寄存器中或在該指令指定的存儲(chǔ)器地址處),使得它可由另一個(gè)指令訪問作為源操作數(shù)(通過另一個(gè)指令對(duì)該相同位置的指定)。
[0023]例如由丨ntd:?Core?處理器(具有包括x86、MMX?、流SMD擴(kuò)展(SSE)、SSE2、SSE3、SSE4.USSE4.2指令的指令集)所使用的SMD技術(shù)在應(yīng)用性能上帶來了極大的提高(Core?和MMX?是加利福尼亞州圣克拉拉市的英特爾公司的注冊(cè)商標(biāo)或商標(biāo))。另外的SMD擴(kuò)展集稱為高級(jí)向量擴(kuò)展(AVX) (AVX1和AVX2)并且使用VEX編碼方案,已經(jīng)發(fā)行和/或出版(例如,參見Intel?) 64和IA-32架構(gòu)軟件開發(fā)者手冊(cè),2011年10月;以及Intel.?高級(jí)向量擴(kuò)展編程參考,2011年6月)。
[0024]一些常規(guī)數(shù)學(xué)運(yùn)算,諸如a2+a*b+b2和a [i] =b [i]2,對(duì)矩陣和長(zhǎng)數(shù)字乘法而言十分常見。這種數(shù)學(xué)運(yùn)算使用大量乘法指令,這些乘法指令在現(xiàn)代CPU的等待時(shí)間方面仍然代價(jià)昂貴。例如,令a、b是以B為基的無符號(hào)整數(shù)。計(jì)算a2+a*b+b2的代碼是:
1:a—sq=a氺a;
2: a—times—b=a氺b;
3:b—sq=b*b;
4:三個(gè)乘法相加
[0025]對(duì)于現(xiàn)代CPU,每個(gè)乘法耗用約5個(gè)循環(huán),因此3個(gè)乘法的總等待時(shí)間為15個(gè)循環(huán)。
[0026]以下是指令集中通常被稱為平方一乘法(square-multiply, SQRMUL)指令的指令實(shí)施例以及可以用于改進(jìn)等待時(shí)間的系統(tǒng)、架構(gòu)、指令格式等的實(shí)施例。SQRMUL的執(zhí)行計(jì)算第一源操作數(shù)數(shù)據(jù)值的平方、第二源操作數(shù)數(shù)據(jù)值的平方、以及第一和第二源操作數(shù)數(shù)據(jù)的乘法,并且將全部三個(gè)計(jì)算存儲(chǔ)在單個(gè)目的地操作數(shù)中。
[0027]圖1示出SQRMUL指令的示例性執(zhí)行。兩個(gè)源寄存器101和103分別持有值A(chǔ)和B。這些值由執(zhí)行邏輯107處理,以產(chǎn)生A2、A*B、以及B2。這些結(jié)果被存儲(chǔ)在目的地寄存器105中。該寄存器可以是通用寄存器(例如雙字尺寸寄存器)或者(具有用于存儲(chǔ)所計(jì)算值的數(shù)據(jù)元素位置)打包數(shù)據(jù)寄存器。雖然示出特定順序,但是可以使用任何其它順序來存儲(chǔ)所計(jì)算的值。
[0028]圖2是用于執(zhí)行一個(gè)或多個(gè)SQRMUL指令204的處理器(處理器核)200的示例性實(shí)施例的框圖。在一些實(shí)施例中,處理器可以是通用處理器(例如,用在臺(tái)式機(jī)、膝上型計(jì)算機(jī)、服務(wù)器等計(jì)算機(jī)中的類型)。替換地,處理器可以是專用處理器。合適的專用處理器的例子包括但不限于,網(wǎng)絡(luò)處理器、通信處理器、加密處理器、圖形處理器、協(xié)處理器、嵌入式處理器、數(shù)字信號(hào)處理器(DSP)、以及控制器,這里僅給出幾個(gè)示例。處理器可以是各種復(fù)雜指令集計(jì)算(CISC)處理器、各種精簡(jiǎn)指令集計(jì)算(RISC)處理器、各種超長(zhǎng)指令字(VLIW)處理器、上述處理器的各種混合、或者完全其他類型的處理器中的任一個(gè)。
[0029]處理器200包括架構(gòu)上可見的寄存器(例如,架構(gòu)寄存器文件)205。架構(gòu)寄存器還可在本文中被簡(jiǎn)稱為寄存器。除非另行指出或顯而易見,短語架構(gòu)寄存器、寄存器文件和寄存器在本文中被用于指代這樣的寄存器:該寄存器對(duì)于被宏指令或匯編語言指令指定來標(biāo)識(shí)操作數(shù)的軟件和/或編程器和/或寄存器而言是可見。這些寄存器與給定微架構(gòu)(例如,由指令使用的臨時(shí)寄存器、重排序緩沖器、引退(retirement)寄存器等)中的其他非架構(gòu)或非架構(gòu)可視的寄存器形成對(duì)比。寄存器通常表示管芯上處理器存儲(chǔ)位置。所例示的架構(gòu)寄存器包括打包數(shù)據(jù)寄存器206。打包數(shù)據(jù)寄存器中的每一個(gè)可操作用于存儲(chǔ)打包或向量數(shù)據(jù)。所例示的架構(gòu)寄存器還包括打包數(shù)據(jù)操作掩碼寄存器207。打包數(shù)據(jù)操作掩碼寄存器中的每一個(gè)可操作用于存儲(chǔ)打包數(shù)據(jù)操作掩碼。在本說明書中這些寄存器可被稱為寫掩碼寄存器。打包數(shù)據(jù)操作數(shù)可被存儲(chǔ)在打包數(shù)據(jù)寄存器207中。
[0030]處理器還包括執(zhí)行邏輯208。執(zhí)行邏輯可操作用于執(zhí)行或處理一個(gè)或多個(gè)SQRMUL指令204。在一些實(shí)施例中,執(zhí)行邏輯可包括特定邏輯(例如,可能與固件組合的特定電路或硬件)以執(zhí)行這些指令。
[0031]示例件SQRMUL格式
[0032]該指令的示例性格式是“SQRMUL DEST, SOURCE I, SOURCE 2”,其中所有這些操作數(shù)是寄存器。在一些實(shí)施例中,寄存器是通用寄存器。這些寄存器可以采用任何尺寸,包括但不限于,8位、16位、32位、64位和128位。在其它實(shí)施例中,寄存器可以是浮點(diǎn)寄存器或打包數(shù)據(jù)寄存器。在其它實(shí)施例中,源是通用寄存器,且目的地是打包數(shù)據(jù)寄存器。在大多數(shù)實(shí)施例中,源寄存器存儲(chǔ)無符號(hào)的整數(shù)。
[0033]執(zhí)行SQRMUL的示例性方法
[0034]圖3示出處理器中SQRMUL指令的執(zhí)行的實(shí)施例。在301,獲取具有第一和第二源寄存器操作數(shù)、目的地寄存器操作數(shù)、和操作碼的SQRMUL指令。
[0035]在303,通過解碼邏輯解碼SQRMUL指令。
[0036]在305,檢索/讀取源操作數(shù)的值。例如,讀取源寄存器。
[0037]在307,由執(zhí)行資源(諸如一個(gè)或多個(gè)功能單元)執(zhí)行所解碼的SQRMUL指令(或者包括這種指令的操作,諸如微操作),以計(jì)算第一源操作數(shù)數(shù)據(jù)值的平方、第二源操作數(shù)數(shù)據(jù)值的平方、以及第一和第二操作數(shù)數(shù)據(jù)的乘法,并且將全部三個(gè)計(jì)算存儲(chǔ)在單個(gè)目的地操作數(shù)中。
[0038]在309,所計(jì)算的值被存儲(chǔ)到目的地存儲(chǔ)器操作數(shù)中。這些值可以以特定順序存儲(chǔ),諸如從最不重要到最重要(a2,a*b,到B2)或者相反順序,等等。在一些實(shí)施例中,所計(jì)算的值被存儲(chǔ)在打包數(shù)據(jù)寄存器的數(shù)據(jù)元素中。
[0039]盡管已經(jīng)單獨(dú)地示出307和309,但在一些實(shí)施例中,它們可作為指令執(zhí)行的一部分一起執(zhí)行。
[0040]圖4和圖5示出處理SQRMUL指令的方法的實(shí)施例。在這些實(shí)施例中,L被定義為以位計(jì)的通用寄存器尺寸(32或64),a和b分別是以B為基的第一和第二操作數(shù)的無符號(hào)整數(shù),N等于以位為單位的log2(B)。在以下示例中,a或A表示存儲(chǔ)在第一源中的數(shù)據(jù),b或B表示存儲(chǔ)在第二源中的數(shù)據(jù)。在一些實(shí)施例中,移位(或類似操作)多個(gè)位。
[0041]圖4示出處理SQRMUL指令的方法的實(shí)施例。這是一般情況,其中L>=6N。在該實(shí)施例中,假設(shè)之前已經(jīng)執(zhí)行操作301-305中的一些或全部,然而未示出它們以免混淆以下給出的細(xì)節(jié)。例如,未示出獲取和解碼,也未示出操作數(shù)檢索。
[0042]在401,構(gòu)建臨時(shí)變量t。在一些實(shí)施例中,該臨時(shí)變量通過將A左移位2N并用B對(duì)移位的值進(jìn)行OR (或)運(yùn)算來構(gòu)建。換言之,t=(A〈〈2*N) |B。通常,這耗用兩個(gè)時(shí)鐘循環(huán)。所得的t值為A*22N+B。
[0043]在403,計(jì)算臨時(shí)變量的平方。這創(chuàng)建了第二臨時(shí)變量t=t*t=A2*24N+2AB*22N+B2。在一些情況下,該乘法耗用5個(gè)循環(huán)。
[0044]在405,從第二臨時(shí)變量提取A2、A*B、和B2。通過將第二臨時(shí)變量右移位4N來提取A2。換言之, A2=t》4N。通過將第二臨時(shí)變量與((I左移位2N)減I)的值進(jìn)行AND (與)運(yùn)算并且右移位2N加1,來提取A*B。換言之,A*B=(t&(l〈〈2N-l))》(2N+l)。最后,通過將第二臨時(shí)變量與((2左移位N)減I)的值的I (數(shù)個(gè)I)補(bǔ)碼進(jìn)行AND (與)運(yùn)算,來提取B2。換言之,B2=t&~(2〈〈N-1)。在一些系統(tǒng)中,這總共耗用2-3個(gè)循環(huán)。
[0045]在407,存儲(chǔ)所提取的值。在一些實(shí)施例中,將A2、A*B、和B2分別存儲(chǔ)在雙字的低、中和高四分之一中。在其它實(shí)施例中,將這些值存儲(chǔ)在打包數(shù)據(jù)寄存器的獨(dú)立數(shù)據(jù)元素中。
[0046]圖5示出處理SQRMUL指令的方法的實(shí)施例。這是一般情況,其中4N=L。在該實(shí)施例中,假設(shè)之前已經(jīng)執(zhí)行操作301-305中的一些或全部,然而未示出它們以免混淆以下給出的細(xì)節(jié)。例如,未示出獲取和解碼,也未示出操作數(shù)檢索。
[0047]在501,構(gòu)建臨時(shí)變量t。在一些實(shí)施例中,該臨時(shí)變量通過將A左移位2N并用B對(duì)移位的值進(jìn)行OR (或)運(yùn)算來構(gòu)建。換言之,t=(A〈〈2*N) |B。通常,這耗用兩個(gè)時(shí)鐘循環(huán)。所得的t值為A*22N+B。
[0048]在503,計(jì)算臨時(shí)變量的平方并將其存儲(chǔ)在第一和第二位置。這創(chuàng)建存儲(chǔ)A2*24N+2AB*22N+B2的位置。在一些情況下,該乘法耗用5個(gè)循環(huán)。在一些實(shí)施例中,第一和第二位置是寄存器。
[0049]在505,提取A2、A*B、和B2。A2是存儲(chǔ)在第一位置中的值。換言之,A2=位置I。通過將存儲(chǔ)在第二位置中的數(shù)據(jù)右移位(2N加1),提取A*B。換言之,A*B=位置2>>(2N+1).最終,通過將第二位置的內(nèi)容與(2^減I)的值的I (數(shù)個(gè)I)補(bǔ)碼進(jìn)行AND (與)運(yùn)算,提取B2。換言之,B2=位置2&~(2〈〈2N-1)。在一些系統(tǒng)中,這總共耗用I個(gè)循環(huán)。
[0050]在507,存儲(chǔ)所提取的值。在一些實(shí)施例中,將A2、A*B、和B2分別存儲(chǔ)在雙字的低、中和高四分之一中。在其它實(shí)施例中,將這些值存儲(chǔ)在打包數(shù)據(jù)寄存器的獨(dú)立數(shù)據(jù)元素中。
[0051]圖6示出在圖4和5的流程之間進(jìn)行選擇的示例性方法。在601,判定4N=L是否成立。如果是,在603,使用圖5的流程。如果否,在605,使用圖4的流程。
[0052]雖然以上是針對(duì)SQRMUL指令進(jìn)行描述的,但是在不支持SQRMUL的處理器中,以上代碼序列可以由乘法指令執(zhí)行。
[0053]示例性寄存器架構(gòu)
[0054]圖7是根據(jù)本發(fā)明的一個(gè)實(shí)施例的寄存器架構(gòu)700的框圖。在所示的實(shí)施例中,存在512位寬的32個(gè)向量寄存器710,這些寄存器被標(biāo)注為zmmO至zmm31。較低的16個(gè)zmm寄存器的較低階256位覆蓋在寄存器ymmO-16上。較低的16個(gè)zmm寄存器的較低階128位(ymm寄存器的較低階128位)覆蓋在寄存器xmmO-15上。
[0055]通用寄存器725 —在所示的實(shí)施例中,存在與現(xiàn)有x86尋址模式一起使用以對(duì)存儲(chǔ)器操作數(shù)尋址的十六個(gè)64位通用寄存器。通過名稱RAX、RBX、RCX、RDX、RBP、RS1、RD1、RSP>以及R8至R15來標(biāo)注這些寄存器。
[0056]與MMX打包整數(shù)平坦寄存器文件750重疊的標(biāo)量浮點(diǎn)堆棧寄存器文件(x87堆棧)745,在所示的實(shí)施例中,x87堆棧是用于使用x87指令集擴(kuò)展對(duì)32/64/80位浮點(diǎn)數(shù)據(jù)執(zhí)行標(biāo)量浮點(diǎn)操作的8元素堆棧,而MMX寄存器用于對(duì)64位打包整數(shù)數(shù)據(jù)執(zhí)行操作、以及保留操作數(shù)用于在MMX和XMM寄存器之間執(zhí)行的一些操作。
[0057]本發(fā)明的替換實(shí)施例可使用更寬或更窄的寄存器。另外,本發(fā)明的替換實(shí)施例可使用更多、更少、或不同的寄存器文件和寄存器。
[0058]示例性核架構(gòu)、處理器、以及計(jì)算機(jī)架構(gòu)
[0059]處理器核可以以不同的方式、出于不同的目的、并且在不同的處理器中實(shí)現(xiàn)。舉例而言,這些核的實(shí)現(xiàn)可包括:1)期望用于通用計(jì)算的通用有序核;2)期望用于通用計(jì)算的高性能通用無序核;3)期望主要用于圖形和/或科學(xué)(吞吐量)計(jì)算的專用核。不同處理器的實(shí)現(xiàn)可包括:1)包括期望用于通用計(jì)算的一個(gè)或多個(gè)通用有序核和/或期望用于通用計(jì)算的一個(gè)或多個(gè)通用無序核的CPU ;以及2)包括期望主要用于圖形和/或科學(xué)(吞吐量)的一個(gè)或多個(gè)專用核的協(xié)處理器。這些不同的處理器導(dǎo)致不同的計(jì)算機(jī)系統(tǒng)架構(gòu),可包括:1)與CPU分開的單獨(dú)芯片上的協(xié)處理器;2)與CPU相同的封裝中的單獨(dú)管芯上的協(xié)處理器;3)與CPU相同的管芯上的協(xié)處理器(在此情況下,這種協(xié)處理器有時(shí)被稱為專用邏輯,諸如集成圖形和/或科學(xué)(吞吐量)邏輯、或者專用核);以及4)在相同管芯上可包括所述CPU(有時(shí)被稱為應(yīng)用核或應(yīng)用處理器)、上述協(xié)處理器、以及附加功能的芯片上的系統(tǒng)。接著描述示例性核架構(gòu),隨后描述示例性處理器和計(jì)算機(jī)架構(gòu)。
[0060]示例性核架構(gòu)
[0061]有序和無序核框圖
[0062]圖8A是示出根據(jù)本發(fā)明的實(shí)施例的示例性有序流水線以及示例性寄存器重命名、無序發(fā)布/執(zhí)行流水線的框圖。圖8B是示出根據(jù)本發(fā)明的實(shí)施例的要包括在處理器中的有序架構(gòu)核示例性實(shí)施例以及示例性寄存器重命名、無序發(fā)布/執(zhí)行架構(gòu)核的框圖。圖8A-B中的實(shí)線框示出有序流水線和有序核,而任選增加的虛線框示出寄存器重命名、無序發(fā)布/執(zhí)行流水線和核。假設(shè)有序方面是無序方面的子集,將描述無序方面。
[0063]在圖8A中,處理器流水線800包括獲取級(jí)802、長(zhǎng)度解碼級(jí)804、解碼級(jí)806、分配級(jí)808、重命名級(jí)810、調(diào)度(也稱為分派或發(fā)布)級(jí)812、寄存器讀取/存儲(chǔ)器讀取級(jí)814、執(zhí)行級(jí)816、回寫/存儲(chǔ)器寫入級(jí)818、異常處理級(jí)822、以及提交級(jí)824。
[0064]圖SB示出處理器核890,該核包括耦合到執(zhí)行引擎單元850的前端單元830,并且兩者都耦合到存儲(chǔ)器單元870。核890可以是精簡(jiǎn)指令集計(jì)算(RISC)核、復(fù)雜指令集計(jì)算(CISC)核、超長(zhǎng)指令字(VLIW)核或混合或其他核類型。作為另一選項(xiàng),核890可以是專用I示任何數(shù)量的不同調(diào)度器,包括:預(yù)約站、里寄存器文件單元858。每個(gè)物理寄存器文中不同的物理寄存器文件存儲(chǔ)一種或多種.整數(shù)、打包浮點(diǎn)、向量整數(shù)、向量浮點(diǎn)、狀態(tài)卜)等。在一個(gè)實(shí)施例中,物理寄存器文件單這些寄存器單元可提供架構(gòu)向量寄存器、文件單元858由引退單元854重疊,以示出目重排序緩沖器和引退寄存器文件;使用特寄存器映射和寄存器池等)的各種方式。引\行集群860。執(zhí)行集群860包括一組一個(gè)I訪問單元864。執(zhí)行單元862可執(zhí)行各種類型的數(shù)據(jù)(例如,標(biāo)量浮點(diǎn)、打包整數(shù)、打;施例可包括專屬于專用功能或功能集的大單元或者全部用于執(zhí)行所有功能的多個(gè)執(zhí)358、以及執(zhí)行集群860被示為可能是多個(gè),子離的流水線(例如,標(biāo)量整數(shù)流水線、標(biāo)量
[0068]作為示例,示例性寄存器命名、無序發(fā)布/執(zhí)行核架構(gòu)可如下地實(shí)現(xiàn)流水線800:I)指令獲取838執(zhí)行獲取和長(zhǎng)度解碼級(jí)802和804 ;2)解碼單元840執(zhí)行解碼級(jí)806 ;3)重命名/分配器單元852執(zhí)行分配級(jí)808和重命名級(jí)810 ;4)調(diào)度器單元856執(zhí)行調(diào)度級(jí)812 ;5)物理寄存器文件單元858和存儲(chǔ)器單元870執(zhí)行寄存器讀取/存儲(chǔ)器讀取級(jí)814 ;執(zhí)行集群860執(zhí)行執(zhí)行級(jí)816 ;6)存儲(chǔ)器單元870和物理寄存器文件單元858執(zhí)行回寫/存儲(chǔ)器寫入級(jí)818 ;7)各個(gè)單元可涉及異常處理級(jí)822;以及8)引退單元854和物理寄存器文件單元858執(zhí)行提交級(jí)824。
[0069]核890可支持一個(gè)或多個(gè)指令集(例如,x86指令集(具有已經(jīng)使用較新版本增加的一些擴(kuò)展)、加利福尼亞州森尼維爾市MIPS技術(shù)公司的MIPS指令集、加利福尼亞州森尼維爾市的ARM控股公司的ARM指令集(具有諸如NEON之類的任選的附加擴(kuò)展)),包括本文中所描述的指令。在一個(gè)實(shí)施例中,核890包括支持打包數(shù)據(jù)指令集擴(kuò)展(例如,AVXl、AVX2和/或先前描述的一些形式的一般向量友好指令格式(U=O和/或U=I))的邏輯,從而允許很多多媒體應(yīng)用使用的操作能夠使用打包數(shù)據(jù)來執(zhí)行。
[0070]應(yīng)當(dāng)理解,核可支持多線程(執(zhí)行兩組或兩組以上的平行操作或線程集),并且可以通過包括分時(shí)多線程、同時(shí)多線程(其中單個(gè)物理核為每一線程提供物理核,物理核是同時(shí)多線程的)、或者其組合(例如,分時(shí)獲取和解碼以及此后諸如在Intel? Hyperthreading技術(shù)中的同時(shí)多線程)的各種方式實(shí)現(xiàn)。
[0071]盡管在無序執(zhí)行的上下文中描述了寄存器重命名,但是應(yīng)當(dāng)理解寄存器重命名可在有序架構(gòu)中使用。盡管處理器的所示實(shí)施例還包括單獨(dú)的指令和數(shù)據(jù)高速緩存單元834/874以及共享的L2高速緩存單元876,但是替換實(shí)施例可具有用于指令和數(shù)據(jù)兩者的單個(gè)內(nèi)部高速緩存,諸如舉例而言,一級(jí)(LI)內(nèi)部高速緩存、或多級(jí)內(nèi)部高速緩存。在一些實(shí)施例中,該系統(tǒng)可包括內(nèi)部高速緩存和外部高速緩存的組合,該外部高速緩存在核和/或處理器外部。替換地,所有高速緩存可在核和/或處理器外部。
[0072]專用示例性有序核架構(gòu)
[0073]圖9A-B示出更具體的示例性有序核架構(gòu)的框圖,該核可以是芯片中的若干邏輯塊之一(包括相同類型和/或不同類型的其它核)。依據(jù)應(yīng)用,邏輯塊通過高帶寬互連網(wǎng)絡(luò)(例如,環(huán)形網(wǎng)絡(luò))與一些固定功能邏輯、存儲(chǔ)器I/O接口、以及其他必要的存儲(chǔ)器I/O邏輯進(jìn)行通信。
[0074]圖9A是根據(jù)本發(fā)明的實(shí)施例的連接到片上互聯(lián)網(wǎng)絡(luò)902且具有二級(jí)(L2)高速緩存的本地子集904的單個(gè)處理器核的框圖。在一個(gè)實(shí)施例中,指令解碼器900支持具有打包數(shù)據(jù)指令集擴(kuò)展的x86指令集。LI高速緩存906允許對(duì)高速緩存存儲(chǔ)器進(jìn)行低等待時(shí)間訪問而進(jìn)入標(biāo)量和向量單元。盡管在一個(gè)實(shí)施例中(為了簡(jiǎn)化設(shè)計(jì))標(biāo)量單元908和向量單元910使用分離的寄存器集合(分別是標(biāo)量寄存器912和向量寄存器914)并且在兩者之間傳輸?shù)臄?shù)據(jù)被寫入存儲(chǔ)器且隨后讀取回到一級(jí)(LI)高速緩存906或從LI高速緩存906讀取,但是本發(fā)明的替換實(shí)施例可使用不同的方法(例如,使用單個(gè)寄存器集合或者包括允許數(shù)據(jù)在不寫入和讀回的情況下在兩個(gè)寄存器文件之間傳輸?shù)耐ㄐ怕窂?。
[0075]L2高速緩存的本地子集904是分成分離的本地子集(每個(gè)處理器核一個(gè)本地子集)的全局L2高速緩存的一部分。每個(gè)處理器核具有到L2高速緩存的其自己的本地子集904的直接訪問路徑。由處理器核讀取的數(shù)據(jù)被存儲(chǔ)在其L2高速緩存子集904中,并且可與訪問其自己的本地L2高速緩存子集的其他處理器核并行地快速存取。由處理器核寫入的數(shù)據(jù)被存儲(chǔ)在其自己的L2高速緩存子集904中,并且如果必要?jiǎng)t從其他子集清除(flush)。環(huán)形網(wǎng)絡(luò)確保共享數(shù)據(jù)的一致性。環(huán)形網(wǎng)絡(luò)是雙向的以允許在芯片內(nèi)諸如處理器核、L2高速緩存、以及其他邏輯塊之類的代理相互通信。每個(gè)環(huán)形數(shù)據(jù)路徑是每個(gè)方向1012位寬。
[0076]圖9B是根據(jù)本發(fā)明的實(shí)施例的圖9A中的處理器核的一部分的展開圖。圖9B包括LI高速緩存906的LI數(shù)據(jù)高速緩存906A部分、以及關(guān)于向量單元910和向量寄存器914的更多細(xì)節(jié)。具體地,向量單元910是16寬向量處理單元(VPU)(參見16寬ALU928),該向量處理單元執(zhí)行整數(shù)、單精度浮動(dòng)和雙精度浮動(dòng)的指令中的一個(gè)或多個(gè)。VPU支持在存儲(chǔ)器輸入上使用拌和(swizzle)單元920拌和寄存器輸入、使用數(shù)字轉(zhuǎn)換單元922A-B數(shù)字轉(zhuǎn)換、以及使用復(fù)制單元924復(fù)制。
[0077]具有集成存儲(chǔ)器控制器和圖形器件的處理器
[0078]圖10是根據(jù)本發(fā)明的實(shí)施例的可具有一個(gè)以上核、可具有集成存儲(chǔ)器控制器、并且可具有集成圖形器件的處理器1000的框圖。圖10的實(shí)線框示出了處理器1000,處理器1000具有單個(gè)核1002A、系統(tǒng)代理1010、一組一個(gè)或多個(gè)總線控制器單元1016,而可選附加的虛線框示出了替代的處理器1000,具有多個(gè)核1002A-N、系統(tǒng)代理單元1010中的一組一個(gè)或多個(gè)集成存儲(chǔ)器控制器單元1014以及專用邏輯1008。
[0079]由此,處理器1000的不同實(shí)現(xiàn)可包括:1)具有作為集成圖形和/或科學(xué)(吞吐量)邏輯(該邏輯可包括一個(gè)或多個(gè)核)的專用邏輯1008、以及作為一個(gè)或多個(gè)通用核(例如,通用有序核、通用無序核、兩者的組合)的核1002A-N的CPU ;2)具有作為期望主要用于圖形和/或科學(xué)(吞吐量)的大量專用核的核1002A-N的協(xié)處理器;以及3)具有作為大量通用有序核的核1002A-N的協(xié)處理器。由此,處理器1000可以是通用處理器、協(xié)處理器、或?qū)S锰幚砥鳎T如舉例而言,網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU (通用圖形處理單元)、高吞吐量許多集成核(MIC)協(xié)處理器(包括30個(gè)或30個(gè)以上的核)、嵌入式處理器等。處理器可在一個(gè)或多個(gè)芯片上實(shí)現(xiàn)。處理器1000可以是一個(gè)或多個(gè)襯底的一部分,和/或在一個(gè)或多個(gè)襯底上使用大量處理技術(shù)(諸如舉例而言,BiCM0S、CM0S、或NM0S)中的任一種技術(shù)實(shí)現(xiàn)。
[0080]存儲(chǔ)器等級(jí)(hierarchy)包括核內(nèi)的一級(jí)或多級(jí)高速緩存、一組或者一個(gè)或多個(gè)共享高速緩存單元1006、以及耦合到一組集成存儲(chǔ)器控制器單元1014的外部存儲(chǔ)器(未示出)。一組共享高速緩存單元1006可包括一個(gè)或多個(gè)中級(jí)高速緩存(諸如二級(jí)(L2)、三級(jí)(L3)、四級(jí)(L4))或其他級(jí)高速緩存、最后一級(jí)高速緩存(LLC)、和/或其組合。盡管在一個(gè)實(shí)施例中,基于環(huán)的互連單元1012使集成圖形邏輯1008、一組共享高速緩存單元1006、以及系統(tǒng)代理單元1010/集成存儲(chǔ)器控制器單元1014互連,但是替換實(shí)施例可使用任意數(shù)量的公知技術(shù)來互連這些單元。在一個(gè)實(shí)施例中,在一個(gè)或多個(gè)高速緩存單元1006與核1002A-N之間維持一致性。
[0081]在一些實(shí)施例中,核1002A-H中的一個(gè)或多個(gè)核能夠多線程。系統(tǒng)代理1010包括協(xié)調(diào)和操作核1002A-N的那些組件。系統(tǒng)代理單元1010可包括例如功率控制單元(P⑶)和顯示單元。PCU可以是或者包括調(diào)整核1002A-N的功率狀態(tài)必需的邏輯和組件、以及集成圖形邏輯1008。顯示單元用于驅(qū)動(dòng)一個(gè)或多個(gè)外部連接的顯示器。
[0082]核1002A-N在架構(gòu)指令集方面可以是同質(zhì)的或者異質(zhì)的,即核1002A-N中的兩個(gè)或兩個(gè)以上核可以能夠執(zhí)行相同的指令集,而其他核可以能夠只執(zhí)行該指令集的子集或者不同的指令集。
[0083]示例性計(jì)算機(jī)架構(gòu)
[0084]圖11-14是示例性計(jì)算機(jī)架構(gòu)的框圖。在本領(lǐng)域中已知的用于膝上型計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、手持個(gè)人計(jì)算機(jī)(PC)、個(gè)人數(shù)字助理、工程工作站、服務(wù)器、網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)中樞、交換機(jī)、嵌入式處理器、數(shù)字信號(hào)處理器(DSP)、圖形設(shè)備、視頻游戲設(shè)備、機(jī)頂盒、微控制器、蜂窩電話、便攜式媒體播放器、手持設(shè)備、以及各種其他電子設(shè)備的其他系統(tǒng)設(shè)計(jì)和配置也是合適的。一般而言,能夠結(jié)合處理器和/或其他執(zhí)行邏輯的各種各樣系統(tǒng)或電子設(shè)備通常是合適的。
[0085]現(xiàn)在參考圖11,所示出的是根據(jù)本發(fā)明一個(gè)實(shí)施例的系統(tǒng)1100的框圖。系統(tǒng)1100可包括一個(gè)或多個(gè)處理器1110、1115,這些處理器耦合到控制器中樞1120。在一個(gè)實(shí)施例中,控制器中樞1120包括圖形存儲(chǔ)器控制器中樞(GMCH)1190和輸入/輸出中樞(10H)1150(它們可在分離的芯片上),GMCHl 190包括耦合到存儲(chǔ)器1140和協(xié)處理器1145的存儲(chǔ)器和圖形控制器,10H1150使輸入/輸出(I/O)設(shè)備1160耦合到GMCH1190。替換地,存儲(chǔ)器和圖形控制器中的一個(gè)或兩個(gè)集成到處理器(如本文中所描述的)中,存儲(chǔ)器1140和協(xié)處理器1145直接耦合到處理器1110、以及在單個(gè)芯片中具有10H1150的控制器中樞1120。
[0086]附加處理器1115的任選特征在圖11中用虛線指示。每個(gè)處理器1110、1115可包括本文中所描述的處理核中的一個(gè)或多個(gè),并且可以是一些版本的處理器1000。
[0087]存儲(chǔ)器1140可以是例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、相變存儲(chǔ)器(PCM)、或者兩者的組合。對(duì)于至少一個(gè)實(shí)施例,控制器中樞1120經(jīng)由諸如前側(cè)總線(FSB)之類的多點(diǎn)總線(mult1-drop bus)、諸如快速通道互連(QPI)之類的點(diǎn)對(duì)點(diǎn)接口、或者類似的連接1195與處理器1110、1115進(jìn)行通信。
[0088]在一個(gè)實(shí)施例中,協(xié)處理器1145是專用處理器,諸如舉例而言,高吞吐量MIC處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等。在一個(gè)實(shí)施例中,控制器中樞1120可包括集成圖形加速器。
[0089]按照包括架構(gòu)、微架構(gòu)、熱、功耗特征等等優(yōu)點(diǎn)的度量譜,物理資源1110、1115之間存在多種差別。
[0090]在一個(gè)實(shí)施例中,處理器1110執(zhí)行控制通用類型的數(shù)據(jù)處理操作的指令。協(xié)處理器指令可被嵌入這些指令內(nèi)。處理器1110將這些協(xié)處理器指令識(shí)別為應(yīng)由附連的協(xié)處理器1145執(zhí)行的類型。因此,處理器1110在協(xié)處理器總線或者其他互連上向協(xié)處理器1145發(fā)布這些協(xié)處理器指令(或者表示協(xié)處理器指令的控制信號(hào))。協(xié)處理器1145接受和執(zhí)行接收到的協(xié)處理器指令。
[0091]現(xiàn)在參照?qǐng)D12,所示出的是根據(jù)本發(fā)明實(shí)施例的更具體的第一示例性系統(tǒng)1200的框圖。如圖12所示,多處理器系統(tǒng)1200是點(diǎn)對(duì)點(diǎn)互連系統(tǒng),并且包括經(jīng)由點(diǎn)對(duì)點(diǎn)互連1250耦合的第一處理器1270和第二處理器1280。處理器1270和1280中的每一個(gè)可以是某個(gè)版本的處理器1000。在本發(fā)明的一個(gè)實(shí)施例中,處理器1270和1280分別是處理器1110和1115,而協(xié)處理器1238是協(xié)處理器1145。在另一實(shí)施例中,處理器1270和1280分別是處理器1110和協(xié)處理器1145。
[0092]處理器1270和1280分別被示為包括集成存儲(chǔ)器控制器(MC)單元1272和1282。處理器1270還包括作為其總線一部分的控制器單元點(diǎn)對(duì)點(diǎn)(P-P)接口 1276和1278 ;類似地,第二處理器1280包括P-P接口 1286和1288。處理器1270、1280可使用P-P接口電路1278、1288經(jīng)由點(diǎn)對(duì)點(diǎn)(P-P)接口 1250交換信息。如圖12所示,MC1272和1282使處理器分別耦合到存儲(chǔ)器,即存儲(chǔ)器1232和存儲(chǔ)器1234,這些存儲(chǔ)器可以是在本地附連到相應(yīng)處理器的主存儲(chǔ)器的部分。
[0093]處理器1270、1280可各自使用點(diǎn)對(duì)點(diǎn)接口電路1276、1294、1286、1298經(jīng)由各個(gè)P-P接口 1252、1254與芯片組1290交換信息。芯片組1290可任選地經(jīng)由高性能接口 1239與協(xié)處理器1238交換信息。在一個(gè)實(shí)施例中,協(xié)處理器1238是專用處理器,諸如舉例而言,高吞吐量MIC處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等。
[0094]共享高速緩存(未示出)可被包括在任一處理器中或者在兩個(gè)處理器外部,但是經(jīng)由P-P互連與處理器連接,由此如果處理器置于低功率模式中,則任一或兩個(gè)處理器的本地高速緩存信息可被存儲(chǔ)在共享高速緩存中。
[0095]芯片組1290可經(jīng)由接口 1296耦合到第一總線1216。在一個(gè)實(shí)施例中,第一總線1216可以是外圍組件互連(PCI)總線、或者諸如PCI Express總線或另一第三代I/O互連總線之類的總線,但是本發(fā)明的范圍不限于此。
[0096]如圖12所示,各種I/O設(shè)備1214可與總線橋1218 —起耦合到第一總線1216,該總線橋1218使第一總線1216耦合到第二總線1220。在一個(gè)實(shí)施例中,諸如協(xié)處理器、高吞吐量MIC處理器、GPGPU的加速器(諸如舉例而言,圖形加速器或數(shù)字信號(hào)處理(DSP)單元)、現(xiàn)場(chǎng)可編程門陣列、或者其他處理器之類的一個(gè)或多個(gè)附加處理器1215耦合到第一總線1216。在一個(gè)實(shí)施例中,第二總線1220可以是低引腳數(shù)(LPC)總線。在一個(gè)實(shí)施例中,多個(gè)設(shè)備可以耦合到第二總線1220,包括例如鍵盤和/或鼠標(biāo)1222、通信設(shè)備1227以及可以包括指令/代碼和數(shù)據(jù)1230的存儲(chǔ)單元1228 (諸如盤驅(qū)動(dòng)器或其它海量存儲(chǔ)設(shè)備)。此夕卜,音頻1/01224可耦合到第二總線1220。注意,其他架構(gòu)是可能的。例如,代替圖12的點(diǎn)對(duì)點(diǎn)架構(gòu),系統(tǒng)可實(shí)現(xiàn)多點(diǎn)總線或者其他此類架構(gòu)。
[0097]現(xiàn)在參考圖13,示出了根據(jù)本發(fā)明的實(shí)施例的第二更具體的示例性系統(tǒng)1300的框圖。圖12和13中的類似元素使用類似附圖標(biāo)記,且在圖13中省略了圖12的某些方面以避免混淆圖13的其它方面。
[0098]圖13示出處理器1270、1280可分別包括集成存儲(chǔ)器和I/O控制邏輯(“CL”)1272和1282。因此,CL1272和1282包括集成存儲(chǔ)器控制器單元且包括I/O控制邏輯。圖13示出不僅存儲(chǔ)器1232、1234耦合到CL1272、1282,而且I/O設(shè)備1314也耦合到控制邏輯1272、1282。傳統(tǒng)I/O設(shè)備1315耦合到芯片組1290。
[0099]現(xiàn)在參照?qǐng)D14,所示出的是根據(jù)本發(fā)明實(shí)施例的SoC1400的框圖。圖14中的類似元件具有相似的附圖標(biāo)記。同樣,虛線框是更多高級(jí)SoC上的任選特征。在圖14中,互連單元1402耦合至:應(yīng)用處理器1410,包括一組一個(gè)或多個(gè)核202A-N以及共享高速緩存單元1006 ;系統(tǒng)代理單元1010 ;總線控制器單元1016 ;集成存儲(chǔ)器控制器單元1014 ;—組一個(gè)或多個(gè)協(xié)處理器1420,可以包括集成圖形邏輯、圖像處理器、音頻處理器、視頻處理器;靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)單元1430 ;直接存儲(chǔ)器存取(DMA)單元1432 ;以及顯示單元1440,用于耦合至一個(gè)或多個(gè)外部顯示器。在一個(gè)實(shí)施例中,協(xié)處理器1420包括專用處理器,諸如舉例而言,網(wǎng)絡(luò)或通信處理器、壓縮引擎、GPGPU、高吞吐量MIC處理器、嵌入式處理製坐
[0100]本文中所公開的機(jī)構(gòu)的實(shí)施例可以在硬件、軟件、固件、或者這些實(shí)現(xiàn)方法的組合中實(shí)現(xiàn)。本發(fā)明的實(shí)施例可被實(shí)現(xiàn)為在可編程系統(tǒng)上執(zhí)行的計(jì)算機(jī)程序或程序代碼,這些可編程系統(tǒng)包括至少一個(gè)處理器、存儲(chǔ)系統(tǒng)(包括易失性和非易失性存儲(chǔ)器和/或存儲(chǔ)元件)、至少一個(gè)輸入設(shè)備、以及至少一個(gè)輸出設(shè)備。
[0101]諸如圖12所示的代碼1230之類的程序代碼可應(yīng)用于輸入指令,以執(zhí)行本文中所描述的功能并生成輸出信息。輸出信息可以以已知的方式應(yīng)用于一個(gè)或多個(gè)輸出設(shè)備。出于本申請(qǐng)的目的,處理系統(tǒng)包括具有處理器(諸如舉例而言,數(shù)字信號(hào)處理器(DSP)、微控制器、專用集成電路(ASIC)、或微處理器)的任何系統(tǒng)。
[0102]程序代碼可以以高級(jí)過程或面向?qū)ο缶幊陶Z言實(shí)現(xiàn),以與處理系統(tǒng)進(jìn)行通信。如果期望,程序代碼則還可以以匯編或機(jī)器語言實(shí)現(xiàn)。實(shí)際上,本文中所描述的機(jī)構(gòu)在范圍上不限于任何特定編程語言。在任何情況下,該語言可以是編譯或解釋語言。
[0103]至少一個(gè)實(shí)施例的一個(gè)或多個(gè)方面可通過存儲(chǔ)在機(jī)器可讀介質(zhì)上的代表性指令來實(shí)現(xiàn),該機(jī)器可讀介質(zhì)表示處理器內(nèi)的各種邏輯,這些指令在由機(jī)器讀取時(shí)使得該機(jī)器制備邏輯以執(zhí)行本文中所描述的技術(shù)。稱為“IP核”的這些表示可被存儲(chǔ)在有形的機(jī)器可讀介質(zhì)上且供應(yīng)給各種客戶或制造設(shè)施以加載到實(shí)際上制作邏輯或處理器的制備機(jī)器。
[0104]這種機(jī)器可讀存儲(chǔ)介質(zhì)可包括但不限于,由機(jī)器或設(shè)備制造或形成的制品的非瞬態(tài)有形排列,包括:諸如硬盤,包括軟盤、光盤、壓縮盤只讀存儲(chǔ)器(CD-ROM)、壓縮盤可重寫(CD-RW)存儲(chǔ)器、以及磁電-光盤的任何其他類型的盤之類的存儲(chǔ)介質(zhì);諸如只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)(諸如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM))、可擦除可編程只讀存儲(chǔ)器(EPR0M)、閃存、電可擦除可編程只讀存儲(chǔ)器(EEPROM),相變存儲(chǔ)器(PCM)之類的半導(dǎo)體器件;磁或光卡;或者適于存儲(chǔ)電子指令的任何其他類型的介質(zhì)。
[0105]因此,本發(fā)明的實(shí)施例還包括包含指令或者包含設(shè)計(jì)數(shù)據(jù)(諸如硬件描述語言(HDL))的非瞬態(tài)有形機(jī)器可讀介質(zhì),該非瞬態(tài)有形機(jī)器可讀介質(zhì)定義本文中所描述的結(jié)構(gòu)、電路、裝置、處理器、和/或系統(tǒng)特征。這些實(shí)施例還可被稱為程序產(chǎn)品。
[0106]仿真(包括二進(jìn)制翻譯、代碼變形等)
[0107]在一些情況下,指令轉(zhuǎn)換器可用于將來自源指令集的指令轉(zhuǎn)換成目標(biāo)指令集。例如,指令轉(zhuǎn)換器可將指令翻譯(例如,使用靜態(tài)二進(jìn)制翻譯、包括動(dòng)態(tài)編譯的動(dòng)態(tài)二進(jìn)制翻譯)、變形、仿真、或者以其他方式轉(zhuǎn)換成由核處理的一個(gè)或多個(gè)其他指令。指令轉(zhuǎn)換器可以在軟件、硬件、固件、或者其組合中實(shí)現(xiàn)。指令轉(zhuǎn)換器可在處理器上、在處理器以外、或者部分在處理器上且部分在處理器以外。
[0108]圖15是對(duì)比根據(jù)本發(fā)明實(shí)施例的使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn)制指令轉(zhuǎn)換為目標(biāo)指令集中的二進(jìn)制指令的框圖。在所示的實(shí)施例中,指令轉(zhuǎn)換器是軟件指令轉(zhuǎn)換器,但是替換地指令轉(zhuǎn)換器可以以軟件、固件、硬件、或者其各種組合實(shí)現(xiàn)。圖15示出以高級(jí)語言1502的程序可使用x86編譯器1504進(jìn)行編譯以生成x86 二進(jìn)制代碼1506,該x86 二進(jìn)制代碼1506可由具有至少一個(gè)x86指令集核的處理器1516在本機(jī)上執(zhí)行。具有至少一個(gè)x86指令集核1516的處理器表示可通過兼容地執(zhí)行或者以其他方式處理(I)因特爾x86指令集核的指令集的實(shí)質(zhì)部分或者(2)以在具有至少一個(gè)x86指令集核的因特爾處理器上運(yùn)行為目標(biāo)的對(duì)象代碼版本的應(yīng)用或其他軟件來執(zhí)行與具有至少一個(gè)x86指令集核的因特爾處理器基本相同的功能以實(shí)現(xiàn)與具有至少一個(gè)x86指令集核的英特爾處理器基本相同的結(jié)果的任何處理器。x86編譯器1504表示可操作用于生成在具有或者沒有附加鏈接處理的情況下可在具有至少一個(gè)x86指令集核1516的處理器上執(zhí)行的x86 二進(jìn)制代碼1506 (例如,對(duì)象代碼)的編譯器。類似地,圖15示出以高級(jí)語言1502的程序可使用替換指令集編譯器1508進(jìn)行編譯,以生成可由不具有至少一個(gè)x86指令集核的處理器1514(例如,具有執(zhí)行加利福尼亞州森尼維爾市MIPS技術(shù)公司的MIPS指令集和/或執(zhí)行加利福尼亞州森尼維爾市ARM控股公司的ARM指令集的核的處理器)在本機(jī)上執(zhí)行的替換的指令集二進(jìn)制代碼1510。該指令轉(zhuǎn)換器1512被用于將x86 二進(jìn)制代碼1506轉(zhuǎn)換為可由不具有x86指令集核的處理器1514在本機(jī)上執(zhí)行的代碼。該經(jīng)轉(zhuǎn)換的代碼不太可能與替換指令集二進(jìn)制代碼1510 —樣,因?yàn)殡y以制造能完成這樣的指令轉(zhuǎn)換器;然而,經(jīng)轉(zhuǎn)換的代碼將完成通用操作,并由替換指令集的指令所構(gòu)成。由此,指令轉(zhuǎn)換器1512表示通過仿真、模擬、或者任何其他處理允許不具有x86指令集處理器或核的處理器或者其他電子設(shè)備執(zhí)行x86 二進(jìn)制代碼1506的軟件、固件、硬件、或者其組合。
[0109]本發(fā)明的實(shí)施例包括包含解碼平方一乘法(SQRMUL)指令的解碼邏輯、執(zhí)行邏輯的裝置,SQRMUL指令包括第一源操作數(shù)、第二源操作數(shù)和目的地操作數(shù),執(zhí)行邏輯用于:計(jì)算第一源操作數(shù)數(shù)據(jù)值的平方,計(jì)算第二源操作數(shù)數(shù)據(jù)值的平方,計(jì)算第一和第二操作數(shù)數(shù)據(jù)的乘法,并將結(jié)果存儲(chǔ)在目的地操作數(shù)中,其中計(jì)算僅使用一個(gè)乘法運(yùn)算。
[0110]在該裝置的一些實(shí)施例中,以下的一個(gè)或多個(gè)彼此結(jié)合或彼此獨(dú)立地實(shí)現(xiàn):i)目的地操作數(shù)是通用寄存器;ii)第一源操作數(shù)數(shù)據(jù)值的平方存儲(chǔ)在目的地操作數(shù)的低階位上,第二源操作數(shù)數(shù)據(jù)值的平方存儲(chǔ)在目的地操作數(shù)的高階位上,并且第一和第二操作數(shù)數(shù)據(jù)的乘法存儲(chǔ)在目的地操作數(shù)的中階位上;iii)目的地操作數(shù)是打包數(shù)據(jù)寄存器,且三個(gè)計(jì)算中的每一個(gè)存儲(chǔ)在打包數(shù)據(jù)寄存器的不同數(shù)據(jù)元素中;iv)執(zhí)行邏輯通過產(chǎn)生臨時(shí)變量、對(duì)臨時(shí)變量進(jìn)行平方以及將臨時(shí)變量右移位4N位來計(jì)算第一源操作數(shù)數(shù)據(jù)值的平方,該臨時(shí)變量是通過將第一源操作數(shù)的數(shù)據(jù)值左移位2N并由第二源操作數(shù)的數(shù)據(jù)值對(duì)移位的值進(jìn)行OR(或)運(yùn)算來產(chǎn)生的,其中N為1g2 (數(shù)據(jù)值的基);v)執(zhí)行邏輯通過產(chǎn)生臨時(shí)變量、對(duì)臨時(shí)變量進(jìn)行平方、將平方的臨時(shí)變量與((2左移位2")減I)的值進(jìn)行AND(與)、以及右移位2N加I來計(jì)算第一源操作數(shù)和第二源操作數(shù)數(shù)據(jù)值的乘法,該臨時(shí)變量是通過將第一源操作數(shù)的數(shù)據(jù)值左移位2N并由第二源操作數(shù)的數(shù)據(jù)值對(duì)移位的值進(jìn)行OR (或)運(yùn)算來產(chǎn)生的,其中N為1g2 (數(shù)據(jù)值的基);vi)執(zhí)行邏輯通過產(chǎn)生臨時(shí)變量、對(duì)臨時(shí)變量進(jìn)行平方、將平方的臨時(shí)變量與((I左移位N)減I)的值的I (數(shù)個(gè)I)補(bǔ)碼進(jìn)行AND (與)運(yùn)算來計(jì)算第二源操作數(shù)數(shù)據(jù)值的平方,該臨時(shí)變量是通過將第一源操作數(shù)的數(shù)據(jù)值左移位2N并由第二源操作數(shù)的數(shù)據(jù)值對(duì)移位的值進(jìn)行OR (或)運(yùn)算來產(chǎn)生的,其中N為1g2 (數(shù)據(jù)值的基)。
[0111]本發(fā)明的實(shí)施例包括在計(jì)算機(jī)處理器中執(zhí)行平方一乘法(SQRMUL)指令的方法,SQRMUL指令包括第一源操作數(shù)、第二源操作數(shù)和目的地操作數(shù),該方法包括:計(jì)算第一源操作數(shù)數(shù)據(jù)值的平方,計(jì)算第二源操作數(shù)數(shù)據(jù)值的平方,計(jì)算第一和第二操作數(shù)數(shù)據(jù)的乘法,并將結(jié)果存儲(chǔ)在目的地操作數(shù)中,其中計(jì)算僅使用一個(gè)乘法運(yùn)算。
[0112]在該方法的一些實(shí)施例中,以下的一個(gè)或多個(gè)彼此結(jié)合或彼此獨(dú)立地實(shí)現(xiàn):i)目的地操作數(shù)是通用寄存器;ii)第一源操作數(shù)數(shù)據(jù)值的平方存儲(chǔ)在目的地操作數(shù)的低階位上,第二源操作數(shù)數(shù)據(jù)值的平方存儲(chǔ)在目的地操作數(shù)的高階位上,并且第一和第二操作數(shù)數(shù)據(jù)的乘法存儲(chǔ)在目的地操作數(shù)的中階位上;iii)目的地操作數(shù)是打包數(shù)據(jù)寄存器,且三個(gè)計(jì)算中的每一個(gè)存儲(chǔ)在打包數(shù)據(jù)寄存器的不同數(shù)據(jù)元素中;iv)通過產(chǎn)生臨時(shí)變量、對(duì)臨時(shí)變量進(jìn)行平方以及將臨時(shí)變量右移位4N位來計(jì)算第一源操作數(shù)數(shù)據(jù)值的平方,該臨時(shí)變量是通過將第一源操作數(shù)的數(shù)據(jù)值左移位2N并由第二源操作數(shù)的數(shù)據(jù)值對(duì)移位的值進(jìn)行OR (或)運(yùn)算來產(chǎn)生的,其中N為1g2 (數(shù)據(jù)值的基);v)通過產(chǎn)生臨時(shí)變量、對(duì)臨時(shí)變量進(jìn)行平方、將平方的臨時(shí)變量與((2左移位2N)減I)的值進(jìn)行AND (與)運(yùn)算、以及右移位2N加I來計(jì)算第一源操作數(shù)和第二源操作數(shù)數(shù)據(jù)值的乘法,該臨時(shí)變量是通過將第一源操作數(shù)的數(shù)據(jù)值左移位2N并由第二源操作數(shù)的數(shù)據(jù)值對(duì)移位的值進(jìn)行OR (或)運(yùn)算來產(chǎn)生的,其中N為1g2(數(shù)據(jù)值的基);vi)通過產(chǎn)生臨時(shí)變量、對(duì)臨時(shí)變量進(jìn)行平方、將平方的臨時(shí)變量與((I左移位N)減I)的值的I (數(shù)個(gè)I)補(bǔ)碼進(jìn)行AND (與)運(yùn)算來計(jì)算第二源操作數(shù)數(shù)據(jù)值的平方,該臨時(shí)變量是通過將第一源操作數(shù)的數(shù)據(jù)值左移位2N并由第二源操作數(shù)的數(shù)據(jù)值對(duì)移位的值進(jìn)行OR (或)運(yùn)算來產(chǎn)生的,其中N為1g2 (數(shù)據(jù)值的基)。
[0113]本發(fā)明的實(shí)施例包括有形機(jī)器可讀存儲(chǔ)介質(zhì),該存儲(chǔ)介質(zhì)包括由處理器執(zhí)行時(shí)使處理器執(zhí)行方法的代碼,該方法執(zhí)行平方一乘法(SQRMUL)指令,該SQRMUL指令包括第一源操作數(shù)、第二源操作數(shù)和目的地操作數(shù),該方法包括:計(jì)算第一源操作數(shù)數(shù)據(jù)值的平方,計(jì)算第二源操作數(shù)數(shù)據(jù)值的平方,計(jì)算第一和第二操作數(shù)數(shù)據(jù)的乘法,并將結(jié)果存儲(chǔ)在目的地操作數(shù)中,其中計(jì)算僅使用一個(gè)乘法運(yùn)算。
[0114]在該有形機(jī)器可讀介質(zhì)的一些實(shí)施例中,以下的一個(gè)或多個(gè)彼此結(jié)合或彼此獨(dú)立地實(shí)現(xiàn):i)目的地操作數(shù)是通用寄存器;ii)第一源操作數(shù)數(shù)據(jù)值的平方存儲(chǔ)在目的地操作數(shù)的低階位上,第二源操作數(shù)數(shù)據(jù)值的平方存儲(chǔ)在目的地操作數(shù)的高階位上,并且第一和第二操作數(shù)數(shù)據(jù)的乘法存儲(chǔ)在目的地操作數(shù)的中階位上;iii)目的地操作數(shù)是打包數(shù)據(jù)寄存器,且三個(gè)計(jì)算中的每一個(gè)存儲(chǔ)在打包數(shù)據(jù)寄存器的不同數(shù)據(jù)元素中;iv)通過產(chǎn)生臨時(shí)變量、對(duì)臨時(shí)變量進(jìn)行平方以及將臨時(shí)變量右移位4N位來計(jì)算第一源操作數(shù)數(shù)據(jù)值的平方,該臨時(shí)變量是通過將第一源操作數(shù)的數(shù)據(jù)值左移位2N并由第二源操作數(shù)的數(shù)據(jù)值對(duì)移位的值進(jìn)行OR (或)運(yùn)算來產(chǎn)生的,其中N為1g2 (數(shù)據(jù)值的基);v)通過產(chǎn)生臨時(shí)變量、對(duì)臨時(shí)變量進(jìn)行平方、將平方的臨時(shí)變量與((2左移位2n)減I)的值進(jìn)行AND (與)運(yùn)算、以及右移位2N加I來計(jì)算第一源操作數(shù)和第二源操作數(shù)數(shù)據(jù)值的乘法,該臨時(shí)變量是通過將第一源操作數(shù)的數(shù)據(jù)值左移位2N并由第二源操作數(shù)的數(shù)據(jù)值對(duì)移位的值進(jìn)行OR(或)運(yùn)算來產(chǎn)生的,其中N為1g2(數(shù)據(jù)值的基);vi)通過產(chǎn)生臨時(shí)變量、對(duì)臨時(shí)變量進(jìn)行平方、將平方的臨時(shí)變量與((I左移位N)減I)的值的I (數(shù)個(gè)I)補(bǔ)碼進(jìn)行AND (與)運(yùn)算來計(jì)算第二源操作數(shù)數(shù)據(jù)值的平方,該臨時(shí)變量是通過將第一源操作數(shù)的數(shù)據(jù)值左移位2N并由第二源操作數(shù)的數(shù)據(jù)值對(duì)移位的值進(jìn)行OR (或)運(yùn)算來產(chǎn)生的,其中N為1g2 (數(shù)據(jù)值的基)。
【權(quán)利要求】
1.一種裝置,包括: 用于解碼平方一乘法(SQRMUL)指令的解碼邏輯,所述SQRMUL指令包括第一源操作數(shù)、第二源操作數(shù)和目的地操作數(shù); 執(zhí)行邏輯,用于: 計(jì)算第一源操作數(shù)數(shù)據(jù)值的平方, 計(jì)算第二源操作數(shù)數(shù)據(jù)值的平方, 計(jì)算第一和第二操作數(shù)數(shù)據(jù)的乘法,其中所述計(jì)算僅使用一個(gè)乘法運(yùn)算;以及 將結(jié)果存儲(chǔ)在目的地操作數(shù)中。
2.如權(quán)利要求1所述的裝置,其特征在于,目的地操作數(shù)是通用寄存器。
3.如權(quán)利要求1所述的裝置,其特征在于,第一源操作數(shù)數(shù)據(jù)值的平方存儲(chǔ)在目的地操作數(shù)的低階位上,第二源操作數(shù)數(shù)據(jù)值的平方存儲(chǔ)在目的地操作數(shù)的高階位上,并且第一和第二操作數(shù)數(shù)據(jù)的乘法存儲(chǔ)在目的地操作數(shù)的中階位上。
4.如權(quán)利要求1所述的裝置,其特征在于,目的地操作數(shù)是打包數(shù)據(jù)寄存器,并且三個(gè)計(jì)算中的每一個(gè)被存儲(chǔ)在打包數(shù)據(jù)寄存器的不同數(shù)據(jù)元素中。
5.如權(quán)利要求1所述的裝置,其特征在于,執(zhí)行邏輯用于通過以下來計(jì)算第一源操作數(shù)數(shù)據(jù)值的平方, 通過將第一源操作數(shù)的數(shù)據(jù)值左移位2N并由第二源操作數(shù)的數(shù)據(jù)值對(duì)移位的值進(jìn)行OR運(yùn)算,產(chǎn)生臨時(shí)變量, 對(duì)臨時(shí)變量進(jìn)行平方,以及 將臨時(shí)變量右移位4N位,其中N為1g2 (數(shù)據(jù)值的基)。
6.如權(quán)利要求1所述的裝置,其特征在于,執(zhí)行邏輯用于通過以下來計(jì)算第一源操作數(shù)和第二源操作數(shù)的數(shù)據(jù)值的乘法, 通過將第一源操作數(shù)的數(shù)據(jù)值左移位2N并由第二源操作數(shù)的數(shù)據(jù)值對(duì)移位的值進(jìn)行OR運(yùn)算,產(chǎn)生臨時(shí)變量, 對(duì)臨時(shí)變量進(jìn)行平方, 將平方的臨時(shí)變量與((2左移位2n)減I)的值進(jìn)行AND運(yùn)算, 右移位2N位加I,其中N為1g2 (數(shù)據(jù)值的基)。
7.如權(quán)利要求1所述的裝置,其特征在于,執(zhí)行邏輯用于通過以下來計(jì)算第二源操作數(shù)數(shù)據(jù)值的平方, 通過將第一源操作數(shù)的數(shù)據(jù)值左移位2N并由第二源操作數(shù)的數(shù)據(jù)值對(duì)移位的值進(jìn)行OR運(yùn)算,產(chǎn)生臨時(shí)變量, 對(duì)臨時(shí)變量進(jìn)行平方, 將平方的臨時(shí)變量與((I左移位N)減I)的值的I補(bǔ)碼進(jìn)行AND運(yùn)算,其中N為1g2 (數(shù)據(jù)值的基)。
8.一種在計(jì)算機(jī)處理器中執(zhí)行平方一乘法(SQRMUL)指令的方法,SQRMUL指令包括第一源操作數(shù)、第二源操作數(shù)和目的地操作數(shù),所述方法包括: 計(jì)算第一源操作數(shù)數(shù)據(jù)值的平方, 計(jì)算第二源操作數(shù)數(shù)據(jù)值的平方, 計(jì)算第一和第二操作數(shù)數(shù)據(jù)的乘法,其中所述計(jì)算僅使用一個(gè)乘法運(yùn)算;以及將結(jié)果存儲(chǔ)在目的地操作數(shù)中。
9.如權(quán)利要求8所述的方法,其特征在于,目的地操作數(shù)是通用寄存器。
10.如權(quán)利要求8所述的方法,其特征在于,第一源操作數(shù)數(shù)據(jù)值的平方存儲(chǔ)在目的地操作數(shù)的低階位上,第二源操作數(shù)數(shù)據(jù)值的平方存儲(chǔ)在目的地操作數(shù)的高階位上,并且第一和第二操作數(shù)數(shù)據(jù)的乘法存儲(chǔ)在目的地操作數(shù)的中階位上。
11.如權(quán)利要求8所述的方法,其特征在于,目的地操作數(shù)是打包數(shù)據(jù)寄存器,并且三個(gè)計(jì)算中的每一個(gè)被存儲(chǔ)在打包數(shù)據(jù)寄存器的不同數(shù)據(jù)元素中。
12.如權(quán)利要求8所述的方法,其特征在于,計(jì)算第一源操作數(shù)數(shù)據(jù)值的平方包括: 通過將第一源操作數(shù)的數(shù)據(jù)值左移位2N并由第二源操作數(shù)的數(shù)據(jù)值對(duì)移位的值進(jìn)行OR運(yùn)算,產(chǎn)生臨時(shí)變量, 對(duì)臨時(shí)變量進(jìn)行平方,以及 將臨時(shí)變量右移位4N位,其中N為1g2 (數(shù)據(jù)值的基)。
13.如權(quán)利要求8所述的方法,其特征在于,計(jì)算第一源操作數(shù)和第二源操作數(shù)數(shù)據(jù)值的乘法包括: 通過將第一源操作數(shù)的數(shù)據(jù)值左移位2N并由第二源操作數(shù)的數(shù)據(jù)值對(duì)移位的值進(jìn)行OR運(yùn)算,產(chǎn)生臨時(shí)變量 , 對(duì)臨時(shí)變量進(jìn)行平方, 將平方的臨時(shí)變量與((I左移位2N)減I)的值進(jìn)行AND運(yùn)算, 右移位2N位加I,其中N為1g2 (數(shù)據(jù)值的基)。
14.如權(quán)利要求8所述的方法,其特征在于,計(jì)算第二源操作數(shù)數(shù)據(jù)值的平方包括: 通過將第一源操作數(shù)的數(shù)據(jù)值左移位2N并由第二源操作數(shù)的數(shù)據(jù)值對(duì)移位的值進(jìn)行OR運(yùn)算,產(chǎn)生臨時(shí)變量, 對(duì)臨時(shí)變量進(jìn)行平方, 將平方的臨時(shí)變量與((2左移位N)減I)的值的I補(bǔ)碼進(jìn)行AND運(yùn)算,其中N為1g2 (數(shù)據(jù)值的基)。
15.一種包括代碼的有形機(jī)器可讀存儲(chǔ)介質(zhì),所述代碼由處理器執(zhí)行時(shí)使處理器執(zhí)行方法,所述方法執(zhí)行平方一乘法(SQRMUL)指令,SQRMUL指令包括第一源操作數(shù)、第二源操作數(shù)和目的地操作數(shù),所述方法包括: 計(jì)算第一源操作數(shù)數(shù)據(jù)值的平方, 計(jì)算第二源操作數(shù)數(shù)據(jù)值的平方, 計(jì)算第一和第二操作數(shù)數(shù)據(jù)的乘法,其中所述計(jì)算僅使用一個(gè)乘法運(yùn)算;以及 將結(jié)果存儲(chǔ)在目的地操作數(shù)中。
16.如權(quán)利要求15所述的方法,其特征在于,目的地操作數(shù)是通用寄存器。
17.如權(quán)利要求15所述的方法,其特征在于,第一源操作數(shù)數(shù)據(jù)值的平方存儲(chǔ)在目的地操作數(shù)的低階位上,第二源操作數(shù)數(shù)據(jù)值的平方存儲(chǔ)在目的地操作數(shù)的高階位上,并且第一和第二操作數(shù)數(shù)據(jù)的乘法存儲(chǔ)在目的地操作數(shù)的中階位上。
18.如權(quán)利要求15所述的方法,其特征在于,計(jì)算第一源操作數(shù)數(shù)據(jù)值的平方包括: 通過將第一源操作數(shù)的數(shù)據(jù)值左移位2N并由第二源操作數(shù)的數(shù)據(jù)值對(duì)移位的值進(jìn)行OR運(yùn)算,產(chǎn)生臨時(shí)變量,對(duì)臨時(shí)變量進(jìn)行平方,以及 將臨時(shí)變量右移位4N位,其中N為1g2 (數(shù)據(jù)值的基)。
19.如權(quán)利要求15所述的方法,其特征在于,計(jì)算第一源操作數(shù)和第二源操作數(shù)數(shù)據(jù)值的乘法包括: 通過將第一源操作數(shù)的數(shù)據(jù)值左移位2N并由第二源操作數(shù)的數(shù)據(jù)值對(duì)移位的值進(jìn)行OR運(yùn)算,產(chǎn)生臨時(shí)變量, 對(duì)臨時(shí)變量進(jìn)行平方, 將平方的臨時(shí)變量與((I左移位2N)減I)的值進(jìn)行AND運(yùn)算, 右移位2N位加I,其中N為1g2 (數(shù)據(jù)值的基)。
20.如權(quán)利要求15所述的方法,其特征在于,計(jì)算第二源操作數(shù)數(shù)據(jù)值的平方包括: 通過將第一源操作數(shù)的數(shù)據(jù)值左移位2N并由第二源操作數(shù)的數(shù)據(jù)值對(duì)移位的值進(jìn)行OR運(yùn)算,產(chǎn)生臨時(shí)變量, 對(duì)臨時(shí)變量進(jìn)行平方, 將平方的臨時(shí)變量與((2左移位N)減I)的值的I補(bǔ)碼進(jìn)行AND運(yùn)算,其中N為1g2 (數(shù)據(jù)值的基)。
【文檔編號(hào)】G06F9/30GK104049940SQ201410095756
【公開日】2014年9月17日 申請(qǐng)日期:2014年3月14日 優(yōu)先權(quán)日:2013年3月15日
【發(fā)明者】I·艾爾布瑞克特, E·烏爾德-阿邁德-瓦爾 申請(qǐng)人:英特爾公司