国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于執(zhí)行邏輯比較操作的方法和裝置的制作方法

      文檔序號(hào):6611814閱讀:215來源:國知局

      專利名稱::用于執(zhí)行邏輯比較操作的方法和裝置的制作方法用于執(zhí)行邏輯比較操作的方法和裝置
      技術(shù)領(lǐng)域
      本公開內(nèi)容總體上涉及處理器領(lǐng)域。特別地,本公開內(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位或128位)表示,或者作為代替,可以用少量的位(例如,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ù)(packeddata)格式。典型地,打包數(shù)據(jù)格式是這樣的格式其中,將通常用來表示單個(gè)值的多個(gè)位劃分成多個(gè)周定大小的數(shù)據(jù)元素,每個(gè)數(shù)據(jù)元素表示一個(gè)單獨(dú)的值。例如,128位寄存器可以分成四個(gè)32位元素,每個(gè)元素表示單獨(dú)的32位值。用這種方式,這些處理器可以更有效地處理多媒體應(yīng)用程序。本發(fā)明借助于示例進(jìn)行說明,但并不局限于附圖中的示圖。圖la-lc說明根據(jù)本發(fā)明可選擇實(shí)施例的示例計(jì)算機(jī)系統(tǒng)。圖2a-2b說明根據(jù)本發(fā)明可選擇實(shí)施例的處理器的寄存器堆。圖3說明由用于處理數(shù)據(jù)的處理器所執(zhí)行的處理的至少一個(gè)實(shí)施例的流程圖。圖4說明根據(jù)本發(fā)明可選擇實(shí)施例的打包數(shù)據(jù)類型。圖5說明根據(jù)本發(fā)明至少一個(gè)實(shí)施例的寄存器內(nèi)打包字節(jié)和寄存器內(nèi)打包字的數(shù)據(jù)表示。圖6說明根據(jù)本發(fā)明至少一個(gè)實(shí)施例的寄存器內(nèi)打包雙字和寄存器內(nèi)打包四字的數(shù)據(jù)表示。圖7a-7d是說明用于執(zhí)行邏輯-比較(logical-compare)、設(shè)置-零-和-進(jìn)位-標(biāo)志(set-zero-and-carry-flag)操作的處理的各種實(shí)施例的流程圖。圖8a-8c說明用于執(zhí)行邏輯-比較、設(shè)置-零-和-進(jìn)位-標(biāo)志操作的電路的可選擇實(shí)施例。圖9是說明處理器指令的操作碼格式的各種實(shí)施例的框圖。細(xì)節(jié)描述這里所公開的是包括在響應(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)志(zeroflag)和進(jìn)位標(biāo)志(carryflag)。這些標(biāo)志可以在體系上對(duì)應(yīng)用程序可見,并且可以是更大標(biāo)志值的一部分,比如體系上可見的擴(kuò)展標(biāo)志(EFLAGS)寄存器。本發(fā)明的這些和其它實(shí)施例可以根據(jù)下面的教導(dǎo)實(shí)現(xiàn),并且顯而易見的是,可以用下面的教導(dǎo)進(jìn)行各種修改和改變而不背離本發(fā)明寬泛的精神和范圍。相應(yīng)地,說明書和附圖被看成是說明性的而不具有限制性意義,并且本發(fā)明僅根據(jù)權(quán)利要求來確定。定義為了提供用于理解本發(fā)明實(shí)施例的描述的基礎(chǔ),提供以下定義。位X到位Y:定義二進(jìn)制數(shù)的子字段。例如,字節(jié)001110102(以二進(jìn)制示出)的位6到位0代表子字段1110102。在二進(jìn)制數(shù)后的'2'表示二進(jìn)制。因此,10002等于81(),而F^等于15k)。Rx:是寄存器。寄存器是任何能夠存儲(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í)施例,使用下面表la和表lb中所示的單個(gè)指令執(zhí)行兩個(gè)邏輯比較操作。所述比較操作包括目標(biāo)操作數(shù)和源操作數(shù)的逐位邏輯AND以及目標(biāo)操作數(shù)的反碼與源操作數(shù)的逐位邏輯AND。表la示出所公開的邏輯比較操作的一個(gè)實(shí)施例的簡化表示,而表lb示出所公開的邏輯比較指令的實(shí)施例的在位級(jí)別上的示例,給出了一些樣本值。對(duì)于在表la和lb中所示出的實(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ù)的情況下,在這里將其稱為"非打包(unpacked)"數(shù)據(jù),其簡單地表示該數(shù)據(jù)不需要被再分割成組分(component)表示,并且可以被認(rèn)為是單個(gè)數(shù)據(jù)值。雖然為了簡化說明,表la中的數(shù)據(jù)被表示為32-位的值,但本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,在表la和lb中所說明的概念可以應(yīng)用于任何長度的數(shù)據(jù),包括更小的數(shù)據(jù)長度(例如,4-位、8-位和16-位的長度)以及更大的數(shù)據(jù)長度(例如,64-位和128-位的長度)。表la邏輯比較Dest,Source_目標(biāo)操作數(shù)__源操作數(shù)_DestAND(逐位)Source[NOTDest]AND(逐位)Source如果中間結(jié)果1=全0則設(shè)置;否則重i如果中間結(jié)果2=全0則設(shè)置;否則重置表lb<table>tableseeoriginaldocumentpage12</column></row><table>對(duì)于至少一個(gè)實(shí)施例,源和目標(biāo)操作數(shù)的數(shù)據(jù)值可以表示打包數(shù)據(jù)。用于該實(shí)施例的源操作數(shù)和目標(biāo)操作數(shù)的每個(gè)打包組分可以表示任何類型的數(shù)據(jù)。表2a和2b說明組分A,到A4以及到B4,其每個(gè)都表示32-DestSource中間結(jié)果1中間結(jié)果2零標(biāo)志進(jìn)位標(biāo)志200710144187.2說明書第5/35頁位單精度浮點(diǎn)數(shù)的二進(jìn)制表示。然而,這樣的說明不應(yīng)當(dāng)被看成是限制。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到每個(gè)組分可以表示任何數(shù)據(jù),包括任何整數(shù)或浮點(diǎn)數(shù)據(jù)格式,以及串格式或任何其它類型的數(shù)據(jù)格式。表2a邏輯比較Dest,SourceA!A2A3A4DestB!B2B3B4SourceDestAND(逐位)Source中間結(jié)果1[NOTDest]AND(逐位)Source中間結(jié)果2如果中間結(jié)果1=全0則設(shè)置;否則重置零標(biāo)志如果中間結(jié)果2=全0則設(shè)置;否則重置進(jìn)位標(biāo)志表2b邏輯比較Dest,Source—示例值A(chǔ)l:-118.62511nnnrnniiirniniA2:0.15625oni1111nnrnnnnnoA3:-2.125A4:2.511UUUU1U111U11U10100000000000000UU11111WUiUUUUU0000000000000000i1uuWUUUUUU1uuu00000000000000000000000000000000Bl:-O.O1000000000000000B2:0.000000000000000000000000000000000B3:-0.010000000000000000000000000000000B4:0.000000000000000000000000000000000AlANDBl1000000000000000A2ANDB2A3ANDB30000000000000000A4ANDB4[NOTA1]ANDB100000000000000000000000000000000[NOTA2]ANDB200000000000000000000000000000000[NOTA3]ANDB300000000000000000000000000000000[NOTA4]ANDB400000000000000000000000000000000零標(biāo)志FALSE進(jìn)位標(biāo)志TRUE13對(duì)于打包實(shí)施例,例如表2a和2b所說明的,可以這樣來利用可選擇實(shí)施例使得在比較操作期間,僅僅對(duì)每個(gè)打包元素的特定的位進(jìn)行操作。例如,在下面將結(jié)合圖7c、7d、8b和8c的討論對(duì)至少某些這樣的實(shí)施例進(jìn)行討論。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,只是為了易于說明,在表la和2a中示出了中間值"中間結(jié)果1"和"中間結(jié)果2",在表lb和2b中示出了二進(jìn)制值的第三和第四行。雖然它們?cè)谥辽僖粋€(gè)實(shí)施例中可以這樣進(jìn)行存儲(chǔ),但是它們?cè)诒韑a到2b中的表示不應(yīng)當(dāng)被看成意味著這些中間值必須存儲(chǔ)在處理器中??蛇x擇地,對(duì)于至少一個(gè)其它實(shí)施例,通過電路來確定這些中間值,而不將上述值存儲(chǔ)在存儲(chǔ)區(qū)域中。在上面,表la、lb、2a和2b描述了"邏輯比較,設(shè)置零標(biāo)志和進(jìn)位標(biāo)志"("LCSZC")指令的實(shí)施例,該指令對(duì)源操作數(shù)和目標(biāo)操作數(shù)的128個(gè)位中的每一個(gè)位執(zhí)行逐位的AND操作,并且還對(duì)源操作數(shù)的128個(gè)位中的每一個(gè)位與目標(biāo)操作數(shù)的反碼值的128個(gè)位中的每一位執(zhí)行逐位的AND操作,并且根據(jù)該AND操作的結(jié)果來設(shè)置零標(biāo)志和進(jìn)位標(biāo)志。零標(biāo)志和進(jìn)位標(biāo)志的設(shè)置支持基于邏輯比較的分支行為。對(duì)于至少一個(gè)實(shí)施例,該LCSZC指令后面可以跟著單獨(dú)的分支指令,該分支指令基于所述標(biāo)志中的一個(gè)或兩個(gè)的值,指示希望由處理器執(zhí)行的分支操作(例如,見下面表4的偽代碼)。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,狀態(tài)標(biāo)志的設(shè)置不是分支操作可以用以利用比較結(jié)果的唯一硬件機(jī)制,也可以實(shí)現(xiàn)其它機(jī)制,以便基于比較結(jié)果來支持分支。因此,雖然下面描述的具體實(shí)施例指示作為邏輯比較的結(jié)果,可以設(shè)置零標(biāo)志和進(jìn)位標(biāo)志,但這種支持分支的標(biāo)志設(shè)置并不要求用于所有實(shí)施例。相應(yīng)地,在這里使用的術(shù)語"LCSZC"不應(yīng)當(dāng)被看成限制性的,原因在于零標(biāo)志和進(jìn)位標(biāo)志的設(shè)置并非對(duì)于所有實(shí)施例都是必需的。例如,對(duì)于一個(gè)可選擇的實(shí)施例,分支行為可以作為在一個(gè)指令中融合了比較和分支的LCSZC指令(例如融合"測(cè)試-和-分支(test-and-bmnch)"指令)的變量的直接結(jié)果來執(zhí)行。對(duì)于融合"測(cè)試-和-分支"指令的至少一個(gè)實(shí)施例,作為所執(zhí)行的邏輯比較的結(jié)果,不設(shè)置任何狀態(tài)標(biāo)志??蛇x擇的實(shí)施例可以改變?cè)跀?shù)據(jù)元素和中間結(jié)果中位的數(shù)量。而且,可選擇的實(shí)施例可以只比較源值和目標(biāo)值各自的某些位。此外,可選擇的實(shí)施例可以改變所使用的數(shù)據(jù)元素的數(shù)量以及所產(chǎn)生的中間結(jié)果的數(shù)量。例如,可選擇的實(shí)施例可以包括但不局限于用于無符號(hào)源和有符號(hào)目標(biāo)的LCSZC指令;用于有符號(hào)源和無符號(hào)目標(biāo)的LCSZC指令;用于無符號(hào)源和無符號(hào)目標(biāo)的LCSZC指令;以及用于有符號(hào)源和有符號(hào)目標(biāo)的LCSZC指令。在每個(gè)示例中,所述源和目每一個(gè)都可以都包含8-位、16-位、32-位或64-位組分的打包數(shù)據(jù)??蛇x擇地,所述源和目標(biāo)數(shù)據(jù)不是打包的,而是一個(gè)128-位的數(shù)據(jù)元素。源和目標(biāo)的打包性質(zhì)不需要是對(duì)稱的,并且如果源和目標(biāo)都是打包的,源和目標(biāo)的數(shù)據(jù)大小也無需必須相同。計(jì)算機(jī)系統(tǒng)圖la示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的示例計(jì)算機(jī)系統(tǒng)100。計(jì)算機(jī)系統(tǒng)100包括用于信息通信的互連部件101。該互連部件101可以包括多分支(multi-drop)總線、一個(gè)或多個(gè)點(diǎn)對(duì)點(diǎn)互連部件或兩者的任意組合,以及任何其它通信硬件和/或軟件。圖la示出了用于處理信息的、與互連部件101耦合的處理器109。處理器109表示任何架構(gòu)類型的中央處理單元,包括CISC或RISC類型的架構(gòu)。計(jì)算機(jī)系統(tǒng)100還包括隨機(jī)訪問存儲(chǔ)器(RAM)或其它動(dòng)態(tài)存儲(chǔ)設(shè)備(稱為主存儲(chǔ)器104),其耦合到互連部件101,用于存儲(chǔ)信息和由處理器109執(zhí)行的指令。主存儲(chǔ)器104還可以用于在處理器109執(zhí)行指令期間存儲(chǔ)臨時(shí)變量或其它中間信息。計(jì)算機(jī)系統(tǒng)100還包括只讀存儲(chǔ)器(ROM)106和/或其它靜態(tài)存儲(chǔ)設(shè)備,其耦合到互連部件101,用于為處理器109存儲(chǔ)靜態(tài)信息和指令。數(shù)據(jù)存儲(chǔ)設(shè)備107耦合到互連部件101,用于存儲(chǔ)信息和指令。圖la還示出處理器109包括執(zhí)行單元130、寄存器堆(registerfile)150、高速緩存160、解碼器165和內(nèi)部互連部件170。當(dāng)然,處理器109包括不是理解本發(fā)明所必需的其他電路。解碼器165用于對(duì)處理器109接收的指令進(jìn)行解碼,而執(zhí)行單元130用于執(zhí)行處理器109接收的指令。如這里所述,除了識(shí)別典型地由通用處理器執(zhí)行的指令之外,解碼器165和執(zhí)行單元130還識(shí)別用于執(zhí)行邏輯-比較-和-設(shè)置-零-和-進(jìn)位-標(biāo)志(LCSZC)操作的指令。解碼器165和執(zhí)行單元130識(shí)別用于對(duì)打包數(shù)據(jù)和非打包數(shù)據(jù)執(zhí)行LCSZC操作的指令。執(zhí)行單元130通過內(nèi)部互連部件170耦合到寄存器堆150。而且,內(nèi)部互連部件170無需必須是多分支總線,在可選擇的實(shí)施例中可以是點(diǎn)對(duì)點(diǎn)互連部件或其它類型的通信路徑。一個(gè)(或多個(gè))寄存器堆150表示處理器109中用于存儲(chǔ)信息(包括數(shù)據(jù))的存儲(chǔ)區(qū)域。可以理解的是,本發(fā)明的一個(gè)方面是用于對(duì)打包或非打包數(shù)據(jù)執(zhí)行LCSZC操作的、所描述指令的實(shí)施例。根據(jù)本發(fā)明的這個(gè)方面,用于存儲(chǔ)數(shù)據(jù)的存儲(chǔ)區(qū)域不是關(guān)鍵的。然而,寄存器堆150的實(shí)施例在后面參考圖2a-2b進(jìn)行描述。執(zhí)行單元130耦合到高速緩存160和解碼器165。高速緩存160用于對(duì)例如來自主存儲(chǔ)器104的數(shù)據(jù)和/或控制信號(hào)進(jìn)行高速緩存。解碼器165用于將處理器109接收的指令解碼成控制信號(hào)和/或微代碼入口點(diǎn)??梢詫⑦@些控制信號(hào)和/或微代碼入口點(diǎn)從解碼器165傳送給執(zhí)行單元BO。執(zhí)行單元130響應(yīng)于這些控制信號(hào)和/或微代碼入口點(diǎn),執(zhí)行適當(dāng)?shù)牟僮?。例如,如果接收到LCSZC指令,則解碼器165使執(zhí)行單元130執(zhí)行所要求的比較邏輯。對(duì)于至少一些實(shí)施例(比如那些沒有實(shí)現(xiàn)融合"測(cè)試和分支"操作的實(shí)施例),執(zhí)行單元130可以相應(yīng)地設(shè)置零標(biāo)志和進(jìn)位標(biāo)志(例如,見邏輯比較電路145)。對(duì)于這樣的實(shí)施例,處理器109的分支單元(未示出)可以在隨后的指示目標(biāo)代碼位置的分支指令的執(zhí)行期間使用這些標(biāo)志??蛇x擇地,執(zhí)行單元130本身可以包括基于邏輯比較來影響分支的分支電路(未示出)。對(duì)于這樣的實(shí)施例,由LCSZC指令所提供的"分支支持"是跳轉(zhuǎn)到指定目標(biāo)代碼位置的控制跳轉(zhuǎn),而不是控制標(biāo)志的設(shè)置。對(duì)于至少一個(gè)實(shí)施例,執(zhí)行跳轉(zhuǎn)或"分支"的分支電路可以是邏輯比較電路145的一部分??梢允褂萌我鈹?shù)量的不同機(jī)制(例如,查尋表、硬件實(shí)現(xiàn)、PLA等)來實(shí)現(xiàn)解碼器165。因此,雖然解碼器165和執(zhí)行單元130對(duì)各種指令的執(zhí)行在這里可以由一系列if/then語句表示,但可以理解的是,指令的執(zhí)行并不要求這些if/then語句的串行處理。相反地,在邏輯上執(zhí)行該i仍hen處理的任何機(jī)制均認(rèn)為是在本發(fā)明的范圍內(nèi)。圖la還示出了數(shù)據(jù)存儲(chǔ)設(shè)備107(例如,磁盤、光盤、和/或其它機(jī)器可讀介質(zhì)),其可以耦合到計(jì)算機(jī)系統(tǒng)100。另外,數(shù)據(jù)存儲(chǔ)設(shè)備107示出為包括由處理器109執(zhí)行的代碼195。代碼195可以包括LCSZC指令142的一個(gè)或多個(gè)實(shí)施例,并且可以將其編寫為使處理器109用一個(gè)(或多個(gè))LCSZC指令142執(zhí)行用于任意數(shù)量的目的(例如,運(yùn)動(dòng)視頻壓縮/解壓縮、圖像濾波、音頻信號(hào)壓縮、濾波或合成、調(diào)制/解調(diào)等)的位測(cè)試。計(jì)算機(jī)系統(tǒng)100還可以通過互連部件101耦合到用于為計(jì)算機(jī)用戶顯示信息的顯示設(shè)備121。顯示設(shè)備121可以包括幀緩沖器、專用圖形渲染設(shè)備、液晶顯示器(LCD)和/或平板顯示器??梢詫ㄗ帜笖?shù)字和其它鍵的輸入設(shè)備122耦合到互連部件101,用于傳遞信息和命令選擇給處理器109。另一種類型的用戶輸入設(shè)備是光標(biāo)控制器123,比如鼠標(biāo)、軌跡球、筆、觸摸屏或光標(biāo)方向鍵,用于傳遞方向信息和命令選擇給處理器109,并用于控制顯示設(shè)備121上的光標(biāo)移動(dòng)。這些輸入設(shè)備典型地在兩個(gè)軸(第一軸(例如,x)和第二軸(例如,y))上具有兩個(gè)自由度,這允許該設(shè)備在平面上指定位置。然而,本發(fā)明不應(yīng)當(dāng)局限于只具有兩個(gè)自由度的輸入設(shè)備??梢择詈系交ミB部件101的另一個(gè)設(shè)備是可以用來在介質(zhì)(比如紙、膠巻或類似的介質(zhì)類型)上打印指令、數(shù)據(jù)或其它信息的硬拷貝設(shè)備124。此外,計(jì)算機(jī)系統(tǒng)100可以耦合到用于聲音記錄和/或重放的設(shè)備125,比如用來記錄信息的、耦合到麥克風(fēng)的音頻數(shù)字化儀。此外,設(shè)備125可以包括用來播放數(shù)字化聲音的、耦合到數(shù)模(D/A)轉(zhuǎn)換器的揚(yáng)聲器。計(jì)算機(jī)系統(tǒng)IOO可以是計(jì)算機(jī)網(wǎng)絡(luò)(例如,LAN)中的終端。從而計(jì)算機(jī)系統(tǒng)100可以是計(jì)算機(jī)網(wǎng)絡(luò)的計(jì)算機(jī)子系統(tǒng)。計(jì)算機(jī)系統(tǒng)100可選擇性地包括視頻數(shù)字化設(shè)備126和/或通信設(shè)備190(例如,提供與外部設(shè)備或網(wǎng)絡(luò)之間的通信的串行通信芯片、無線接口、以太網(wǎng)芯片或調(diào)制解調(diào)器)。視頻數(shù)字化設(shè)備126可以用于拍攝視頻圖像,視頻圖像可以被傳送到計(jì)算機(jī)網(wǎng)絡(luò)上的其它設(shè)備。對(duì)于至少一個(gè)實(shí)施例,處理器109支持與現(xiàn)存的由加利福利亞SantaClara的Intel公司制造的處理器(比如,例如,IntelPentium處理器、IntelPentiumPro處理器、IntelPentiumII處理器、IntelPentiumIII處理器、IntelPentium4處理器、IntelItanium⑧處理器、IntelItanium2處理器或IntelCoreDuo處理器)使用的指令集相兼容的指令集。由此,處理器109能夠支持除了本發(fā)明的操作之外的現(xiàn)存的處理器操作。處理器109還可以適于以一種或多種處理技術(shù)制造,并且通過足夠詳細(xì)地在機(jī)器可讀介質(zhì)上對(duì)其進(jìn)行表示,可以適于方便所述制造。雖然下面描述的本發(fā)明與基于x86的指令集相結(jié)合,但可選擇的實(shí)施例可以將本發(fā)明與其它指令集相結(jié)合。例如,本發(fā)明可以與使用與基于x86的指令集不同的指令集的64-位處理器相結(jié)合。圖lb示出了用于實(shí)現(xiàn)本發(fā)明原理的數(shù)據(jù)處理系統(tǒng)102的可選擇實(shí)施例。數(shù)據(jù)處理系統(tǒng)102的一個(gè)實(shí)施例是采用IntelXScaleTM技術(shù)的應(yīng)用處理器。本領(lǐng)域技術(shù)人員易于理解的是,這里所描述的實(shí)施例可以與可選擇的處理系統(tǒng)一起使用,而不背離本發(fā)明的范圍。計(jì)算機(jī)系統(tǒng)102包括能夠執(zhí)行LCSZC操作的處理內(nèi)核110。對(duì)于一個(gè)實(shí)施例,處理內(nèi)核IIO表示任何架構(gòu)類型的處理單元,包括但不局限于CISC、RISC或VLIW類型的架構(gòu)。處理內(nèi)核110也可以適于采用一種或多種處理技術(shù)制造,并且通過足夠詳細(xì)地在機(jī)器可讀介質(zhì)上對(duì)其進(jìn)行表示,可以適于方便所述制造。處理內(nèi)核110包括執(zhí)行單元130、一組寄存器堆150和解碼器165。處理內(nèi)核IIO還包括對(duì)于理解本發(fā)明所不需要的其他電路(未示出)。執(zhí)行單元130用于執(zhí)行由處理內(nèi)核110接收的指令。除了識(shí)別典型的處理器指令外,執(zhí)行單元130還識(shí)別用于對(duì)打包和非打包數(shù)據(jù)格式執(zhí)行LCSZC操作的指令。由解碼器165和執(zhí)行單元130所識(shí)別的指令集可以包括一個(gè)或多個(gè)用于LCSZC操作的指令,還可以包括其它打包指令。執(zhí)行單元130通過內(nèi)部總線(再次論之,其可以是包括多分支總線、點(diǎn)對(duì)點(diǎn)互連部件等的任何類型的通信路徑)耦合到寄存器堆150。寄存器堆150表示處理內(nèi)核110的用于存儲(chǔ)信息(包括數(shù)據(jù))的存儲(chǔ)區(qū)域。如前所述,可以理解的是,用于存儲(chǔ)數(shù)據(jù)的存儲(chǔ)區(qū)域不是關(guān)鍵的。執(zhí)行單元130耦合到解碼器165。解碼器165用于將處理內(nèi)核110接收的指令解碼成控制信號(hào)和/或微代碼入口點(diǎn)。對(duì)這些控制信號(hào)和/或微代碼入口點(diǎn)進(jìn)行響應(yīng)。這些控制信號(hào)和/或微代碼入口點(diǎn)可以被傳送到執(zhí)行單元130。執(zhí)行單元130可以響應(yīng)于所接收的控制信號(hào)和/或微代碼入口點(diǎn),來執(zhí)行適當(dāng)操作。對(duì)于至少一個(gè)實(shí)施例,例如,執(zhí)行單元130可以執(zhí)行這里描述的邏輯比較,并且還可以設(shè)置這里討論的狀態(tài)標(biāo)志或到指定代碼位置的分支,或兩者都設(shè)置。處理內(nèi)核110與總線214耦合,以便與其它各種系統(tǒng)設(shè)備進(jìn)行通信,這些系統(tǒng)設(shè)備包括但不局限于例如,同步動(dòng)態(tài)隨機(jī)訪問存儲(chǔ)器(SDRAM)控制器271、靜態(tài)隨機(jī)訪問存儲(chǔ)器(SRAM)控制器272、猝發(fā)式閃速存儲(chǔ)器接口(burstflashmemoryinterface)273、個(gè)人計(jì)算機(jī)存儲(chǔ)卡國際協(xié)會(huì)(PCMCIA)/小型閃存(compactflash,CF)卡控制器274、液晶顯示器(LCD)控制器275、直接存儲(chǔ)器訪問(DMA)控制器276和可選擇總線主接口277。對(duì)于至少一個(gè)實(shí)施例,數(shù)據(jù)處理系統(tǒng)102還可以包括用于通過I/O總線295與各種I/O設(shè)備通信的I/O橋290。這樣的I/O設(shè)備可以包括但不局限于例如,通用異步接收器/發(fā)送器(UART)291、通用串行總線(USB)292、藍(lán)牙無線UART293以及I/0擴(kuò)展接口294。如同上面討論的其它總線,1/0總線295可以是包括多分支總線、點(diǎn)對(duì)點(diǎn)互連部件等的任何類型的通信路徑。數(shù)據(jù)處理系統(tǒng)102的至少一個(gè)實(shí)施例為移動(dòng)電話提供網(wǎng)絡(luò)和/或無線通信以及能夠?qū)Υ虬头谴虬鼣?shù)據(jù)執(zhí)行LCSZC操作的處理內(nèi)核110。處理內(nèi)核110可以用以下進(jìn)行編程包括離散變換、濾波或巻積在內(nèi)的各種音頻、視頻、圖像以及通信算法;諸如顏色空間變換、視頻編碼運(yùn)動(dòng)估計(jì)或視頻解碼運(yùn)動(dòng)補(bǔ)償之類的壓縮/解壓縮技術(shù);以及諸如脈沖編碼調(diào)制(PCM)之類的調(diào)制/解調(diào)(MODEM)功能進(jìn)行編程。圖lc示出了能夠?qū)Υ虬头谴虬鼣?shù)據(jù)執(zhí)行LCSZC操作的數(shù)據(jù)處理系統(tǒng)103的可選擇實(shí)施例。根據(jù)一個(gè)可選擇實(shí)施例,數(shù)據(jù)處理系統(tǒng)103可以包括芯片封裝310,其包含主處理器224以及一個(gè)或多個(gè)協(xié)處理器226。附加的協(xié)處理器226的可選擇性在圖lc中用虛線表示。例如,一個(gè)或多個(gè)協(xié)處理器226可以是能夠執(zhí)行SIMD指令的圖形協(xié)處理器。圖lc示出數(shù)據(jù)處理系統(tǒng)103還可以包括高速緩沖存儲(chǔ)器278和輸入/輸出系統(tǒng)265,兩者都耦合到芯片封裝310。輸入/輸出系統(tǒng)295可以選擇性地耦合到無線接口296。協(xié)處理器226能夠執(zhí)行通用計(jì)算操作,并且還能夠執(zhí)行SIMD操作。對(duì)于至少一個(gè)實(shí)施例,協(xié)處理器226能夠?qū)Υ虬头谴虬鼣?shù)據(jù)執(zhí)行LCSZC操作。對(duì)于至少一個(gè)實(shí)施例,協(xié)處理器226包括執(zhí)行單元130和一個(gè)(或多個(gè))寄存器堆209。主處理器224的至少一個(gè)實(shí)施例包括用于對(duì)由執(zhí)行單元130所執(zhí)行的指令集(包括LCSZC指令)中的指令進(jìn)行識(shí)別和解碼的解碼器165。對(duì)于可選擇實(shí)施例,協(xié)處理器226還包括用于對(duì)指令集(包括LCSZC指令)中的指令進(jìn)行解碼的解碼器166的至少一部分。數(shù)據(jù)處理系統(tǒng)103還包括對(duì)理解本發(fā)明不是必需的其他電路(未示出)。在運(yùn)行中,主處理器224執(zhí)行用于控制通用類型的數(shù)據(jù)處理操作的數(shù)據(jù)處理指令流,所述通用類型的數(shù)據(jù)處理操作包括與高速緩沖存儲(chǔ)器278和輸入/輸出系統(tǒng)295的交互。嵌入在數(shù)據(jù)處理指令流中的是協(xié)處理器指令。主處理器224的解碼器165將這些協(xié)處理器指令識(shí)別為應(yīng)當(dāng)由附加的協(xié)處理器226執(zhí)行的類型。相應(yīng)地,主處理器224在協(xié)處理器互連部件236上發(fā)布這些協(xié)處理器指令(或表示協(xié)處理器指令的控制信號(hào)),任何附加的一個(gè)(或多個(gè))協(xié)處理器從協(xié)處理器互連部件236上接收這些指令(或信號(hào))。對(duì)于圖lc所示的單個(gè)協(xié)處理器的實(shí)施例,協(xié)處理器226接受并執(zhí)行任何發(fā)給它的所接收的協(xié)處理器指令。協(xié)處理器互連部件可以是包括多分支總線、點(diǎn)對(duì)點(diǎn)互連部件等的任何類型的通信路徑。數(shù)據(jù)可以通過無線接口296接收,以便由協(xié)處理器指令進(jìn)行處理。對(duì)于一個(gè)示例,可以以數(shù)字信號(hào)的形式接收語音通信,所述數(shù)字信號(hào)可以由協(xié)處理器指令進(jìn)行處理以便重新生成表示語音通信的數(shù)字音頻采樣。對(duì)于另一示例,可以以數(shù)字比特流的形式接收壓縮的音頻和/或視頻,所述數(shù)字比特流可以由協(xié)處理器指令處理以便重新生成數(shù)字音頻采樣和/或運(yùn)動(dòng)視頻幀。對(duì)于至少一個(gè)可選擇實(shí)施例,主處理器224和協(xié)處理器226可以集成到包括執(zhí)行單元130、一個(gè)(或多個(gè))寄存器堆209以及解碼器165在內(nèi)的單個(gè)處理內(nèi)核中,其中,解碼器165用來識(shí)別由執(zhí)行單元130執(zhí)行的指令集(包括LCSZC指令)中的多個(gè)指令。圖2a示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的處理器的寄存器堆。寄存器堆150可以用于存儲(chǔ)信息,包括控制/狀態(tài)信息、整數(shù)數(shù)據(jù)、浮點(diǎn)數(shù)據(jù)和打包數(shù)據(jù)。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,前述的信息和數(shù)據(jù)列表不是窮舉的、全包含的列表。對(duì)于圖2a所示的實(shí)施例,寄存器堆150包括整數(shù)寄存器201、寄存器209、狀態(tài)寄存器208和指令指針寄存器211。狀態(tài)寄存器208指示處理器109的狀態(tài),并且可以包括諸如零標(biāo)志和進(jìn)位標(biāo)志的各種狀態(tài)寄存器。指令指針寄存器211存儲(chǔ)將要執(zhí)行的下一個(gè)指令的地址。整數(shù)寄存器201、寄存器209、狀態(tài)寄存器208和指令指針寄存器211都耦合到內(nèi)部互連部件170。還可以將其他的寄存器耦合到內(nèi)部互連部件170。內(nèi)部互連部件170可以是多分支總線,但不需要必須如此??商鎿Q地,內(nèi)部互連部件170可以是包括點(diǎn)對(duì)點(diǎn)互連部件在內(nèi)的任何其它類型的通信路徑。對(duì)于一個(gè)實(shí)施例,寄存器209可以既用于打包數(shù)據(jù)又用于浮點(diǎn)數(shù)據(jù)。在這樣的一個(gè)實(shí)施例中,在任何給定時(shí)刻,處理器109把寄存器209看成是棧參考浮點(diǎn)寄存器(stackreferencedfloatingpointregister)或非棧參考打包數(shù)據(jù)寄存器。在該實(shí)施例中,包含了一種機(jī)制,其允許處理器109在將寄存器209作為棧參考浮點(diǎn)寄存器進(jìn)行操作和將寄存器209作為非棧參考打包數(shù)據(jù)寄存器進(jìn)行操作之間進(jìn)行切換。在另一個(gè)這樣的實(shí)施例中,處理器109可以同時(shí)將寄存器209作為棧參考浮點(diǎn)寄存器和非棧參考打包數(shù)據(jù)寄存器進(jìn)行操作。在另一個(gè)實(shí)施例200710144187.2說明書第14/35頁中,作為另一示例,這些寄存器可以用來存儲(chǔ)整數(shù)數(shù)據(jù)。當(dāng)然,可選擇的實(shí)施例可以實(shí)現(xiàn)為包括更多或更少的寄存器組。例如,可選擇的實(shí)施例可以包括用于存儲(chǔ)浮點(diǎn)數(shù)據(jù)的獨(dú)立的浮點(diǎn)寄存器組。作為另一示例,可選擇的實(shí)施例可以包括每個(gè)都用于存儲(chǔ)控制/狀態(tài)信息的第一組寄存器以及每個(gè)都能夠存儲(chǔ)整數(shù)、浮點(diǎn)數(shù)和打包數(shù)據(jù)的第二組寄存器。作為澄清,實(shí)施例的寄存器不應(yīng)當(dāng)在意思上限制于特殊類型的電路。相反地,實(shí)施例的寄存器只需要能夠存儲(chǔ)和提供數(shù)據(jù)并執(zhí)行這里描述的功能??梢詫?shí)現(xiàn)各種寄存器組(例如,整數(shù)寄存器201、寄存器209)以包括不同數(shù)量的寄存器和/或不同大小的寄存器。例如,在一個(gè)實(shí)施例中,整數(shù)寄存器201實(shí)現(xiàn)為存儲(chǔ)32個(gè)位,而寄存器209實(shí)現(xiàn)為存儲(chǔ)80個(gè)位(全部80個(gè)位都用于存儲(chǔ)浮點(diǎn)數(shù)據(jù),而只有64個(gè)位用于打包數(shù)據(jù))。此外,寄存器209可以包含8個(gè)寄存器,Ro212a到R7212h。R,212b、R2212c和R3212d是寄存器209中的單個(gè)寄存器的示例。寄存器209中寄存器的32個(gè)位可以被移動(dòng)到整數(shù)寄存器201中的整數(shù)寄存器中。類似地,整數(shù)寄存器中的值能夠被移動(dòng)到寄存器209中的寄存器的32個(gè)位中。在另一實(shí)施例中,每個(gè)整數(shù)寄存器201都包括64個(gè)位,并且數(shù)據(jù)的64個(gè)位可以在整數(shù)寄存器201和寄存器209之間移動(dòng)。在另一可選擇實(shí)施例中,每個(gè)寄存器209都包括64個(gè)位并且寄存器209包括16個(gè)寄存器。在另一可選擇實(shí)施例中,寄存器209包括32個(gè)寄存器。圖2b示出了根據(jù)本發(fā)明的一個(gè)可選擇實(shí)施例的處理器的寄存器堆。寄存器堆150可以用于存儲(chǔ)信息,包括控制/狀態(tài)信息、整數(shù)數(shù)據(jù)、浮點(diǎn)數(shù)據(jù)和打包數(shù)據(jù)。在圖2b所示的實(shí)施例中,寄存器堆150包括整數(shù)寄存器201、寄存器209、狀態(tài)寄存器208、擴(kuò)展寄存器210和指令指針寄存器211。狀態(tài)寄存器208、指令指針寄存器211、整數(shù)寄存器201、寄存器209全部都耦合到內(nèi)部互連部件170。相應(yīng)地,擴(kuò)展寄存器210也耦合到內(nèi)部互連部件170。內(nèi)部互連部件170可以是多分支總線,但不需要必須如此??商鎿Q地,內(nèi)部互連部件170可以是包括點(diǎn)對(duì)點(diǎn)互連部件在內(nèi)的任何其它類型的通信路徑。對(duì)于至少一個(gè)實(shí)施例,擴(kuò)展寄存器210既用于打包的整數(shù)數(shù)據(jù)也22用于打包的浮點(diǎn)數(shù)據(jù)。對(duì)于可選擇的實(shí)施例,擴(kuò)展寄存器210可用于標(biāo)量數(shù)據(jù)(scalardata)、打包的布爾數(shù)據(jù)、打包的整數(shù)數(shù)據(jù)和/或打包的浮點(diǎn)數(shù)據(jù)。當(dāng)然,可選擇的實(shí)施例可以實(shí)現(xiàn)為包含更多或更少的寄存器組、在每組中有更多或更少的寄存器或在每個(gè)寄存器中的更多或更少的數(shù)據(jù)存儲(chǔ)位,而不脫離本發(fā)明更寬的范圍。對(duì)于至少一個(gè)實(shí)施例,整數(shù)寄存器201實(shí)現(xiàn)為存儲(chǔ)32個(gè)位,寄存器209實(shí)現(xiàn)為存儲(chǔ)80個(gè)位(全部80個(gè)位都用于存儲(chǔ)浮點(diǎn)數(shù)據(jù),而只有64個(gè)位用于打包數(shù)據(jù)),并且擴(kuò)展寄存器210實(shí)現(xiàn)為存儲(chǔ)128個(gè)位。此外,擴(kuò)展寄存器210可以包括8個(gè)寄存器XRo213a到XR7213h。XRo213a、XR!213b和XR2213c是寄存器210中的單個(gè)寄存器的示例。對(duì)于另一實(shí)施例,每個(gè)整數(shù)寄存器201包括64個(gè)位,每個(gè)擴(kuò)展寄存器210包括64個(gè)位,而擴(kuò)展寄存器210包括16個(gè)寄存器。對(duì)于一個(gè)實(shí)施例,擴(kuò)展寄存器210的兩個(gè)寄存器可以作為一個(gè)"對(duì)"進(jìn)行操作。對(duì)于另一可選擇的實(shí)施例,擴(kuò)展寄存器210包括32個(gè)寄存器。圖3示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例,用于操作數(shù)據(jù)的處理300的一個(gè)實(shí)施例的流程圖。也就是說,圖3示出了例如對(duì)打包數(shù)據(jù)執(zhí)行LCSZC操作、對(duì)非打包數(shù)據(jù)執(zhí)行LCSZC操作或執(zhí)行一些其它操作時(shí),由處理器109(例如,見圖la)進(jìn)行的處理。這里所討論的處理300和其它處理由處理塊來執(zhí)行,所述處理塊可以包括專用硬件或者或可由通用機(jī)器或由專用機(jī)器或由它們的組合執(zhí)行的軟件或固件操作碼。圖3示出用于該方法的處理在"開始"處開始,并進(jìn)行到處理塊301。在處理塊301,解碼器165(例如,見圖la)接收來自高速緩存160(例如,見圖la)或互連部件101(例如,見圖la)的控制信號(hào)。對(duì)于至少一個(gè)實(shí)施例,在塊301接收的控制信號(hào)可以是通常稱為軟件"指令"的控制信號(hào)類型。解碼器165將控制信號(hào)解碼以確定將要執(zhí)行的操作。處理從處理塊301進(jìn)行到處理塊302。在處理塊302,解碼器165訪問寄存器堆150(圖la)或存儲(chǔ)器中的單元(例如,見圖la的主存儲(chǔ)器104或高速緩沖存儲(chǔ)器160)。根據(jù)控制信號(hào)中指定的寄存器地址,來訪問寄存器堆150中的寄存器或存儲(chǔ)器中的存儲(chǔ)單元。例如,用于操作的控制信號(hào)能夠包含SRC1、SRC2和DEST寄存器地址。SRC1是第一源寄存器的地址。SRC2是第二源寄存器的地址。在某些情況下,SRC2地址是可選的,因?yàn)椴⒎撬胁僮鞫家髢蓚€(gè)源地址。如果對(duì)于一個(gè)操作沒有要求SRC2地址,則僅使用SRC1地址。DEST是存儲(chǔ)結(jié)果數(shù)據(jù)的目標(biāo)寄存器的地址。對(duì)于至少一個(gè)實(shí)施例,在由解碼器165識(shí)別的至少一個(gè)控制信號(hào)中,SRC1或SRC2也可以用作DEST。在相應(yīng)寄存器中所存儲(chǔ)的數(shù)據(jù)分別稱為Sourcel、Source2和Result。在一個(gè)實(shí)施例中,這些數(shù)據(jù)中的每一個(gè)可以是64位長度。對(duì)于可選擇的實(shí)施例,這些數(shù)據(jù)中的一個(gè)或多個(gè)可以是其它長度,比如128位長度。對(duì)于本發(fā)明的另一個(gè)實(shí)施例,SRC1、SRC2和DEST中的任何一個(gè)或全部能夠確定在處理器109(圖la)或處理內(nèi)核110(圖lb)的可尋址存儲(chǔ)空間中的存儲(chǔ)單元。例如,SRC1可以標(biāo)識(shí)主存儲(chǔ)器104中的存儲(chǔ)單元,而SRC2標(biāo)識(shí)在整數(shù)寄存器201中的第一寄存器,而DEST標(biāo)識(shí)寄存器209中的第二寄存器。為了簡化這里的描述,本發(fā)明將描述與寄存器堆150有關(guān)的訪問。然而,本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,替代地,這些所描述的訪問也可以使用于存儲(chǔ)器。處理從塊302進(jìn)行到處理塊303。在處理塊303,執(zhí)行單元130(例如,見圖la)能夠?qū)λL問的數(shù)據(jù)執(zhí)行操作。處理從處理塊303進(jìn)行到處理塊304。在處理塊304,根據(jù)控制信號(hào)的要求,將結(jié)果存儲(chǔ)回寄存器堆150或存儲(chǔ)器。然后處理在"停止"處結(jié)束。數(shù)據(jù)存儲(chǔ)格式圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的多個(gè)打包數(shù)據(jù)類型。示出了四個(gè)打包數(shù)據(jù)和一個(gè)非打包數(shù)據(jù)格式,包括打包字節(jié)421、打包半(packedhalf)422、打包單(packedsingle)423、打包雙(packeddouble)424和非打包雙四字412。對(duì)于至少一個(gè)實(shí)施例,打包字節(jié)格式421是包括16個(gè)數(shù)據(jù)元素(B0-B15)的128位長。每個(gè)數(shù)據(jù)元素(B0-B15)是一個(gè)字節(jié)(例如,8位)長。對(duì)于至少一個(gè)實(shí)施例,打包半格式422是包括8個(gè)數(shù)據(jù)元素(HalfD到Half7)的128位長。每個(gè)數(shù)據(jù)元素(HalfO到Half7)可以保存16位的信息??蛇x擇地,這些16-位的數(shù)據(jù)元素中的每一個(gè)可以被稱為"半字"或"短字",或簡單地稱為"字"。對(duì)于至少一個(gè)實(shí)施例,打包單格式423可以是128位長并且可以保存4個(gè)423數(shù)據(jù)元素(Single0至USingle3)。數(shù)據(jù)元素(Single0到Single3)中的每一個(gè)可以保存32位的信息。可選擇地,每一個(gè)32-位數(shù)據(jù)元素可以被稱為"dword"或"雙字"。每個(gè)數(shù)據(jù)元素(Single0到Single3)可以表示例如32-位的單精度浮點(diǎn)值,因此稱作"打包單"格式。對(duì)于至少一個(gè)實(shí)施例,打包雙格式424可以是128位長并且可以保存兩個(gè)數(shù)據(jù)元素。打包雙格式424的每個(gè)數(shù)據(jù)元素(Double0、Doublel)可以保存64-位的信息??蛇x擇地,每個(gè)64-位數(shù)據(jù)元素可以被稱為"qword"或"四字(quadword)"。每個(gè)數(shù)據(jù)元素(Double0、Doublel)可以表示例如64-位的雙精度浮點(diǎn)值,因此稱作"打包雙"格式。非打包雙四字格式412可以保存多達(dá)128位的數(shù)據(jù)。該數(shù)據(jù)不需要必須是打包數(shù)據(jù)。例如,對(duì)于至少一個(gè)實(shí)施例,非打包雙四字格式412的128位的信息可以表示單個(gè)標(biāo)量數(shù)據(jù),比如字符、整數(shù)、浮點(diǎn)值或二進(jìn)制的位-掩碼值??蛇x擇地,非打包雙四字格式412的128位可以表示多個(gè)不相干的位(比如狀態(tài)寄存器值,其中每一位或位組表示不同標(biāo)志)等等的集合。對(duì)于本發(fā)明的至少一個(gè)實(shí)施例,打包單格式423和打包雙格式424的數(shù)據(jù)元素可以是如上所指示的打包的浮點(diǎn)數(shù)據(jù)元素。在本發(fā)明的可選擇實(shí)施例中,打包單格式423和打包雙格式424的數(shù)據(jù)元素可以是打包整數(shù)數(shù)據(jù)元素、打包布爾數(shù)據(jù)元素或打包浮點(diǎn)數(shù)據(jù)元素。對(duì)于本發(fā)明的另一可選擇的實(shí)施例,打包字節(jié)格式421、打包半格式422、打包單格式423和打包雙格式424的數(shù)據(jù)元素可以是打包整數(shù)數(shù)據(jù)元素或打包布爾數(shù)據(jù)元素。對(duì)于本發(fā)明的可選擇實(shí)施例,并非允許或支持所有的打包字節(jié)數(shù)據(jù)格式421、打包半數(shù)據(jù)格式422、打包單數(shù)據(jù)格式423和打包雙數(shù)據(jù)格式424。圖5和6示出了根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的寄存器內(nèi)的打包數(shù)據(jù)存儲(chǔ)表示。圖5分別示出了無符號(hào)和有符號(hào)打包字節(jié)的寄存器內(nèi)格式510和511。無符號(hào)打包字節(jié)的寄存器內(nèi)表示510示出了例如在128-位的擴(kuò)展寄存器XR^213a到XR7213h(例如,見圖2b)其中之一中的無符號(hào)打包字節(jié)數(shù)據(jù)的存儲(chǔ)。將16個(gè)字節(jié)數(shù)據(jù)元素中每一個(gè)的信息存儲(chǔ)在字節(jié)0的位7到位0、字節(jié)1的位15到位8、字節(jié)2的位23到位16、字節(jié)3的位31到位24、字節(jié)4的位39到位32、字節(jié)5的位47到位40、字節(jié)6的位55到位48、字節(jié)7的位63到位56、字節(jié)8的位71到位64、字節(jié)9的位79到位72、字節(jié)10的位87到位80、字節(jié)11的位95到位88、字節(jié)12的位103到位96、字節(jié)13的位111到位104、字節(jié)14的位119到位112、以及字節(jié)15的位127到位120。因此,在寄存器中所有可利用的位都被使用。該存儲(chǔ)安排增加了處理器的存儲(chǔ)效率。而且,使用被訪問的16個(gè)數(shù)據(jù)元素,現(xiàn)在可以同時(shí)對(duì)16個(gè)數(shù)據(jù)元素執(zhí)行一個(gè)操作。有符號(hào)打包字節(jié)的寄存器內(nèi)表示511示出了有符號(hào)打包字節(jié)的存儲(chǔ)。注意,每個(gè)字節(jié)數(shù)據(jù)元素的第8位(MSB)是符號(hào)指示器("s")。圖5還分別示出了無符號(hào)和有符號(hào)打包字的寄存器內(nèi)表示512和513。無符號(hào)打包字的寄存器內(nèi)表示512示出了擴(kuò)展寄存器210怎樣存儲(chǔ)8個(gè)字(每個(gè)16位)的數(shù)據(jù)元素。字0存儲(chǔ)在寄存器的位15到位0。字1存儲(chǔ)在寄存器的位31到位16。字2存儲(chǔ)在寄存器的位47到位32。字3存儲(chǔ)在寄存器的位63到位48。字4存儲(chǔ)在寄存器的位79到位64。字5存儲(chǔ)在寄存器的位95到位80。字6存儲(chǔ)在寄存器的位111到位96。字7存儲(chǔ)在寄存器的位127到位112。有符號(hào)打包字的寄存器內(nèi)表示513類似于無符號(hào)打包字的寄存器內(nèi)表示512。注意,符號(hào)位("s")存儲(chǔ)在每個(gè)字?jǐn)?shù)據(jù)元素的第16位(MSB)o圖6分別示出了無符號(hào)和有符號(hào)打包雙字的寄存器內(nèi)格式514和515。無符號(hào)打包雙字的寄存器內(nèi)表示514示出了擴(kuò)展寄存器210怎樣存儲(chǔ)4個(gè)雙字(每個(gè)32位)的數(shù)據(jù)元素。雙字O存儲(chǔ)在寄存器的位31到位0。雙字1存儲(chǔ)在寄存器的位63到位32。雙字2存儲(chǔ)在寄存器的位95到位64。雙字3存儲(chǔ)在寄存器的位127到位96。有符號(hào)打包雙字的寄存器內(nèi)表示515類似于無符號(hào)打包雙字的寄存器內(nèi)表示514。注意,符號(hào)位("s")是每個(gè)雙字?jǐn)?shù)據(jù)元素的第32位(MSB)。圖6還分別示出了無符號(hào)和有符號(hào)打包四字的寄存器內(nèi)格式516和517。無符號(hào)打包四字的寄存器內(nèi)表示516示出了擴(kuò)展寄存器210怎樣存儲(chǔ)2個(gè)四字(每個(gè)64位)的數(shù)據(jù)元素。四字0存儲(chǔ)在寄存器的位63到位0。四字1存儲(chǔ)在寄存器的位127到位64。有符號(hào)打包四字的寄存器內(nèi)表示517類似于無符號(hào)打包四字的寄存器內(nèi)表示516。注意,符號(hào)位("s")是每個(gè)四字?jǐn)?shù)據(jù)元素的第64位(MSB)。一個(gè)(或多個(gè))邏輯比較-和-交換、設(shè)置-零-和-進(jìn)位-標(biāo)志操作對(duì)于本發(fā)明的至少一個(gè)實(shí)施例,SRC1寄存器可以保存打包數(shù)據(jù)或非打包雙四字?jǐn)?shù)據(jù)(Sourcel),并且DEST寄存器也可以保存打包數(shù)據(jù)或非打包雙四字?jǐn)?shù)據(jù)(Dest)。對(duì)于至少一個(gè)實(shí)施例,在DEST寄存器中的Dest值或在SRC1寄存器中的Sourcel值可以是要用作逐位掩碼值的雙四字非打包數(shù)據(jù)。通常,在LCSZC指令的第一步中,執(zhí)行兩個(gè)比較操作。通過對(duì)Sourcel中的每個(gè)位與Dest的相應(yīng)位執(zhí)行獨(dú)立的邏輯比較(逐位AND操作),產(chǎn)生第一中間結(jié)果。通過對(duì)Sourcel中的每個(gè)位與Dest的相應(yīng)位的反碼執(zhí)行獨(dú)立的邏輯比較(逐位AND操作),產(chǎn)生第二中間結(jié)果。這些中間結(jié)果可以存儲(chǔ)在臨時(shí)存儲(chǔ)單元(比如,例如,寄存器)或者可以根本不由處理器存儲(chǔ)。圖7a是根據(jù)本發(fā)明的至少一個(gè)實(shí)施例的執(zhí)行LCSZC操作的一般方法700的流程圖。這里所公開的處理700和其它處理由多個(gè)處理塊來執(zhí)行,所述處理塊可以包括專用硬件或可由通用機(jī)器或由專用機(jī)器或由它們的組合執(zhí)行的軟件或固件操作碼。在下面的段落中,將參考圖la討論圖7a到7d。圖7a示出了方法700開始于"開始"處,并且進(jìn)行到處理塊701。在處理塊701,解碼器165對(duì)處理器109接收的控制信號(hào)進(jìn)行解碼。因此,解碼器165對(duì)LCSZC指令的操作碼進(jìn)行解碼。然后處理從處理塊701進(jìn)行到處理塊702。在處理塊702,給定在指令中編碼的SRC1和DEST地址,解碼器165通過內(nèi)部總線170訪問寄存器堆150中的寄存器209。對(duì)于至少一個(gè)實(shí)施例,每一個(gè)在指令中的被編碼的地址都指示擴(kuò)展寄存器(例如,見圖2b的擴(kuò)展寄存器210)。對(duì)于該實(shí)施例,在塊702中訪問所指示的擴(kuò)展寄存器210,以便為執(zhí)行單元130提供存儲(chǔ)在SRC1寄存器中的數(shù)據(jù)(Sourcel)以及存儲(chǔ)在DEST寄存器中的數(shù)據(jù)(Dest)。對(duì)于至少一個(gè)實(shí)施例,擴(kuò)展寄存器210通過內(nèi)部總線170將數(shù)據(jù)傳遞給執(zhí)行單元130。處理從處理塊702進(jìn)行到處理塊703。在處理塊703中,解碼器165使執(zhí)行單元130能夠執(zhí)行該指令。對(duì)于至少一個(gè)實(shí)施例,通過給執(zhí)行單元發(fā)送一個(gè)或多個(gè)控制信號(hào)以指示所希望的操作(LCZCS),來執(zhí)行該使能703。處理從塊703進(jìn)行到處理塊714和715。雖然塊714和715被并列示出,但本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,只要它們?cè)谕恢芷诨蛑芷诮M中執(zhí)行,這樣的操作就需要被嚴(yán)格同時(shí)地執(zhí)行,并且對(duì)于至少一個(gè)可選擇的實(shí)施例,塊714和715的處理可以串行執(zhí)行。因此,不同的實(shí)施例可以以并行、串行、或串行與并行操作的某種組合來執(zhí)行塊714和715的處理。在處理塊714,執(zhí)行以下內(nèi)容。所有或一些Sourcel位與Dest值的相同的各個(gè)位進(jìn)行邏輯AND。類似地,在處理塊715中,所有或一些Sourcel位與Dest值的相同的各個(gè)位的反碼進(jìn)行邏輯AND。處理從塊714進(jìn)行到塊720。處理從塊715進(jìn)行到塊721。在處理塊720中,基于在處理塊714中執(zhí)行的比較結(jié)果,修改處理器的狀態(tài)。類似地,在處理塊721中,基于在處理塊715中執(zhí)行的比較結(jié)果,修改處理器的狀態(tài)。本領(lǐng)域技術(shù)人員將注意到,圖7a所說明的方法700是非破壞性的,原因在于作為LCSZC操作的結(jié)果Sourcel和Dest操作數(shù)的值都沒有被修改。替代地,零標(biāo)志在塊720中被修改而進(jìn)位標(biāo)志在塊721中被修改。在處理塊720中,如果中間結(jié)果l的全部位都等于0(例如,邏輯低值),則將零標(biāo)志的值設(shè)置為true值(例如,邏輯高值)。然而,如果即使是中間結(jié)果1中的一個(gè)位是邏輯高值,也會(huì)在塊720中將零標(biāo)志設(shè)置為false值(例如,邏輯低值)。在處理塊721中,如果中間結(jié)果2的全部位都等于0(例如,邏輯低值),則將進(jìn)位標(biāo)志的值設(shè)置為tme值(例如,邏輯高值)。然而,如果即使是中間結(jié)果2中的一個(gè)位是邏輯高值,以會(huì)在塊721中將進(jìn)位標(biāo)志設(shè)置為false值(例如,邏輯低值)。可以理解的是,處理700的可選擇實(shí)施例可以僅實(shí)現(xiàn)處理塊714和720,而不實(shí)現(xiàn)處理塊715和721,或者只實(shí)現(xiàn)處理塊715和721,而不實(shí)現(xiàn)處理塊714和720。同樣可以理解的是,處理700的可選擇實(shí)施例可以實(shí)現(xiàn)支持LCSZC指令的其他變形的其他處理塊。處理可以從塊720和721選擇性地進(jìn)行到塊722。在塊722中,可以修改處理器內(nèi)的其它狀態(tài)位。例如,對(duì)于至少一個(gè)實(shí)施例,這些狀態(tài)位可以包括一個(gè)或多個(gè)其它在架構(gòu)上可見的狀態(tài)標(biāo)志值。這些標(biāo)志可以是l-位或2-位值并且可以包括奇偶(PF)、輔助進(jìn)位(AF)、符號(hào)(SF)、陷阱(TF)、中斷使能/無效(IF)、方向(DF)、溢出(OF)、1/0特權(quán)等級(jí)(IOPL)、嵌套任務(wù)(NT)、恢復(fù)(RF)、虛擬8086模式(VM)、對(duì)齊檢查(AC)、虛擬中斷(VIF)、虛擬未決中斷(FIP)和CPU標(biāo)識(shí)符(ID)標(biāo)志等。當(dāng)然,前述的具體標(biāo)志的列表目的只是說明;其它實(shí)施例可以包括更少、更多或不同的標(biāo)志。從可選擇塊722,處理結(jié)束于"結(jié)束"處。對(duì)于不包括可選擇塊722的實(shí)施例,處理在塊720和721的處理后就結(jié)束于"結(jié)束"處。圖7b示出了在圖7a中所示的一般方法700的至少一個(gè)具體實(shí)施例700b的流程圖。對(duì)于圖7b所示的具體實(shí)施例700b,對(duì)128位長并且可以是或可以不是打包數(shù)據(jù)的Sourcel和Dest數(shù)據(jù)值,執(zhí)行LCSZC操作。(當(dāng)然,本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,也可以對(duì)其它長度的數(shù)據(jù)值執(zhí)行圖7b中所示出的操作,包括小于或大于128位的數(shù)據(jù)值)。方法700b的處理塊701b到703b的操作本質(zhì)上與上面結(jié)合圖7a中所示的方法700所描述的處理塊701到703的操作相同。當(dāng)解碼器165在塊703b中使執(zhí)行單元130執(zhí)行指令時(shí),該指令是用于對(duì)Sourcel和Dest值的各個(gè)位執(zhí)行邏輯AND比較的LCSZC指令。(例如,見圖6中所示的有符號(hào)打包雙字的寄存器內(nèi)表示515)。這樣的指令可以用可由應(yīng)用程序程序員使用的助記憶指令(比如"PTEST")稱謂。處理從塊703b進(jìn)行到塊714b和715b。同樣,塊714b和715b可以并行執(zhí)行,但不需要必須如此。處理從處理塊703b進(jìn)行到處理塊714b和715b。應(yīng)當(dāng)再次注意,如上結(jié)合圖7a的處理塊714和715所指示的,雖然在圖7b中示出的塊714b和715b被并行執(zhí)行,但本發(fā)明應(yīng)當(dāng)被解釋為在這方面不受限制。替代地,不同實(shí)施例可以以并行、串行、或串行與并行操作的某種組合來執(zhí)行塊714b和715b的處理。在處理塊714b中,執(zhí)行以下內(nèi)容。Sourcel的全部位與Dest值的相同的各個(gè)位進(jìn)行邏輯AND。也就是說,將Sourcel[127:0]與Dest[127:0]的各個(gè)位的逐位AND操作的結(jié)果分配給中間結(jié)果1的位[127:0]。類似地,在處理塊715b中,Sourcel的全部位與Dest值的相同的各個(gè)位的反碼進(jìn)行邏輯AND。也就是說,將Sourcel[127:0]的位與Dest[127:0]的各個(gè)位的反碼的逐位AND操作的結(jié)果分配給中間結(jié)果2的位[127:0]。處理從塊714b進(jìn)行到塊720b。處理從塊715b進(jìn)行到塊721b。在處理塊720b中,基于處理塊714b中執(zhí)行的比較的結(jié)果,修改處理器的狀態(tài)。類似地,在處理塊721b中,基于處理塊715b中執(zhí)行的比較的結(jié)果,修改處理器的狀態(tài)。本領(lǐng)域技術(shù)人員將注意到,圖7b中所示的方法700b是非破壞性的,原因在于作為LCSZC操作的結(jié)果,Sourcel和Dest操作數(shù)的值都沒有被修改??商鎿Q地,零標(biāo)志在塊720b中被修改而進(jìn)位標(biāo)志在塊721b中被修改。在處理塊720b中,如果中間結(jié)果l的全部位(例如,中間結(jié)果1的位[127:0])都等于0(例如,邏輯低值),則將零標(biāo)志的值設(shè)置為true值(例如,邏輯高值)。然而,如果即使是中間結(jié)果1中的一個(gè)位是邏輯高值,也會(huì)在塊720b中將零標(biāo)志設(shè)置為false值(例如,邏輯低值)。在處理塊721b中,如果中間結(jié)果2的全部位(例如,中間結(jié)果2的位[127:0])都等于0(例如,邏輯低值),則將進(jìn)位標(biāo)志的值設(shè)置為true值(例如,邏輯高值)。然而,如果即使是中間結(jié)果2中的一個(gè)位是邏輯高值,也會(huì)在塊721b中將進(jìn)位標(biāo)志設(shè)置為false值(例如,邏輯低值)??梢岳斫獾氖牵幚?00b的可選擇實(shí)施例可以僅實(shí)現(xiàn)處理塊714b和720b,而不實(shí)現(xiàn)處理塊715b和721b,或者只實(shí)現(xiàn)處理塊715b和721b,而不實(shí)現(xiàn)處理塊714b和720b。同樣可以理解的是,處理700b的可選擇實(shí)施例可以實(shí)現(xiàn)支持LCSZC指令的其他變形的其他處理塊。處理可以從塊720b和721b選擇性地進(jìn)行到塊722b。在塊722b中,可以修改處理器內(nèi)的其它狀態(tài)位。對(duì)于圖7b中所示的實(shí)施例,在塊722b中,給AF(輔助進(jìn)位)、OF(溢出)、PF(奇偶)和SF(符號(hào))標(biāo)志分配邏輯低值。從可選擇塊722b,處理結(jié)束于"結(jié)束"處。對(duì)于不包括可選擇塊722b的實(shí)施例,處理在塊720b和721b的處理后就結(jié)束于"結(jié)束"處。應(yīng)當(dāng)理解的是,處理塊714、714b、715或715b的可選擇實(shí)施例可以對(duì)有符號(hào)數(shù)據(jù)元素或無符號(hào)數(shù)據(jù)元素或兩者的組合執(zhí)行邏輯比較操作。圖7c示出了在圖7a中所示的一般方法700的至少一個(gè)可選擇的具體實(shí)施例700c的流程圖。對(duì)于圖7c中所示的具體實(shí)施例700c,對(duì)128位長的Sourcel和Dest數(shù)據(jù)值執(zhí)行LCSZC操作。源操作數(shù)或目標(biāo)操作數(shù)或兩者都可以是打包的,原因在于源操作數(shù)的128-位數(shù)據(jù)值表示4個(gè)打包的32-位("雙字")數(shù)據(jù)元素。例如,數(shù)據(jù)元素的每一個(gè)都可以表示32位的有符號(hào)單精度浮點(diǎn)值。當(dāng)然,本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,也可以對(duì)包括小于或大于128位的數(shù)據(jù)值在內(nèi)的其它長度的數(shù)據(jù)值以及包括字節(jié)(8位)和/或短字(16位)在內(nèi)的其它大小的數(shù)據(jù)元素,執(zhí)行圖7c中所示的操作。方法700c的處理塊701e到703c的操作本質(zhì)上與上面結(jié)合圖7a中所示的方法700所描述的處理塊701到703的操作相同。前述語句的例外是,對(duì)于處理塊703c,當(dāng)解碼器165使執(zhí)行單元130能夠執(zhí)行指令時(shí),該指令是用于對(duì)Sourcel和Destination值的每個(gè)32-位雙字的MSB執(zhí)行邏輯AND比較的LCSZC指令。(例如,見圖6中所示的有符號(hào)打包雙字的寄存器內(nèi)表示515)。這樣的指令可以用可由200710144187.2說明書第14/35頁中,作為另一示例,這些寄存器可以用來存儲(chǔ)整數(shù)數(shù)據(jù)。當(dāng)然,可選擇的實(shí)施例可以實(shí)現(xiàn)為包括更多或更少的寄存器組。例如,可選擇的實(shí)施例可以包括用于存儲(chǔ)浮點(diǎn)數(shù)據(jù)的獨(dú)立的浮點(diǎn)寄存器組。作為另一示例,可選擇的實(shí)施例可以包括每個(gè)都用于存儲(chǔ)控制/狀態(tài)信息的第一組寄存器以及每個(gè)都能夠存儲(chǔ)整數(shù)、浮點(diǎn)數(shù)和打包數(shù)據(jù)的第二組寄存器。作為澄清,實(shí)施例的寄存器不應(yīng)當(dāng)在意思上限制于特殊類型的電路。相反地,實(shí)施例的寄存器只需要能夠存儲(chǔ)和提供數(shù)據(jù)并執(zhí)行這里描述的功能??梢詫?shí)現(xiàn)各種寄存器組(例如,整數(shù)寄存器201、寄存器209)以包括不同數(shù)量的寄存器和/或不同大小的寄存器。例如,在一個(gè)實(shí)施例中,整數(shù)寄存器201實(shí)現(xiàn)為存儲(chǔ)32個(gè)位,而寄存器209實(shí)現(xiàn)為存儲(chǔ)80個(gè)位(全部80個(gè)位都用于存儲(chǔ)浮點(diǎn)數(shù)據(jù),而只有64個(gè)位用于打包數(shù)據(jù))。此外,寄存器209可以包含8個(gè)寄存器,Ro212a到R7212h。R,212b、R2212c和R3212d是寄存器209中的單個(gè)寄存器的示例。寄存器209中寄存器的32個(gè)位可以被移動(dòng)到整數(shù)寄存器201中的整數(shù)寄存器中。類似地,整數(shù)寄存器中的值能夠被移動(dòng)到寄存器209中的寄存器的32個(gè)位中。在另一實(shí)施例中,每個(gè)整數(shù)寄存器201都包括64個(gè)位,并且數(shù)據(jù)的64個(gè)位可以在整數(shù)寄存器201和寄存器209之間移動(dòng)。在另一可選擇實(shí)施例中,每個(gè)寄存器209都包括64個(gè)位并且寄存器209包括16個(gè)寄存器。在另一可選擇實(shí)施例中,寄存器209包括32個(gè)寄存器。圖2b示出了根據(jù)本發(fā)明的一個(gè)可選擇實(shí)施例的處理器的寄存器堆。寄存器堆150可以用于存儲(chǔ)信息,包括控制/狀態(tài)信息、整數(shù)數(shù)據(jù)、浮點(diǎn)數(shù)據(jù)和打包數(shù)據(jù)。在圖2b所示的實(shí)施例中,寄存器堆150包括整數(shù)寄存器201、寄存器209、狀態(tài)寄存器208、擴(kuò)展寄存器210和指令指針寄存器211。狀態(tài)寄存器208、指令指針寄存器211、整數(shù)寄存器201、寄存器209全部都耦合到內(nèi)部互連部件170。相應(yīng)地,擴(kuò)展寄存器210也耦合到內(nèi)部互連部件170。內(nèi)部互連部件170可以是多分支總線,但不需要必須如此。可替換地,內(nèi)部互連部件170可以是包括點(diǎn)對(duì)點(diǎn)互連部件在內(nèi)的任何其它類型的通信路徑。對(duì)于至少一個(gè)實(shí)施例,擴(kuò)展寄存器210既用于打包的整數(shù)數(shù)據(jù)也22對(duì)128位長的Sourcel和Dest數(shù)據(jù)值執(zhí)行LCSZC操作。源操作數(shù)或目標(biāo)操作數(shù)或兩者都可以是打包的,原因在于源操作數(shù)的128-位數(shù)據(jù)值表示兩個(gè)打包的64-位數(shù)據(jù)元素。例如,數(shù)據(jù)元素的每一個(gè)都可以表示64位有符號(hào)雙精度浮點(diǎn)值。當(dāng)然,本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,也可以對(duì)包括小于或大于128位的數(shù)據(jù)值在內(nèi)的其它長度的數(shù)據(jù)值以及包括字節(jié)(8位)和/或短字(16位)在內(nèi)的其它大小的數(shù)據(jù)元素,執(zhí)行圖7d中所示的操作。方法700d的處理塊701d到703d的操作本質(zhì)上與上面結(jié)合圖7a中所示的方法700所描述的處理塊701到703的操作相同。前述語句的例外是,對(duì)于處理塊703d,當(dāng)解碼器165使執(zhí)行單元130能夠執(zhí)行指令時(shí),該指令是用于對(duì)Sourcel和Destination值的每個(gè)64-位四字的MSB執(zhí)行邏輯AND比較的LCSZC指令。(例如,見圖6中所示的有符號(hào)打包四字的寄存器內(nèi)表示517)。這樣的指令可以用可由應(yīng)用程序程序員使用的助記憶指令(比如"TESTPD")稱謂,其中"PD"表示打包的雙精度數(shù)據(jù)元素。處理從塊703d進(jìn)行到塊714d和715d。同樣,塊714d和715d可以并行執(zhí)行,但不需要必須如此。在處理塊714d中,執(zhí)行以下內(nèi)容。Sourcel的全部位與Dest值的相同的各個(gè)位進(jìn)行邏輯AND。也就是說,將Sourcel[127:0]與Dest[127:0]的各個(gè)位的逐位AND操作的結(jié)果分配給中間結(jié)果1的位[127:0]。類似地,在處理塊715d中,Sourcel的全部位與Dest值的相同的各個(gè)位的反碼進(jìn)行邏輯AND。也就是說,將Sourcel[127:0]的位與Dest[127:0]的各個(gè)位的反碼的逐位AND操作的結(jié)果分配給中間結(jié)果2的位[127:0]。處理從塊714d進(jìn)行到塊720d。處理從塊715d進(jìn)行到塊721d。在塊720d中,確定第一中間值(中間值l)的每個(gè)64-位四字的MSB。如果中間值1的位127和63等于0,則在塊720d中將零標(biāo)志設(shè)置為邏輯高值。否則,在塊720d中將零標(biāo)志設(shè)置為邏輯低值。類似地,在塊721d中,確定第二中間值(中間值2)的每個(gè)64-位四字的MSB。如果中間值2的位127和63等于0,則在塊721d中將進(jìn)位標(biāo)志設(shè)置為邏輯高值。否則,在塊721d中將進(jìn)位標(biāo)志設(shè)置為邏輯低值。作為方法700d的處理結(jié)果,源寄存器(SRC1)的初始值(Sourcel)和目標(biāo)寄存器(DEST)的初始值(Dest)都沒有被修改。處理從塊720d和721d進(jìn)行到"結(jié)束"或進(jìn)行到可選擇處理塊722d。在塊722d中,可以修改處理器內(nèi)的其它狀態(tài)位。對(duì)于圖7d中所示的實(shí)施例,在塊722d中給AF(輔助進(jìn)位)、OF(溢出)、PF(奇偶)和SF(符號(hào))標(biāo)志分配邏輯低值。對(duì)于不包括可選擇塊722d的實(shí)施例,處理在塊720d和721d的處理后就結(jié)束于"結(jié)束"處。對(duì)于包括可選擇塊722d的實(shí)施例,處理在處理塊722d完成之后結(jié)束。邏輯-比較、設(shè)置-零-和-進(jìn)位標(biāo)志電路對(duì)于至少一些實(shí)施例,在與非打包數(shù)據(jù)的比較操作相同的時(shí)鐘周期數(shù)內(nèi),可以對(duì)多個(gè)數(shù)據(jù)元素執(zhí)行用于打包數(shù)據(jù)的各種LCSZC指令(例如,上面討論的TESTPS和TESTPD)。為了在相同時(shí)鐘周期數(shù)內(nèi)完成執(zhí)行,可以使用并行機(jī)制。也就是說,可以同時(shí)命令處理器的元件(比如寄存器和執(zhí)行單元)對(duì)數(shù)據(jù)元素執(zhí)行LCSZC操作。在下面更詳細(xì)地討論該并行操作。下面參考圖la討論圖8a和8b。圖8a示出了根據(jù)本發(fā)明至少一個(gè)實(shí)施例的對(duì)打包數(shù)據(jù)執(zhí)行LCSZC操作的電路801。對(duì)于至少一個(gè)實(shí)施例,電路801可以是圖la所示的邏輯比較電路145的全部或一部分。圖8a描述了源操作數(shù)Sourcel[127:0]831和目標(biāo)操作數(shù)Dest[127:0]833。對(duì)于至少一個(gè)實(shí)施例,源和目標(biāo)被存儲(chǔ)在N-位長的SIMD寄存器內(nèi),比如例如128-位的IntelSSE2XMM寄存器(例如,見圖2b的擴(kuò)展寄存器210)。圖8a所示的具體示例實(shí)施例示出了LCSZC指令的雙四字(128-位)實(shí)施例,其中將128位的源操作數(shù)和目標(biāo)操作數(shù)的每一位與它們各自的配對(duì)位進(jìn)行比較。對(duì)于該實(shí)施例,因?yàn)槊總€(gè)位都進(jìn)行比較,所以該操作可以操作于(并且在功能上不知道)源操作數(shù)和目標(biāo)操作數(shù)中的任何性質(zhì)的128位;源操作數(shù)和目標(biāo)操作數(shù)兩者之一或兩者都可以是打包數(shù)據(jù)、非打包標(biāo)量數(shù)據(jù)、有符號(hào)數(shù)據(jù)或無符號(hào)數(shù)據(jù)。在一些具體示例中,雖然打包數(shù)據(jù)源831和目標(biāo)833可以被表示為具有128-位,但可以理解的是,這里所公開的原理可以擴(kuò)展到其它傳統(tǒng)上選擇的長度,比如80-位、128-位或256-位。操作控制800在使能(Enable)880上輸出信號(hào),以控制電路801所執(zhí)行的操作。操作控制800的一個(gè)實(shí)施例可以包括例如解碼器165和指令指針寄存器211。當(dāng)然,操作控制800還可以包括對(duì)于理解本發(fā)明不是必需的其他電路。LCSZC電路801包括兩組(825,827)AND門,其中每組都包括用于源操作數(shù)的每個(gè)位的一個(gè)AND門。因此,對(duì)于源和目標(biāo)具有128位的實(shí)施例,第一組825包括128個(gè)AND門819,而第二組827包括128個(gè)AND門820。源操作數(shù)和目標(biāo)操作數(shù)的128個(gè)位值中的每一個(gè)(例如,見圖8a中的位值854)都是第一組825中的一個(gè)AND門819的輸入,而且也是第二組827中的一個(gè)AND門820的輸入。應(yīng)當(dāng)注意,僅在目標(biāo)操作數(shù)已經(jīng)轉(zhuǎn)化成它的反碼值(見轉(zhuǎn)化器邏輯844)后,第二組AND門827才接收來自目標(biāo)操作數(shù)833的輸入。第一組825中的每一個(gè)AND門819的輸出是NAND門854的輸入。NAND門854的至少一個(gè)作用是確定對(duì)源和目標(biāo)的位進(jìn)行AND的結(jié)果是否得到全0值(邏輯低值),并且如果是,就給零標(biāo)志858傳遞邏輯高值從而對(duì)其進(jìn)行設(shè)置。第二組827中的每一個(gè)AND門820的輸出是NAND門856的輸入。NAND門856的至少一個(gè)作用是確定對(duì)源831的位和目標(biāo)833的位的反碼進(jìn)行AND的結(jié)果是否得到全0值(邏輯低值),并且如果是,就給進(jìn)位標(biāo)志860傳遞邏輯高值從而對(duì)其進(jìn)行設(shè)置。雙四字LCSZC指令的可選擇實(shí)施例可以包括但不局限于用于源和目標(biāo)中的無符號(hào)雙四字值的操作,以及用于源和目標(biāo)中的有符號(hào)雙四字值的操作。LCSZC指令的其它可選擇實(shí)施例可以包括應(yīng)用于其它大小的有符號(hào)或無符號(hào)數(shù)據(jù)元素的操作(例如,見用于有符號(hào)雙字實(shí)施例的圖8b以及用于有符號(hào)四字實(shí)施例的圖8c)。圖8b示出了根據(jù)本發(fā)明的一個(gè)可選擇實(shí)施例的對(duì)打包數(shù)據(jù)執(zhí)行LCSZC操作的電路801b的至少一個(gè)實(shí)施例。操作控制800處理用于打包LCSZC指令的控制信號(hào)。這樣的打包LCSZC指令可以是,例如指示要對(duì)4個(gè)打包32位值執(zhí)行的LCSZC操作的"TESTPS"指令。每個(gè)打包32位值可以表示例如單精度浮點(diǎn)值。對(duì)于該實(shí)施例,應(yīng)當(dāng)理解的是,可能僅僅其中一個(gè)操作數(shù)(例如,源831或目標(biāo)833)包含打包的單精度浮點(diǎn)值。其它操作數(shù)可以包括例如位掩碼。圖8a示出了操作控制800在使能880上輸出信號(hào)以控制LCSZC電路801b。[本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,圖8b中所示的LCSZC電路801b可以通過調(diào)用圖8a中所示的LCSZC電路801的邏輯元件的子集來實(shí)現(xiàn)]。LCSZC電路801b包括兩組AND門,其中每組都包括用于要與目標(biāo)操作數(shù)的相應(yīng)位進(jìn)行比較的源操作數(shù)的每個(gè)位的一個(gè)AND門。對(duì)于圖8b中所示的實(shí)施例,要對(duì)4個(gè)32-位("雙字")數(shù)據(jù)元素中每一個(gè)的最高有效位進(jìn)行比較。因此,第一組AND門包括門819,到8194,而第二組AND門包括門820,到8204。圖8b示出了源操作數(shù)831中的4個(gè)32-位數(shù)據(jù)元素中的每一個(gè)和目標(biāo)操作數(shù)833中的4個(gè)32-位數(shù)據(jù)元素中的每一個(gè)的MSB值是第一組AND門819中的一個(gè)門的輸入。更具體而言,圖8b示出了源操作數(shù)831和目標(biāo)操作數(shù)833的位127都是門819,的輸入、源操作數(shù)831和目標(biāo)操作數(shù)833的位93都是門8192的輸入、源操作數(shù)831和目標(biāo)操作數(shù)833的位63都是門8193的輸入,以及源操作數(shù)831和目標(biāo)操作數(shù)833的位31都是門8194的輸入。圖8b還示出了源操作數(shù)831中的4個(gè)32-位數(shù)據(jù)元素中的每一個(gè)和目標(biāo)操作數(shù)833中的4個(gè)32-位數(shù)據(jù)元素中的每一個(gè)的MSB值是第二組AND門820中的一個(gè)門的輸入。應(yīng)當(dāng)注意,第二組AND門(820,到8204)在將目標(biāo)操作數(shù)833的每個(gè)雙字的MSB轉(zhuǎn)換為其反碼值之后(見轉(zhuǎn)化器844a-844d),才接收來自它們的輸入。更具體地,圖8b示出了源操作數(shù)831的位127和目標(biāo)操作數(shù)833的位127的反碼都是門82(^的輸入、源操作數(shù)831的位93和目標(biāo)操作數(shù)833的位93的反碼都是門8202的輸入、源操作數(shù)831的位63和目標(biāo)操作數(shù)833的位63的反碼都是門8203的輸入、以及源操作數(shù)831的位31和目標(biāo)操作數(shù)833的位31的反碼都是門8204的輸入。AND門81^到8194中每一個(gè)的輸出都是到NAND門855的輸入。NAND門855的至少一個(gè)作用是確定對(duì)源和目標(biāo)的4個(gè)雙字中每一個(gè)的最高有效位進(jìn)行AND的結(jié)果是否得到全0值(邏輯低值),并且如果是,就給零標(biāo)志858傳遞邏輯高值從而對(duì)其進(jìn)行設(shè)置。AND門820i到8204中每一個(gè)的輸出都是到NAND門859的輸入。NAND門859的至少一個(gè)作用是確定對(duì)源的位和目標(biāo)的位的反碼進(jìn)行AND的結(jié)果是否得到全0值(邏輯低值),并且如果是,就給進(jìn)位標(biāo)志860傳遞邏輯高值從而對(duì)其進(jìn)行設(shè)置。比較4個(gè)雙字中每一個(gè)的MSB的打包LCSZC指令的可選擇實(shí)施例可以包括但不局限于用于對(duì)一個(gè)操作數(shù)中的打包有符號(hào)雙字值和另一個(gè)操作數(shù)中的位掩碼進(jìn)行的操作、對(duì)在源和目標(biāo)兩者中的無符號(hào)雙字值進(jìn)行操作、以及用于對(duì)在源和目標(biāo)兩者中的有符號(hào)雙字值進(jìn)行的操作、或者用于一個(gè)組合的操作。LCSZC指令的其它可選擇實(shí)施例可以包括應(yīng)用于其它大小的有符號(hào)或無符號(hào)數(shù)據(jù)元素的操作。圖8c示出了根據(jù)本發(fā)明的另一可選擇實(shí)施例的對(duì)打包數(shù)據(jù)執(zhí)行LCSZC操作的電路801c的至少一個(gè)實(shí)施例。操作控制800處理用于打包LCSZC指令的控制信號(hào)。這樣的打包LCSZC指令可以是,例如,指示要對(duì)2個(gè)打包的雙精度(64-位)浮點(diǎn)值執(zhí)行LCSZC操作的"TESTPD"指令。操作控制800在使能880上輸出信號(hào)以控制LCSZC電路801c。體領(lǐng)域技術(shù)人員將認(rèn)識(shí)到圖8c中所示的LCSZC電路801c可以通過調(diào)用圖8a中所示的LCSZC電路801的邏輯元件的子集來實(shí)現(xiàn)]。與上面結(jié)合圖8b所討論的電路801b—樣,LCSZC電路801c包括兩組AND門,其中每組包括用于要與目標(biāo)操作數(shù)的相應(yīng)位進(jìn)行比較的源操作數(shù)的每個(gè)位的一個(gè)AND門。對(duì)于圖8c中所示的實(shí)施例,要對(duì)2個(gè)64-位("四字")數(shù)據(jù)元素的每一個(gè)的最高有效位進(jìn)行比較。因此,第一組AND門包括門81A和8193,而第二組AND門包括門820,和8203。圖8c示出了源操作數(shù)831中的2個(gè)64-位數(shù)據(jù)元素中每一個(gè)的MSB值和目標(biāo)操作數(shù)833中的2個(gè)64-位數(shù)據(jù)元素中每一個(gè)的MSB值是第一組AND門(S19,和8193)中的一個(gè)門的輸入。更具體而言,圖8c示出了源操作數(shù)831和目標(biāo)操作數(shù)833的位127都是門819,的輸入,以及源操作數(shù)831和目標(biāo)操作數(shù)833的位63都是門8193的輸入。圖8c還示出了源操作數(shù)831中的2個(gè)64-位數(shù)據(jù)元素中每一個(gè)的MSB值和目標(biāo)操作數(shù)833中的2個(gè)64-位數(shù)據(jù)元素中每一個(gè)的MSB值是第二組AND門(820^n8203)中的一個(gè)門的輸入。應(yīng)當(dāng)注意,第二組AND門820,和8203僅僅在目標(biāo)操作數(shù)833的每個(gè)四字的MSB已經(jīng)轉(zhuǎn)化成其反碼值之后(見轉(zhuǎn)化器844a和844c),才接收來自它們的輸入。更具體地,圖8c示出了源操作數(shù)831的位127和目標(biāo)操作數(shù)833的位127的反碼都是門820,的輸入,并且源操作數(shù)831的位63和目標(biāo)操作數(shù)833的位63的反碼都是門8203的輸入。AND門819,和8193中每一個(gè)的輸出都是NAND門853的輸入。NAND門853的至少一個(gè)作用是確定對(duì)源和目標(biāo)的2個(gè)四字中每一個(gè)的最高有效位進(jìn)行AND的結(jié)果是否都是O(邏輯低值),并且如果是,就給零標(biāo)志858傳遞邏輯高值從而對(duì)其進(jìn)行設(shè)置。AND門820,和8203中每一個(gè)的輸出都是NAND門857的輸入。NAND門857的至少一個(gè)作用是確定對(duì)源和目標(biāo)的2個(gè)四字中每一個(gè)的最高有效位進(jìn)行AND的結(jié)果是否都是O(邏輯低值),并且如果是,就給進(jìn)位標(biāo)志860傳遞邏輯高值從而對(duì)其進(jìn)行設(shè)置。比較2個(gè)四字中每一個(gè)的MSB的打包LCSZC指令的可選擇實(shí)施例可以包括但不局限于用于對(duì)源和目標(biāo)兩者中的無符號(hào)四字值的操作,以及用于對(duì)源和目標(biāo)兩者中的有符號(hào)四字值的操作,或用于一個(gè)組合的操作。LCSZC指令的其它可選擇實(shí)施例可以包括應(yīng)用于其它大小的有符號(hào)或無符號(hào)數(shù)據(jù)元素的操作。如上所解釋的,解碼器165可以識(shí)別并解碼處理器109所接收的控制信號(hào),并且該控制信號(hào)可以是用于LCSZC指令的操作碼。因此,解碼器165解碼LCSZC指令的操作碼。參考圖9,其示出了可以用于對(duì)LCSZC指令的控制信號(hào)(操作碼)進(jìn)行編碼的操作碼的各種實(shí)施例。圖9示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的指令900的格式。指令格式900包括各種字段;這些字段可以包括前綴字段910、操作碼字段920以及操作數(shù)指定字段(例如,modR/M、SIB(scale-index-base)、位移、立即數(shù)等)。操作數(shù)指定字段是可選擇的,并且包括modR/M字段930、SIB字段940、位移字段950和立即數(shù)字段960。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,圖9所提出的格式900是說明性的,指令代碼中的其它數(shù)據(jù)組織形式也可以用于所公開的實(shí)施例。例如,字段910、920、930、940、950、960不需要以所示的順序組織,而可以重新被組織到彼此相關(guān)的其它位置,并且不需要是鄰近的。同樣,這里所討論的字段長度不應(yīng)當(dāng)被看成是限制性的。作為多個(gè)字節(jié)的特定構(gòu)件而討論的字段,在可選擇的實(shí)施例中可以被實(shí)現(xiàn)為更大或更小的字段。同樣,術(shù)語"字節(jié)"雖然在這里作為8-位的分組使用,但是在其它實(shí)施例中,其可以實(shí)現(xiàn)為包括4位、16位和32位在內(nèi)的其它任何大小的分組。如這里所使用的,用于特定指令實(shí)例(比如LCSZC指令)的操作碼可以包括指令格式200的字段中的特定值,以便指示所希望的操作。這樣的指令有時(shí)被稱為"真實(shí)指令"。有時(shí),在這里將真實(shí)指令的位值共同稱為"指令代碼"。對(duì)于每個(gè)指令代碼,相應(yīng)的解碼后的指令代碼唯一地表示由執(zhí)行單元(例如,比如,圖la的130)響應(yīng)于該指令代碼而執(zhí)行的操作。所述解碼后的指令代碼可以包括一個(gè)或多個(gè)微操作。操作碼字段920的內(nèi)容指定該操作。對(duì)于至少一個(gè)實(shí)施例,用于在這里討論的LCSZC指令的實(shí)施例的操作碼字段920的長度是3個(gè)字。該操作碼字段920可以包括一個(gè)、兩個(gè)或三個(gè)字節(jié)的信息。對(duì)于至少一個(gè)實(shí)施例,將在操作碼字段920的2-字節(jié)逃逸(escape)字段118c中的3-字節(jié)逃逸操作碼值與操作碼字段920的第三個(gè)字節(jié)925的內(nèi)容相結(jié)合,以指定LCSZC操作。第三個(gè)字節(jié)925在這里被稱為具體指令(instruction-specific)操作碼。對(duì)于用于LCSZC指令的指令格式的第二實(shí)施例928,圖9示出了將在操作碼字段920的2-字節(jié)字段118c中的3-字節(jié)逃逸操作碼值與前綴字段910的內(nèi)容和操作碼字段920的具體指令操作碼字段925的內(nèi)容相結(jié)合,以指定LCSZC操作。對(duì)于至少一個(gè)實(shí)施例,將前綴值0x66放置于前綴字段910中,并且將其用作指令操作碼的一部分,以定義所希望的操作。也就是說,在前綴910字段中的值被解碼成操作碼的一部分,而不是被解釋成僅僅限制隨后的操作碼。例如,對(duì)于至少一個(gè)實(shí)施例,前綴值0x66被用來指示LCSZC指令的目標(biāo)操作數(shù)和源操作數(shù)是駐留在128-位IntelSSE2XMM寄存器中。可以類似地使用其它前綴。然而,對(duì)于LCSZC指令的至少一些實(shí)施例,在某些操作條件下,前綴可以替代地用于增強(qiáng)操作碼或限制操作碼的傳統(tǒng)任務(wù)中。指令格式的第一實(shí)施例926和第二實(shí)施例928都包括3-字節(jié)逃逸操作碼字段118c和具體指令操作碼字段925。對(duì)于至少一個(gè)實(shí)施例,3-字節(jié)逃逸操作碼字段118c的長度為2個(gè)字節(jié)。指令格式926使用稱為3-字節(jié)逃逸操作碼的4個(gè)特定逃逸操作碼中的一個(gè)。3-字節(jié)逃逸操作碼的長度為2個(gè)字節(jié),并且它們向解碼器硬件指示該指令使用操作碼字段920中的第三字節(jié)來定義該指令。3-字節(jié)逃逸操作碼字段118c可以位于指令操作碼內(nèi)的任何地方,并且不需要必須為指令內(nèi)的最高次序或最低次序字段。對(duì)于至少一個(gè)實(shí)施例,定義了至少4個(gè)3-字節(jié)逃逸操作碼值OxOF3y,其中y是0x8、0x9、OxA或OxB。雖然這里所公開的LCSZC指令操作碼的某些實(shí)施例與所述3-字節(jié)逃逸操作碼值一樣包括值"OxOF38",但這樣的公開內(nèi)容不應(yīng)當(dāng)被看成是限制性的。其它的實(shí)施例可以使用其它的逃逸操作碼值。下面的表3提出使用前綴和3-字節(jié)逃逸操作碼的LCSZC指令代碼的示例。<table>tableseeoriginaldocumentpage41</column></row><table>PTESTxmm1,mxx2/m128將源128-位寄存器或源128-位存儲(chǔ)器內(nèi)的所有位與寄存器內(nèi)的128-位目標(biāo)進(jìn)行比較;如果xmm2/ml28ANDxmml為全0則設(shè)置ZF;否則清除ZF。如果xmm2/ml28ANDNOTxmml結(jié)果為全0則設(shè)置CF;否則清除CF。TESTPSxmml,xmm2/ml28將源(128-位寄存器或128-位存儲(chǔ)器)內(nèi)的4個(gè)打包雙字中每一個(gè)的MSB與目標(biāo)(128-位寄存器)內(nèi)的4個(gè)打包雙字中每一個(gè)的相應(yīng)MSB進(jìn)行比較;如果xmm2/ml28ANDxmml的MSB(位127、95、63和31)為全0則設(shè)置ZF;否則清除ZF。如果xmm2/ml28ANDNOTxmml的MSB(位127、95、63和31)結(jié)果為全O則設(shè)置CF;否則清除CF。TESTPDxmml,xmm2/ml28將源(128-位寄存器或128-位存儲(chǔ)器)內(nèi)的2個(gè)打包四字中每一個(gè)的MSB與目標(biāo)(128-位寄存器)內(nèi)的2個(gè)打包四字中每一個(gè)的相應(yīng)MSB進(jìn)行比較;如果xmm2/ml28ANDxmml的MSB(位127和63)為全0則設(shè)置ZF;否則清除ZF。如果xmm2/ml28ANDNOTxmml的MSB(位127和63)結(jié)果為全O則設(shè)置CF;否則清除CF。對(duì)于至少一個(gè)實(shí)施例,源或目標(biāo)操作數(shù)中的值可以被用作掩碼(mask)。可以至少部分地通過所希望得到的行為,來驅(qū)使程序員選擇是否使用源或目標(biāo)操作數(shù)作為掩碼值。例如,使用第二操作數(shù)(源)作為掩碼值,該結(jié)果行為可以陳述為"如果在該掩碼下的每個(gè)位都為"0",則設(shè)置ZF;如果在該掩碼下的每個(gè)位都為"l",則設(shè)置CF。"另一方面,當(dāng)使用第一個(gè)參數(shù)(目標(biāo))作為掩碼值時(shí),該結(jié)果行為可以陳述為"如果在該掩碼下的每個(gè)位都為"0",則設(shè)置ZF;如果在該掩碼下的每個(gè)位都為"0",則設(shè)置CF。"為了執(zhí)行上面結(jié)合圖7c、7d、8b和8c所討論的打包LCSZC指令的至少一些實(shí)施例的等同物,需要附加指令,其為該操作增加了機(jī)器周期延遲。例如,下面的表4提出的偽代碼示出了使用PTEST指令的多個(gè)指令相對(duì)于沒有包括PTEST指令的指令集的節(jié)省。<table>tableseeoriginaldocumentpage42</column></row><table>表4所提出的偽代碼有助于闡明所描述的LCSZC指令的實(shí)施例能夠用于改進(jìn)軟件代碼的性能。因此,LCSZC指令能夠用于通用處理器,并且與所描述的現(xiàn)有技術(shù)指令相比,提高了更多算法的性能??蛇x擇實(shí)施例雖然所描述的實(shí)施例使用用于LCSZC指令的打包實(shí)施例的32-位數(shù)據(jù)元素和64-位數(shù)據(jù)元素的MSB的比較,但可選擇實(shí)施例可以使用不同大小的輸入、不同大小的數(shù)據(jù)元素、和/或?qū)Σ煌坏谋容^(例如,數(shù)據(jù)元素的LSB)。此外,雖然在一些所描述的實(shí)施例中,Sourcel和Dest每一個(gè)都包含128-位數(shù)據(jù),但可選擇實(shí)施例可以對(duì)具有更多或更少數(shù)據(jù)的打包數(shù)據(jù)進(jìn)行操作。例如,一個(gè)可選擇實(shí)施例可以對(duì)具有64-位數(shù)據(jù)的打包數(shù)據(jù)進(jìn)行操作。而且,LCSZC指令所比較的位不需要必須表示每個(gè)打包數(shù)據(jù)元素的相同的各個(gè)位的位置。雖然已經(jīng)依據(jù)一些實(shí)施例對(duì)本發(fā)明進(jìn)行了描述,但本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,本發(fā)明并不限制于所描述的實(shí)施例。本發(fā)明的方法和裝置可以在在附帶的權(quán)利要求的精神和范圍內(nèi)進(jìn)行實(shí)踐上的修改和變化。因此,說明書被看成是說明性的,而不是對(duì)本發(fā)明的限制。上面的說明書的目的是闡明本發(fā)明的優(yōu)選實(shí)施例。從上面的討論中也應(yīng)當(dāng)明白,特別是在這樣發(fā)展快速并且進(jìn)一步的進(jìn)步不易預(yù)見的
      技術(shù)領(lǐng)域
      中,可以由本領(lǐng)域技術(shù)人員在附加權(quán)利要求的范圍內(nèi)對(duì)本發(fā)明在安排和細(xì)節(jié)上進(jìn)行修改,而不脫離的本發(fā)明的原理。權(quán)利要求1、一種方法,包括接收指令代碼,所述指令代碼具有包括第一字段和第二字段的指令格式,所述第一字段指示第一多位操作數(shù),該第二字段指示第二多位操作數(shù);以及響應(yīng)于第一中間結(jié)果為0的確定,把第一狀態(tài)標(biāo)志修改為第一值,并且響應(yīng)于所述第一中間結(jié)果為非0的確定,把所述第一狀態(tài)標(biāo)志修改為第二值,其中所述第一中間結(jié)果通過對(duì)所述第一操作數(shù)的一個(gè)或多個(gè)位位置中每一個(gè)的值與所述第二操作數(shù)的相同的各個(gè)位位置的值的反碼進(jìn)行逐位邏輯AND操作而得到。2、根據(jù)權(quán)利要求l的方法,其中,所述第一操作數(shù)還包括第一多個(gè)數(shù)據(jù)元素,所述第一多個(gè)數(shù)據(jù)元素至少包括每個(gè)都具有N位長度的A,和A2作為數(shù)據(jù)元素;以及所述第二操作數(shù)還包括第二多個(gè)數(shù)據(jù)元素,所述第二多個(gè)數(shù)據(jù)元素至少包括每個(gè)都具有N位長度的B,和B2。3、根據(jù)權(quán)利要求2的方法,其中,修改所述第一狀態(tài)標(biāo)志的步驟還包括響應(yīng)于第一中間結(jié)果為0的確定,把所述第一狀態(tài)標(biāo)志修改為第一值,并且響應(yīng)于所述第一中間結(jié)果為非O的確定,把所述第一狀態(tài)標(biāo)志修改為第二值,其中所述第一中間結(jié)果通過對(duì)所述A,和A2數(shù)據(jù)元素每一個(gè)中的一個(gè)位位置的值與所述B!和B2數(shù)據(jù)元素的相同的各個(gè)位位置的值的反碼進(jìn)行逐位邏輯AND操作而得到。4、根據(jù)權(quán)利要求3的方法,其中,所述一個(gè)位位置是最高有效位位置。5、根據(jù)權(quán)利要求l的方法,其中,所述第一和第二操作數(shù)每一200710144187.2權(quán)利要求書第2/7頁個(gè)都包括128個(gè)位。6、根據(jù)權(quán)利要求2的方法,其中,N為64。7、根據(jù)權(quán)利要求l的方法,其中,所述第一狀態(tài)標(biāo)志為進(jìn)位標(biāo)8、根據(jù)權(quán)利要求1的方法,還包括響應(yīng)于第二中間結(jié)果為0的確定,把第二狀態(tài)標(biāo)志修改為第三值,并且響應(yīng)于所述第二中間結(jié)果為非O的確定,把所述第二狀態(tài)標(biāo)志修改為第四值,其中所述第二中間結(jié)果通過對(duì)所述第一操作數(shù)的一個(gè)或多個(gè)位位置中每一個(gè)的值與所述第二操作數(shù)的相同的各個(gè)位位置的值進(jìn)行逐位邏輯AND操作而得到。9、根據(jù)權(quán)利要求2的方法,還包括響應(yīng)于第二中間結(jié)果為0的確定,把所述第二狀態(tài)標(biāo)志修改為第三值,并且響應(yīng)于所述第二中間結(jié)果為非O的確定,把所述第二狀態(tài)標(biāo)志修改為第四值,其中所述第二中間結(jié)果通過對(duì)所述A,和A2數(shù)據(jù)元素每一個(gè)中的一個(gè)位位置的值與所述B,和B2數(shù)據(jù)元素的相同的各個(gè)位位置的值進(jìn)行逐位邏輯AND操作而得到。10、根據(jù)權(quán)利要求8的方法,其中,所述第二狀態(tài)標(biāo)志為零標(biāo)志。11、根據(jù)權(quán)利要求9的方法,其中,所述一個(gè)位位置是最高有效位位置。12、根據(jù)權(quán)利要求2的方法,其中,所述第一多個(gè)數(shù)據(jù)元素被視為無符號(hào)雙字。13、根據(jù)權(quán)利要求2的方法,其中,所述第一多個(gè)數(shù)據(jù)元素被視3為有符號(hào)雙字。14、一種執(zhí)行根據(jù)權(quán)利要求l的方法的裝置,包括執(zhí)行單元;以及機(jī)器可訪問介質(zhì),其包括數(shù)據(jù),當(dāng)所述數(shù)據(jù)被所述執(zhí)行單元訪問時(shí),使所述執(zhí)行單元執(zhí)行根據(jù)權(quán)利要求1的方法。15、一種裝置,包括第一輸入端,接收第一數(shù)據(jù);第二輸入端,接收第二數(shù)據(jù),所述第二數(shù)據(jù)包含與所述第一數(shù)據(jù)相同數(shù)量的位;電路,響應(yīng)于第一處理器指令,將所述第一數(shù)據(jù)的第一組位與所述第二數(shù)據(jù)的相應(yīng)位進(jìn)行比較,并且將所述第一數(shù)據(jù)的所述第一組位與所述第二數(shù)據(jù)的相應(yīng)位的反碼進(jìn)行比較;所述電路還根據(jù)所述第一比較的結(jié)果修改第一標(biāo)志,并且根據(jù)所述第二比較的結(jié)果修改第二標(biāo)志。16、根據(jù)權(quán)利要求15的裝置,第一數(shù)據(jù)的全部位。17、根據(jù)權(quán)利要求15的裝置,個(gè)都包含至少128位的數(shù)據(jù)。18、根據(jù)權(quán)利要求15的裝置,至少2個(gè)打包數(shù)據(jù)元素。19、根據(jù)權(quán)利要求18的裝置,包括64個(gè)位。其中,所述位組進(jìn)一步包括所述其中,所述第一和第二數(shù)據(jù)每一其中,所述第一數(shù)據(jù)進(jìn)一步包括其中,所述數(shù)據(jù)元素中每一個(gè)都20、根據(jù)權(quán)利要求15的裝置,其中,所述第一數(shù)據(jù)進(jìn)一步包括至少4個(gè)打包數(shù)據(jù)元素。21、根據(jù)權(quán)利要求20的裝置,其中,所述數(shù)據(jù)元素中每一個(gè)都包括32個(gè)位。22、根據(jù)權(quán)利要求18的裝置,其中,所述至少2個(gè)打包數(shù)據(jù)元素進(jìn)一步包括無符號(hào)數(shù)據(jù)元素。23、根據(jù)權(quán)利要求18的裝置,其中,所述至少2個(gè)打包數(shù)據(jù)元素進(jìn)一步包括有符號(hào)數(shù)據(jù)元素。24、根據(jù)權(quán)利要求18的裝置,其中,所述電路還響應(yīng)于所述第一指令,將每個(gè)打包數(shù)據(jù)元素中的一個(gè)位與所述第二數(shù)據(jù)中的相應(yīng)位進(jìn)行比較,并且將每個(gè)打包數(shù)據(jù)元素中的一個(gè)位與所述第二數(shù)據(jù)中的相應(yīng)位的反碼進(jìn)行比較。25、根據(jù)權(quán)利要求24的裝置,其中,所述的每個(gè)打包數(shù)據(jù)元素中的一個(gè)位進(jìn)一步包括符號(hào)位。26、根據(jù)權(quán)利要求24的裝置,其中,所述的每個(gè)打包數(shù)據(jù)元素中的一個(gè)位進(jìn)一步包括該數(shù)據(jù)元素的最高有效位。27、一種計(jì)算系統(tǒng),包括存儲(chǔ)數(shù)據(jù)的可尋址存儲(chǔ)器;處理器,包括存儲(chǔ)第一狀態(tài)標(biāo)志值且架構(gòu)上可見的第一存儲(chǔ)區(qū)域,以及存儲(chǔ)第二狀態(tài)標(biāo)志值且架構(gòu)上可見的第二存儲(chǔ)區(qū)域;解碼器,對(duì)具有用于指定N-位源操作數(shù)的第一字段和用于指定N-位目標(biāo)操作數(shù)的第二字段的指令進(jìn)行解碼;以及執(zhí)行單元,響應(yīng)于所述解碼器對(duì)所述指令的解碼,對(duì)所述源操作數(shù)的多個(gè)位與所述目標(biāo)操作數(shù)的相應(yīng)位執(zhí)行第一比較,以及對(duì)所述源操作數(shù)的多個(gè)位與所述目標(biāo)操作數(shù)的相應(yīng)位的反碼執(zhí)行第二比較;所述執(zhí)行單元進(jìn)一步根據(jù)所述第一比較修改所述第一狀態(tài)標(biāo)志值,并且根據(jù)所述第二比較修改所述第二狀態(tài)標(biāo)志值。28、根據(jù)權(quán)利要求27的計(jì)算系統(tǒng),其中,N為128。29、根據(jù)權(quán)利要求27的計(jì)算系統(tǒng),其中,所述第一狀態(tài)標(biāo)志為零標(biāo)志。30、根據(jù)權(quán)利要求27的計(jì)算系統(tǒng),其中,所述第二狀態(tài)標(biāo)志為進(jìn)位標(biāo)志。31、根據(jù)權(quán)利要求27的計(jì)算系統(tǒng),其中,所述處理器還包括用于存儲(chǔ)所述N-位源操作數(shù)的第三存儲(chǔ)區(qū)域,和用于存儲(chǔ)N-位目標(biāo)操作數(shù)的第四存儲(chǔ)區(qū)域。32、根據(jù)權(quán)利要求31的計(jì)算系統(tǒng),其中,所述第三存儲(chǔ)區(qū)域要存儲(chǔ)M個(gè)打包數(shù)據(jù)元素,所述第三存儲(chǔ)區(qū)域?qū)?yīng)于所述源操作數(shù)。33、根據(jù)權(quán)利要求32的計(jì)算系統(tǒng),其中,所述執(zhí)行單元進(jìn)一步將所述第三存儲(chǔ)區(qū)域的所述M個(gè)打包數(shù)據(jù)元素視為無符號(hào)字節(jié)。34、根據(jù)權(quán)利要求32的計(jì)算系統(tǒng),其中,所述執(zhí)行單元進(jìn)一步將所述第三存儲(chǔ)區(qū)域的所述M個(gè)打包數(shù)據(jù)元素視為有符號(hào)字節(jié)。35、根據(jù)權(quán)利要求25的計(jì)算系統(tǒng),其中,所述執(zhí)行單元還響應(yīng)于所述解碼器對(duì)所述指令的解碼,對(duì)所述源操作數(shù)的全部位與所述目標(biāo)操作數(shù)的相應(yīng)位執(zhí)行第一比較,以及對(duì)所述源操作數(shù)的全部位與目標(biāo)操作數(shù)的相應(yīng)位的反碼執(zhí)行第二比較。36、根據(jù)權(quán)利要求32的計(jì)算系統(tǒng),其中,所述執(zhí)行單元還響應(yīng)于所述解碼器對(duì)所述指令的解碼,對(duì)所述源操作數(shù)的每個(gè)打包數(shù)據(jù)元素的符號(hào)位與所述目標(biāo)操作數(shù)的相應(yīng)位執(zhí)行第一比較,以及對(duì)所述源操作數(shù)的每個(gè)打包數(shù)據(jù)元素的符號(hào)位與所述目標(biāo)操作數(shù)的相應(yīng)位的反碼執(zhí)行第二比較。37、根據(jù)權(quán)利要求32的計(jì)算系統(tǒng),其中,M=2。38、根據(jù)權(quán)利要求32的計(jì)算系統(tǒng),其中,M=4。39、一種在其上存儲(chǔ)有指令的機(jī)器可讀介質(zhì),如果機(jī)器執(zhí)行所述指令,則將使所述機(jī)器執(zhí)行一種方法,所述方法包括將第一操作數(shù)的第一組位與第二操作數(shù)的相應(yīng)位進(jìn)行比較;將所述第一操作數(shù)的第一組位與所述第二操作數(shù)的相應(yīng)位的反碼進(jìn)行比較;以及基于所述比較中的至少一個(gè),執(zhí)行分支支持。40、根據(jù)權(quán)利要求39的機(jī)器可讀介質(zhì),其中,執(zhí)行所述分支支持的步驟還包括基于所述比較中的至少一個(gè),修改狀態(tài)標(biāo)志的值。41、根據(jù)權(quán)利要求39的機(jī)器可讀介質(zhì),其中,執(zhí)行所述分支支持的步驟還包括基于所述比較中的至少一個(gè),分支到一代碼位置。42、根據(jù)權(quán)利要求40的機(jī)器可讀介質(zhì),還具有存儲(chǔ)于其上的指令,如果機(jī)器執(zhí)行所述指令,將使所述機(jī)器執(zhí)行一種方法,所述方法包括基于所述狀態(tài)標(biāo)志的值,執(zhí)行分支操作。43、根據(jù)權(quán)利要求40的機(jī)器可讀介質(zhì),其中,所述存儲(chǔ)于其上的指令,如果機(jī)器執(zhí)行該指令將使所述機(jī)器執(zhí)行一種方法,所述方法包括基于所述比較中的一個(gè),修改所述狀態(tài)標(biāo)志,以及基于所述比較中的另一個(gè),修改第二狀態(tài)標(biāo)志。44、根據(jù)權(quán)利要求43的機(jī)器可讀介質(zhì),還具有存儲(chǔ)于其上的一條或多條指令,如果機(jī)器執(zhí)行所述指令,將使所述機(jī)器執(zhí)行一種方法,所述方法包括基于所述狀態(tài)標(biāo)志的值,執(zhí)行第一分支操作,以及基于所述第二狀態(tài)標(biāo)志的值,執(zhí)行第二分支操作。全文摘要一種用于包含在對(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/38GK101231583SQ20071014418公開日2008年7月30日申請(qǐng)日期2007年9月21日優(yōu)先權(quán)日2006年9月21日發(fā)明者K·戈特利布,M·巴克斯頓,R·卡普爾,R·祖海爾,Z·斯佩貝爾申請(qǐng)人:英特爾公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1