專利名稱:執(zhí)行屏蔽加載和存儲(chǔ)操作的指令和邏輯的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及支持屏蔽(mask)操作的邏輯、處理器及系統(tǒng)。
背景技術(shù):
隨著處理器技術(shù)的進(jìn)步,也不斷生成新代碼在具有這些處理器的機(jī)器上運(yùn)行。用戶一般對(duì)他們的計(jì)算機(jī),不管其在用的軟件類型,期望和需要更高性能??赡軉?wèn)題產(chǎn)生自實(shí)際在處理器內(nèi)執(zhí)行的這些類型的指令和操作?;谒枰碾娐返念愋秃?或操作的復(fù)雜性,某些類型的操作會(huì)需要更多時(shí)間才能完成。這提供了優(yōu)化某些復(fù)雜操作在處理器內(nèi)執(zhí) 行的方式的機(jī)會(huì)。媒體應(yīng)用是微處理器開發(fā)的驅(qū)動(dòng)力。因此,顯示圖像和播放音頻和視頻數(shù)據(jù)(通稱為內(nèi)容)已成為目前的計(jì)算裝置越來(lái)越流行的應(yīng)用。此類操作是計(jì)算密集的,但是提供高級(jí)別的數(shù)據(jù)并行性,可以通過(guò)采用多種數(shù)據(jù)存儲(chǔ)裝置(例如單指令多數(shù)據(jù)(SIMD)寄存器)的有效的實(shí)現(xiàn)來(lái)利用這種高級(jí)別的數(shù)據(jù)并行性。許多目前的體系結(jié)構(gòu)還需要多個(gè)操作、指令或子指令(常常稱為“微操作”或“Pops”)來(lái)對(duì)多個(gè)操作數(shù)執(zhí)行多種數(shù)學(xué)運(yùn)算或數(shù)據(jù)傳輸操作,從而減小了吞吐量并增加了執(zhí)行這些操作所需的時(shí)鐘周期數(shù)。在SIMD或矢量化操作中常常使用屏蔽,以使得程序員能夠屏蔽矢量的某個(gè)部分。它廣泛地應(yīng)用于條件操作、矢量化循環(huán)的開始/結(jié)束或短矢量支持。矢量數(shù)據(jù)的屏蔽加載和存儲(chǔ)是非常復(fù)雜的操作,通常需要許多單獨(dú)指令和時(shí)鐘周期以用于執(zhí)行。在此類操作期間,完全不得執(zhí)行矢量化加載/存儲(chǔ)操作的一些部分(“被屏蔽”部分)。因?yàn)榇鎯?chǔ)器操作通常以塊(例如加載128位、存儲(chǔ)128位)來(lái)執(zhí)行,所以支持屏蔽操作以合理性能進(jìn)行,不需要參考屏蔽來(lái)進(jìn)行塊加載,變得非常棘手。由于未對(duì)準(zhǔn)的加載、頁(yè)/分段故障、數(shù)據(jù)斷點(diǎn)支持等,使得使用例如基于Intel -體系結(jié)構(gòu)(IA-32)的處理器的處理器體系結(jié)構(gòu)來(lái)執(zhí)行屏蔽加載和存儲(chǔ)甚為更加棘手。例如,當(dāng)執(zhí)行128位屏蔽加載時(shí),可能是該數(shù)據(jù)的一部分位于一個(gè)頁(yè)中而另一部分位于另一頁(yè)中。如果這些頁(yè)其中之一不存在,而恰好屬于此頁(yè)的部分未被屏蔽,則會(huì)產(chǎn)生頁(yè)故障。因此,目前的體系結(jié)構(gòu)不足以解決有效執(zhí)行屏蔽加載和存儲(chǔ)操作。相反此類技術(shù)需要很多處理周期,并且可能導(dǎo)致處理器或系統(tǒng)為執(zhí)行這些被屏蔽的操作而耗費(fèi)不必要的功率。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的實(shí)施例,提供了一種用于執(zhí)行屏蔽加載和存儲(chǔ)操作的設(shè)備,包括模塊,其用于接收和執(zhí)行屏蔽移動(dòng)指令以將矢量數(shù)據(jù)元素從源位置傳送到目的地位置,所述矢量數(shù)據(jù)元素包含多個(gè)壓縮數(shù)據(jù)元素,其中所述屏蔽移動(dòng)指令要根據(jù)矢量屏蔽寄存器中的屏蔽信息來(lái)執(zhí)行,其中所述屏蔽移動(dòng)指令是屏蔽加載指令。
根據(jù)本發(fā)明的實(shí)施例,提供了一種用于執(zhí)行屏蔽加載和存儲(chǔ)操作的方法,包括響應(yīng)系統(tǒng)的處理器中執(zhí)行屏蔽移動(dòng)指令,從所述系統(tǒng)的第一存儲(chǔ)裝置獲取包含多個(gè)壓縮值的數(shù)據(jù),以及將所述數(shù)據(jù) 存儲(chǔ)在所述系統(tǒng)的目的地存儲(chǔ)裝置中,其中所述屏蔽移動(dòng)指令要根據(jù)矢量屏蔽寄存器中的屏蔽信息來(lái)執(zhí)行;擇機(jī)性地以全寬度加載操作獲取所述數(shù)據(jù)并將其存儲(chǔ)到臨時(shí)存儲(chǔ)裝置中;以及如果在所述全寬度加載操作期間發(fā)生異常,則獨(dú)立地獲取所述多個(gè)壓縮值的每個(gè)壓縮值并將其存儲(chǔ)在所述目的地存儲(chǔ)裝置中。根據(jù)本發(fā)明的實(shí)施例,提供了一種用于執(zhí)行屏蔽加載和存儲(chǔ)操作的方法,包括響應(yīng)指令的執(zhí)行,擇機(jī)性地執(zhí)行全寬度移動(dòng)操作以從第一存儲(chǔ)裝置獲取包含多個(gè)壓縮值的矢量數(shù)據(jù)元素,以及將所述矢量數(shù)據(jù)元素存儲(chǔ)在目的地存儲(chǔ)裝置中,其中,所述指令是根據(jù)屏蔽的矢量屏蔽加載指令以將所述矢量數(shù)據(jù)元素從由關(guān)聯(lián)于所述矢量屏蔽加載指令的源標(biāo)識(shí)符所指示的存儲(chǔ)器位置加載到由關(guān)聯(lián)于所述矢量屏蔽加載指令的目的地標(biāo)識(shí)符所指示的目的地存儲(chǔ)裝置中,其中所述屏蔽被存儲(chǔ)在矢量屏蔽寄存器中。根據(jù)本發(fā)明的實(shí)施例,提供了一種用于執(zhí)行屏蔽加載和存儲(chǔ)操作的系統(tǒng),包括處理器,其包括執(zhí)行單元,所述執(zhí)行單元用于執(zhí)行屏蔽移動(dòng)指令以根據(jù)矢量屏蔽寄存器中的屏蔽信息來(lái)將矢量數(shù)據(jù)元素從源存儲(chǔ)裝置傳送到目的地存儲(chǔ)裝置中,所述矢量數(shù)據(jù)元素包含多個(gè)壓縮數(shù)據(jù)元素;寄存器文件,其包含多個(gè)各用于存儲(chǔ)矢量數(shù)據(jù)元素的矢量寄存器和用于存儲(chǔ)針對(duì)所述屏蔽移動(dòng)指令的屏蔽的矢量屏蔽寄存器;以及存儲(chǔ)緩沖器,其包含多個(gè)項(xiàng)目,所述多個(gè)項(xiàng)目各用于存儲(chǔ)待處理指令、目的地標(biāo)識(shí)符、源標(biāo)識(shí)符以及在所述待處理指令是屏蔽存儲(chǔ)指令的情況下存儲(chǔ)來(lái)自所述屏蔽的屏蔽數(shù)據(jù);以及耦合到所述處理器的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM),其中所述處理器用于擇機(jī)性地執(zhí)行全寬度存儲(chǔ)操作以將所述待處理指令、所述源標(biāo)識(shí)符、所述目的地標(biāo)識(shí)符和所述屏蔽數(shù)據(jù)存儲(chǔ)到所述存儲(chǔ)緩沖器,其中如果在所述全寬度存儲(chǔ)操作期間發(fā)生異常,所述處理器用于對(duì)所述多個(gè)壓縮數(shù)據(jù)元素中其具有的屏蔽數(shù)據(jù)的相應(yīng)部分具有第一值的每個(gè)壓縮數(shù)據(jù)元素進(jìn)行獨(dú)立地獲取并將其存儲(chǔ)在所述目的地存儲(chǔ)裝置中。根據(jù)本發(fā)明的一個(gè)方面,提供一種設(shè)備,包括邏輯,其用于接收和執(zhí)行屏蔽移動(dòng)指令以將矢量數(shù)據(jù)元素從源位置傳送到目的地位置,所述矢量數(shù)據(jù)元素包含多個(gè)壓縮數(shù)據(jù)元素,其中所述屏蔽移動(dòng)指令要根據(jù)矢量屏蔽寄存器中的屏蔽信息來(lái)執(zhí)行。根據(jù)本發(fā)明的另一個(gè)方面,提供一種方法,包括響應(yīng)系統(tǒng)的處理器中執(zhí)行矢量屏蔽移動(dòng)指令,從所述系統(tǒng)的第一存儲(chǔ)裝置獲取包含多個(gè)壓縮值的數(shù)據(jù),以及將所述數(shù)據(jù)存儲(chǔ)在所述系統(tǒng)的目的地存儲(chǔ)裝置中。根據(jù)本發(fā)明的又一個(gè)方面,提供一種其上存儲(chǔ)有指令的機(jī)器可讀媒體,所述指令在被機(jī)器執(zhí)行時(shí)使得所述機(jī)器執(zhí)行一種方法,所述方法包括響應(yīng)所述指令的執(zhí)行,擇機(jī)性地執(zhí)行全寬度移動(dòng)操作以從第一存儲(chǔ)裝置獲取包含多個(gè)壓縮值的矢量數(shù)據(jù)元素,以及將所述矢量數(shù)據(jù)元素存儲(chǔ)在目的地存儲(chǔ)裝置中,其中所述指令是根據(jù)屏蔽的矢量屏蔽移動(dòng)指令。根據(jù)本發(fā)明的又一個(gè)方面,提供一種系統(tǒng),包括處理器,其包括執(zhí)行單元,所述執(zhí)行單元用于執(zhí)行屏蔽移動(dòng)指令以根據(jù)矢量屏蔽寄存器中的屏蔽信息來(lái)將矢量數(shù)據(jù)元素從源存儲(chǔ)裝置傳送到目的地存儲(chǔ)裝置中,所述矢量數(shù)據(jù)元素包含多個(gè)壓縮數(shù)據(jù)元素;寄存器文件,其包含多個(gè)各用于存儲(chǔ)矢量數(shù)據(jù)元素的矢量寄存器和用于存儲(chǔ)針對(duì)所述屏蔽移動(dòng)指令的屏蔽的控制寄存器;以及存儲(chǔ)緩沖器,其包含多個(gè)項(xiàng)目,所述多個(gè)項(xiàng)目各用于存儲(chǔ)待處理指 令、目的地標(biāo)識(shí)符、源標(biāo)識(shí)符以及在所述待處理指令是屏蔽存儲(chǔ)指令的情況下的來(lái)自所述屏蔽的屏蔽數(shù)據(jù);以及耦合到所述處理器的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)。
圖I是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用包括用于執(zhí)行屏蔽加載和存儲(chǔ)操作的指令的邏輯的處理器而形成的示范計(jì)算機(jī)系統(tǒng)的框圖。圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、執(zhí)行屏蔽加載操作的方法的流程圖。圖3是根據(jù)本發(fā)明的另一個(gè)實(shí)施例的、用于執(zhí)行屏蔽加載操作的方法的流程圖。圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、執(zhí)行屏蔽存儲(chǔ)操作的方法的流程圖。圖5是根據(jù)本發(fā)明的另一個(gè)實(shí)施例的、執(zhí)行屏蔽存儲(chǔ)操作的方法的流程圖。圖6是根據(jù)本發(fā)明的一個(gè)實(shí)施例的處理器的框圖。圖7是根據(jù)本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)的框圖。
具體實(shí)施例方式在現(xiàn)代處理器中,使用許多不同的執(zhí)行單元來(lái)處理和執(zhí)行多種代碼和指令。并非所有指令被創(chuàng)建成均等的,一些指令完成的比較快,而另一些指令可能花費(fèi)非常多的時(shí)鐘周期。指令的吞吐越快,處理器的整體性能越好。但是,有某些指令存在更大的復(fù)雜性,并且在執(zhí)行時(shí)間和處理器資源方面要求更多。例如有浮點(diǎn)指令、加載/存儲(chǔ)操作、數(shù)據(jù)移動(dòng)等。由于越來(lái)越多的計(jì)算機(jī)系統(tǒng)用于因特網(wǎng)和多媒體應(yīng)用,所以日趨引入了額外的處理器支持。例如,單指令多數(shù)據(jù)(SMD)整數(shù)/浮點(diǎn)指令和流式SMD擴(kuò)展(SSE)是減少執(zhí)行特定程序任務(wù)所需指令的總數(shù)的指令,從而又可以減少功耗。這些指令可以通過(guò)并行地對(duì)多個(gè)數(shù)據(jù)元素進(jìn)行操作來(lái)加速軟件性能。因此,可以在包括視頻、語(yǔ)音和圖像/照片處理的廣泛范圍的應(yīng)用中實(shí)現(xiàn)性能增益。在多種實(shí)施例中,可以提供指令集中的單獨(dú)指令來(lái)使得屏蔽加載和存儲(chǔ)操作能夠更有效地執(zhí)行。更確切地來(lái)說(shuō),實(shí)施例可以提供屏蔽加載和存儲(chǔ)指令的多種風(fēng)格,每種風(fēng)格能夠?qū)嚎s的SMD數(shù)據(jù)從存儲(chǔ)器加載到所選的存儲(chǔ)位置或?qū)嚎sSMD數(shù)據(jù)從所選的源位置存儲(chǔ)到存儲(chǔ)器中。實(shí)施例可以提供這些指令的多種風(fēng)格,以便能夠往返于系統(tǒng)內(nèi)的不同大小的源和目的地存儲(chǔ)裝置加載和存儲(chǔ)具有不同位寬的壓縮值??傊?,這些指令可以被視為是有條件的SIMD壓縮加載和存儲(chǔ)指令,使得能夠基于與壓縮數(shù)據(jù)元素關(guān)聯(lián)的屏蔽值來(lái)有條件地加載或存儲(chǔ)壓縮數(shù)據(jù)元素。圖I是根據(jù)本發(fā)明的實(shí)施例的、以包括用于執(zhí)行屏蔽移動(dòng)指令的指令單元的處理器來(lái)形成的示范計(jì)算機(jī)系統(tǒng)的框圖。系統(tǒng)100包括諸如處理器102的組件,其利用如本發(fā)明的(例如本文描述的實(shí)施例中的)包括用于執(zhí)行算法以處理屏蔽移動(dòng)操作的邏輯的執(zhí)行單元。系統(tǒng)100是基于可從英特爾公司(Santa Clara, California)獲得的PENTIUM 4>PENTIUM Dual~Core> Core 2 Duo and Quad、Xeon 、Itanium 、XScale 和 / 或StrongARM 微處理器的處理系統(tǒng)的代表,但是也可以使用其他系統(tǒng)(包括具有其他微處理器的PC、工程工作站、機(jī)頂盒等)。在一個(gè)實(shí)施例中,系統(tǒng)100可以執(zhí)行可從微軟公司(Redmond, Washington)獲得的Windows 操作系統(tǒng)版本,但是也可以使用其他操作系統(tǒng)(例如,UNIX和Linux)、嵌入式軟件和/或和圖形用戶界面。因此,本發(fā)明的實(shí)施例不限于硬件電路和軟件的任何特定組合。本發(fā)明的備選實(shí)施例可以用于例如手持裝置和嵌入式應(yīng)用的其他裝置中。 處理器102包括一個(gè)或多個(gè)根據(jù)本發(fā)明實(shí)施例的執(zhí)行算法以對(duì)SMD數(shù)據(jù)元素執(zhí)行屏蔽加載和存儲(chǔ)操作的執(zhí)行單元108。系統(tǒng)100是集線器體系結(jié)構(gòu)的示例。處理器102可以是復(fù)雜指令集計(jì)算機(jī)(CISC)微處理器、精簡(jiǎn)指令集計(jì)算(RISC)微處理器、超長(zhǎng)指令字(VLIff)微處理器、實(shí)現(xiàn)指令集的組合的處理器或舉例如數(shù)字信號(hào)處理器等的任何其他處理器裝置。處理器102耦合到處理器總線110,處理器總線110可在處理器102與系統(tǒng)100中的其他組件之間傳送數(shù)據(jù)信號(hào)。在一個(gè)實(shí)施例中,處理器102包括I級(jí)(LI)內(nèi)部高速緩存存儲(chǔ)器104。視體系結(jié)構(gòu)而定,處理器102可以具有單個(gè)內(nèi)部高速緩存或多級(jí)內(nèi)部高速緩存?;蛘?,在另一個(gè)實(shí)施例中,高速緩存存儲(chǔ)器可以駐留在處理器102外部。其他實(shí)施例還可包括內(nèi)部和外部高速緩存的組合,視具體的實(shí)現(xiàn)和需求而定。寄存器文件106可以將不同類型的數(shù)據(jù)存儲(chǔ)在多種寄存器中,包括整數(shù)寄存器、浮點(diǎn)寄存器、矢量或擴(kuò)展的寄存器、狀態(tài)寄存器和指令指針寄存器。執(zhí)行單元108(包括用于執(zhí)行整數(shù)和浮點(diǎn)運(yùn)算的邏輯)也駐留在處理器102中。處理器102還包括存儲(chǔ)用于某些宏指令的微代碼的微代碼(ucode)只讀存儲(chǔ)器(ROM)。對(duì)于此實(shí)施例,執(zhí)行單元108包括用于處理壓縮指令集109的邏輯。在一個(gè)實(shí)施例中,壓縮指令集109包括多種屏蔽加載和存儲(chǔ)指令的實(shí)例以用于有效處理此類操作。通過(guò)在通用處理器102的指令集中包括壓縮指令集109、且具有用于執(zhí)行這些指令的關(guān)聯(lián)電路,可以在通用處理器102中使用壓縮數(shù)據(jù)來(lái)執(zhí)行許多多媒體應(yīng)用所用的操作。因此,可以通過(guò)使用處理器的全寬度的數(shù)據(jù)總線來(lái)用于對(duì)壓縮數(shù)據(jù)執(zhí)行那些屏蔽加載和存儲(chǔ)操作,可加速并更有效地執(zhí)行許多多媒體應(yīng)用。這可以不需要在處理器的數(shù)據(jù)總線上傳送更小單元的數(shù)據(jù)來(lái)一次一個(gè)數(shù)據(jù)元素地執(zhí)行一個(gè)或多個(gè)操作。執(zhí)行單元108的備選實(shí)施例還可用在微控制器、嵌入式處理器、圖形裝置、數(shù)字信號(hào)處理器(DSP)和其他類型的邏輯電路中。系統(tǒng)100包括存儲(chǔ)器120。存儲(chǔ)器120可以是動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)裝置、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)裝置、閃存裝置或其他存儲(chǔ)器裝置。存儲(chǔ)器120可以存儲(chǔ)處理器102可執(zhí)行的由數(shù)據(jù)信號(hào)所表示的指令和/或數(shù)據(jù)。系統(tǒng)邏輯芯片116耦合到處理器總線110和存儲(chǔ)器120。圖示實(shí)施例中的系統(tǒng)邏輯芯片116是存儲(chǔ)器控制器集線器(MCH)。處理器102可以經(jīng)由處理器總線110與MCH 116通信。MCH 116提供至存儲(chǔ)器120的高帶寬存儲(chǔ)器路徑118以用于指令和數(shù)據(jù)存儲(chǔ)以及用于存儲(chǔ)圖形命令、數(shù)據(jù)和紋理。MCH 116用于在處理器102、存儲(chǔ)器120與系統(tǒng)100中的其他組件之間引導(dǎo)數(shù)據(jù)信號(hào),以及用于在處理器總線110、存儲(chǔ)器120和集線器接口總線122之間橋接數(shù)據(jù)信號(hào)。在一些實(shí)施例中,系統(tǒng)邏輯芯片116可以提供用于耦合到圖形控制器112的圖形端口。MCH 116通過(guò)存儲(chǔ)器接口耦合到存儲(chǔ)器120。圖形卡112通過(guò)加速圖形端口(AGP)互連 114 耦合到 MCH 116。
系統(tǒng)100使用集線器接口總線122來(lái)將MCH 116耦合到I/O控制器集線器(ICH) 130。ICH 130通過(guò)本地I/O總線提供至一些I/O裝置的直接連接。本地I/O總線是用于將外設(shè)連接到存儲(chǔ)器120、芯片組和處理器102的高速I/O總線。一些示例是音頻控制器、固件集線器(閃速BIOS) 128、無(wú)線收發(fā)器126、數(shù)據(jù)存儲(chǔ)裝置124、包含用戶輸入和鍵盤接口的傳統(tǒng)I/O控制器、串行擴(kuò)展端口(例如通用串行總線(USB))和網(wǎng)絡(luò)控制器134。數(shù)據(jù)存儲(chǔ)裝置124可以是硬盤驅(qū)動(dòng)器、軟盤驅(qū)動(dòng)器、CD-ROM裝置、閃存裝置或其他大容量存儲(chǔ)
裝直。本發(fā)明的范圍不限于此方面,屏蔽移動(dòng)指令還可以應(yīng)用于不同的數(shù)據(jù)寬度。例如,可以獲取不同位寬的壓縮值并將其加載或存儲(chǔ)。例如,可以從與源指示符對(duì)應(yīng)的初始存儲(chǔ)器位置獲取128位或256位的值。在這些矢量數(shù)據(jù)值內(nèi),可存在多個(gè)壓縮數(shù)據(jù)元素或字段。例如,較大矢量數(shù)據(jù)元素內(nèi)的這些單獨(dú)數(shù)據(jù)元素可以采用雙字(dword)、四字(qword)的形式,當(dāng)然更小和更大數(shù)據(jù)元素也是可以的。此外,還可以使用不同的數(shù)據(jù)類型,例如單精度和雙精度整數(shù)和浮點(diǎn)數(shù)據(jù)類型。因此,在一些實(shí)現(xiàn)中,可存在壓縮單精度(PS)值,而其他實(shí)現(xiàn)可以對(duì)壓縮雙精度(PD)值進(jìn)行操作。術(shù)語(yǔ)“寄存器”在本文中是指用作微指令的一部分以標(biāo)識(shí)操作數(shù)的板上處理器存儲(chǔ)位置。換言之,本文中引述的寄存器是從處理器外部可見的寄存器(例如,編程員的角度來(lái)看)。但是,實(shí)施例的寄存器不應(yīng)限于表示特定類型的電路。相反,實(shí)施例的寄存器只需能夠存儲(chǔ)和提供數(shù)據(jù),并執(zhí)行本文描述的其功能即可。本文描述的寄存器可以是使用任何數(shù)量的不同技術(shù)通過(guò)處理器內(nèi)的電路來(lái)實(shí)現(xiàn),例如專用物理寄存器、使用寄存器重命名的動(dòng)態(tài)分配的物理寄存器、專用物理寄存器與動(dòng)態(tài)分配的物理寄存器的組合等。在一個(gè)實(shí)施例中,整數(shù)寄存器存儲(chǔ)32位或64位整數(shù)數(shù)據(jù)。一個(gè)實(shí)施例的寄存器文件還包含用于壓縮數(shù)據(jù)的擴(kuò)展多媒體SMD寄存器(例如XMM)。此類寄存器可以包括與SSE2、SSE3、SSE4、GSSE以及以外的(一般指的是“SSEx”)技術(shù)相關(guān)的以用于保存此類壓縮數(shù)據(jù)操作數(shù)的128位寬XMM寄存器和256位寬寄存器(可以將XMM寄存器結(jié)合在它們的低階位)。一般來(lái)說(shuō),數(shù)據(jù)元素是數(shù)據(jù)的單獨(dú)片段,其與相同長(zhǎng)度的其他數(shù)據(jù)元素一起存儲(chǔ)在單個(gè)寄存器或存儲(chǔ)器位置中。在與SSEx技術(shù)相關(guān)的壓縮數(shù)據(jù)序列中,XMM寄存器中存儲(chǔ)的數(shù)據(jù)元素的數(shù)量是128位(可以擴(kuò)展到更大寬度,例如256位或512位)除以單獨(dú)數(shù)據(jù)元素的以位算的長(zhǎng)度。例如,128位寬操作數(shù)可以包括16個(gè)壓縮字節(jié)數(shù)據(jù)元素。字節(jié)這里定義為數(shù)據(jù)的8位。每個(gè)字節(jié)數(shù)據(jù)元素的信息存儲(chǔ)在位7到位O對(duì)應(yīng)于字節(jié)0,存儲(chǔ)在位15至位8對(duì)應(yīng)于字節(jié)I,存儲(chǔ)在位23至位16對(duì)應(yīng)于字節(jié)2,以及最后位120至位127對(duì)應(yīng)于字節(jié)15。相似地,在與MMX和SSE技術(shù)相關(guān)的壓縮數(shù)據(jù)序列中,MMX寄存器中存儲(chǔ)的數(shù)據(jù)元素的數(shù)量是64位除以單獨(dú)數(shù)據(jù)元素的以位算的長(zhǎng)度。壓縮字矢量可以是128位長(zhǎng),并且包含8個(gè)壓縮字?jǐn)?shù)據(jù)元素,其中每個(gè)壓縮字包含16位的信息。壓縮雙字可以是128位長(zhǎng),并且包含4個(gè)壓縮雙字?jǐn)?shù)據(jù)元素,其中每個(gè)矢量壓縮雙字?jǐn)?shù)據(jù)元素包含32位的信息。壓縮四字矢量可以是128位長(zhǎng),并且包含2個(gè)壓縮四字?jǐn)?shù)據(jù)元素。當(dāng)然,對(duì)于256位矢量,可存在這些數(shù)據(jù)類型的數(shù)量的兩倍。要認(rèn)識(shí)到此類壓縮數(shù)據(jù)格式可以進(jìn)一步擴(kuò)展到其他寄存器長(zhǎng)度,例如擴(kuò)展到96位、160位、192位、224位、256位或更多位。此外,要理解,根據(jù)本發(fā)明的實(shí)施例,可以將多種帶符號(hào)和不帶符號(hào)的壓縮數(shù)據(jù)類型表示存儲(chǔ)在多媒體寄存器中。在一些實(shí)現(xiàn)中,可以例如使用從(例如存儲(chǔ)在XMMO中的)矢量屏蔽寄存器獲取的屏蔽值,以使用有條件的SIMD數(shù)據(jù)傳輸指令的加載形式來(lái)從例如128位(對(duì)于XMM形式)或256位存儲(chǔ)器位置將壓縮值加載到給定寬度的目的地XMM寄存器中。在一個(gè)實(shí)施例中,可以由屏蔽寄存器的每個(gè)雙字(dword) (PS形式)的最高有效位或每個(gè)四字(qword) (PS形式)的最高有效位來(lái)計(jì)算此屏蔽。該屏蔽可以作為SMD比較指令的結(jié)果來(lái)得到。此指令將目的地寄存器子操作數(shù)設(shè)置成全“I”或“O”。一些實(shí)現(xiàn)可以使用比較目的地的一個(gè)位(例如最高有效位(MSB))作為屏蔽位。對(duì)于該屏蔽中的位的每個(gè),如果設(shè)置為“0”,則將不發(fā)生對(duì)應(yīng)的加載,則對(duì)應(yīng)目的地位置的字段設(shè)置為零。在一些實(shí)現(xiàn)中,可以使用從(例如存儲(chǔ)在XMMO中的)矢量屏蔽寄存器獲取的值,以使用有條件的SIMD數(shù)據(jù)傳輸指令的存儲(chǔ)形式來(lái)從例如XMM寄存器的源存儲(chǔ)裝置將壓縮值存儲(chǔ)到目的地位置(例如128位(XMM形式)存儲(chǔ)器位置)。在一個(gè)實(shí)施例中,也可以由屏蔽寄存器的每個(gè)dword (PS形式)的最高有效位或每個(gè)qword (PS形式)的最高有效位來(lái)計(jì)算此屏蔽。對(duì)于屏蔽的位的每個(gè),如果設(shè)置為“0”,則將不發(fā)生對(duì)應(yīng)的存儲(chǔ),對(duì)應(yīng)目的地位置的字段將不改變。
現(xiàn)在參考表1,其中示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的矢量屏蔽加載和存儲(chǔ)指令的多種風(fēng)格的列表。如表I所示,其中示出多個(gè)單獨(dú)指令,其每個(gè)用于對(duì)特定數(shù)據(jù)類型執(zhí)行給定的條件的SIMD壓縮加載或存儲(chǔ)操作。每個(gè)指令還對(duì)應(yīng)有操作碼(opcode)。指令各有指令名稱Hf^nVMASKMOVPS)后跟目的地指示符和源指示符的形式。例如,表I的第一個(gè)指令(即VMASKM0VPS)能夠從源位置(即存儲(chǔ)器的128位(ml28))將壓縮單精度值加載到目的地位置(即XMMl寄存器)。此外,此加載操作要使用預(yù)定的可用作矢量屏蔽寄存器的位置(例如ΧΜΜ0)中的屏蔽來(lái)執(zhí)行。注意術(shù)語(yǔ)YMM用于標(biāo)識(shí)較寬寬度的寄存器,例如256位。表I
權(quán)利要求
1.一種用于執(zhí)行屏蔽加載和存儲(chǔ)操作的設(shè)備,包括 模塊,其用于接收和執(zhí)行屏蔽移動(dòng)指令以將矢量數(shù)據(jù)元素從源位置傳送到目的地位置,所述矢量數(shù)據(jù)元素包含多個(gè)壓縮數(shù)據(jù)元素,其中所述屏蔽移動(dòng)指令要根據(jù)矢量屏蔽寄存器中的屏蔽信息來(lái)執(zhí)行,其中所述屏蔽移動(dòng)指令是屏蔽加載指令。
2.如權(quán)利要求I所述的設(shè)備,還包括寄存器文件和用于存儲(chǔ)所述屏蔽信息的矢量屏蔽寄存器,所述寄存器文件包含多個(gè)擴(kuò)展的寄存器,所述多個(gè)擴(kuò)展的寄存器各用于存儲(chǔ)包含多個(gè)壓縮數(shù)據(jù)元素的矢量數(shù)據(jù)元素。
3.如權(quán)利要求2所述的設(shè)備,其中所述設(shè)備包括處理器,所述處理器還包括具有存儲(chǔ)緩沖器的存儲(chǔ)器子系統(tǒng),所述存儲(chǔ)緩沖器包含多個(gè)項(xiàng)目,所述多個(gè)項(xiàng)目各用于存儲(chǔ)待處理指令、目的地標(biāo)識(shí)符、源標(biāo)識(shí)符以及在所述待處理指令是屏蔽存儲(chǔ)指令的情況下存儲(chǔ)所述屏蔽信息。
4.如權(quán)利要求I所述的設(shè)備,其中所述屏蔽移動(dòng)指令是屏蔽加載指令,所述屏蔽加載指令包含操作碼、源標(biāo)識(shí)符和目的地標(biāo)識(shí)符,以及所述模塊用于響應(yīng)所述屏蔽加載指令而訪問(wèn)所述矢量屏蔽寄存器以獲取所述屏蔽信息。
5.如權(quán)利要求4所述的設(shè)備,其中所述模塊用于訪問(wèn)所述矢量屏蔽寄存器中多個(gè)字段的每個(gè)字段的第一位以獲取所述屏蔽信息,其中每個(gè)第一位是針對(duì)矢量數(shù)據(jù)元素中所述多個(gè)壓縮數(shù)據(jù)元素中對(duì)應(yīng)的壓縮數(shù)據(jù)元素的屏蔽值。
6.如權(quán)利要求I所述的設(shè)備,其中所述模塊用于執(zhí)行擇機(jī)性全寬度加載操作以獲取所述矢量數(shù)據(jù)元素并將其存儲(chǔ)到臨時(shí)存儲(chǔ)裝置中,然后確定在所述執(zhí)行期間是否發(fā)生異常。
7.如權(quán)利要求6所述的設(shè)備,其中如果發(fā)生異常,則所述模塊對(duì)所述矢量數(shù)據(jù)元素中未屏蔽的部分單個(gè)地執(zhí)行加載操作以將其加載到所述目的地位置。
8.一種用于執(zhí)行屏蔽加載和存儲(chǔ)操作的方法,包括 響應(yīng)系統(tǒng)的處理器中執(zhí)行屏蔽移動(dòng)指令,從所述系統(tǒng)的第一存儲(chǔ)裝置獲取包含多個(gè)壓縮值的數(shù)據(jù),以及將所述數(shù)據(jù)存儲(chǔ)在所述系統(tǒng)的目的地存儲(chǔ)裝置中,其中所述屏蔽移動(dòng)指令要根據(jù)矢量屏蔽寄存器中的屏蔽信息來(lái)執(zhí)行; 擇機(jī)性地以全寬度加載操作獲取所述數(shù)據(jù)并將其存儲(chǔ)到臨時(shí)存儲(chǔ)裝置中;以及 如果在所述全寬度加載操作期間發(fā)生異常,則獨(dú)立地獲取所述多個(gè)壓縮值的每個(gè)壓縮值并將其存儲(chǔ)在所述目的地存儲(chǔ)裝置中。
9.如權(quán)利要求8所述的方法,還包括僅對(duì)所述多個(gè)壓縮值中其具有的關(guān)聯(lián)于所述屏蔽移動(dòng)指令的屏蔽信息的相應(yīng)部分具有第一值的每個(gè)壓縮值進(jìn)行獨(dú)立地獲取以及存儲(chǔ),而其他地則對(duì)相應(yīng)壓縮值的目的地存儲(chǔ)裝置寫零值。
10.如權(quán)利要求8所述的方法,還包括響應(yīng)所述屏蔽移動(dòng)指令,擇機(jī)性地執(zhí)行全寬度存儲(chǔ)操作,所述全寬度存儲(chǔ)操作包括在存儲(chǔ)緩沖器中存儲(chǔ)指令字段值、源標(biāo)識(shí)符、目的地標(biāo)識(shí)符以及與所述屏蔽移動(dòng)指令關(guān)聯(lián)的屏蔽信息,其中所述屏蔽移動(dòng)指令是矢量屏蔽存儲(chǔ)指令。
11.如權(quán)利要求10所述的方法,還包括如果在所述全寬度存儲(chǔ)操作期間發(fā)生異常,則獨(dú)立地獲取所述多個(gè)壓縮值的每個(gè)壓縮值并將其存儲(chǔ)在所述目的地存儲(chǔ)裝置中。
12.如權(quán)利要求11所述的方法,還包括僅對(duì)所述多個(gè)壓縮值中其具有的所述屏蔽信息的相應(yīng)部分具有第一值的每個(gè)壓縮值進(jìn)行獨(dú)立地獲取和存儲(chǔ)。
13.一種用于執(zhí)行屏蔽加載和存儲(chǔ)操作的方法,包括 響應(yīng)指令的執(zhí)行,擇機(jī)性地執(zhí)行全寬度移動(dòng)操作以從第一存儲(chǔ)裝置獲取包含多個(gè)壓縮值的矢量數(shù)據(jù)元素,以及將所述矢量數(shù)據(jù)元素存儲(chǔ)在目的地存儲(chǔ)裝置中, 其中,所述指令是根據(jù)屏蔽的矢量屏蔽加載指令以將所述矢量數(shù)據(jù)元素從由關(guān)聯(lián)于所述矢量屏蔽加載指令的源標(biāo)識(shí)符所指示的存儲(chǔ)器位置加載到由關(guān)聯(lián)于所述矢量屏蔽加載指令的目的地標(biāo)識(shí)符所指示的目的地存儲(chǔ)裝置中,其中所述屏蔽被存儲(chǔ)在矢量屏蔽寄存器中。
14.如權(quán)利要求13所述的方法,其中所述矢量屏蔽加載指令使得處理器能夠在發(fā)生異常的情況下將所述壓縮值中未屏蔽的壓縮值單個(gè)地從所述第一存儲(chǔ)裝置加載到所述目的地存儲(chǔ)裝置。
15.如權(quán)利要求13所述的方法,其中所述矢量加載指令使所述處理器從所述第一存儲(chǔ)裝置擇機(jī)性地將所述矢量數(shù)據(jù)元素加載到臨時(shí)存儲(chǔ)裝置中,以及確定在所述擇機(jī)性加載期間是否發(fā)生異常,以及如果未發(fā)生異常,則將所述矢量數(shù)據(jù)元素的未屏蔽部分加載到所述目的地存儲(chǔ)裝置中。
16.一種用于執(zhí)行屏蔽加載和存儲(chǔ)操作的系統(tǒng),包括 處理器,其包括執(zhí)行單元,所述執(zhí)行單元用于執(zhí)行屏蔽移動(dòng)指令以根據(jù)矢量屏蔽寄存器中的屏蔽信息來(lái)將矢量數(shù)據(jù)元素從源存儲(chǔ)裝置傳送到目的地存儲(chǔ)裝置中,所述矢量數(shù)據(jù)元素包含多個(gè)壓縮數(shù)據(jù)元素;寄存器文件,其包含多個(gè)各用于存儲(chǔ)矢量數(shù)據(jù)元素的矢量寄存器和用于存儲(chǔ)針對(duì)所述屏蔽移動(dòng)指令的屏蔽的矢量屏蔽寄存器;以及存儲(chǔ)緩沖器,其包含多個(gè)項(xiàng)目,所述多個(gè)項(xiàng)目各用于存儲(chǔ)待處理指令、目的地標(biāo)識(shí)符、源標(biāo)識(shí)符以及在所述待處理指令是屏蔽存儲(chǔ)指令的情況下存儲(chǔ)來(lái)自所述屏蔽的屏蔽數(shù)據(jù);以及 耦合到所述處理器的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM), 其中所述處理器用于擇機(jī)性地執(zhí)行全寬度存儲(chǔ)操作以將所述待處理指令、所述源標(biāo)識(shí)符、所述目的地標(biāo)識(shí)符和所述屏蔽數(shù)據(jù)存儲(chǔ)到所述存儲(chǔ)緩沖器,其中如果在所述全寬度存儲(chǔ)操作期間發(fā)生異常,所述處理器用于對(duì)所述多個(gè)壓縮數(shù)據(jù)元素中其具有的屏蔽數(shù)據(jù)的相應(yīng)部分具有第一值的每個(gè)壓縮數(shù)據(jù)元素進(jìn)行獨(dú)立地獲取并將其存儲(chǔ)在所述目的地存儲(chǔ)裝置中。
17.如權(quán)利要求16所述的系統(tǒng),其中所述處理器用于執(zhí)行擇機(jī)性全寬度加載操作以獲取所述矢量數(shù)據(jù)元素并將其存儲(chǔ)到臨時(shí)存儲(chǔ)裝置中,然后確定在所述執(zhí)行期間是否發(fā)生異堂巾O
18.如權(quán)利要求17所述的系統(tǒng),其中所述處理器用于在未發(fā)生異常的情況下,執(zhí)行在所述多個(gè)壓縮數(shù)據(jù)元素其中之一與所述屏蔽的對(duì)應(yīng)部分的每個(gè)之間的傳播AND運(yùn)算,并將所得數(shù)據(jù)存儲(chǔ)在所述目的地存儲(chǔ)裝置中,否則將所述矢量數(shù)據(jù)元素的未屏蔽部分單個(gè)地從所述源存儲(chǔ)裝置加載到所述目的地存儲(chǔ)裝置中。
全文摘要
本發(fā)明是“執(zhí)行屏蔽加載和存儲(chǔ)操作的指令和邏輯”。在一個(gè)實(shí)施例中,提供邏輯以用于接收和執(zhí)行屏蔽移動(dòng)指令以根據(jù)針對(duì)該指令的屏蔽信息將矢量數(shù)據(jù)元素從源位置傳送到目的地位置,該矢量數(shù)據(jù)元素包含多個(gè)壓縮數(shù)據(jù)元素。還描述了其他實(shí)施例并且要求保護(hù)這些其他實(shí)施例。
文檔編號(hào)G06F9/38GK102937890SQ20121045744
公開日2013年2月20日 申請(qǐng)日期2008年12月26日 優(yōu)先權(quán)日2007年12月27日
發(fā)明者D.奧倫斯蒂恩, Z.斯佩伯, B.瓦倫丁, B.艾特頓 申請(qǐng)人:英特爾公司