專(zhuān)利名稱(chēng):用于執(zhí)行邏輯比較操作的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本公開(kāi)內(nèi)容總體上涉及處理器領(lǐng)域。特別地,本公開(kāi)內(nèi)容涉及使用單個(gè)控制信號(hào)對(duì)多位數(shù)據(jù)上執(zhí)行多個(gè)邏輯比較操作。
背景技術(shù):
在典型的計(jì)算機(jī)系統(tǒng)中,處理器被實(shí)現(xiàn)為使用產(chǎn)生一個(gè)結(jié)果的指令對(duì)由許多位 (例如,64個(gè))表示的值進(jìn)行操作。例如,執(zhí)行加法指令將會(huì)把第一個(gè)64位的值和第二個(gè) 64位的值加在一起,并將結(jié)果存儲(chǔ)為第三個(gè)64位的值。多媒體應(yīng)用程序(例如,以計(jì)算機(jī)支持協(xié)作(CSC-具有混合的媒體數(shù)據(jù)處理的電信會(huì)議集合)、2D/3D圖形、圖像處理、視頻壓縮/解壓縮、識(shí)別算法和音頻處理為目標(biāo)的應(yīng)用程序)要求處理大量數(shù)據(jù)。所述數(shù)據(jù)可以用單個(gè)大值(例如,64位或1 位)表示,或者作為代替,可以用少量的位(例如,8或16 或32位)表示。例如,圖形數(shù)據(jù)可以由8或16位表示,聲音數(shù)據(jù)可以由8或16位表示,整數(shù)數(shù)據(jù)可以由8、16或32位表示,而浮點(diǎn)數(shù)據(jù)可以由32或64位表示。為了提高多媒體應(yīng)用程序(以及其它具有相同特征的應(yīng)用程序)的效率,處理器可以提供打包數(shù)據(jù)(packed data)格式。典型地,打包數(shù)據(jù)格式是這樣的格式其中,將通常用來(lái)表示單個(gè)值的多個(gè)位劃分成多個(gè)固定大小的數(shù)據(jù)元素,每個(gè)數(shù)據(jù)元素表示一個(gè)單獨(dú)的值。例如,1 位寄存器可以分成四個(gè)32位元素,每個(gè)元素表示單獨(dú)的32位值。用這種方式,這些處理器可以更有效地處理多媒體應(yīng)用程序。
本發(fā)明借助于示例進(jìn)行說(shuō)明,但并不局限于附圖中的示圖。圖Ia-Ic說(shuō)明根據(jù)本發(fā)明可選擇實(shí)施例的示例計(jì)算機(jī)系統(tǒng)。圖2a_2b說(shuō)明根據(jù)本發(fā)明可選擇實(shí)施例的處理器的寄存器堆。圖3說(shuō)明由用于處理數(shù)據(jù)的處理器所執(zhí)行的處理的至少一個(gè)實(shí)施例的流程圖。圖4說(shuō)明根據(jù)本發(fā)明可選擇實(shí)施例的打包數(shù)據(jù)類(lèi)型。圖5說(shuō)明根據(jù)本發(fā)明至少一個(gè)實(shí)施例的寄存器內(nèi)打包字節(jié)和寄存器內(nèi)打包字的數(shù)據(jù)表示。圖6說(shuō)明根據(jù)本發(fā)明至少一個(gè)實(shí)施例的寄存器內(nèi)打包雙字和寄存器內(nèi)打包四字的數(shù)據(jù)表示。圖7a_7d是說(shuō)明用于執(zhí)行邏輯-比較(logical-compare)、設(shè)置-零-和-進(jìn)位-標(biāo)志(set-zero-and-carry-flag)操作的處理的各種實(shí)施例的流程圖。圖8a-8c說(shuō)明用于執(zhí)行邏輯_比較、設(shè)置_零-禾Π _進(jìn)位-標(biāo)志操作的電路的可選擇實(shí)施例。
圖9是說(shuō)明處理器指令的操作碼格式的各種實(shí)施例的框圖。細(xì)節(jié)描述這里所公開(kāi)的是包括在響應(yīng)于單個(gè)控制信號(hào)而對(duì)多位數(shù)據(jù)執(zhí)行邏輯比較操作的處理器指令中的方法、系統(tǒng)和電路的多個(gè)實(shí)施例。該邏輯比較操作中所涉及的數(shù)據(jù)可以是打包或非打包數(shù)據(jù)。對(duì)于至少一個(gè)實(shí)施例而言,處理器耦合到存儲(chǔ)器。該存儲(chǔ)器中已經(jīng)存儲(chǔ)了第一數(shù)據(jù)和第二數(shù)據(jù)。處理器響應(yīng)于所接收的指令,對(duì)在第一數(shù)據(jù)和第二數(shù)據(jù)中的數(shù)據(jù)元素執(zhí)行邏輯比較操作。邏輯比較操作可以包括第一和第二數(shù)據(jù)的數(shù)據(jù)元素的位AND,并且還可以包括第一數(shù)據(jù)的數(shù)據(jù)元素的反碼和第二數(shù)據(jù)的數(shù)據(jù)元素的位AND。根據(jù)該邏輯比較操作的結(jié)果,修改處理器的至少兩個(gè)狀態(tài)標(biāo)志。這兩個(gè)狀態(tài)標(biāo)志可以包括零標(biāo)志(zero flag)和進(jìn)位標(biāo)志(carry flag)。這些標(biāo)志可以在體系上對(duì)應(yīng)用程序可見(jiàn),并且可以是更大標(biāo)志值的一部分,比如體系上可見(jiàn)的擴(kuò)展標(biāo)志(EFLAGQ寄存器。本發(fā)明的這些和其它實(shí)施例可以根據(jù)下面的教導(dǎo)實(shí)現(xiàn),并且顯而易見(jiàn)的是,可以用下面的教導(dǎo)進(jìn)行各種修改和改變而不背離本發(fā)明寬泛的精神和范圍。相應(yīng)地,說(shuō)明書(shū)和附圖被看成是說(shuō)明性的而不具有限制性意義,并且本發(fā)明僅根據(jù)權(quán)利要求來(lái)確定。為了提供用于理解本發(fā)明實(shí)施例的描述的基礎(chǔ),提供以下定義。位X到位Y 定義二進(jìn)制數(shù)的子字段。例如,字節(jié)001110102 (以二進(jìn)制示出)的位6到位0代表子字段1110102。在二進(jìn)制數(shù)后的‘2’表示二進(jìn)制。因此,IOOO2等于Sltl,而Fni等于151(1。是寄存器。寄存器是任何能夠存儲(chǔ)和提供數(shù)據(jù)的設(shè)備。寄存器的進(jìn)一步的功能在下面描述。寄存器不是必需與處理器包括在相同的芯片中或相同的封裝中。SRC 禾口 DEST 用于標(biāo)識(shí)存儲(chǔ)區(qū)域(例如,存儲(chǔ)器地址、寄存器等)源l_i和結(jié)果l_i以及 Destin 表示數(shù)據(jù)??偢疟旧暾?qǐng)描述了包括在用于打包或非打包數(shù)據(jù)的邏輯比較操作的處理器指令中的方法、裝置和系統(tǒng)的實(shí)施例。更具體而言,所述指令可以用于對(duì)數(shù)據(jù)進(jìn)行邏輯比較,并且隨后根據(jù)該比較設(shè)置零標(biāo)志和進(jìn)位標(biāo)志。對(duì)于至少一個(gè)實(shí)施例,使用下面表Ia和表Ib中所示的單個(gè)指令執(zhí)行兩個(gè)邏輯比較操作。所述比較操作包括目標(biāo)操作數(shù)和源操作數(shù)的逐位邏輯AND以及目標(biāo)操作數(shù)的反碼與源操作數(shù)的逐位邏輯AND。表Ia示出所公開(kāi)的邏輯比較操作的一個(gè)實(shí)施例的簡(jiǎn)化表示,而表Ib示出所公開(kāi)的邏輯比較指令的實(shí)施例的在位級(jí)別上的示例,給出了一些樣本值。對(duì)于在表Ia和Ib中所示出的實(shí)施例,雖然源操作數(shù)和目標(biāo)操作數(shù)中的數(shù)據(jù)可以是打包數(shù)據(jù),但是其可以是任何數(shù)據(jù)表示,而并非必須是打包數(shù)據(jù)。在源和/或目標(biāo)操作數(shù)的數(shù)據(jù)是128-位的單個(gè)實(shí)體且由此并不將其認(rèn)為是“打包”數(shù)據(jù)的情況下,在這里將其稱(chēng)為“非打包(unpacked) ”數(shù)據(jù),其簡(jiǎn)單地表示該數(shù)據(jù)不需要被再分割成組分(component)表示,并且可以被認(rèn)為是單個(gè)數(shù)據(jù)值。雖然為了簡(jiǎn)化說(shuō)明,表Ia中的數(shù)據(jù)被表示為32-位的值,但本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,在表Ia和Ib中所說(shuō)明的概念可以應(yīng)用于任何長(zhǎng)度的數(shù)據(jù),包括更小的數(shù)據(jù)長(zhǎng)度(例如,4-位、8-位和16-位的長(zhǎng)度)以及更大的數(shù)據(jù)長(zhǎng)度(例如,64-位和128-位的長(zhǎng)度)。表 Ia邏輯比較Dest,Source
權(quán)利要求
1.一種處理器(109,310),包括解碼器(165),用于對(duì)SIMD協(xié)處理器(226)第一比較指令和第二比較指令進(jìn)行解碼,所述第一比較指令和所述第二比較指令均具有用于指定各自的第一源操作數(shù)(831)的第一字段和用于指定各自的第二源操作數(shù)(833)的第二字段;多個(gè)寄存器,包括整數(shù)寄存器(201)和浮點(diǎn)計(jì)算器O09);執(zhí)行單元(130),其與所述多個(gè)寄存器相耦合,所述執(zhí)行單元用于響應(yīng)于所述第一比較指令被解碼為打包相等比較(PCMPEQ)指令,對(duì)所述第一比較指令的第一源操作數(shù)和第二源操作數(shù)的打包數(shù)據(jù)組分的相應(yīng)對(duì)進(jìn)行第一多個(gè)比較,以生成包括相應(yīng)的掩碼數(shù)據(jù)組分的第一打包結(jié)果,以及響應(yīng)于所述解碼器對(duì)所述第二比較指令進(jìn)行解碼,對(duì)所述第二比較指令的第一源操作數(shù)和第二源操作數(shù)的打包數(shù)據(jù)組分的相應(yīng)對(duì)進(jìn)行第二多個(gè)比較,并且基于所述第二多個(gè)比較來(lái)執(zhí)行分支支持;狀態(tài)寄存器O08),用于存儲(chǔ)多個(gè)狀態(tài)位,所述多個(gè)狀態(tài)位包括一個(gè)或多個(gè)架構(gòu)上可見(jiàn)的狀態(tài)標(biāo)志值,作為所述執(zhí)行單元響應(yīng)于所述第二比較指令而執(zhí)行的比較的結(jié)果。
2.根據(jù)權(quán)利要求1所述的處理器,其中,所述第二多個(gè)比較是針對(duì)所述第二比較指令的第一源操作數(shù)和第二源操作數(shù)的打包單精度浮點(diǎn)數(shù)據(jù)組分的相應(yīng)對(duì)來(lái)進(jìn)行的。
3.根據(jù)權(quán)利要求2所述的處理器,其中,執(zhí)行所述分支支持包括基于所述比較中的至少一個(gè),修改狀態(tài)標(biāo)志的值。
4.根據(jù)權(quán)利要求2所述的處理器,其中,執(zhí)行所述分支支持包括基于所述比較中的至少一個(gè),分支到一代碼位置。
5.根據(jù)權(quán)利要求4所述的處理器,其中,不設(shè)置任何狀態(tài)標(biāo)志作為所執(zhí)行的比較的結(jié)^ ο
6.根據(jù)權(quán)利要求4所述的處理器,其中,所述狀態(tài)寄存器要存儲(chǔ)的所述多個(gè)狀態(tài)位包括陷阱位。
7.根據(jù)權(quán)利要求4所述的處理器,其中,所述狀態(tài)寄存器要存儲(chǔ)的所述多個(gè)狀態(tài)位包括使能位。
8.根據(jù)權(quán)利要求4所述的處理器,其中,所述狀態(tài)寄存器要存儲(chǔ)的所述多個(gè)狀態(tài)位包括溢出位。
9.根據(jù)權(quán)利要求2所述的處理器,其中,執(zhí)行所述分支支持包括基于所述比較中的一個(gè),修改所述狀態(tài)寄存器的第一狀態(tài)位,以及基于所述比較中的另一個(gè),修改所述狀態(tài)寄存器的第二狀態(tài)位。
10.根據(jù)權(quán)利要求9所述的處理器,其中,執(zhí)行所述分支支持包括基于所述第一狀態(tài)位的值,執(zhí)行第一分支操作,以及基于所述第二狀態(tài)位的值,執(zhí)行第二分支操作。
11.根據(jù)權(quán)利要求1所述的處理器,其中,所述第一多個(gè)比較是針對(duì)所述第一比較指令的第一源操作數(shù)和第二源操作數(shù)的打包32位數(shù)據(jù)組分的相應(yīng)對(duì)來(lái)進(jìn)行的。
12.根據(jù)權(quán)利要求11所述的處理器,其中,包括相應(yīng)的掩碼數(shù)據(jù)組分的所述第一打包結(jié)果被存儲(chǔ)為所述第二比較指令的第一源操作數(shù)或第二源操作數(shù)中的一個(gè)。
13.根據(jù)權(quán)利要求12所述的處理器,其中,所述第二多個(gè)比較是針對(duì)所述第二比較指令的第一源操作數(shù)和第二源操作數(shù)的打包單精度浮點(diǎn)數(shù)據(jù)組分的相應(yīng)對(duì)來(lái)進(jìn)行的。
14.一種處理器(109,310),包括解碼器(165),用于對(duì)SIMD協(xié)處理器(226)第一、第二和第三比較指令進(jìn)行解碼,所述第一比較指令、所述第二比較指令和所述第三比較指令中的每一個(gè)具有用于指定各自的第一源操作數(shù)(831)的第一字段和用于指定各自的第二源操作數(shù)(833)的第二字段;多個(gè)寄存器,包括整數(shù)寄存器(201)和浮點(diǎn)計(jì)算器O09);執(zhí)行單元(130),其與所述多個(gè)寄存器相耦合,所述執(zhí)行單元包括比較電路(145),用于響應(yīng)于所述第一比較指令被解碼為打包相等比較(PCMPEQ)指令,對(duì)所述第一比較指令的第一源操作數(shù)和第二源操作數(shù)的打包數(shù)據(jù)組分的相應(yīng)對(duì)進(jìn)行第一多個(gè)比較,以生成包括相應(yīng)的掩碼數(shù)據(jù)組分的第一打包結(jié)果,以及響應(yīng)于對(duì)所述第二比較指令和所述第三比較指令進(jìn)行解碼,對(duì)所述第二比較指令和所述第三比較指令的第一源操作數(shù)和各自的第二源操作數(shù)的打包數(shù)據(jù)組分的相應(yīng)對(duì)分別進(jìn)行第二多個(gè)比較和第三多個(gè)比較;所述執(zhí)行單元還包括分支電路(145),該分支電路用于基于所述比較電路響應(yīng)于所述第二比較指令而執(zhí)行的比較來(lái)進(jìn)行控制跳轉(zhuǎn);狀態(tài)寄存器O08),用于存儲(chǔ)多個(gè)狀態(tài)位,所述多個(gè)狀態(tài)位包括一個(gè)或多個(gè)架構(gòu)上可見(jiàn)的狀態(tài)標(biāo)志值,作為所述比較電路響應(yīng)于所述第三比較指令而執(zhí)行的比較的結(jié)果。
15.根據(jù)權(quán)利要求14所述的處理器,其中,響應(yīng)于對(duì)所述第二比較指令和所述第三比較指令進(jìn)行解碼而執(zhí)行的所述第二多個(gè)比較和所述第三多個(gè)比較分別是針對(duì)第一源操作數(shù)的打包單精度浮點(diǎn)數(shù)據(jù)組分和各自的第二源操作數(shù)的打包單精度浮點(diǎn)數(shù)據(jù)組分的相應(yīng)對(duì)來(lái)進(jìn)行的。
16.根據(jù)權(quán)利要求14所述的處理器,其中,存儲(chǔ)在所述狀態(tài)寄存器中的一架構(gòu)上可見(jiàn)的狀態(tài)標(biāo)志的值是基于響應(yīng)于所述第三比較指令而執(zhí)行的比較中的至少一個(gè)來(lái)設(shè)置的。
17.根據(jù)權(quán)利要求16所述的處理器,其中,所述狀態(tài)寄存器要存儲(chǔ)的所述多個(gè)狀態(tài)位包括架構(gòu)上可見(jiàn)的溢出狀態(tài)標(biāo)志。
18.根據(jù)權(quán)利要求14所述的處理器,其中,不設(shè)置任何狀態(tài)標(biāo)志作為響應(yīng)于所述第二比較指令而執(zhí)行的比較的結(jié)果。
19.根據(jù)權(quán)利要求18所述的處理器,其中,所述狀態(tài)寄存器要存儲(chǔ)的所述多個(gè)狀態(tài)位包括陷阱位。
20.根據(jù)權(quán)利要求18所述的處理器,其中,所述狀態(tài)寄存器要存儲(chǔ)的所述多個(gè)狀態(tài)位包括使能位。
21.根據(jù)權(quán)利要求14所述的處理器,其中,響應(yīng)于所述第三比較指令,基于所述第三多個(gè)比較中的第一個(gè)來(lái)修改所述狀態(tài)寄存器的第一狀態(tài)位,并且基于所述第三多個(gè)比較中的第二個(gè)來(lái)修改所述狀態(tài)寄存器的第二狀態(tài)位。
22.根據(jù)權(quán)利要求14所述的處理器,其中,所述第一多個(gè)比較是針對(duì)所述第一比較指令的第一源操作數(shù)和第二源操作數(shù)的打包32位數(shù)據(jù)組分的相應(yīng)對(duì)來(lái)進(jìn)行的。
23.根據(jù)權(quán)利要求22所述的處理器,其中,包括相應(yīng)的掩碼數(shù)據(jù)組分的所述第一打包結(jié)果被存儲(chǔ)為所述第三比較指令的第一源操作數(shù)或第二源操作數(shù)中的一個(gè)。
24.根據(jù)權(quán)利要求23所述的處理器,其中,所述第三多個(gè)比較是針對(duì)所述第三比較指令的第一源操作數(shù)和第二源操作數(shù)的打包單精度浮點(diǎn)數(shù)據(jù)組分的相應(yīng)對(duì)來(lái)進(jìn)行的。
全文摘要
一種用于包含在對(duì)打包或非打包數(shù)據(jù)執(zhí)行邏輯比較和分支支持操作的處理器指令中的方法和裝置。在一個(gè)實(shí)施例中,處理器耦合到存儲(chǔ)器。存儲(chǔ)器中已經(jīng)存儲(chǔ)了第一數(shù)據(jù)和第二數(shù)據(jù)。該處理器對(duì)該第一和第二數(shù)據(jù)執(zhí)行邏輯比較。該邏輯比較可以對(duì)該第一和第二數(shù)據(jù)的每個(gè)位執(zhí)行,或者可以只對(duì)某些位執(zhí)行。對(duì)于至少一個(gè)實(shí)施例,至少第一數(shù)據(jù)包括打包數(shù)據(jù)元素,并且該邏輯比較對(duì)該打包數(shù)據(jù)元素的最高有效位執(zhí)行。該邏輯比較可以包括對(duì)第一和第二數(shù)據(jù)的相同的各個(gè)位的比較,并且還包括對(duì)第一數(shù)據(jù)的位與第二數(shù)據(jù)的相應(yīng)位的反碼的邏輯比較。基于這些比較,可以進(jìn)行分支支持動(dòng)作。這樣的分支支持動(dòng)作可以包括設(shè)置一個(gè)或多個(gè)標(biāo)志,其進(jìn)而可以被所述分支單元使用??蛇x擇地,分支支持動(dòng)作可以包括分支到所指示的目標(biāo)代碼位置。
文檔編號(hào)G06F9/30GK102207849SQ20111012783
公開(kāi)日2011年10月5日 申請(qǐng)日期2007年9月21日 優(yōu)先權(quán)日2006年9月21日
發(fā)明者K·戈特利布, M·巴克斯頓, R·卡普爾, R·祖海爾, Z·斯佩貝爾 申請(qǐng)人:英特爾公司