專利名稱:設置向量屏蔽的技術的制作方法
技術領域:
本發(fā)明的實施例涉及微處理器結構。更特別地,本發(fā)明的實施例涉及設置由指令集結構使用的向量屏蔽。
背景技術:
在不同處理器中的不同指令集結構(ISA)中所使用的指令可包括涉及任一或二者都生成屏蔽值的操作,該屏蔽值在邏輯上與另一值組合來產(chǎn)生合成值。屏蔽值可被存儲在存儲單元中,諸如被存儲在寄存器(“向量屏蔽”)中,并且屏蔽值可包含多個位,這些位與另一值的相對應數(shù)量的位被用于布爾邏輯運算(例如“與”運算)。例如,圖1示出了向量屏蔽101,該向量屏蔽101的位將經(jīng)由布爾“與”運算與被存儲在另一寄存器105中的另一值的多個位進行邏輯組合,以產(chǎn)生被存儲在合成寄存器110中的合成值。
在一些ISA中,指令可以被指定為使用屏蔽值來生成結果的指令。例如,如果指令被指定為“在屏蔽之下”被執(zhí)行,則由該指令所使用或所產(chǎn)生的數(shù)據(jù)值可被存儲在處理器寄存器(諸如“向量寄存器”)中。對被存儲在向量寄存器元件中的數(shù)據(jù)所執(zhí)行的操作又可檢查向量屏蔽中的相對應的位,該向量屏蔽可被存儲到“向量屏蔽寄存器”中。如果相對應的位被設置為某個值,則該操作可被實現(xiàn),而不考慮該向量屏蔽。在另一方面,如果該位被設置為另一值,則例如該操作可被忽略,并且針對該操作不產(chǎn)生例外和/或結果。向量屏蔽內(nèi)的位的數(shù)量和向量屏蔽中的每個位的意義可以根據(jù)其中實施該向量屏蔽的處理器結構而變化。
向量屏蔽能夠通過不同的技術被初始化或被“設置”,這些技術包括使用操作或操作序列,諸如從指令(“微指令”)中解碼得到的操作,以設置來自其它寄存器(諸如標量寄存器)的向量屏蔽??商鎿Q地,一些現(xiàn)有技術隱含地通過執(zhí)行其它操作來設置向量屏蔽,這些操作諸如“比較”操作。在一種現(xiàn)有技術中,使用第一操作來設置向量屏蔽,以將屏蔽值與諸如“零”值向量的另一值進行比較(例如“veq”操作),從而產(chǎn)生隨后通過執(zhí)行第二操作能夠被存儲到向量屏蔽中的值,以設置該向量屏蔽(例如“setvm”操作)。
一些現(xiàn)有技術已經(jīng)使用一次或多次操作來生成向量屏蔽值,并使用其它一次或多次操作來將該向量屏蔽存儲到諸如寄存器的存儲單元中,來自該存儲單元的向量屏蔽可被應用到使用該向量屏蔽的不同的指令中。
現(xiàn)有技術的一個不足(諸如上面所描述的不足)是,在該向量屏蔽能夠被使用之前,必須執(zhí)行兩次或更多次的操作來最終設置該向量屏蔽,這需要額外的處理周期,從而影響了處理性能。
發(fā)明內(nèi)容
本發(fā)明說明一種處理器,該處理器包括第一邏輯,用于檢測存儲向量屏蔽的第一操作;第二邏輯,用于識別最新的第二操作,以生成早于第一操作的向量屏蔽值;第三邏輯,如果第二操作被識別,則該第三邏輯阻止第一操作被執(zhí)行。
本發(fā)明說明一種系統(tǒng),該系統(tǒng)包括存儲器,用于存儲第一指令和第二指令,該第一指令用于生成向量屏蔽值,并且該第二指令用于將該向量屏蔽值存儲到向量屏蔽寄存器中;處理器,如果第一指令對應于與第二指令相同的向量屏蔽寄存器,則該處理器阻止該第二指令被執(zhí)行。
本發(fā)明說明一種方法,該方法包括在隊列中存儲用于存儲向量屏蔽值的第一操作;對隊列搜索生成向量屏蔽值的最新的第二操作,該第一操作早于第二操作;如果發(fā)現(xiàn)第二操作,則從隊列中去除該第一操作。
本發(fā)明還說明一種設備,該設備包括向量寄存器文件,該向量寄存器文件包括至少兩個源寄存器,以存儲至少兩個源操作數(shù);被耦合到向量寄存器文件的向量屏蔽寄存器文件,該向量屏蔽寄存器文件包括至少一個向量屏蔽寄存器,以存儲至少一個向量屏蔽值;被耦合到向量寄存器文件和向量屏蔽寄存器文件的算術邏輯單元(ALU),以對至少兩個源操作數(shù)執(zhí)行布爾“與”運算,如果該布爾“與”運算的結果包含的并不都是零,則該結果將被存儲到向量屏蔽寄存器中。
本發(fā)明的實施例通過例子來說明并且不限于附圖中的圖,在附圖中,相同的參考符號表示相同的元件,并且其中圖1示出了一種用于生成向量屏蔽值的現(xiàn)有技術。
圖2示出了一種根據(jù)一個實施例來設置向量屏蔽的技術。
圖3是說明本發(fā)明的至少一個實施例的至少一個方面的流程圖。
圖4示出了能夠被用來實施參考本發(fā)明的至少一個實施例所討論的至少一些操作的硬件邏輯。
圖5示出了其中可使用本發(fā)明的一個實施例的前端總線(FSB)計算機系統(tǒng)。
圖6示出了以點對點(PtP)配置來布置的計算機系統(tǒng)。
具體實施例方式
本發(fā)明的實施例屬于微處理器結構。更特別地,本發(fā)明的實施例屬于設置向量屏蔽的技術,該向量屏蔽由處理器或處理系統(tǒng)內(nèi)的一個或多個指令操作所使用。
在本發(fā)明的至少一個實施例中,配置(“設置”)向量屏蔽,以便通過將設置屏蔽值的至少一個指令與設置向量屏蔽的至少一個指令相匹配來允許或禁止與在處理器或處理系統(tǒng)內(nèi)操作的一個或多個指令相關聯(lián)的不同的功能。在至少一個實施例中,通過在操作列表中搜尋要被執(zhí)行的最早的(“最新的”)操作來執(zhí)行匹配,該最早的操作是在執(zhí)行用向量屏蔽值設置向量屏蔽的操作之前設置向量屏蔽值。此外,本發(fā)明的至少一個實施例省卻(或至少忽略)執(zhí)行設置向量屏蔽的指令(多個指令),而是執(zhí)行設置屏蔽值的指令,以便將向量屏蔽設置為相對應的值。
例如,圖2示出了根據(jù)一個實施例的設置向量屏蔽的技術。在圖2中示出了指令隊列200(諸如調(diào)度程序),以存儲要由處理邏輯所執(zhí)行的指令或微指令。在圖2中所示的例子中,各種中指令/微指令在不同時刻被存儲在隊列中,并且按照這些指令/微指令進入隊列的順序進行存儲(也就是從“最早的”到“最新的”)。例如,在圖2中,通過操作碼(“opcode”)“vadd”來標識的指令或微指令已首先進入該隊列,并且因此被存儲在條目201處,其后是被存儲在條目203處的、由操作碼“vand”標識的指令/微指令和在條目205處的、由操作碼“vmul”所標識的指令/微指令。在其它實施例中,指令/微指令可以或可以不按照它們到達隊列中的順序進行存儲,或者可替換地,這些指令/微指令可被存儲在不同的位置,諸如從隊列的“頂部”到“底部”。
圖2的隊列中的每條指令/微指令具有相對應的操作碼207,如上面所討論的那樣,以及具有相對應的源位置標識符209,該源位置標識符209標識的存儲單元內(nèi)的位置(諸如寄存器),將要由指令/微指令操作的數(shù)據(jù)被定位在該位置。類似地,圖2的隊列中的每條指令/微指令具有相對應的目的地位置標識符211,該目的地位置標識符211標識存儲區(qū)內(nèi)的位置(諸如寄存器),通過執(zhí)行相對應的指令/微指令所產(chǎn)生的數(shù)據(jù)將被存儲在該位置。在至少一個實施例中,隊列內(nèi)的每個條目也存儲相對應的目的地位置標識符213,該目的地位置標識符213標識存儲區(qū)內(nèi)的位置(諸如寄存器),通過指令/微指令所產(chǎn)生的向量屏蔽將被存儲在該位置。特別是如果相對應的微指令/指令在其被執(zhí)行之后并不產(chǎn)生向量屏蔽值,則一些微指令/指令可以不具有在其隊列條目的向量屏蔽域內(nèi)所存儲的任何信息。
在圖2中,例如vand指令/微指令要在對應于該指令/微指令條目的源域和目的地域的數(shù)據(jù)之間執(zhí)行布爾“與”運算,并將該結果存儲到由該指令/微指令的隊列條目的目的地域所標識的位置中。也在圖2中,第四指令/微指令已進入到隊列的條目215處,由操作碼“setvm”標識。該setvm指令/微指令是一種操作,當執(zhí)行該操作時,該操作將其位置由向量屏蔽標識符域所標識的向量屏蔽值存儲到由源標識符域所標識的向量屏蔽中。
在圖2中所示的例子中,對應于該setvm指令/微指令的屏蔽值的位置與對應于vand指令/微指令的屏蔽值的位置相同。本發(fā)明的至少一個實施例將圖2中的setvm與vand之間的關系識別為對應于相同的向量屏蔽值,并然后或者從隊列中去除該setvm指令/微指令,或者否則并不執(zhí)行該setvm指令/微指令,并且將該vand指令/微指令的目的地標識符用作要由指令/微指令所使用的向量屏蔽的位置。
在一個實施例中,當在圖2的隊列內(nèi)檢測到圖2中所示的setvm指令/微指令時,搜索邏輯或搜索軟件或是其某些組合通過查找一組內(nèi)容可尋址存儲器(CAM)能夠在隊列中定位相對應的vand操作,例如,對應于隊列的每個條目。在一個實施例中,被設置到第一值(例如,邏輯“1”)的CAM可以指示vand指令/微指令隊列中的位置,該vand指令/微指令生成和存儲將由該setvm指令/微指令使用的向量屏蔽值。在其它實施例中,可使用其它的技術來識別vand指令/微指令的隊列內(nèi)的位置。
圖3是示出本發(fā)明的至少一個實施例的至少一個方面的流程圖。特別是,圖3示出了要被執(zhí)行的操作,以檢測隊列(諸如調(diào)度程序)內(nèi)的setvm指令/微指令的存在,并且定位相對應的生成屏蔽的指令/微指令(例如,在一個實施例中是vand),以致該setvm指令/微指令不必被執(zhí)行。在操作301,setvm指令/微指令被存儲在要由處理邏輯所執(zhí)行的指令/微指令隊列中。在操作303,搜索比setvm指令/微指令更早的隊列條目,以在對應于與setvm指令/微指令相同的向量屏蔽值的隊列中找到最新的vand指令/微指令。在操作305,在定位了最新的相對應的vand指令之后,從隊列中去除setvm或者否則標記setvm,以致不執(zhí)行setvm,并且該vand操作的結果將被用作其它指令/微指令的向量屏蔽。
在一個實施例中,該隊列是處理器中的調(diào)度程序,而在其它實施例中,該隊列可以是位于處理器內(nèi)部或外部的另一隊列,以存儲要由處理邏輯所執(zhí)行的指令或微指令。此外,雖然迄今為止已經(jīng)參考了setvm和vand指令/微指令,但是在其它實施例中,取決于其中使用本發(fā)明的實施例的指令集結構,其它指令/微指令可被用來生成向量屏蔽值和利用該值來設置向量屏蔽。
本發(fā)明的實施例可以用不同的方式來實施,這些方式包括軟件、硬件、或其某種組合。例如,圖4示出了能被用來實施參考本發(fā)明的至少一個實施例所討論的至少一些操作的硬件邏輯。特別是,圖4示出了向量寄存器文件401,該向量寄存器文件401包括被用來存儲對應于諸如setvm和vand的指令/微指令的操作數(shù)和結果的源和目的地寄存器。另外,圖4示出了向量屏蔽寄存器文件405,以存儲由本發(fā)明的一個或多個實施例所生成的向量屏蔽。例如,vand指令/微指令可使得算術邏輯單元(ALU)410在被存儲在向量寄存器文件中的兩個或更多個源寄存器中的數(shù)據(jù)之間執(zhí)行布爾“與”運算,并且將結果存儲在向量寄存器文件內(nèi)的目的地寄存器中和/或向量屏蔽寄存器文件內(nèi)的向量屏蔽寄存器中。
在一個實施例中,如果向量屏蔽值包含的并不都是零,則通過利用比較邏輯403執(zhí)行比較操作,該vand指令/微指令的結果是只將結果存儲到向量屏蔽寄存器文件中。在一些實施例中,如通過從向量屏蔽寄存器文件到ALU的連接來推動的那樣,被存儲在向量屏蔽寄存器文件中的向量屏蔽值可被用于在ALU中所執(zhí)行的其它邏輯運算中。在一個實施例中,由vand操作所使用的源寄存器之一包括至少一個非零位,該至少一個非零位與包括全零的源寄存器值進行“與”操作,以致所生成的向量屏蔽值將反映被存儲在第一源寄存器中的非零位的寄存器位置。通過存取來自該向量屏蔽寄存器文件的屏蔽,隨后的指令能夠使用這個屏蔽值。
圖5示出前端總線(FSB)計算機系統(tǒng),本發(fā)明的一個實施例可被用于該前端總線計算機系統(tǒng)中。處理器505存取來自一級(L1)超高速緩沖存儲器510和主存儲器515的數(shù)據(jù)。在本發(fā)明的其它實施例中,超高速緩沖存儲器可以是計算機系統(tǒng)存儲器分層結構內(nèi)的二級(L2)高速緩沖存儲器或其它存儲器。此外,在一些實施例中,圖5的計算機系統(tǒng)可包含L1高速緩沖存儲器和L2高速緩沖存儲器。
在圖5的處理器內(nèi)示出針對機器狀態(tài)的存儲區(qū)506。在一個實施例中,存儲區(qū)可以是寄存器集合,而在其它實施例中,該存儲區(qū)可以是其它的存儲器結構。根據(jù)一個實施例,在圖5中也示出了針對保存區(qū)段的存儲區(qū)507。在其它實施例中,該保存區(qū)段可以在其它裝置或存儲器結構中。處理器可具有任意數(shù)量的處理核。然而,本發(fā)明的其它實施例可在系統(tǒng)內(nèi)的其它裝置內(nèi)被實施,諸如在獨立的總線代理內(nèi)被實施,或者遍及用硬件、軟件、或者硬件和軟件的某種組合形成的系統(tǒng)分布。
主存儲器可以用不同的存儲源來實施,這些存儲源諸如動態(tài)隨機存取存儲器(DRAM)、硬盤驅動器(HDD)520或者經(jīng)由網(wǎng)絡接口530而遠離該計算機系統(tǒng)所定位的存儲源,該網(wǎng)絡接口530包含不同的存儲裝置和技術。超高速緩沖存儲器可位于處理器內(nèi)部或者接近處理器,諸如位于處理器的本地總線507上。
此外,超高速緩沖存儲器可以包含諸如六晶體管(6T)單元相對快速的存儲單元或者包含具有近似等于或更快的存取速度的存其它儲單元。圖5的計算機系統(tǒng)可以是總線代理的點對點(PtP)網(wǎng)絡(諸如微處理器),這些微處理器經(jīng)由專用于PtP網(wǎng)絡上的每個代理的總線信號進行通信。圖6示出了用點對點(PtP)配置來布置的計算機系統(tǒng)。特別地,圖6示出了一系統(tǒng),其中,處理器、存儲器和輸入/輸出裝置通過多個點對點接口互連。
圖6的系統(tǒng)也可包括幾個處理器,為了清楚起見,只示出了其中的兩個處理器670、680。處理器670、680中的每一個都可以包括與存儲器22、24連接的本地存儲器控制器中樞(MCH)672、682。處理器670、680可經(jīng)由點對點(PtP)接口650使用PtP接口電路678、688來交換數(shù)據(jù)。處理器670、680可以分別經(jīng)由單獨的PtP接口652、654使用點對點接口電路676、694、686、698來與芯片集690交換數(shù)據(jù)。芯片集690也可經(jīng)由高性能圖形接口639與高生能圖形電路638交換數(shù)據(jù)。本發(fā)明的實施例可位于具有任意數(shù)量處理核的任何處理器之內(nèi),或者位于圖6的每個PtP總線代理之內(nèi)。
然而,本發(fā)明的其它實施例可存在于圖6的系統(tǒng)內(nèi)的其它電路、邏輯單元或裝置中。而且,在本發(fā)明的其它實施例中,可以遍及圖6中所示的幾個電路、邏輯單元或裝置分布。
本發(fā)明實施例的各種方面可以使用互補金屬氧化物半導體(CMOS)電路和邏輯裝置(硬件)來實施,而其它方面可以使用被存儲在機器可讀介質(zhì)(軟件)上的指令來實施,如果處理器執(zhí)行這些指令,則這些指令將導致處理器執(zhí)行方法來實現(xiàn)本發(fā)明的實施例。而且,本發(fā)明的一些實施例可單獨用硬件來執(zhí)行,而其它實施例可單獨用軟件來執(zhí)行。
雖然已經(jīng)參照所示的實施例對本發(fā)明進行了說明,但是本說明書并不意圖在限制的意義上來構造。該說明性實施例的各種修改方案以及對于本發(fā)明所屬技術領域的技術人員來說是顯而易見的其它實施例被認為位于本發(fā)明的精神和范圍之內(nèi)。
權利要求
1.一種處理器,其包括第一邏輯,用于檢測存儲向量屏蔽的第一操作;第二邏輯,用于識別最新的第二操作,以生成早于第一操作的向量屏蔽值;第三邏輯,如果第二操作被識別,則該第三邏輯阻止第一操作被執(zhí)行。
2.根據(jù)權利要求1所述的處理器,其中,所述第二操作將向量屏蔽值存儲到向量屏蔽中。
3.根據(jù)權利要求2所述的處理器,其中,所述第二操作包括布爾“與”運算,該布爾“與”運算的操作數(shù)通過兩個源寄存器標識符來識別,并且該布爾“與”運算的結果被存儲在向量屏蔽寄存器中。
4.根據(jù)權利要求3所述的處理器,其中,所述第一操作將向量屏蔽存儲到向量屏蔽寄存器中。
5.根據(jù)權利要求4所述的處理器,其中,所述第二邏輯包括內(nèi)容可尋址存儲器(CAM),用于存儲將第二操作標識為最新的操作的位,以生成早于第一操作的向量屏蔽值。
6.根據(jù)權利要求5所述的處理器,包括調(diào)度程序,用于以要被執(zhí)行的順序來存儲第一和第二操作。
7.根據(jù)權利要求6所述的處理器,其中,所述調(diào)度程序的每個條目包括存儲向量屏蔽寄存器標識符的域。
8.根據(jù)權利要求7所述的處理器,其中,如果第二操作被識別出,則第一操作將從調(diào)度程序中被去除。
9.一種系統(tǒng),其包括存儲器,用于存儲第一指令和第二指令,該第一指令用于生成向量屏蔽值,并且該第二指令用于將該向量屏蔽值存儲到向量屏蔽寄存器中;處理器,如果第一指令對應于與第二指令相同的向量屏蔽寄存器,則該處理器阻止該第二指令被執(zhí)行。
10.根據(jù)權利要求9所述的系統(tǒng),其中,所述處理器包括調(diào)度程序,用于調(diào)度第一和第二指令用于執(zhí)行,其中該調(diào)度程序包含先進先出(FIFO)隊列,該隊列用于按照第一和第二指令要被執(zhí)行的順序存儲對應于該第一和第二指令的信息。
11.根據(jù)權利要求10所述的系統(tǒng),其中,所述第一指令要在第二指令之前被執(zhí)行。
12.根據(jù)權利要求11所述的系統(tǒng),其中,對應于第一和第二指令的信息包括操作碼(opcode)、源操作數(shù)寄存器指示符、目的地寄存器指示符和向量屏蔽寄存器指示符。
13.根據(jù)權利要求12所述的系統(tǒng),其中,所述第一指令的操作碼對應于布爾“與”運算。
14.根據(jù)權利要求13所述的系統(tǒng),其中,所述第二指令的操作碼對應于向量屏蔽存儲操作。
15.根據(jù)權利要求14所述的系統(tǒng),其中,所述第一和第二指令中的每一個都對應于相同的向量屏蔽寄存器指示符。
16.根據(jù)權利要求15所述的系統(tǒng),其中,所述第一指令對應于生成向量屏蔽的操作,該向量屏蔽在對應于第一指令的操作之后最近被存儲在調(diào)度程序中。
17.根據(jù)權利要求9所述的系統(tǒng),其進一步包括搜索邏輯,用于在第一指令被存儲到處理器之后找到該第一指令。
18.一種方法,其包括在隊列中存儲用于存儲向量屏蔽值的第一操作;對隊列搜索生成向量屏蔽值的最新的第二操作,該第一操作早于第二操作;如果發(fā)現(xiàn)第二操作,則從隊列中去除該第一操作。
19.根據(jù)權利要求18所述的方法,其中,所述第一操作對應于setvm操作碼(opcode),用于將向量屏蔽值存儲到向量屏蔽寄存器文件中。
20.根據(jù)權利要求19所述的方法,其中,所述第二操作對應于vand操作碼(opcode),用于生成向量屏蔽值。
21.根據(jù)權利要求18所述的方法,進一步包括在兩個操作數(shù)之間執(zhí)行布爾“與”運算,以生成要被存儲到第一向量屏蔽寄存器中的向量屏蔽值。
22.根據(jù)權利要求21所述的方法,進一步包括將向量屏蔽值存儲到第一向量屏蔽寄存器中。
23.根據(jù)權利要求18所述的方法,其中,搜索包括讀取多個內(nèi)容可尋址存儲器(CAM),每個CAM對應于隊列中的條目。
24.根據(jù)權利要求23所述的方法,其中,所述最新的第二操作通過被存儲在CAM中的第一值來指示,該CAM對應于包含最新的第二操作的條目。
25.一種設備,其包括向量寄存器文件,該向量寄存器文件包括至少兩個源寄存器,以存儲至少兩個源操作數(shù);被耦合到向量寄存器文件的向量屏蔽寄存器文件,該向量屏蔽寄存器文件包括至少一個向量屏蔽寄存器,以存儲至少一個向量屏蔽值;被耦合到向量寄存器文件和向量屏蔽寄存器文件的算術邏輯單元(ALU),以對至少兩個源操作數(shù)執(zhí)行布爾“與”運算,如果該布爾“與”運算的結果包含的并不都是零,則該結果將被存儲到向量屏蔽寄存器中。
26.根據(jù)權利要求25所述的設備,進一步包括被耦合到ALU和向量屏蔽寄存器文件的比較器邏輯,用于將由ALU所生成的向量屏蔽值和零值向量進行比較,每個零值對應于向量屏蔽值內(nèi)的位的位置。
27.根據(jù)權利要求25所述的設備,進一步包括存儲第一指令的隊列,以生成向量屏蔽值。
28.根據(jù)權利要求27所述的設備,其中,所述隊列存儲第二指令,以將向量屏蔽值存儲到向量屏蔽寄存器文件中。
29.根據(jù)權利要求28所述的設備,其中,所述第一指令要在第二指令之前被執(zhí)行。
30.根據(jù)權利要求29所述的設備,其中,如果所述第一和第二指令對應于相同的向量屏蔽寄存器,則所述第二指令不被執(zhí)行。
全文摘要
一種生成向量屏蔽的技術。特別是,本發(fā)明的至少一個實施例匹配至少兩個指令,該至少兩個指令被用于生成向量屏蔽,以及如果發(fā)現(xiàn)相關性,則阻止這兩個指令中的至少一個被執(zhí)行。
文檔編號G06F15/78GK1983235SQ20061006408
公開日2007年6月20日 申請日期2006年11月22日 優(yōu)先權日2005年11月22日
發(fā)明者R·埃斯帕薩, R·格拉蒙特 申請人:英特爾公司