新四季網

用於執行邏輯比較操作的方法和裝置的製作方法

2023-06-15 00:49:16


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

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀