專利名稱:用于處理文本串的指令和邏輯的制作方法
用于處理文本串的指令和邏輯技術(shù)領(lǐng)域本公開內(nèi)容屬于執(zhí)行邏輯和數(shù)學(xué)操作的處理裝置以及相關(guān)軟件 和軟件序列的領(lǐng)域。
背景技術(shù):
在我們的社會中,計算機系統(tǒng)己經(jīng)日益變得普遍。計算機的處理 能力提高了許多職業(yè)范圍內(nèi)的工作者的效率和生產(chǎn)率。隨著購買和擁 有計算機的費用持續(xù)下降,越來越多的消費者能夠利用更新和更快的 機器。此外,許多人因為自由而熱衷于使用筆記本電腦。移動計算機 允許用戶在他們離開辦公室或旅行時容易地運送他們的數(shù)據(jù)和工作。 這種情況對于銷售人員、團體執(zhí)行人員甚至學(xué)生都是十分常見的。隨著處理器技術(shù)的發(fā)展,還產(chǎn)生了要在具有這些處理器的機器上 運行的更新的軟件代碼。用戶通常希望和需要從他們的計算機獲得更 高的性能,而不考慮所使用的軟件類型。從所述處理器內(nèi)實際執(zhí)行的 多種指令和操作將會產(chǎn)生一個這樣的問題。基于操作的復(fù)雜度和/或 所需的電路類型,特定類型的操作需要更多的時間來完成。這提供了 一個機會來優(yōu)化在處理器內(nèi)執(zhí)行特定復(fù)雜操作的方式。通信應(yīng)用己經(jīng)推動了微處理器發(fā)展超過十年。實際上,計算和通 信之間的界線已經(jīng)變得越來越模糊,這部分地是由于文本通信應(yīng)用的 使用。文本應(yīng)用在消費者層面內(nèi)很普遍,并且在從蜂窩電話到個人計 算機的多種設(shè)備中要求越來越塊的文本信息處理。文本通信設(shè)備繼續(xù)以諸如Microsoft Instant Messenger 的應(yīng)用、諸如Microsoft Outlook 的電子郵件應(yīng)用以及蜂窩電話文本應(yīng)用的形式在計算和通 信設(shè)備中得以應(yīng)用。結(jié)果是,未來的個人計算和通信體驗將具有更為 豐富的文本能力。因此,對于目前的計算和通信設(shè)備而言,在計算或通信設(shè)備之間解析變得越來越重要。特別是,由通信或計 算設(shè)備進行的文本信息串的解釋包括一些在文本數(shù)據(jù)上執(zhí)行的最為 重要的操作。這樣的操作可以是計算密集型的,但是提供能夠通過使 用各種數(shù)據(jù)存儲設(shè)備的有效實現(xiàn)方式而開發(fā)的高等級數(shù)據(jù)并行,所述數(shù)據(jù)存儲設(shè)備諸如例如單指令多數(shù)據(jù)(SIMD)寄存器。多種當(dāng)前的體 系結(jié)構(gòu)還要求多種操作、指令或子指令(常稱作"微操作"或"微指 令")來對多個操作數(shù)執(zhí)行各種邏輯和數(shù)學(xué)操作,從而減少吞吐量并 增加執(zhí)行所述邏輯和數(shù)學(xué)操作所需的時鐘周期數(shù)。例如,可能需要由多個指令構(gòu)成的指令序列來執(zhí)行解釋文本串的 特定詞語所需的一個或多個操作,包括將由處理裝置、系統(tǒng)或計算機 程序內(nèi)的各種數(shù)據(jù)類型所表示的兩個或多個文本詞語進行比較。然 而,這樣的現(xiàn)有技術(shù)可能需要許多處理周期,并且可能導(dǎo)致處理器或 系統(tǒng)為了生成結(jié)果而消耗不必要的能量。此外, 一些現(xiàn)有技術(shù)可能限 定于可在其上進行操作的操作數(shù)數(shù)據(jù)類型。
本發(fā)明通過實例進行說明,而不局限于附圖中圖1A是根據(jù)本發(fā)明一個實施例的計算機系統(tǒng)的框圖,所述計算機系統(tǒng)具有處理器,所述處理器包括用來執(zhí)行串比較操作的指令的執(zhí)行單元;圖1B是根據(jù)本發(fā)明可選實施例的另一個示例性計算機系統(tǒng)的框圖;圖1C是根據(jù)本發(fā)明另一個可選實施例的又一個示例性計算機系 統(tǒng)的框圖;圖2是根據(jù)本發(fā)明一個實施例的處理器的微體系結(jié)構(gòu)的框圖,所 述處理器包括用來執(zhí)行一個或多個串比較操作的邏輯電路;圖3A表示根據(jù)本發(fā)明一個實施例的在多媒體寄存器中的各種緊 縮數(shù)據(jù)類型(packed data type)表示;圖3B表示根據(jù)可選實施例的緊縮數(shù)據(jù)類型;圖3C表示根據(jù)本發(fā)明一個實施例的在多媒體寄存器中的各種有符號和無符號緊縮數(shù)據(jù)類型表示;圖3D表示操作編碼(操作碼)格式的一個實施例; 圖3E表示可選的操作編碼(操作碼)格式; 圖3F表示又一個可選的操作編碼格式;圖4是根據(jù)本發(fā)明一個實施例的用來對一個或多個單精度緊縮 數(shù)據(jù)操作數(shù)執(zhí)行至少一個串比較操作的邏輯的框圖;圖5是根據(jù)一個實施例的可以被用來執(zhí)行至少一個串比較操作 的陣列的框圖;以及圖6示出了可以在本發(fā)明一個實施例中執(zhí)行的操作。
具體實施方式
以下說明描述了用來執(zhí)行處理裝置、計算機系統(tǒng)或軟件程序內(nèi)的 文本或串元素之間的比較操作的技術(shù)的實施例。在以下的說明中,為 了提供對本發(fā)明的更為全面的理解,闡述了諸如處理器類型、微體系 結(jié)構(gòu)狀況、事件、使能機制等的許多特定細節(jié)。然而,本領(lǐng)域技術(shù)人 員將會意識到,沒有這些特定細節(jié)也可以實施本發(fā)明。此外,為了避 免不必要地使本發(fā)明難以理解, 一些己知的結(jié)構(gòu)、電路等沒有詳細示 出。雖然以下實施例是參考處理器進行描述的,但是其它實施例也可 以應(yīng)用于其它類型的集成電路和邏輯設(shè)備。本發(fā)明的相同技術(shù)和教導(dǎo) 能夠容易地應(yīng)用到其它類型的能夠受益于更高的管線吞吐量和改進 的性能的電路或半導(dǎo)體設(shè)備。本發(fā)明的教導(dǎo)能夠應(yīng)用于執(zhí)行數(shù)據(jù)操作 的任意處理器或機器。然而,本發(fā)明并不局限于執(zhí)行256位、128位、 64位、32位或16位數(shù)據(jù)操作的處理器或機器,并且能夠應(yīng)用于其中 需要操作緊縮數(shù)據(jù)的任意處理器和機器。在以下的說明中,出于解釋的目的,闡述了許多特定細節(jié)以便提 供對本發(fā)明的全面理解。然而,本領(lǐng)域普通技術(shù)人員將會意識到,這 些特定細節(jié)對于實施本發(fā)明并不是必需的。在其它實例中,為了避免 不必要地使本發(fā)明難以理解,沒有特別詳細地闡述已知的電結(jié)構(gòu)和電 路。此外,以下的說明提供了示例,而附圖則出于說明的目的而示出了各個示例。然而,這些示例不應(yīng)當(dāng)被認為是限制性的,因為它們僅 僅用于提供本發(fā)明的示例而不是提供本發(fā)明的所有可能的實施方式 的排他性列表。雖然以下示例描述了執(zhí)行單元和邏輯電路環(huán)境中的指令處理和 分配,但是本發(fā)明的其它實施例能夠利用軟件實現(xiàn)。在一個實施例中, 本發(fā)明的方法被體現(xiàn)為機器可執(zhí)行指令。所述指令能夠用來使得利用 所述指令進行編程的通用或?qū)S锰幚砥鲌?zhí)行本發(fā)明的步驟。本發(fā)明可 以被提供為可以包括其上存儲有指令的機器或計算機可讀介質(zhì)的計 算機程序產(chǎn)品或軟件,所述指令可以用來對計算機(或其它電子設(shè)備) 進行編程而使其執(zhí)行根據(jù)本發(fā)明的處理?;蛘?,本發(fā)明的步驟可以由 包含用于執(zhí)行這些步驟的硬連線邏輯的特定硬件組件來執(zhí)行,或者由 編程的計算機組件和定制硬件組件的任意組合來執(zhí)行。這樣的軟件可 以存儲在系統(tǒng)中的存儲器內(nèi)。類似地,所述代碼可以經(jīng)由網(wǎng)絡(luò)或利用 其它計算機可讀介質(zhì)來分發(fā)。因此,機器可讀介質(zhì)可以包括用于存儲或傳輸機器(例如,計算 機)可讀形式的信息的任何機制,但并不局限于軟盤、光盤、緊湊盤只讀存儲器(CD-ROM)以及磁光盤、只讀存儲器(ROM)、隨機訪問存 儲器(RAM)、可擦除可編程只讀存儲器(EPROM)、電可擦除可編程只 讀存儲器(EEPROM)、磁或光卡、閃存、因特網(wǎng)傳輸、電、光、聲或 其它形式的傳播信號(例如,載波、紅外信號、數(shù)字信號等)等等。因 此,所述計算機可讀介質(zhì)包括適于存儲或傳輸機器(例如,計算機)可 讀形式的電子指令或信息的任意類型的媒介/機器可讀介質(zhì)。此外, 本發(fā)明還可以作為計算機程序產(chǎn)品下載。這樣,所述程序可以從遠程 計算機(例如,服務(wù)器)傳輸?shù)秸埱笥嬎銠C(例如,客戶端)。所述程序 的傳輸可以利用嵌入在載波或其它傳播介質(zhì)中的電、光、聲或其它形 式的數(shù)據(jù)信號經(jīng)由通信鏈路(例如,調(diào)制解調(diào)器、網(wǎng)絡(luò)連接等)進行。設(shè)計可以經(jīng)歷各種階段,從創(chuàng)建到仿真到裝配。表示設(shè)計的數(shù)據(jù) 可以以多種方式對設(shè)計進行表示。首先,如在仿真中有用的,可以使 用硬件描述語言或另外的功能描述語言來表示硬件。此外,可以在設(shè) 計過程的一些階段生成具有邏輯和/或晶體管門電路的電路級模型。而且,在一些階段,大多數(shù)設(shè)計達到了表示硬件模型中各種設(shè)備的物 理布局的數(shù)據(jù)級別。在使用傳統(tǒng)的半導(dǎo)體裝配技術(shù)的情況下,表示硬 件模型的數(shù)據(jù)可以是用于指定各種特征在掩模的不同掩模層上是否 存在的數(shù)據(jù),所述掩模用于生成集成電路。在設(shè)計的任意表示中,所 述數(shù)據(jù)可以存儲在任意形式的機器可讀介質(zhì)中。被調(diào)制或以別的方式 生成來傳輸這樣的信息的光或電波、存儲器或諸如盤片的磁或光存儲 裝置可以作為所述機器可讀介質(zhì)。任意這些介質(zhì)可以"攜帶"或"指 示"所述設(shè)計或軟件信息。當(dāng)指示或攜帶代碼或設(shè)計的電載波被傳輸, 到執(zhí)行電信號的復(fù)制、緩沖或重傳的程度時,進行新的復(fù)制。這樣, 通信提供商或網(wǎng)絡(luò)提供商可以對實現(xiàn)本發(fā)明的技術(shù)的物體(載波)進 行復(fù)制。在現(xiàn)代的處理器中,多個不同的執(zhí)行單元被用來處理和執(zhí)行多種 代碼和指令。并不是所有的指令都被平等地創(chuàng)建, 一些完成較快而其 它則占用很多時鐘周期。指令的吞吐量越快,處理器的整體性能就越 好。因此,使許多指令盡可能快地執(zhí)行是有利的。然而,還是存在某 些指令具有較大的復(fù)雜度并且要求較多的執(zhí)行時間和處理器資源。例 如,存在浮點指令、加載/存儲操作、數(shù)據(jù)移動等。隨著越來越多的計算機系統(tǒng)在因特網(wǎng)、文本和多媒體應(yīng)用中使用,隨時間而引入了其它的處理器支持。例如,單指令多數(shù)據(jù)(SIMD) 整數(shù)/浮點指令和流SIMD擴展(SSE)是減少執(zhí)行特定程序任務(wù)所需的 指令總數(shù)的指令,而這又減少了功耗。這些指令能夠通過并行操作多 個數(shù)據(jù)元素而加速軟件性能。結(jié)果是,能夠在包括視頻、語音和圖像 /照片處理的廣泛的應(yīng)用中實現(xiàn)性能提高。SIMD指令在微處理器和類 似類型的邏輯電路中的實現(xiàn)方式通常涉及許多問題。此外,SIMD操 作的復(fù)雜度經(jīng)常導(dǎo)致需要附加電路,以便正確處理和操作數(shù)據(jù)。目前,還無法獲得對至少兩個緊縮操作數(shù)(packedoperand)的每個 數(shù)據(jù)元素進行比較的SIMD指令。沒有例如由一個實施例所執(zhí)行的 SIMD緊縮比較指令的存在,在例如文本解釋、壓縮/解壓縮、處理和 操作的應(yīng)用中可能需要大量指令和數(shù)據(jù)寄存器來完成同樣的結(jié)果。在 此所公開的實施例可互換地涉及文本或串比較。然而,實施例可以應(yīng)用于任意信息(文本、數(shù)字或其它數(shù)據(jù))串。因此,根據(jù)本發(fā)明實施例的至少一個串比較指令能夠減少代碼開 銷和資源需求。本發(fā)明的實施例提供了一種將文本解析操作實現(xiàn)為使用SIMD相關(guān)硬件的算法的方法。目前,對SIMD寄存器中的數(shù)據(jù)執(zhí) 行文本解析操作是有些困難和乏味的。 一些算法所要求的用來排列算 術(shù)操作的數(shù)據(jù)的指令比用來執(zhí)行那些操作的指令的實際數(shù)目更多。通 過實施根據(jù)本發(fā)明實施例的文本比較操作的實施例,實現(xiàn)文本處理所 需的指令數(shù)目能夠大大減少。本發(fā)明的實施例涉及用于實施一個或多個串比較操作的指令。文 本比較操作通常涉及將來自兩個數(shù)據(jù)串的數(shù)據(jù)元素進行比較以確定 哪些數(shù)據(jù)元素匹配??梢詫σ话阄谋颈容^算法進行其它變形,這將在 這里進行討論。在一般意義中,應(yīng)用到表示兩個數(shù)據(jù)串的兩個緊縮操 作數(shù)中的各個數(shù)據(jù)元素的文本比較操作的一個實施例可以一般性地表示為DEST 1 — SRC 1 cmp SRC2; 對于緊縮SIMD數(shù)據(jù)操作數(shù)而言,該一般性操作能夠應(yīng)用到每個操作 數(shù)的每個數(shù)據(jù)元素位置。在以上操作中,"DEST"和"SRC"是用來表示對應(yīng)數(shù)據(jù)或操作 的目的和源的一般性術(shù)語。在一些實施例中,它們可以由寄存器、存 儲器或具有與所描述的不同的名稱或功能的其它存儲區(qū)域來實現(xiàn)。例 如,在一個實施例中,DEST1可以是臨時存儲寄存器或其它存儲區(qū) 域,而SRC1和SRC2可以是第一和第二目的存儲寄存器或其它存儲 區(qū)域,等等。在其它實施例中,兩個或更多個SRC和DEST存儲區(qū) 域可以對應(yīng)于相同存儲區(qū)域(例如,SIMD寄存器)內(nèi)的不同數(shù)據(jù)存儲 元素。此外,在一個實施例中,串比較操作可以生成一個指示符,以指 示源寄存器中的一個的每個元素是否等同于另一個源寄存器的每個 元素,并且將所述指示符存儲到例如DEST1的寄存器內(nèi)。在一個實施例中,所述指示符為索引值,而在其它實施例中,所述指示符可以 是掩碼值。在其它實施例中,所述指示符可以表示其它數(shù)據(jù)結(jié)構(gòu)或指針。圖1A是根據(jù)本發(fā)明一個實施例的示例性計算機系統(tǒng)的框圖,所 述計算機系統(tǒng)形成有處理器,所述處理器包括用來執(zhí)行串比較操作的 指令的執(zhí)行單元。根據(jù)本發(fā)明,例如根據(jù)在此所述的實施例,系統(tǒng) 100包括諸如處理器102的組件以使用執(zhí)行單元,所述執(zhí)行單元包括 用來執(zhí)行處理數(shù)據(jù)的算法的邏輯。系統(tǒng)100代表基于可從加利福尼亞 圣克拉拉的Intel公司獲得的PENTIUM III、PENTIUM 4、Xeon 、 Itanium 、 XScaleTM和/或Strong ARM 微處理器的處理系統(tǒng),當(dāng)然 也可以使用其它系統(tǒng)(包括具有其它微處理器的PC、工程工作站、機 頂盒等)。在一個實施例中,樣例系統(tǒng)100可以執(zhí)行可從華盛頓州雷 德蒙德的Microsoft公司獲得的WINDOWS 操作系統(tǒng)版本,當(dāng)然也 可以使用其它操作系統(tǒng)(例如,UINX和Linux)、嵌入式軟件和/或圖 形用戶界面。因此,本發(fā)明的實施例并不局限于任何硬件電路和軟件 的特定組合。實施例并不局限于計算機系統(tǒng)。本發(fā)明的可選實施例能夠用在其 它設(shè)備中,例如手持設(shè)備和嵌入式應(yīng)用。手持設(shè)備的一些示例包括蜂 窩電話、因特網(wǎng)協(xié)議設(shè)備、數(shù)碼相機、個人數(shù)字助理(PDA)和手持PC。 嵌入式應(yīng)用可以包括微控制器、數(shù)字信號處理器(DSP)、系統(tǒng)芯片、 網(wǎng)絡(luò)計算機(NetPC)、機頂盒、網(wǎng)絡(luò)集線器、廣域網(wǎng)(WAN)交換機或 對操作數(shù)執(zhí)行串比較操作的任何其它系統(tǒng)。此外,已經(jīng)實現(xiàn)了一些體 系結(jié)構(gòu)使得指令能夠同時對若干個數(shù)據(jù)進行操作,以提高多媒體應(yīng)用 的效率。隨著數(shù)據(jù)類型和數(shù)據(jù)量的增加,必須增強計算機及其處理器 以更為有效的方法操作數(shù)據(jù)。圖IA是根據(jù)本發(fā)明一個實施例的計算機系統(tǒng)100的框圖,計算 機系統(tǒng)100形成有處理器102,處理器102包括一個或多個執(zhí)行單元 108,用來執(zhí)行將來自一個或多個操作數(shù)的數(shù)據(jù)元素進行比較的算法。 可以在單處理器桌上型電腦或服務(wù)器系統(tǒng)的情況下對一個實施例進 行描述,但是可選實施例可以包括在多處理器系統(tǒng)中。系統(tǒng)100是集 線器體系結(jié)構(gòu)的一個示例。計算機系統(tǒng)100包括用來處理數(shù)據(jù)信號的 處理器102。處理器102可以例如是復(fù)雜指令集計算機(CISC)微處理器、精簡指令集計算(RISC)微處理器、超長指令字(VLIW)微處理器、 執(zhí)行指令集組合的處理器或比如數(shù)字信號處理器的任何其它處理器 設(shè)備。處理器102耦合至能夠在處理器102和系統(tǒng)100中的其它部件 之間傳送數(shù)據(jù)信號的處理器總線110。系統(tǒng)100的元件執(zhí)行它們?yōu)楸?領(lǐng)域技術(shù)人員所熟知的常規(guī)功能。在一個實施例中,處理器102包括一級(L1)內(nèi)部高速緩存存儲器 104。取決于體系結(jié)構(gòu),處理器102能夠具有單個內(nèi)部高速緩存或多 級內(nèi)部高速緩存。作為選擇,在另一個實施例中,高速緩存存儲器能 夠位于處理器102的外部。根據(jù)特定實現(xiàn)方式和需要,其它的實施例 還可以包括內(nèi)部和外部高速緩存的組合。寄存器文件106能夠?qū)⒉煌?類型的數(shù)據(jù)存儲在包括整數(shù)寄存器、浮點寄存器、狀態(tài)寄存器和指令 指針寄存器的各種寄存器中。包括用來執(zhí)行整數(shù)和浮點操作的邏輯的執(zhí)行單元108也位于處 理器102中。處理器102還包括存儲特定宏指令的微代碼的微代碼 (ucode)ROM。對于該實施例而言,執(zhí)行單元108包括用來處理緊縮 指令集109的邏輯。在一個實施例中,緊縮指令集109包括用于比較 多個操作數(shù)的元素的緊縮串比較指令。通過在通用處理器102的指令 集中包括緊縮指令集109,連同用來執(zhí)行這些指令的相關(guān)電路,許多 多媒體應(yīng)用所使用的操作可以使用通用處理器102中的緊縮數(shù)據(jù)來 執(zhí)行。因此,通過使用用于對緊縮數(shù)據(jù)執(zhí)行操作的處理器數(shù)據(jù)總線的 全帶寬,能夠加速并更有效地執(zhí)行許多多媒體應(yīng)用。這能夠減少為了 同時對一個數(shù)據(jù)元素執(zhí)行一個或多個操作而需要跨處理器數(shù)據(jù)總線 傳輸較小數(shù)據(jù)單元。執(zhí)行單元108的可選實施例還能夠用在微控制器、嵌入式處理 器、圖形設(shè)備、DSP和其它類型的邏輯電路中。系統(tǒng)100包括存儲器 120。存儲器120能夠是動態(tài)隨機訪問存儲器(DRAM)設(shè)備、靜態(tài)隨 機訪問存儲器(SRAM)設(shè)備、閃存設(shè)備或其它存儲器設(shè)備。存儲器120 能夠存儲指令和/或數(shù)據(jù),所述指令和/或數(shù)據(jù)由能夠由處理器102執(zhí) 行的數(shù)據(jù)信號來表示。系統(tǒng)邏輯芯片116耦合至處理器總線IIO和存儲器120。所圖示的實施例中的系統(tǒng)邏輯芯片116是存儲器控制器集線器(MCH)。處理 器102能夠經(jīng)由處理器總線110與MCH 116進行通信。MCH 116為 指令和數(shù)據(jù)存儲以及為圖形命令、數(shù)據(jù)和文本的存儲提供了到存儲器 120的高帶寬存儲器路徑118。 MCH 116用來引導(dǎo)處理器102、存儲 器120和系統(tǒng)100中的其它部件之間的數(shù)據(jù)信號,并且用來橋接處理 器總線IIO、存儲器120和系統(tǒng)I/0 122之間的數(shù)據(jù)信號。在一些實 施例中,系統(tǒng)邏輯芯片116能夠提供用于耦合至圖形控制器112的圖 形端口。 MCH 116通過存儲器接口 118耦合至存儲器120。圖形卡 112通過加速圖形端口(AGP)互連114耦合至MCH 116。系統(tǒng)100使用專有集線器接口總線122將MCH 116耦合至I/O 控制器集線器(ICH)130。 ICH 130提供經(jīng)由本地I/O總線到一些I/O 設(shè)備的直接連接。所述本地I/0總線是用于將外圍設(shè)備連接至存儲器 120、芯片組和處理器102的高速I/O總線。 一些示例是音頻控制器、 固件集線器(閃存BIOS)128、無線收發(fā)器126、數(shù)據(jù)存儲設(shè)備124、 包含用戶輸人和鍵盤接口的遺留I/0控制器、諸如通用串行總線(USB) 的串行擴展端口以及網(wǎng)絡(luò)控制器134。數(shù)據(jù)存儲設(shè)備124可以包括硬 盤驅(qū)動器、軟盤驅(qū)動器、CD-ROM設(shè)備、閃存設(shè)備或其它大容量存 儲設(shè)備。對于系統(tǒng)的另一個實施例而言,能夠在系統(tǒng)芯片使用用來執(zhí)行具 有串比較指令的算法的執(zhí)行單元。系統(tǒng)芯片的一個實施例包括處理器 和存儲器。 一個這樣的系統(tǒng)的存儲器是閃存。所述閃存能夠與處理器 和其它系統(tǒng)組件位于相同的管芯上。此外,例如存儲器控制器或圖形 控制器之類的其它邏輯模塊也能夠位于系統(tǒng)芯片上。圖1B表示實現(xiàn)本發(fā)明一個實施例原理的數(shù)據(jù)處理系統(tǒng)140。本 領(lǐng)域技術(shù)人員很容易理解,在此所描述的實施例能夠用于可替換的處 理系統(tǒng),而不脫離本發(fā)明的范圍。計算機系統(tǒng)140包括能夠執(zhí)行包括串比較操作的SIMD操作的處 理核心159。對于一個實施例而言,處理核心159表示任意類型體系 結(jié)構(gòu)的處理單元,包括CISC、 RISC或VLIW類型體系結(jié)構(gòu),但并不 局限于此。處理核心159還適于以一種或多種處理技術(shù)來制造,并且通過足夠詳細地表示在機器可讀介質(zhì)上,可能適于方便所述制造。處理核心159包括執(zhí)行單元142、 一組寄存器文件145和解碼器 144。處理核心159還包括對于理解本發(fā)明不必需的附加電路(未示 出)。執(zhí)行單元142用于執(zhí)行由處理核心159所接收的指令。除了識 別典型的處理器指令之外,執(zhí)行單元142還能夠識別用于對緊縮數(shù)據(jù) 格式執(zhí)行操作的緊縮指令集143中的指令。緊縮指令集143包括用于 支持串比較操作的指令,并且還包括其它緊縮指令。執(zhí)行單元142通 過內(nèi)部總線耦合至寄存器文件145。寄存器文件145表示存儲核心159 上用于存儲包括數(shù)據(jù)的信息的存儲區(qū)域。如之前所提及的,應(yīng)當(dāng)理解, 用于存儲緊縮數(shù)據(jù)的存儲區(qū)域并不是關(guān)鍵的。執(zhí)行單元142耦合至解 碼器144。解碼器144用于將處理核心159所接收的指令解碼為控制 信號和/或微代碼進入點。響應(yīng)于這些控制信號和/或微代碼進入點, 執(zhí)行單元142執(zhí)行適當(dāng)?shù)牟僮?。處理核?59與總線141相耦合以與各種其它系統(tǒng)設(shè)備進行通 信,例如,所述其它系統(tǒng)設(shè)備可以包括同步動態(tài)隨機訪問存儲器 (SDRAM)控制器146、靜態(tài)隨機訪問存儲器(SRAM)控制器147、突 發(fā)閃存(burst flash)接口 148、個人計算機存儲卡國際協(xié)會(PCMCIA)/ 緊密閃存(CF)卡控制器149、液晶顯示(LCD)控制器150、直接存儲器 訪問(DMA)控制器151和可選的總線主接口 152,但并不局限于此。 在一個實施例中,數(shù)據(jù)處理系統(tǒng)140還可以包括用于經(jīng)由I/O總線153 與各種I/O設(shè)備進行通信的I/O橋154。例如,這樣的I/O設(shè)備可以 包括通用異步接收器/發(fā)射器(UART)155、通用串行總線(USB)156、 藍牙無線UART 157和I/O擴展接口 158,但并不局限于此。數(shù)據(jù)處理系統(tǒng)140的一個實施例提供移動、網(wǎng)絡(luò)和/或無線通信, 并且處理核心159能夠執(zhí)行包括串比較操作的SIMD操作。處理核心 159可以利用包括諸如Walsh-Hadamard變換、快速傅立葉變換(FFT)、 離散余弦變換(DCT)及其各自的反變換之類的離散變換的各種音頻、 視頻、成像和通信算法;諸如顏色空間變換、視頻編碼運動估計或視 頻解碼運動補償之類的壓縮/解壓縮技術(shù);以及諸如脈沖編碼調(diào)制 (PCM)之類的調(diào)制/解調(diào)(MODEM)功能,來進行編程。圖1C表示能夠執(zhí)行SIMD串比較操作的數(shù)據(jù)處理系統(tǒng)的又一個 可選實施例。根據(jù)一個可選實施例,數(shù)據(jù)處理系統(tǒng)160可以包括主處 理器166、 SIMD協(xié)處理器161、高速緩存存儲器167和輸入/輸出系 統(tǒng)168。輸入/輸出系統(tǒng)168可選地耦合至無線接口 169。 SIMD協(xié)處 理器161能夠執(zhí)行包括串比較操作的SIMD操作。處理核心170可適 于以一種或多種處理技術(shù)來制造,并且通過足夠詳細地表示在機器可 讀介質(zhì)上,可以適于方便包括處理核心170的數(shù)據(jù)處理系統(tǒng)160的全 部或部分制造。對于一個實施例而言,SIMD協(xié)處理器161包括執(zhí)行單元162和 一組寄存器文件164。主處理器165的一個實施例包括解碼器165, 用來識別包括由執(zhí)行單元162執(zhí)行的SIMD串比較指令的指令集163 的指令。對于可選實施例而言,SIMD協(xié)處理器161還包括解碼器 165B的至少一部分,用來解碼指令集163的指令。處理核心170還 包括對于理解本發(fā)明實施例來說不需要的附加電路(未示出)。在操作時,主處理器166執(zhí)行一個數(shù)據(jù)處理指令流,其控制包括 與高速緩存存儲器167和輸入/輸出系統(tǒng)168的交互的一般類型的數(shù) 據(jù)處理操作。SIMD協(xié)處理器指令嵌入在所述數(shù)據(jù)處理指令流中。主 處理器166的解碼器165將這些SIMD協(xié)處理器指令識別為應(yīng)當(dāng)由所 附的SIMD協(xié)處理器161執(zhí)行的類型。因此,主處理器166將這些 SIMD協(xié)處理器指令(或表示SIMD協(xié)處理器指令的控制信號)發(fā)布到 協(xié)處理器總線166上,任意所附的SIMD協(xié)處理器從協(xié)處理器總線 166上接收這些SIMD協(xié)處理器指令。在這種情形下,SIMD協(xié)處理 器161將接受并執(zhí)行任何接收的針對其的SIMD協(xié)處理器指令??梢越?jīng)由無線接口 169接收數(shù)據(jù)以供SIMD協(xié)處理器指令處理。 對于一個示例,可以以數(shù)字信號的形式接收語音通信,所述數(shù)字信號 可以由SIMD協(xié)處理器指令處理以再次生成表示語音通信的數(shù)字音 頻采樣。對于另一個示例,可以以數(shù)字比特流的形式接收壓縮的音頻 和/或視頻,所述數(shù)字比特流可以由SIMD協(xié)處理器指令處理以再次 生成數(shù)字音頻采樣和/或運動視頻幀。對于處理核心170的一個示例 而言,主處理器166和SIMD協(xié)處理器161集成為包括執(zhí)行單元162、一組寄存器文件164和解碼器165的單個處理核心170,以識別包括 SIMD串比較指令的指令集163的指令。圖2是根據(jù)本發(fā)明一個實施例的處理器200的微體系結(jié)構(gòu)的框 圖,其中處理器200包括用來執(zhí)行串比較指令的邏輯電路。對于串比 較指令的一個實施例而言,所述指令能夠?qū)⒌谝徊僮鲾?shù)的每個數(shù)據(jù)元 素與第二操作數(shù)的每個數(shù)據(jù)元素進行比較,并且存儲指示每個比較是 否匹配的指示符。在一些實施例中,串比較指令能夠被實現(xiàn)為對大小 為字節(jié)、字、雙字、四字等以及數(shù)據(jù)類型為諸如整數(shù)和浮點數(shù)據(jù)類型 的數(shù)據(jù)元素進行操作。在一個實施例中,順序前端201是處理器200 的一部分,其提取待執(zhí)行的宏指令并且準(zhǔn)備它們以備稍后在處理器管 線中使用。前端201可以包括若干個單元。在一個實施例中,指令預(yù) 取器226從存儲器提取宏指令并且將它們提供至指令解碼器228,而 指令解碼器228又將它們解碼為機器能夠執(zhí)行的稱為微指令或微操 作(也稱為micro叩或uops)的原語。在一個實施例中,追蹤緩存(tmce cache)230取得解碼的微指令并且將它們匯編到微指令隊列234中的 編程排序序列或蹤跡中以供執(zhí)行。當(dāng)追蹤緩存230遇到復(fù)雜的宏指令 時,微代碼ROM232提供完成該操作所需的微指令。許多宏指令被轉(zhuǎn)換為單個微操作,而其它的則需要若干個微指令 來完成整個操作。在一個實施例中,如果需要多于四個的微操作來完 成宏指令,則解碼器228訪問微代碼ROM 232來執(zhí)行所述宏指令。 對于一個實施例而言,緊縮串比較指令能夠被解碼為在指令解碼器 228處進行處理的少數(shù)微操作。在另一個實施例中,若完成操作需要 多個微操作,則用于緊縮串比較算法的指令能夠存儲在微代碼ROM 232內(nèi)。追蹤緩存230參照進入點可編程邏輯陣列(PLA)以確定用于 讀取微代碼ROM 232中的串比較算法的微代碼序列的正確微指令指 針。在微代碼ROM 232完成當(dāng)前宏指令的順序微操作之后,機器的 前端201繼續(xù)從追蹤緩存230提取微指令。一些SIMD和其它多媒體類型的指令是相當(dāng)復(fù)雜的指令。大多數(shù) 浮點相關(guān)指令也是復(fù)雜指令。這樣,當(dāng)指令解碼器228遇到復(fù)雜的宏 指令時,在適當(dāng)?shù)奈恢迷L問微代碼ROM 232以獲取該宏指令的微代碼序列。執(zhí)行該宏指令所需的各個微操作被傳輸至無序執(zhí)行引擎203, 以在適當(dāng)?shù)恼麛?shù)和浮點執(zhí)行單元進行執(zhí)行。無序執(zhí)行引擎203是準(zhǔn)備微指令以供執(zhí)行的地方。無序執(zhí)行邏輯 具有多個緩沖器來使微指令流平滑并對其重新排序,以在它們沿管線 進行時優(yōu)化性能并得到調(diào)度以供執(zhí)行。分配器邏輯分配每個微指令需 要的機器緩沖器和資源以供執(zhí)行。寄存器重命名邏輯將邏輯寄存器重 命名至寄存器文件的入口。在指令調(diào)度器存儲器調(diào)度器、快速調(diào)度 器202、慢速/一般浮點調(diào)度器204和簡單浮點調(diào)度器206之前,所述 分配器還為兩個微指令隊列之一中的每個微指令分配入口 ,所述兩個 微指令隊列一個用于存儲器操作, 一個用于非存儲器操作。微指令調(diào) 度器202、 204、 206基于它們所依賴的輸入寄存器操作數(shù)源的準(zhǔn)備就緒以及微指令完成它們的操作所需的執(zhí)行資源的可用性來確定微指 令何時準(zhǔn)備好執(zhí)行。該實施例的快速調(diào)度器202能夠在主時鐘周期的 每半個周期進行調(diào)度,而其它調(diào)度器在每個主處理器時鐘周期僅調(diào)度 一次。這些調(diào)度器對用來調(diào)度供執(zhí)行的微指令的分派端口進行仲裁。 寄存器文件208、 210位于調(diào)度器202、 204、 206和執(zhí)行模塊211 中的執(zhí)行單元212、 214、 216、 218、 220、 222、 224之間。存在分別 用于整數(shù)和浮點操作的分離寄存器文件208、 210。在其它實施例中,所述整數(shù)和浮點寄存器可以位于相同的寄存器文件中。該實施例的每 個寄存器文件208、 210還包括旁路網(wǎng)絡(luò),所述旁路網(wǎng)絡(luò)能夠繞過還沒有被寫入寄存器文件的剛完成的結(jié)果或?qū)⑵滢D(zhuǎn)發(fā)至新的從屬微指 令。整數(shù)寄存器文件208和浮點寄存器文件210還能夠互相傳輸數(shù)據(jù)。 對于一個實施例而言,整數(shù)寄存器文件208被分為兩個分離的寄存器 文件, 一個寄存器文件用于數(shù)據(jù)的低序32位,而第二寄存器文件用 于數(shù)據(jù)的高序32位。因為浮點指令典型地具有64至128位寬度的操 作數(shù),所以一個實施例的浮點寄存器文件210具有128位寬的入口。 執(zhí)行模塊211包含實際執(zhí)行指令的執(zhí)行單元212、 214、 216、 218、 220、 222、 224。該部分包括存儲微指令需要執(zhí)行的整數(shù)和浮點數(shù)據(jù) 操作數(shù)值的寄存器文件208、 210。該實施例的處理器200由多個執(zhí) 行單元構(gòu)成地址生成單元(AGU)212、 AGU 214、快速ALU 216、快速ALU 218、慢速ALU 220、浮點ALU 222、浮點移動單元224。 對于該實施例而言,浮點執(zhí)行模塊222、 224執(zhí)行浮點、MMX、 SIMD 和SSE操作。該實施例的浮點ALU 222包括64位乘64位的浮點除 法器,用來執(zhí)行除法、平方根和余數(shù)微操作。對于本發(fā)明的實施例而 言,涉及浮點數(shù)值的任何動作均利用浮點硬件進行。例如,整數(shù)格式 和浮點格式之間的變換涉及浮點寄存器文件。相似地,浮點除法操作 在浮點除法器中進行。另一方面,非浮點數(shù)和整數(shù)類型利用整數(shù)硬件 資源進行處理。簡單的、非常頻繁的ALU操作轉(zhuǎn)至高速ALU執(zhí)行單 元216、 218。該實施例的快速ALU216、 218能夠以半個時鐘周期的 有效等待時間執(zhí)行快速操作。對于一個實施例而言,最復(fù)雜的整數(shù)操 作轉(zhuǎn)至慢速ALU 220,原因在于慢速ALU 220包括用于長等待時間 操作類型的整數(shù)執(zhí)行硬件,例如乘法器、移位、標(biāo)志邏輯和分支處理。 存儲器加載/存儲操作由AGU 212、 214執(zhí)行。對于該實施例而言, 在對64位數(shù)據(jù)操作數(shù)執(zhí)行整數(shù)操作的情況下對ALU216、 218、 220 進行描述。在可選實施例中,ALU216、 218、 220能夠被實現(xiàn)為支持 包括16、 32、 128、 256等的多種數(shù)據(jù)位。類似地,浮點單元222、 224能夠被實現(xiàn)為支持具有各種位寬度的操作數(shù)范圍。對于一個實施 例而言,浮點單元222、 224能夠結(jié)合SIMD和多媒體指令對128位 寬的緊縮數(shù)據(jù)操作數(shù)進行操作。在該實施例中,微指令調(diào)度程序202、 204、 206在父加載執(zhí)行完 成之前分派附屬操作。由于微指令在處理器200中不確定地調(diào)度和執(zhí) 行,所以處理器200還包括用來處理存儲器失敗的邏輯。如果在數(shù)據(jù) 高速緩存中數(shù)據(jù)加載失敗,則可能在留下了具有臨時錯誤數(shù)據(jù)的調(diào)度 程序的管線中存在運行中的從屬操作。重放機制追蹤并重新執(zhí)行使用 錯誤數(shù)據(jù)的指令。僅需要重放從屬操作,而允許獨立操作完成。處理 器的一個實施例的所述調(diào)度程序和重放機制還被設(shè)計為捕捉用于串 比較操作的指令序列。在此使用的術(shù)語"寄存器"是指被用作識別操作數(shù)的部分宏指令 的板上處理器存儲單元。換句話說,在此提到的寄存器是從處理器外 部(從編程者的角度)可見的那些寄存器。然而,實施例的寄存器不應(yīng)當(dāng)在含義上局限于用于特定電路類型。而是,實施例的寄存器僅需要 能夠存儲和提供數(shù)據(jù),并且執(zhí)行在此所描述的功能。在此所描述的寄 存器可以由使用任意數(shù)量的不同技術(shù)的處理器內(nèi)的電路來實現(xiàn),例如 專用物理寄存器、使用寄存器重命名的動態(tài)分配物理寄存器、專用和 動態(tài)分配物理寄存器的組合等。在一個實施例中,整數(shù)寄存器存儲32位整數(shù)數(shù)據(jù)。 一個實施例的寄存器文件還包含8個用于緊縮數(shù)據(jù) 的多媒體SIMD寄存器。對于以下的討論而言,寄存器被理解為被設(shè) 計成保存緊縮數(shù)據(jù)的數(shù)據(jù)寄存器,例如利用加利福尼亞圣克拉拉的 Intel公司的MMX技術(shù)致能的微處理器中的64位寬度的MMXW寄 存器(在一些實例中也被稱作'mm'寄存器)。這些可以是整數(shù)或浮 點形式的MMX寄存器能夠利用補充SIMD和SSE指令的緊縮數(shù)據(jù) 元素來進行操作。類似地,與SSE2、 SSE3、 SSE4或其后的(通常稱 作"SSEx")技術(shù)有關(guān)的128位寬度的XMM寄存器也能夠被用來保 存這樣的緊縮數(shù)據(jù)操作數(shù)。在該實施例中,在存儲緊縮數(shù)據(jù)和整數(shù)數(shù) 據(jù)時,所述寄存器不需要在兩種數(shù)據(jù)類型之間進行區(qū)分。在以下附圖的示例中,描述了多個數(shù)據(jù)操作數(shù)。圖3A表示根據(jù) 本發(fā)明一個實施例的多媒體寄存器中的各種緊縮數(shù)據(jù)類型表示。圖 3A表示了 128位寬度的操作數(shù)的緊縮字節(jié)310、緊縮字320和緊縮 雙字(dword)330的數(shù)據(jù)類型。該示例的緊縮字節(jié)格式310為128位長 度,并且包含16個緊縮字節(jié)數(shù)據(jù)元素。字節(jié)在此定義為8位數(shù)據(jù)。 每個字節(jié)數(shù)據(jù)元素的信息如下存儲字節(jié)0存儲在位7至位0,字節(jié) 1存儲在位15至位8,字節(jié)2存儲在位23至位16,以及最后的字節(jié) 15存儲在位127至位120。因此,寄存器中的所有可用位都被使用。 該存儲安排增加了處理器的存儲效率。而且,通過訪問16個數(shù)據(jù)元 素,現(xiàn)在能夠并行地對16個數(shù)據(jù)元素執(zhí)行一個操作。通常,數(shù)據(jù)元素是與相同長度的其它數(shù)據(jù)元素一同存儲在單個寄 存器或存儲器單元中的單條數(shù)據(jù)。在與SSEx技術(shù)相關(guān)的緊縮數(shù)據(jù)序 列中,存儲在XMM寄存器中的數(shù)據(jù)元素的數(shù)目是128位除以單個數(shù) 據(jù)元素的位長度。類似地,在與MMX和SSE技術(shù)相關(guān)的緊縮數(shù)據(jù) 序列中,存儲在MMX寄存器中的數(shù)據(jù)元素數(shù)目是64位除以單個數(shù)據(jù)元素的位長度。雖然圖3A中所示的數(shù)據(jù)類型為128位長度,但本 發(fā)明的實施例還能夠操作64位寬或其它大小的操作數(shù)。該示例中的 緊縮字格式320為128位長度,并且包含8個緊縮字數(shù)據(jù)元素。每個 緊縮字包含16位信息。圖3A的緊縮雙字格式330為128位長度, 并且包含4個緊縮雙字數(shù)據(jù)元素。每個緊縮雙字數(shù)據(jù)元素包含32位 信息。緊縮四字為128位長度,并且包含2個緊縮四字數(shù)據(jù)元素。圖3B表示可選的寄存器內(nèi)數(shù)據(jù)存儲格式。每個緊縮數(shù)據(jù)能夠包 括不止一個獨立數(shù)據(jù)元素。表示了 3種緊縮數(shù)據(jù)格式緊縮半倍341、 緊縮單倍342和緊縮雙倍343。緊縮半倍341、緊縮單倍342和緊縮 雙倍343的一個實施例包含定點數(shù)據(jù)元素。對于可選實施例而言,緊 縮半倍(packed half)341、緊縮單倍(packed single)342和緊縮雙倍 (packed double)343中的一個或多個可以包含浮點數(shù)據(jù)元素。緊縮半 倍341的一個可選實施例為包含8個16位數(shù)據(jù)元素的128位長度。 緊縮單倍342的一個實施例為128位長度并且包含4個32位數(shù)據(jù)元 素。緊縮雙倍343的一個實施例為128位長度并且包含2個64位數(shù) 據(jù)元素??梢岳斫?,這樣的緊縮數(shù)據(jù)格式可以進一步擴展到其它寄存 器長度,例如擴展到96位、160位、192位、224位、256位或更多。圖3C表示根據(jù)本發(fā)明一個實施例的多媒體寄存器中的各種有符 號和無符號緊縮數(shù)據(jù)類型表示。無符號緊縮字節(jié)表示344示出了無符 號緊縮字節(jié)在SIMD寄存器中的存儲。每個字節(jié)數(shù)據(jù)元素的信息存儲 為字節(jié)0存儲在位7至位G,字節(jié)1存儲在位15至位8,字節(jié)2存 儲在位23至位16,以及最后的字節(jié)15存儲在位127至位120。因此, 寄存器中的所有可用位都被使用。這樣的存儲排列能夠增加處理器的 存儲效率。而且,通過訪問16個數(shù)據(jù)元素,現(xiàn)在能夠以并行的方式 對16個數(shù)據(jù)元素執(zhí)行一個操作。有符號緊縮字節(jié)表示345表示有符 號緊縮字節(jié)的存儲。注意,每個字節(jié)數(shù)據(jù)元素的第8位是符號指示符。 無符號緊縮字表示346示出了字7至字0如何存儲在SIMD寄存器中。 有符號緊縮字表示347與無符號緊縮字寄存器內(nèi)表示346相似。注意, 每個字數(shù)據(jù)元素的第16位是符號指示符。無符號緊縮雙字表示348 示出了如何存儲雙字數(shù)據(jù)元素。有符號緊縮雙字表示349與無符號緊縮雙字寄存器內(nèi)表示348相似。注意,必需的符號位是每個雙字數(shù)據(jù) 元素的第32位。在一個實施例中, 一個或多個操作數(shù)可以是恒定的, 從而在它們所關(guān)聯(lián)的一個或多個指令的實例之間不發(fā)生改變。圖3D是具有32位或更多位的操作編碼(操作碼)格式360以及與 在可在萬維網(wǎng)(www)intel.com/design/litcentr上從加利福尼亞圣克拉 拉的Intel公司獲f導(dǎo)的"IA-32 Intel Architecture Software Developer's Manual Volume 2: Instruction Set Reference"中所描述的操作碼格式類 型相對應(yīng)的寄存器/存儲器操作數(shù)尋址模式的一個實施例的描述。在 一個實施例中,可以通過一個或多個字段361和362對串比較操作進 行編碼。可以標(biāo)識每個指令的多達兩個操作數(shù)的位置,包括多達兩個 源操作數(shù)標(biāo)識符364和365。對于串比較指令的一個實施例而言,目 標(biāo)操作數(shù)標(biāo)識符366與源操作數(shù)標(biāo)識符364相同,而在其它實施例中 它們不同。對于可選實施例而言,目標(biāo)操作數(shù)標(biāo)識符366與源操作數(shù) 標(biāo)識符365相同,而在其它實施例中它們不同。在串比較指令的一個 實施例中,由源操作數(shù)標(biāo)識符364和365標(biāo)識的源操作數(shù)中的一個被 串比較操作的結(jié)果所覆蓋,而在其它實施例中,標(biāo)識符364對應(yīng)于源 寄存器元素,并且標(biāo)識符365對應(yīng)于目標(biāo)寄存器元素。對于串比較指 令的一個實施例而言,操作數(shù)標(biāo)識符364和365可以被用來標(biāo)識32 位或64位源和目標(biāo)操作數(shù)。圖3E是具有40位或更多位的另一個可選操作編碼(操作碼)格式 370的描述。操作碼格式370與操作碼格式360相對應(yīng),并且包括任 選的前綴字節(jié)378。串比較操作的類型可以由字段378、 371和372 中的一個或多個進行編碼。每個指令中多達兩個操作數(shù)的位置可以由 源操作數(shù)標(biāo)識符374和375以及由前綴字節(jié)378來標(biāo)識。對于串比較 指令的一個實施例而言,前綴字節(jié)378可以被用來標(biāo)識32位、64位 或128位的源和目標(biāo)操作數(shù)。對于串比較指令的一個實施例而言,目 標(biāo)操作數(shù)標(biāo)識符376與源操作數(shù)標(biāo)識符374相同,而在其它實施例中 它們不同。對于可選實施例而言,目標(biāo)操作數(shù)標(biāo)識符376與源操作數(shù) 標(biāo)識符375相同,而在其它的每個元素與由操作數(shù)標(biāo)識符374和375所標(biāo)識的另一個操作數(shù)的每 個元素進行比較,并且被所述串比較操作的結(jié)果所覆蓋,而在其它實 施例中,由標(biāo)識符374和375所標(biāo)識的操作數(shù)的串比較被寫入另一個 寄存器的另一個數(shù)據(jù)元素中。操作碼格式360和370允許寄存器到寄 存器、存儲器到寄存器、寄存器經(jīng)存儲器、寄存器經(jīng)寄存器、寄存器 經(jīng)即時、寄存器到存儲器尋址,所述尋址部分地由MOD字段363和 373以及任選的基址加比例變址(scale-index-base)和置換字節(jié)所指定。接下來轉(zhuǎn)向圖3F,在一些可選實施例中,64位單指令多數(shù)據(jù) (SIMD)算術(shù)操作可以通過協(xié)處理器數(shù)據(jù)處理(CDP)指令來執(zhí)行。操作 編碼(操作碼)格式380描述了一個這樣的CDP指令,其具有CDP操 作碼字段382和389。對于串比較操作的可選實施例而言,CDP指令 的類型可以由一個或多個字段383、 384、 387和388進行編碼。可以 標(biāo)識每個指令中多達三個操作數(shù)的位置,包括多達兩個源操作數(shù)標(biāo)識 符385和390以及一個目標(biāo)操作數(shù)標(biāo)識符386。協(xié)處理器的一個實施 例能夠?qū)?、 16、 32和64位數(shù)值進行操作。對于一個實施例而言, 對整數(shù)數(shù)據(jù)元素執(zhí)行串比較操作。在一些實施例中,可以使用條件字 段381來有條件地執(zhí)行串比較指令。對于一些串比較指令而言,源數(shù) 據(jù)大小可以由字段383進行編碼。在串比較指令的一些實施例中,能 夠在SIMD字段上進行零(Z)、負數(shù)(N)、進位(C)和溢出(V)檢測。對 于一些指令而言,飽和的類型可以由字段384進行編碼。在一個實施例中,字段,或稱"標(biāo)志"可以用來指示串比較操作 的結(jié)果何時非零。在一些實施例中,可以使用其它字段,諸如用來指 示源元素何時無效的標(biāo)志,以及用來指示串比較操作的結(jié)果的最低或 最高有效位的標(biāo)志。圖4是根據(jù)本發(fā)明的用來對緊縮數(shù)據(jù)操作數(shù)執(zhí)行串比較操作的 邏輯的一個實施例的框圖。本發(fā)明的實施例能夠被實現(xiàn)為具有比如如 上所述的各種操作數(shù)類型的函數(shù)。對于一種實施方式而言,根據(jù)本發(fā) 明的串比較操作被實現(xiàn)為一組用來對特定數(shù)據(jù)類型進行操作的指令。 例如,提供緊縮串比較指令來執(zhí)行32位數(shù)據(jù)類型的比較,所述數(shù)據(jù) 類型包括整數(shù)和浮點。類似地,提供緊縮串比較指令來執(zhí)行64位數(shù)據(jù)類型的比較,所述數(shù)據(jù)類型包括整數(shù)和浮點。接下來的討論和以下 示例用來表示用于比較數(shù)據(jù)元素的比較指令的操作,而不關(guān)心元素表 示什么。為了簡要起見, 一些示例將示出一個或多個串比較指令的操 作,其中數(shù)據(jù)元素表示文本字。在一個實施例中,串比較指令將第一數(shù)據(jù)操作數(shù)DATAA410的 每個元素與第二數(shù)據(jù)操作數(shù)DATAB 420的每個元素進行比較,并且 將每個比較的結(jié)果存儲在RESULTANT 440寄存器中。對于以下的討 論而言,DATAA、 DATA B和RESULTANT通常被稱作寄存器,但 是并不局限于此,并且還包括寄存器、寄存器文件和存儲器單元。在 一個實施例中,文本串比較指令(例如,"PCMPxSTRy")被解碼為一 個微操作。在可選實施例中,每個指令可以被解碼為多個用來對數(shù)據(jù) 操作數(shù)執(zhí)行文本串比較操作的微操作。對于該示例而言,操作數(shù)410、 420是存儲在具有字寬度數(shù)據(jù)元素的源寄存器/存儲器中的128位寬度 的信息。在一個實施例中,操作數(shù)410、420保存在128位長度的SIMD 寄存器中,例如128位SSEx XMM寄存器。對于一個實施例而言, RESULTANT 440也是XMM數(shù)據(jù)寄存器。在其它實施例中, RESULTANT440可以是不同類型的寄存器,例如擴展寄存器(例如, "EAX")或存儲器單元。取決于特定的實施方式,所述操作數(shù)和寄 存器可以是例如32、 64和256位的其它長度,并且具有字節(jié)、雙字 或四字大小的數(shù)據(jù)元素。雖然該示例的數(shù)據(jù)元素是字大小,但是相同 的概念可以擴展到字節(jié)和雙字大小的元素。在一個實施例中,其中數(shù) 據(jù)操作數(shù)為64位寬度,則使用MMX寄存器來取代XMM寄存器。在一個實施例中,第一操作數(shù)410由一組8個數(shù)據(jù)元素構(gòu)成 A7、 A6、 A5、 A4、 A3、 A2、 Al禾B AO。第一和第二操作數(shù)的元素 之間的每個比較可以對應(yīng)于結(jié)果440中的數(shù)據(jù)元素位置。在一個實施 例中,第二操作數(shù)420由另一組8個數(shù)據(jù)段構(gòu)成B7、 B6、 B5、 B4、 B3、 B2、 Bl和BO。這里的數(shù)據(jù)段長度相等,并且每個包含單字(16 位)數(shù)據(jù)。然而,數(shù)據(jù)元素和數(shù)據(jù)元素位置能夠具有不同于字的其它 粒度。如果每個數(shù)據(jù)元素為字節(jié)(8位)、雙字(32位)或四字(64位), 則128位操作數(shù)將分別具有16個字節(jié)寬度、4個雙字寬度或2個四字寬度的數(shù)據(jù)元素。本發(fā)明的實施例并不局限于特定長度的數(shù)據(jù)操作 數(shù)或數(shù)據(jù)段,并且對于每種實施方式能夠采用適當(dāng)?shù)拇笮?。操作?shù)410、 420能夠位于寄存器或存儲器單元或寄存器文件或 以上的組合中。數(shù)據(jù)操作數(shù)410、 420連同文本串比較指令一起被發(fā) 送至處理器中的執(zhí)行單元的串比較邏輯430。在一個實施例中,在所 述指令到達執(zhí)行單元之前,所述指令可能已在處理器管線中事先被解 碼。因此,所述串比較指令可以是微操作(uop)或一些其他解碼格式 的形式。對于一個實施例而言,在串比較邏輯430接收到兩個數(shù)據(jù)操 作數(shù)410、 420。在一個實施例中,文本串比較邏輯生成兩個數(shù)據(jù)操 作數(shù)的元素是否相等的指示。在一個實施例中,僅比較每個操作數(shù)的 有效元素,這可以由每個操作數(shù)中的每個元素的另一個寄存器或存儲 器單元進行指示。在一個實施例中,將操作數(shù)410的每個元素與操作 數(shù)420的每個元素進行比較,這樣生成的比較結(jié)果的數(shù)目等于操作數(shù) 410的元素數(shù)乘以操作數(shù)420的元素數(shù)。例如,在每個操作數(shù)410和 420均為32位數(shù)值的情況下,結(jié)果寄存器440將存儲由串比較邏輯 430所執(zhí)行的文本比較操作的多達32X32個結(jié)果指示符。在一個實 施例中,來自第一和第二操作數(shù)的數(shù)據(jù)元素是單精度的(例如,32位), 而在其它實施例中,來自第一和第二操作數(shù)的數(shù)據(jù)元素是雙精度的(例如,64位)。在另一些其它實施例中,第一和第二操作數(shù)可以包括 任意大小的整數(shù)元素,包括8、 16和32位。對于一個實施例而言,所有數(shù)據(jù)位置的數(shù)據(jù)元素都被并行處理。 在另一個實施例中,數(shù)據(jù)元素位置的特定部分能夠同時在一起處理。 在一個實施例中,結(jié)果440由操作數(shù)410和420中存儲的每個數(shù)據(jù)元 素之間進行的比較的多個結(jié)果構(gòu)成。特別是,在一個實施例中,所述 結(jié)果可以存儲的比較結(jié)果數(shù)目等于操作數(shù)410或420之一中的數(shù)據(jù)元 素數(shù)目的平方。在一個實施例中,所述結(jié)果可以僅存儲在操作數(shù)410和420的有 效數(shù)據(jù)元素之間進行的比較的比較結(jié)果。在一個實施例中,每個操作 數(shù)的數(shù)據(jù)元素可以明確或隱含地被指示為有效。例如,在一個實施例 中,每個操作數(shù)數(shù)據(jù)元素對應(yīng)于一個有效性指示符,諸如存儲在另一個存儲區(qū)域(如有效寄存器)內(nèi)的有效位。在一個實施例中,兩個操作 數(shù)的每個元素的有效位可以存儲在同一個有效寄存器中,而在其它實 施例中, 一個操作數(shù)的有效位可以存儲在第一有效寄存器中而另一操 作數(shù)的有效位可以存儲在第二有效寄存器中。在對操作數(shù)數(shù)據(jù)元素進 行比較或者結(jié)合之前,確定兩個數(shù)據(jù)元素是否都有效(例如通過檢查 對應(yīng)的有效位),從而僅在有效數(shù)據(jù)元素之間進行比較。在一個實施例中,可以通過使用一個或兩個操作數(shù)內(nèi)存儲的空或 "零"字段來隱含地指示每個操作數(shù)中的有效數(shù)據(jù)元素。例如,在一 個實施例中,可以在元素中存儲空字節(jié)(或其它大小)來指示比所述空 字節(jié)更重要的所有數(shù)據(jù)元素均無效,而比所述空字節(jié)更不重要的所有 數(shù)據(jù)元素均有效從而應(yīng)當(dāng)將比所述空字節(jié)更不重要的所有數(shù)據(jù)元素 與另 一操作數(shù)的對應(yīng)有效數(shù)據(jù)元素進行比較。此外,在一個實施例中, 一個操作數(shù)的有效數(shù)據(jù)元素可以被明確地指示(如之前所述),而另一 操作數(shù)的有效數(shù)據(jù)元素可以使用空字段來隱含地指示。在一個實施例 中,由與一個或多個源操作數(shù)內(nèi)的有效數(shù)據(jù)元素或子元素的數(shù)目相對 應(yīng)的計數(shù)來指示有效數(shù)據(jù)元素。不管指示每個操作數(shù)的有效數(shù)據(jù)元素的方法,在至少一個實施例 中,僅對每個操作數(shù)的被指示為有效的數(shù)據(jù)元素進行比較。在各個實 施例中,可以用多種方法執(zhí)行僅對有效數(shù)據(jù)元素進行的比較。出于提 供全面和可理解的說明的目的,以下對在兩個文本串操作數(shù)之間僅比 較有效數(shù)據(jù)元素的方法給出最佳概念化表達。然而,以下的描述僅僅 是如何對僅比較文本串操作數(shù)的有效數(shù)據(jù)元素進行最佳的概念化表 示或?qū)嵤┑囊粋€示例。在其它實施例中,其它的概念化表示或方法可 以用來說明如何對有效數(shù)據(jù)元素進行比較。在一個實施例中,不管操作數(shù)中的有效數(shù)據(jù)元素的數(shù)目是被明確 指示(例如,經(jīng)由有效寄存器中的有效位,或通過從最低有效位開始 的有效字節(jié)/字串?dāng)?shù)目的計數(shù))或隱含表示(例如,經(jīng)由操作數(shù)自身內(nèi)的 空字符),僅對每個操作數(shù)的有效數(shù)據(jù)元素互相進行比較。在一個實施例中,有效性指示符和將要比較的數(shù)據(jù)元素的聚合可在圖5中概念 化表示。參考圖5,在一個實施例中,陣列501和505包含分別指示第一 操作數(shù)和第二操作數(shù)的每個數(shù)據(jù)元素是否有效的項。例如,在以上說 明中,陣列501可以在第一操作數(shù)包含對應(yīng)的有效數(shù)據(jù)元素的每個陣 列元素中包含"l"。類似地,陣列505可以在第二操作數(shù)包含對應(yīng)的 有效數(shù)據(jù)元素的每個陣列元素中包含"l"。在一個實施例中,對于兩 個單獨的操作數(shù)中的每一個中存在的每個有效元素,陣列501和505 可以從陣列元素0開始包含若干個1。例如,在一個實施例中,如果 第一操作數(shù)包含4個有效元素,則陣列501可以僅在開始的四個陣列 元素中包含l,而陣列501的所有其它陣列元素可以是O。在一個實施例中,陣列501和505的大小均為16個元素,用來 表示兩個128位操作數(shù)的16個數(shù)據(jù)元素,所述數(shù)據(jù)元素每個大小為 8位(1字節(jié))。在其它實施例中,其中操作數(shù)的數(shù)據(jù)元素的大小為16 位(l個字),陣列501和505可以僅包含8個元素。在其它實施例中, 根據(jù)其對應(yīng)的操作數(shù)的大小,陣列501和505可以更大或更小。在一個實施例中,第一操作數(shù)的每個數(shù)據(jù)元素與第二操作數(shù)的每 個數(shù)據(jù)元素進行比較,其結(jié)果可以由iXj陣列510來表示。例如,表 示文本串的第一操作數(shù)的第一數(shù)據(jù)元素例如可以與表示另一個文本 串的另一個操作數(shù)的每個數(shù)據(jù)元素進行比較,并且對應(yīng)于第一操作數(shù) 的第一數(shù)據(jù)元素和第二操作數(shù)的每個數(shù)據(jù)元素之間的匹配,在陣列 510的第一行內(nèi)的每個陣列元素中存儲"1"??梢詫Φ谝徊僮鲾?shù)中的 每個數(shù)據(jù)元素重復(fù)該步驟,直至陣列510完成。在一個實施例中,可以生成具有iXj個項的第二陣列515來存儲 是否僅僅有效操作數(shù)數(shù)據(jù)元素相等的指示。例如,在一個實施例中, 陣列510的頂行511的每個項可以與對應(yīng)的有效陣列元素506以及有 效陣列元素502進行邏輯"與",并且將結(jié)果置于陣列515的對應(yīng)元 素516中。所述的"與"操作可以在陣列510的每個元素與有效陣列 501和505中的對應(yīng)元素之間完成,并且將結(jié)果置于陣列520的對應(yīng) 元素中。在一個實施例中,結(jié)果陣列520可以指示一個操作數(shù)中是否存在 與另一操作數(shù)中的一個或多個數(shù)據(jù)元素有關(guān)的數(shù)據(jù)元素。例如,結(jié)果陣列520可以存儲用來指示是否有任何數(shù)據(jù)元素處于由另一操作數(shù) 中的數(shù)據(jù)元素所定義的一組范圍之內(nèi)的位,這是通過將來自陣列515 的元素對進行"與"操作并且將所述"與"操作的所有結(jié)果進行"或" 操作而進行的。圖5還示出了結(jié)果陣列520,其用來存儲與至少兩個緊縮操作數(shù) 的數(shù)據(jù)元素之間的比較相關(guān)的各種指示符。例如,結(jié)果陣列520可以 存儲用來指示在兩個操作數(shù)之間是否存在任何相等數(shù)據(jù)元素的位,這 是通過將陣列515的對應(yīng)元素進行"或"操作而進行的。例如,如果 陣列515的任意陣列元素包含"l",則指示在操作數(shù)的有效數(shù)據(jù)元素 之間存在匹配,這接著會反映在結(jié)果陣列520中,其元素還可以被進 行"或"操作來確定多個操作數(shù)的任意有效數(shù)據(jù)元素是否相等。在一個實施例中,通過檢測結(jié)果陣列520內(nèi)的相鄰的"1"值而 在結(jié)果陣列520中檢測兩個操作數(shù)的數(shù)據(jù)元素之間的有效匹配的連 續(xù)串。在一個實施例中,這可以通過同時對兩個連續(xù)的結(jié)果陣列元素 進行"與"操作并且將一個"與"操作的結(jié)果與下一個結(jié)果項進行"與" 操作直至檢測到"0"為止來完成。在其它實施例中,可以使用其它 邏輯來檢測兩個緊縮操作數(shù)內(nèi)的數(shù)據(jù)元素的有效匹配的范圍。在一個實施例中,結(jié)果陣列520可以通過例如在相應(yīng)的結(jié)果陣列 項中返回"1"來指示兩個操作數(shù)的每個數(shù)據(jù)元素是否匹配。為了確 定所有的項是否相等,可以對結(jié)果陣列的項執(zhí)行異或(XOR)操作。在 其它實施例中,可以使用其它邏輯來確定兩個操作數(shù)的每個有效數(shù)據(jù) 元素是否相等。在一個實施例中,可以通過將測試串與其它串的相等大小的部分 進行比較并且在結(jié)果陣列內(nèi)指示所述測試串與其它串的所述部分之 間的匹配來檢測數(shù)據(jù)元素串在另一個數(shù)據(jù)元素串內(nèi)的某處是否出現(xiàn)。 例如,在一個實施例中,與第一操作數(shù)中的三個數(shù)據(jù)元素相對應(yīng)的3 個字符的測試串與第二串的第一組三個數(shù)據(jù)元素進行比較。如果檢測 到匹配,則可以通過在對應(yīng)于匹配的3個結(jié)果項中的一個或多個組中 存^t一個或多個"1"來在結(jié)果陣列中反映所述匹配。所述測試串可 以接著與另一操作數(shù)的接下來三個數(shù)據(jù)元素進行比較,或者可以將兩個之前的操作數(shù)數(shù)據(jù)元素和新的第三數(shù)據(jù)元素與所述測試串進行比 較,從而測試串隨著比較而沿其它操作數(shù)進行'滑動'。在一個實施例中,根據(jù)應(yīng)用程序,可以將結(jié)果陣列的項進行翻轉(zhuǎn) 或求負。在其它實施例中,僅有一些結(jié)果項可以被求負,例如僅有被 指示為與兩個操作數(shù)的數(shù)據(jù)元素之間的有效匹配相對應(yīng)的那些項。在其它實施例中,可以對結(jié)果陣列520的結(jié)果項執(zhí)行其它的操作。例如, 在一些實施例中,結(jié)果陣列520可以表示為掩碼值,而在其它實施例 中,所述結(jié)果陣列可以利用可被存儲在例如寄存器的存儲單元中的索 引值來進行表示。在一個實施例中,索引可以由所述結(jié)果陣列的一組 最高有效位表示,而在其它實施例中,所述索引可以由所述陣列的一 組最低有效位表示。在一個實施例中,所述索引可以由所設(shè)置的相對 于最低或最高有效位的偏移值表示。在一個實施例中,所述掩碼可以 是O擴展的,而在其它實施例中,其可以是字節(jié)/字掩碼或其它一些 粒度。在各個實施例中,將兩個或更多SIMD操作數(shù)的每個元素進行比 較時的上述每種變化可以作為單獨的各個指令來執(zhí)行。在其它實施例 中,可以通過改變單個指令的屬性來執(zhí)行上述變化,例如與指令相關(guān) 的即時字段。圖6示出了由一個或多個指令執(zhí)行來將兩個或更多 SIMD操作數(shù)的每個數(shù)據(jù)元素進行比較的各種操作。在一個實施例中, 由圖6中的操作所比較的每個操作數(shù)每個均表示一個文本串。在其它 實施例中,所述操作數(shù)可以表示其它一些信息或數(shù)據(jù)。參考圖6,在操作610,可以將第一 SIMD操作數(shù)601和第二 SIMD 操作數(shù)605的每個元素互相比較。在一個實施例中, 一個操作數(shù)可以 存儲在例如XMM寄存器的寄存器中,而另一個操作數(shù)可以存儲在另 一個XMM寄存器或存儲器中。在一個實施例中,可以由與執(zhí)行圖6 所示的操作的指令相對應(yīng)的即時字段來控制比較的類型。例如,在一 個實施例中,即時字段的兩位(例如,IMM8[1:0])可以用來指示將要 進行比較的數(shù)據(jù)元素是否為有符號字節(jié)、有符號字、無符號字節(jié)或無 符號字。在一個實施例中,所述比較的結(jié)果可以生成iXj陣列(例如, BoolRes[i,j])或iXj陣列的一些部分。并行地,在操作613,找到由操作數(shù)601和605表示的每個串的 末端,并且可以確定操作數(shù)601和605的每個元素的有效性。在一個 實施例中,通過在寄存器或存儲器單元內(nèi)設(shè)置對應(yīng)的一個或多個位而 明確指示操作數(shù)601和605的每個元素的有效性。在一個實施例中, 所述一個或多個位可以對應(yīng)于從操作數(shù)601和605的最低有效位位置 開始的連續(xù)有效的數(shù)據(jù)元素(例如,字節(jié))的數(shù)目。例如,根據(jù)操作數(shù) 的大小,可以使用諸如EAX或RAX寄存器之類的寄存器來存儲指 示第一操作數(shù)的每個數(shù)據(jù)元素的有效性的位。類似地,根據(jù)操作數(shù)的 大小,可以使用諸如EDX或RDX之類的寄存器來存儲指示第二操 作數(shù)的每個數(shù)據(jù)元素的有效性的位。在另一個實施例中,可以通過該 公開內(nèi)容中已討論的方式隱含地指示操作數(shù)601和605的每個元素的 有效性。在一個實施例中,在操作615,可以通過聚合函數(shù)(aggregationftmction)合并比較和有效性信息,以生成比較兩個操作數(shù)的元素的一些結(jié)果。在一個實施例中,所述聚合函數(shù)由與用來執(zhí)行兩個操作數(shù)的元素比較的指令相關(guān)聯(lián)的即時字段確定。例如,在一個實施例中,所述即時字段可以指示所述比較是否用來指示兩個操作數(shù)的任意數(shù)據(jù)元素是否相等、兩個操作數(shù)中的任意范圍(連續(xù)或非連續(xù))的數(shù)據(jù)元素是否相等、兩個操作數(shù)的每個數(shù)據(jù)元素是否相等或者多個操作數(shù)是否 共享至少一些數(shù)據(jù)元素的相等排序。在一個實施例中,在操作620,可以對所述聚合函數(shù)的結(jié)果(例如, 存儲在IntResl中)進行求負。在一個實施例中,即時字段的位(例如, IMM8[6:5])可以控制要對聚合函數(shù)結(jié)果執(zhí)行的求負函數(shù)的類型。例 如,即時字段可以指示聚合結(jié)果根本不會被求負、聚合函數(shù)的所有結(jié) 果都要被求負或者只有與操作數(shù)的有效元素相對應(yīng)的聚合結(jié)果才被 求負。在一個實施例中,所述求負操作的結(jié)果可以存儲在陣列(例如, IntRes2陣列)中。在一個實施例中,在操作625和630,所述求負操作所生成的結(jié) 果陣列可以分別被變換為索引或掩碼值。如果所述求負操作的結(jié)果被 轉(zhuǎn)換為索引,則即時字段的位(例如,IMM8[6])可以控制比較結(jié)果的(多個)最高有效位或(多個)最低有效位是否被編碼為索引,其結(jié)果可以存儲到寄存器(例如,ECX或RCX)中。在一個實施例中,如果要 利用掩碼值來表示所述求負操作的結(jié)果,則即時字段的位(例如, IMM8[6])可以用來控制所述掩碼是0擴展的還是被擴展到字節(jié)(或字) 掩碼。因此,已經(jīng)公開了用于執(zhí)行串比較操作的技術(shù)。雖然已經(jīng)描述并 在附圖中示出了特定的示例性實施例,但是應(yīng)當(dāng)理解,這些實施例僅 僅是說明性的,并不在寬泛的發(fā)明上進行限制,并且由于本領(lǐng)域普通 技術(shù)人員在學(xué)習(xí)了該公開內(nèi)容后可以進行各種其它的修改,所以本發(fā) 明并不局限于所示出和描述的特定結(jié)構(gòu)和配置。在發(fā)展迅速并且不能 夠輕易預(yù)見到進一步的發(fā)展的諸如本發(fā)明的技術(shù)領(lǐng)域,通過技術(shù)進步 能夠方便地對所公開的實施例在配置和細節(jié)上容易地進行修改,而不 會背離本公開內(nèi)容的原理或所附權(quán)利要求的范圍。
權(quán)利要求
1、一種其上存儲有指令的機器可讀介質(zhì),如果所述指令被機器執(zhí)行,則會使得所述機器執(zhí)行一種方法,所述方法包括將第一緊縮操作數(shù)的每個數(shù)據(jù)元素與第二緊縮操作數(shù)的每個數(shù)據(jù)元素進行比較;存儲所述比較的第一結(jié)果。
2、 如權(quán)利要求1所述的機器可讀介質(zhì),其中僅將所述第一操作 數(shù)的有效數(shù)據(jù)元素與所述第二操作數(shù)的有效數(shù)據(jù)元素進行比較。
3、 如權(quán)利要求1所述的機器可讀介質(zhì),其中所述第一結(jié)果用來 指示任意數(shù)據(jù)元素是否相等。
4、 如權(quán)利要求1所述的機器可讀介質(zhì),其中所述第一結(jié)果用來指不所述第一操作數(shù)中所指示的數(shù)據(jù)元素的范圍是否與所述第二操 作數(shù)中所指示的數(shù)據(jù)元素的范圍相等。
5、 4如權(quán)利要求1所述的機器可讀介質(zhì),其中所述第一結(jié)果用來指不所述第一操作數(shù)的每個數(shù)據(jù)元素是否與所述第二操作數(shù)中的每 個數(shù)據(jù)元素相等。
6、 如權(quán)利要求1所述的機器可讀介質(zhì),其中所述第一結(jié)果用來指不所述第一操作數(shù)的一部分數(shù)據(jù)元素的順序是否與所述第二操作 數(shù)的一部分數(shù)據(jù)元素的順序相等。
7、 如權(quán)利要求1所述的機器可讀介質(zhì),其中所述第一結(jié)果的一部分被求負。
8、 如權(quán)利要求1所述的機器可讀介質(zhì),其中所述第一結(jié)果由掩 碼值或索引值表示。
9、 一種裝置,包括比較邏輯,用來僅將第一操作數(shù)的有效數(shù)據(jù)元素與第二操作數(shù)的 有效數(shù)據(jù)元素進行比較;第一控制信號,用來控制所述比較邏輯。
10、 如權(quán)利要求9所述的裝置,其中所述第一和第二操作數(shù)的數(shù) 據(jù)元素的有效性被明確地指示。
11、 如權(quán)利要求9所述的裝置,其中所述第一和第二操作數(shù)的數(shù) 據(jù)元素的有效性被隱含地指示。
12、 如權(quán)利要求9所述的裝置,其中所述第一控制信號包括符號 控制信號,用于指示所述比較邏輯用來比較有符號數(shù)值還是無符號數(shù) 值。
13、 如權(quán)利要求12所述的裝置,其中所述第一控制信號包括聚 合函數(shù)信號,用于指示所述比較邏輯是否用來執(zhí)行從列表中選擇的聚 合函數(shù),所述列表包括任意相等、相等范圍、每個相等、非連續(xù)子 串和相等順序。
14、 如權(quán)利要求13所述的裝置,其中所述第一控制信號包括求 負信號,用于使所述比較邏輯對比較結(jié)果的至少一部分進行求負。
15、 如權(quán)利要求14所述的裝置,其中所述第一控制信號包括索 引信號,用于指示所述比較邏輯用來生成比較結(jié)果的最高有效位還是最低有效位的索引。
16、 如權(quán)利要求15所述的裝置,其中所述第一控制信號包括掩 碼信號,用于指示所述比較邏輯用來生成0擴展掩碼還是擴展掩碼以 作為比較結(jié)果。
17、 如權(quán)利要求16所述的裝置,其中所述第一控制信號是用來 存儲多個位的控制字段。
18、 一種系統(tǒng),包括第一存儲器,用來存儲單指令多數(shù)據(jù)(SIMD)比較指令; 處理器,用來執(zhí)行所述SIMD比較指令以將由所述SIMD比較指 令所指示的第一和第二操作數(shù)的數(shù)據(jù)元素進行比較。
19、 如權(quán)利要求18所述的系統(tǒng),其中所述第一操作數(shù)在所述指 令內(nèi)由第一寄存器的地址所指示。
20、 如權(quán)利要求19所述的系統(tǒng),其中所述第二操作數(shù)在所述指 令內(nèi)由存儲器地址或第二寄存器所指示。
21、 如權(quán)利要求20所述的系統(tǒng),其中所述指令包括即時字段, 用來指示對所述處理器的控制信號。
22、 如權(quán)利要求21所述的系統(tǒng),其中所述即時字段用來指示所 述操作數(shù)是否包括有符號或無符號字節(jié)或者有符號或無符號字。
23、 如權(quán)利要求22所述的系統(tǒng),其中所述即時字段用來指示要 由所述處理器執(zhí)行的聚合函數(shù)。
24、 如權(quán)利要求23所述的系統(tǒng),其中所述即時字段用來指示是否響應(yīng)于執(zhí)行所述指令而生成掩碼或索引。
25、 如權(quán)利要求18所述的系統(tǒng),其中所述指令用來使得僅將所 述第一和第二操作數(shù)的明確有效的數(shù)據(jù)元素進行比較。
26、 如權(quán)利要求18所述的系統(tǒng),其中所述指令用來使得僅將所 述第一和第二操作數(shù)的隱含有效的數(shù)據(jù)元素進行比較。
27、 一種處理器,包括第一存儲區(qū)域,用來存儲對應(yīng)于第一文本串的第一緊縮操作數(shù); 第二存儲區(qū)域,用來存儲對應(yīng)于第二文本串的第二緊縮操作數(shù); 比較邏輯,用來將所述第一緊縮操作數(shù)的所有有效數(shù)據(jù)元素與所 述第二緊縮操作數(shù)的所有有效數(shù)據(jù)元素進行比較;第三存儲區(qū)域,用來存儲由所述比較邏輯執(zhí)行的比較的結(jié)果陣列。
28、 如權(quán)利要求27所述的處理器,其中所述比較邏輯用來生成 二維數(shù)值陣列,所述二維數(shù)值陣列的項對應(yīng)于所述第一緊縮操作數(shù)的 有效數(shù)據(jù)元素和所述第二緊縮操作數(shù)的有效數(shù)據(jù)元素之間的比較。
29、 如權(quán)利要求28所述的處理器,其中所述比較邏輯用來對所 述二維數(shù)值陣列執(zhí)行一組聚合函數(shù)中的任意一個,所述聚合函數(shù)包 括任意相等、相等范圍、每個相等、非連續(xù)子串和相等順序。
30、 如權(quán)利要求29所述的處理器,其中所述結(jié)果陣列由掩碼值 或索引值表示。
全文摘要
本發(fā)明提供一種用于處理文本串的指令和邏輯。用于執(zhí)行串比較操作的方法、裝置和程序模塊。在一個實施例中,一種裝置包括用來執(zhí)行第一指令的執(zhí)行資源。響應(yīng)于所述第一指令,所述執(zhí)行資源存儲分別與第一和第二文本串相對應(yīng)的第一和第二操作數(shù)的每個數(shù)據(jù)元素之間的比較結(jié)果。
文檔編號G06F9/38GK101251791SQ20071030577
公開日2008年8月27日 申請日期2007年9月24日 優(yōu)先權(quán)日2006年9月22日
發(fā)明者J·格雷, M·塞科尼, M·朱利耶, S·米克斯, S·陳努帕蒂 申請人:英特爾公司