用于處理矢量數(shù)據(jù)的方法、設(shè)備和指令的制作方法
【專利摘要】本發(fā)明的名稱為用于處理矢量數(shù)據(jù)的方法、設(shè)備和指令,一種計算機處理器包括用于執(zhí)行LoadUnpack和PackStore指令的控制邏輯。在一個實施例中,處理器包括矢量寄存器和屏蔽碼寄存器。響應(yīng)含有指定存儲器位置的自變量的PackStore指令,該處理器中的電路在所指定的存儲器位置處開始將來自矢量寄存器的未屏蔽矢量元素復(fù)制到連續(xù)的存儲器位置中,而不復(fù)制被屏蔽矢量元素。響應(yīng)LoadUnpack指令,該電路在所標(biāo)識的存儲器位置處開始將來自連續(xù)的存儲器位置的數(shù)據(jù)項復(fù)制到矢量寄存器的未屏蔽矢量元素中,而不將數(shù)據(jù)復(fù)制到被屏蔽矢量元素。還描述了其他實施例并且對這些其他實施例要求權(quán)利。
【專利說明】用于處理矢量數(shù)據(jù)的方法、設(shè)備和指令
[0001]本分案申請的母案申請日為2008年12月26日、申請?zhí)枮?00810189736.2、發(fā)明
名稱為“用于處理矢量數(shù)據(jù)的方法、設(shè)備和指令”。
【技術(shù)領(lǐng)域】
[0002]本發(fā)明公開一般涉及數(shù)據(jù)處理的領(lǐng)域,更具體地說,涉及用于處理矢量數(shù)據(jù)的方法和相關(guān)設(shè)備。
【背景技術(shù)】
[0003]數(shù)據(jù)處理系統(tǒng)可以包括諸如中央處理單元(CPU)、隨機存取存儲器(RAM)、只讀存儲器(ROM)等的硬件資源。處理系統(tǒng)還可以包括諸如基本輸入/輸出系統(tǒng)(BIOS)、虛擬機監(jiān)視器(VMM)和ー個或多個操作系統(tǒng)(OS)的軟件資源。
[0004]CPU可以提供對處理矢量的硬件支持。矢量是保存多個連續(xù)數(shù)據(jù)項的數(shù)據(jù)結(jié)構(gòu)。大小為M的矢量寄存器可以包含大小為0的N個矢量元素,其中N=M/0。例如,64字節(jié)矢量寄存器可以劃分成(a)64個矢量元素,其中每個元素保存占據(jù)I個字節(jié)的數(shù)據(jù)項,(b)32個矢量元素,其中每個元素保存各占據(jù)2個字節(jié)(或ー個“字”)的數(shù)據(jù)項,(c) 16個矢量元素以保存各占據(jù)4個字節(jié)(或一個“雙字0”)的數(shù)據(jù)項,或(d) 8個矢量元素以保存各占據(jù)8個字節(jié)或(或一個“四倍字長0”)的數(shù)據(jù)項。
[0005]為了提供數(shù)據(jù)級并行性,CPU可以支持單個指令多個數(shù)據(jù)(SIMD)操作。SIMD操作涉及對多個數(shù)據(jù)項應(yīng)用相同的操作。
[0006]例如,響應(yīng)單個SIMD相加指令,CPU可以將ー個矢量中的每個元素加到另ー個矢量中的對應(yīng)元素。CPU可以包括多個處理核以便利于并行運算。
【發(fā)明內(nèi)容】
[0007]根據(jù)第一實施例,提供了一種用于處理矢量指令的方法,所述方法包括:
[0008]接收指定矢量元素要占據(jù)的至少ー個可變分區(qū)大小的處理器指令,所述處理器指令具有指定存儲器位置的源參數(shù)、指定屏蔽寄存器的屏蔽參數(shù)和指定矢量寄存器的目的地參數(shù);以及
[0009]響應(yīng)于所述處理器指令,在所指定的存儲器位置處開始,將數(shù)據(jù)從存儲器位置復(fù)制到所指定的矢量寄存器的未屏蔽矢量元素中,而不將數(shù)據(jù)復(fù)制到所指定的矢量寄存器的被屏蔽矢量元素中。
[0010]根據(jù)第二實施例,提供了一種處理器,包括:
[0011]控制邏輯,對指定矢量元素要占據(jù)的至少ー個可變分區(qū)大小的處理器指令進(jìn)行解碼,所述處理器指令具有指定存儲器位置的源參數(shù)、指定屏蔽寄存器的屏蔽參數(shù)和指定矢量寄存器的目的地參數(shù);以及
[0012]執(zhí)行邏輯,響應(yīng)于解碼的處理器指令,在所指定的存儲器位置處開始,將數(shù)據(jù)從存儲器位置復(fù)制到所指定的矢量寄存器的未屏蔽矢量元素中,而不將數(shù)據(jù)復(fù)制到所指定的矢量寄存器的被屏蔽矢量元素中。
[0013]根據(jù)第三實施例,提供了一種計算機系統(tǒng),包括:
[0014]存儲器,存儲指定矢量元素要占據(jù)的至少ー個可變分區(qū)大小的處理器指令,所述處理器指令具有指定存儲器位置的源參數(shù)、指定屏蔽寄存器的屏蔽參數(shù)和指定矢量寄存器的目的地參數(shù);以及
[0015]處理器,與所述存儲器耦合,所述處理器包括用于對處理器指令進(jìn)行解碼的控制邏輯,以及執(zhí)行邏輯,響應(yīng)于解碼的處理器指令,在所指定的存儲器位置處開始,將數(shù)據(jù)從存儲器位置復(fù)制到所指定的矢量寄存器的未屏蔽矢量元素中,而不將數(shù)據(jù)復(fù)制到所指定的矢量寄存器的被屏蔽矢量元素中。
[0016]本發(fā)明的第一方面在于ー種處理器,包括:執(zhí)行邏輯,所述執(zhí)行邏輯通過執(zhí)行包括如下的操作來執(zhí)行處理器指令:在指定的存儲器位置處開始將來自源矢量寄存器的未屏蔽矢量元素復(fù)制到連續(xù)的存儲器位置中,而不復(fù)制來自所述源矢量寄存器的被屏蔽矢量元素。
[0017]本發(fā)明的第二方面在于ー種其上存儲了 PackStore指令的機器可訪問媒體,其中:所述PackStore指令包括標(biāo)識存儲器位置的自變量;以及所述PackStore指令在被處理器執(zhí)行時,使所述處理器在所標(biāo)識的存儲器位置處開始將來自源矢量寄存器的未屏蔽矢量元素復(fù)制到連續(xù)的存儲器位置中,而不復(fù)制被屏蔽矢量元素。
[0018]本發(fā)明的第三方面在于ー種其上存儲了 LoadUnpack指令的機器可訪問媒體,其中:所述LoadUnpack指令包括標(biāo)識存儲器位置的自變量;以及所述LoadUnpack指令在被處理器執(zhí)行吋,使所述處理器在所標(biāo)識的存儲器位置處開始將來自連續(xù)的存儲器位置的數(shù)據(jù)項復(fù)制到目標(biāo)矢量寄存器的未屏蔽矢量元素中,而不修改所述目標(biāo)矢量寄存器的被屏蔽
矢量元素。
[0019]本發(fā)明的第四方面在于ー種用于處理矢量指令的方法,所述方法包括:接收處理器指令,所述處理器指令具有指定矢量寄存器的源參數(shù)、指定屏蔽寄存器的屏蔽參數(shù)和指定存儲器位置的目的地參數(shù);以及響應(yīng)接收到所述處理器指令,在所指定的存儲器位置處開始將來自所指定的矢量寄存器的未屏蔽矢量元素復(fù)制到連續(xù)的存儲器位置,而不復(fù)制被屏蔽矢量元素。
[0020]本發(fā)明的第五方面在于ー種用于處理矢量指令的方法,所述方法包括:接收處理器指令,所述處理器指令具有指定存儲器位置的源參數(shù)、指定屏蔽寄存器的屏蔽參數(shù)和指定矢量寄存器的目的地參數(shù);以及響應(yīng)接收到所述處理器指令,在所指定的存儲器位置處開始將來自連續(xù)的存儲器位置的數(shù)據(jù)復(fù)制到所指定的矢量寄存器的未屏蔽矢量元素中,而不將數(shù)據(jù)復(fù)制到所述指定的矢量寄存器的被屏蔽矢量元素中。
[0021]本發(fā)明的第六方面在于ー種計算機系統(tǒng),包括:存儲器,所述存儲器存儲PackStore指令;以及耦合到所述存儲器的處理器,所述處理器包括對所述PackStore指令進(jìn)行解碼的控制邏輯。
[0022]本發(fā)明的第七方面在于ー種計算機系統(tǒng),包括:存儲器,所述存儲器存儲LoadUnpack指令;以及耦合到所述存儲器的處理器,所述處理器包括對所述LoadUnpack指令進(jìn)行解碼的控制邏輯?!緦@綀D】
【附圖說明】
[0023]從所附權(quán)利要求、下文對ー個或多個示例實施例的詳細(xì)描述以及對應(yīng)的附圖,本發(fā)明的特征和優(yōu)點將變得更為明顯,其中:
[0024]圖1是圖解其中可實現(xiàn)本發(fā)明的示例實施例的某些方面的適當(dāng)?shù)臄?shù)據(jù)處理環(huán)境的框圖;
[0025]圖2是圖1的處理系統(tǒng)中用于處理矢量的過程的示例實施例的流程圖;以及
[0026]圖3和圖4是圖解圖1的實施例中用于處理矢量的示例存儲構(gòu)造的框圖。
【具體實施方式】
[0027]處理系統(tǒng)中的程序可以創(chuàng)建包含數(shù)千個元素的矢量。處理系統(tǒng)中的處理器還可以包括一次只能保存16個元素的矢量寄存器。因此,該程序可以ー批16個地處理矢量中數(shù)千個元素。處理器還可以包括多個處理単元或處理核(例如16個核),以用于并行地處理多個矢量元素。例如,16個核能夠在16個單獨線程或執(zhí)行流中并行地處理16個矢量元素。
[0028]但是,在一些應(yīng)用中,矢量的大多數(shù)元素通常將需要很少或不需要處理。例如,光線跟蹤程序可以使用矢量元素來表示光線,并且該程序可以測試超過10000個光線并確定它們中僅99個從給定物體反射。如果光線與給定物體相交,則光線跟蹤程序可能需要對該光線元素執(zhí)行額外的處理,以便實現(xiàn)光線與物體相互作用。但是,對于不與物體相交的大多數(shù)光線,則無需額外的處理。例如,程序的分支可以執(zhí)行如下操作:
[0029]
【權(quán)利要求】
1.一種用于處理矢量指令的方法,所述方法包括: 接收指定矢量元素要占據(jù)的至少ー個可變分區(qū)大小的處理器指令,所述處理器指令具有指定存儲器位置的源參數(shù)、指定屏蔽寄存器的屏蔽參數(shù)和指定矢量寄存器的目的地參數(shù);以及 響應(yīng)于所述處理器指令,在所指定的存儲器位置處開始,將數(shù)據(jù)從存儲器位置復(fù)制到所指定的矢量寄存器的未屏蔽矢量元素中,而不將數(shù)據(jù)復(fù)制到所指定的矢量寄存器的被屏蔽矢量元素中。
2.如權(quán)利要求1所述的方法,所述處理器指令: 通過所述目的地參數(shù),指定容納可變的多個N個連續(xù)矢量元素的M字節(jié)矢量寄存器,每個矢量元素具有相同的O字節(jié)的可變分區(qū)大小,其中N= M/0 ;以及 通過所述屏蔽參數(shù),指定容納至少等于可變的多個N個矢量元素的多個屏蔽位的屏蔽寄存器。
3.如權(quán)利要求1所述的方法,所述處理器指令: 通過所述源參數(shù),指定在所指定的存儲器位置開始的連續(xù)存儲器位置處的數(shù)據(jù)項,每個數(shù)據(jù)項要占據(jù)所述存儲器中的所述至少一個可變分區(qū)大小的第一個。
4.如權(quán)利要求3所述的方法,所述處理器指令: 通過所述目的地參數(shù),指定容納可變`的多個N個連續(xù)矢量元素的M字節(jié)矢量寄存器,每個矢量元素要占據(jù)所述矢量寄存器中的所述至少一個可變分區(qū)大小的第二個。
5.如權(quán)利要求4所述的方法,其中: 所述未屏蔽矢量元素包括與所指定的屏蔽寄存器中的未屏蔽位對應(yīng)的矢量元素;以及 所述被屏蔽矢量元素包括與所指定的屏蔽寄存器中的被屏蔽位對應(yīng)的矢量元素。
6.如權(quán)利要求4所述的方法,其中: 在由所述源參數(shù)指定的存儲器位置處開始的多個連續(xù)存儲器位置與所指定的屏蔽寄存器中的可變的多個N個位的相同數(shù)量的未屏蔽位相對應(yīng)。
7.如權(quán)利要求3所述的方法,所述處理器指令指定轉(zhuǎn)換指示,其中: 響應(yīng)于所述處理器指令,在將數(shù)據(jù)項存儲在由所述目的地參數(shù)指定的矢量寄存器中之前,根據(jù)所述轉(zhuǎn)換指示自動轉(zhuǎn)換每個數(shù)據(jù)項;以及 每個數(shù)據(jù)項作為矢量元素來被存儲,所述矢量元素在所述矢量寄存器中占據(jù)與在所述存儲器中占據(jù)的第一可變分區(qū)大小不同的可變分區(qū)大小。
8.一種處理器,包括: 控制邏輯,對指定矢量元素要占據(jù)的至少ー個可變分區(qū)大小的處理器指令進(jìn)行解碼,所述處理器指令具有指定存儲器位置的源參數(shù)、指定屏蔽寄存器的屏蔽參數(shù)和指定矢量寄存器的目的地參數(shù);以及 執(zhí)行邏輯,響應(yīng)于解碼的處理器指令,在所指定的存儲器位置處開始,將數(shù)據(jù)從存儲器位置復(fù)制到所指定的矢量寄存器的未屏蔽矢量元素中,而不將數(shù)據(jù)復(fù)制到所指定的矢量寄存器的被屏蔽矢量元素中。
9.如權(quán)利要求8所述的處理器,所述處理器指令: 通過所述源參數(shù),指定在所指定的存儲器位置開始的連續(xù)存儲器位置處的數(shù)據(jù)項,每個數(shù)據(jù)項要占據(jù)所述存儲器中的所述至少一個可變分區(qū)大小的第一個。
10.如權(quán)利要求9所述的處理器,所述處理器指令指定轉(zhuǎn)換指示,其中: 響應(yīng)于所述處理器指令,在將數(shù)據(jù)項存儲在由所述目的地參數(shù)指定的矢量寄存器中之前,根據(jù)所述轉(zhuǎn)換指示自動轉(zhuǎn)換每個數(shù)據(jù)項;以及 每個數(shù)據(jù)項作為矢量元素來被存儲,所述矢量元素在所述矢量寄存器中占據(jù)與在所述存儲器中占據(jù)的第一可變分區(qū)大小不同的可變分區(qū)大小。
11.如權(quán)利要求9所述的處理器,所述處理器指令: 通過所述目的地參數(shù),指定容納可變的多個N個連續(xù)矢量元素的M字節(jié)矢量寄存器,每個矢量元素占據(jù)所述矢量寄存器中的所述至少一個可變分區(qū)大小的第二個。
12.如權(quán)利要求11所述的處理器,其中: 所述未屏蔽矢量元素包括與所指定的屏蔽寄存器中的未屏蔽位對應(yīng)的矢量元素;以及 所述被屏蔽矢量元素包括與所指定的屏蔽寄存器中的被屏蔽位對應(yīng)的矢量元素。
13.如權(quán)利要求11所述的處理器,其中: 在由所述源參數(shù)指定的存儲器位置處開始的多個連續(xù)存儲器位置與所指定的屏蔽寄存器中的可變的多個N個位的相同數(shù)量的未屏蔽位相對應(yīng)。
14.如權(quán)利要求8所述的處理器,所述處理器指令包括第一指令; 其中: 所述控制邏輯能夠操作來對第二處理器指令進(jìn)行解碼,第二處理器指令指定第二矢量元素要占據(jù)的至少第二可變分區(qū)大小,第二處理器指令具有指定第二矢量寄存器的第二源參數(shù)、指定第二屏蔽寄存器的第二屏蔽參數(shù)和指定第二存儲器位置的第二目的地參數(shù);以及 所述執(zhí)行邏輯能夠操作來響應(yīng)于第二處理器指令,在標(biāo)識的存儲器位置處開始,將數(shù)據(jù)項從第二矢量寄存器的未屏蔽矢量元素復(fù)制到存儲器位置,而不復(fù)制第二矢量寄存器的被屏蔽矢量元素。
15.如權(quán)利要求8所述的處理器,所述處理器指令: 通過所述目的地參數(shù),指定容納可變的多個N個連續(xù)矢量元素的M字節(jié)矢量寄存器,每個矢量元素具有相同的O字節(jié)的可變分區(qū)大小,其中N= M/0 ;以及 通過所述屏蔽參數(shù),指定容納至少等于可變的多個N個矢量元素的多個屏蔽位的屏蔽寄存器。
16.一種計算機系統(tǒng),包括: 存儲器,存儲指定矢量元素要占據(jù)的至少ー個可變分區(qū)大小的處理器指令,所述處理器指令具有指定存儲器位置的源參數(shù)、指定屏蔽寄存器的屏蔽參數(shù)和指定矢量寄存器的目的地參數(shù);以及 處理器,與所述存儲器耦合,所述處理器包括用于對處理器指令進(jìn)行解碼的控制邏輯,以及執(zhí)行邏輯,響應(yīng)于解碼的處理器指令,在所指定的存儲器位置處開始,將數(shù)據(jù)從存儲器位置復(fù)制到所指定的矢量寄存器的未屏蔽矢量元素中,而不將數(shù)據(jù)復(fù)制到所指定的矢量寄存器的被屏蔽矢量元素中。
17.如權(quán)利要求16所述的計算機系統(tǒng),所述處理器指令: 通過所述源參數(shù),指定在所指定的存儲器位置開始的連續(xù)存儲器位置處的數(shù)據(jù)項,每個數(shù)據(jù)項要占據(jù)所述存儲器中的所述至少一個可變分區(qū)大小的第一個。
18.如權(quán)利要求17所述的計算機系統(tǒng),所述處理器指令指定轉(zhuǎn)換指示,其中: 響應(yīng)于所述處理器指令,在將數(shù)據(jù)項存儲在由所述目的地參數(shù)指定的矢量寄存器中之前,根據(jù)所述轉(zhuǎn)換指示自動轉(zhuǎn)換每個數(shù)據(jù)項;以及 每個數(shù)據(jù)項作為矢量元素來被存儲,所述矢量元素在所述矢量寄存器中占據(jù)與在所述存儲器中占據(jù)的第一可變分區(qū)大小不同的可變分區(qū)大小。
19.如權(quán)利要求17所述的計算機系統(tǒng),所述處理器指令: 通過所述目的地參數(shù),指定容納可變的多個N個連續(xù)矢量元素的M字節(jié)矢量寄存器,每個矢量元素占據(jù)所述矢量寄存器中的所述至少一個可變分區(qū)大小的第二個。
20.如權(quán)利要求16所述的計算機系統(tǒng),所述處理器指令: 通過所述目的地參數(shù),指定容納可變的多個N個連續(xù)矢量元素的M字節(jié)矢量寄存器,每個矢量元素具有相同的O字節(jié)的可變分區(qū)大小,其中N= M/0 ;其中: 在由所述源參數(shù)指定的存儲器位置處開始的多個連續(xù)存儲器位置與所指定的屏蔽寄存器中的可變的多個N個位的相同數(shù)`量的未屏蔽位相對應(yīng)。
【文檔編號】G06F9/30GK103500082SQ201310464160
【公開日】2014年1月8日 申請日期:2008年12月26日 優(yōu)先權(quán)日:2007年12月26日
【發(fā)明者】R.D.卡溫 申請人:英特爾公司