專利名稱:比較多個(gè)字節(jié)的數(shù)據(jù)與已存儲(chǔ)的字符串段的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的實(shí)施例涉及字符串查找領(lǐng)域,更具體地說,涉及多個(gè)字節(jié)的數(shù)據(jù)與已存儲(chǔ)的字符串段的比較。
背景技術(shù):
一些網(wǎng)絡(luò)加速及負(fù)載均衡技術(shù)需要在分組數(shù)據(jù)中查找一個(gè)或者多個(gè)字符串常量。這通常要求在分組中每次一個(gè)字節(jié)地進(jìn)行檢查直至找到期望的序列。如果一次對(duì)一個(gè)以上的字符串常量進(jìn)行查找,則分組中的每一個(gè)字節(jié)都被測(cè)試一次以上,因此使得查找過程更加緩慢。
發(fā)明內(nèi)容
本發(fā)明提供了一種比較多個(gè)字節(jié)的數(shù)據(jù)與已存儲(chǔ)的字符串段的方法,該方法包括在存儲(chǔ)器中存儲(chǔ)一個(gè)或多個(gè)目標(biāo)字符串的多個(gè)字符串段;讀取多個(gè)字節(jié)的數(shù)據(jù);以及并行地將所述多個(gè)字節(jié)的數(shù)據(jù)與所述已存儲(chǔ)的字符串段進(jìn)行比較以確定是否存在與所述目標(biāo)字符串之一相對(duì)應(yīng)的可能匹配。
本發(fā)明還提供了一種設(shè)備,包括存儲(chǔ)器,用于存儲(chǔ)一個(gè)或多個(gè)目標(biāo)字符串的多個(gè)字符串段,以及并行地比較多個(gè)字節(jié)的掃描數(shù)據(jù)和所述已存儲(chǔ)的字符串段;以及處理器,與所述存儲(chǔ)器相連接,用于處理所述掃描數(shù)據(jù),以及如果在所述掃描數(shù)據(jù)中發(fā)現(xiàn)了所述字符串段中的至少一個(gè),則確定是否存在與所述目標(biāo)字符串之一相對(duì)應(yīng)的實(shí)際匹配。
本發(fā)明還提供了一種系統(tǒng),包括動(dòng)態(tài)隨機(jī)訪問存儲(chǔ)器,用于存儲(chǔ)源數(shù)據(jù);內(nèi)容可尋址存儲(chǔ)器,與所述動(dòng)態(tài)隨機(jī)訪問存儲(chǔ)器相連接,用于存儲(chǔ)一個(gè)或多個(gè)目標(biāo)字符串的多個(gè)字符串段,以將所述已存儲(chǔ)的字符串段與多個(gè)字節(jié)的所述源數(shù)據(jù)進(jìn)行比較;以及處理器,與所述動(dòng)態(tài)隨機(jī)訪問存儲(chǔ)器以及內(nèi)容可尋址存儲(chǔ)器相連接,用于處理所述源數(shù)據(jù),并且,如果所述已存儲(chǔ)的字符串段中的至少一個(gè)匹配所述源數(shù)據(jù),則確定是否存在與所述目標(biāo)字符串之一相對(duì)應(yīng)的實(shí)際匹配。
根據(jù)本發(fā)明提供的方法、設(shè)備和系統(tǒng),可以加快目標(biāo)字符串的查找過程。
通過參考下列描述以及用于圖示本發(fā)明實(shí)施例的附圖,可最好地理解本發(fā)明。其中圖1是包含本發(fā)明的系統(tǒng)的一個(gè)一般化的實(shí)施例的方框圖。
圖2是示出了根據(jù)本發(fā)明實(shí)施例的方法的流程圖。
圖3是圖示了根據(jù)本發(fā)明一個(gè)實(shí)施例的存儲(chǔ)器中的示例性條目的表。
圖4是圖示了在其中可實(shí)施本發(fā)明某些方面的合適的計(jì)算環(huán)境的方框圖。
具體實(shí)施例方式
本發(fā)明說明了一種比較多個(gè)字節(jié)的數(shù)據(jù)與已存儲(chǔ)的字符串段的方法及系統(tǒng)的多個(gè)實(shí)施例。在下述說明中,闡述了大量具體細(xì)節(jié)。但即使沒有這些具體細(xì)節(jié),本發(fā)明的實(shí)施例也可以實(shí)施。在其他情形下,為了不致妨礙對(duì)本說明書的理解,沒有詳細(xì)說明公知的電路、結(jié)構(gòu)以及技術(shù)。
整個(gè)說明書中提到的“一個(gè)實(shí)施例”或者“實(shí)施例”是指與該實(shí)施例相關(guān)的具體特征、結(jié)構(gòu)或者特點(diǎn)包含于本發(fā)明的至少一個(gè)實(shí)施例中。因此,在整個(gè)說明書的不同地方出現(xiàn)的詞組“在一個(gè)實(shí)施例中”或者“在實(shí)施例中”不必是指同一個(gè)實(shí)施例。此外,所述具體特征、結(jié)構(gòu)或者特點(diǎn)可以在一個(gè)或多個(gè)實(shí)施例中以任意合適的方式進(jìn)行組合。
參考圖1,示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)100的方框圖。本領(lǐng)域內(nèi)的普通技術(shù)人員會(huì)發(fā)現(xiàn)系統(tǒng)100可包括不止圖1所示的組件。但是,不必示出全部的常規(guī)組件以公開用于實(shí)施本發(fā)明的說明性實(shí)施例。
系統(tǒng)100包括用于處理數(shù)據(jù)的處理器104和存儲(chǔ)器102。存儲(chǔ)器102存儲(chǔ)一個(gè)或多個(gè)要查找的目標(biāo)字符串的多個(gè)字符串段106。存儲(chǔ)器102還包括比較器108,用于并行地比較已存儲(chǔ)的字符串段和數(shù)據(jù)。在一個(gè)實(shí)施例中,存儲(chǔ)器102是一個(gè)內(nèi)容可尋址存儲(chǔ)器(CAM)。處理器104掃描多個(gè)字節(jié)的數(shù)據(jù)。一次掃描的數(shù)據(jù)字節(jié)數(shù)是可變的并可被預(yù)先設(shè)定。被掃描的數(shù)據(jù)110通過存儲(chǔ)器102并行地與存儲(chǔ)的字符串段106相比較,以確定是否存在與目標(biāo)字符串之一相對(duì)應(yīng)的可能匹配。該比較的結(jié)果112被提供給處理器104。如果結(jié)果顯示沒有與目標(biāo)字符串之一相對(duì)應(yīng)的可能匹配,則處理器掃描更多的數(shù)據(jù)。如果發(fā)現(xiàn)了可能匹配,處理器就檢查該數(shù)據(jù)以確定是否存在實(shí)際匹配。在一個(gè)實(shí)施例中,存儲(chǔ)器向處理器提供關(guān)于數(shù)據(jù)可能匹配哪個(gè)目標(biāo)字符串的指示。處理器然后將該可能匹配的目標(biāo)字符串與數(shù)據(jù)相比較,以確定是否存在實(shí)際匹配。
圖2圖示了根據(jù)本發(fā)明一個(gè)實(shí)施例的方法。在200中,在存儲(chǔ)器內(nèi)存儲(chǔ)一個(gè)或者多個(gè)目標(biāo)字符串的多個(gè)字符串段。在一個(gè)實(shí)施例中,該存儲(chǔ)器是CAM。在一個(gè)實(shí)施例中,該字符串段是整個(gè)目標(biāo)字符串。在一個(gè)實(shí)施例中,一個(gè)或多個(gè)通配符字節(jié)與字符串段一起存儲(chǔ)在存儲(chǔ)器內(nèi)。所述通配符字節(jié)能夠匹配任何數(shù)據(jù)字節(jié)。在202中,從數(shù)據(jù)源中讀出多個(gè)字節(jié)的數(shù)據(jù)。在一個(gè)實(shí)施例中,源數(shù)據(jù)的字節(jié)數(shù)超過所述一個(gè)或多個(gè)已存儲(chǔ)的字符串段的字節(jié)數(shù)。在204中,所述多個(gè)字節(jié)的數(shù)據(jù)被并行地與已存儲(chǔ)的字符串段進(jìn)行比較。在206中,基于比較的結(jié)果確定是否存在與目標(biāo)字符串之一相對(duì)應(yīng)的可能匹配。如果沒有可能匹配,則所述處理接著從202重復(fù)進(jìn)行并從數(shù)據(jù)源中讀出更多的數(shù)據(jù)。如果存在可能匹配,那么在208中,檢查該數(shù)據(jù)以確定是否存在與目標(biāo)字符串之一相對(duì)應(yīng)的實(shí)際匹配。在一個(gè)實(shí)施例中,檢查發(fā)現(xiàn)可能匹配的位置周圍的區(qū)域以確定是否存在實(shí)際匹配。在一個(gè)實(shí)施例中,使用有限狀態(tài)自動(dòng)機(jī)(FSA)來檢查數(shù)據(jù)以確定是否存在與目標(biāo)字符串之一相對(duì)應(yīng)的實(shí)際匹配。如果沒有實(shí)際匹配,則所述處理接著從202重復(fù)進(jìn)行并從數(shù)據(jù)源中讀出更多的數(shù)據(jù)。如果存在實(shí)際匹配,則完成所述處理。
為了進(jìn)行說明,下面將討論一個(gè)例子。假設(shè)要查找的目標(biāo)字符串是“telephone”和“l(fā)ightbulb”。如圖3所示,這兩個(gè)目標(biāo)字符串的段被存儲(chǔ)在存儲(chǔ)器102中。假設(shè)將在其中查找目標(biāo)字符串的源數(shù)據(jù)包含下述數(shù)據(jù)“wheel=no,telephone=y(tǒng)es”。假設(shè)所述處理器一次掃描四個(gè)字節(jié)的源數(shù)據(jù)。最先掃描的四個(gè)字節(jié)的數(shù)據(jù)將是“whee”。這四個(gè)字節(jié)的數(shù)據(jù)被并行地與存儲(chǔ)器102中存儲(chǔ)的字符串段相比較。沒有發(fā)現(xiàn)匹配,因而掃描接著的四個(gè)字節(jié)的數(shù)據(jù)。該四個(gè)字節(jié)的數(shù)據(jù)“1=no”被并行地與已存儲(chǔ)的字符串段相比較。沒有發(fā)現(xiàn)匹配,因而掃描接著的四個(gè)字節(jié)的數(shù)據(jù)。該四個(gè)字節(jié)的數(shù)據(jù)“,tel”被并行地與已存儲(chǔ)的字符串段相比較。沒有發(fā)現(xiàn)匹配,因而掃描接著的四個(gè)字節(jié)的數(shù)據(jù)。該四個(gè)字節(jié)的數(shù)據(jù)“epho”被并行地與已存儲(chǔ)的字符串段相比較。存在與存儲(chǔ)器102中的第四條目相對(duì)應(yīng)的匹配。檢查字符串段匹配周圍的源數(shù)據(jù)以確定是否存在與目標(biāo)字符串之一相對(duì)應(yīng)的匹配。存在與目標(biāo)字符串“telephone”相對(duì)應(yīng)的匹配。因此,所述處理結(jié)束。
在一個(gè)實(shí)施例中,并行地進(jìn)行的比較不必對(duì)存儲(chǔ)器中的每個(gè)條目比較相同數(shù)目的位數(shù)。在存儲(chǔ)器中的一些條目可能有或多或少的用于比較的數(shù)據(jù)。例如,假設(shè)處理器一次掃描四個(gè)字節(jié)的源數(shù)據(jù),并且要查找的目標(biāo)字符串是“CAT”。存儲(chǔ)器中的已存儲(chǔ)的字符串段或字符串可能如下所示在條目0中為“AT??”,在條目1中為“CAT?”,在條目2中為“?CAT”,在條目3中為“??CA”?!??”是一個(gè)表示“任何字節(jié)”的通配符,也就是說它不用匹配任何特定的源數(shù)據(jù)。如果被掃描的源數(shù)據(jù)匹配條目1或條目2,那么就發(fā)現(xiàn)了目標(biāo)字符串“CAT”,而且不需要做進(jìn)一步的確認(rèn)。如果被掃描的源數(shù)據(jù)匹配條目0或條目3,那么只發(fā)現(xiàn)了目標(biāo)字符串的一個(gè)字符串段。因此,需要檢查源數(shù)據(jù)以確定是否存在與目標(biāo)字符串對(duì)應(yīng)的實(shí)際匹配。
圖4圖示了在其中可實(shí)施本發(fā)明的某些方面的合適的計(jì)算環(huán)境的方框圖。在一個(gè)實(shí)施例中,上述方法可以在計(jì)算機(jī)系統(tǒng)400中實(shí)現(xiàn),計(jì)算機(jī)系統(tǒng)400具有組件402-412,包括處理器402、存儲(chǔ)器404、輸入/輸出設(shè)備406、數(shù)據(jù)存儲(chǔ)器412以及網(wǎng)絡(luò)接口410,所述組件通過總線408相互連接。所述組件執(zhí)行它們?cè)诒绢I(lǐng)域內(nèi)公知的常規(guī)功能,并提供用于實(shí)現(xiàn)系統(tǒng)100的裝置。總體地,這些組件代表多種的硬件系統(tǒng),包括但不局限于通用計(jì)算機(jī)系統(tǒng)和專用分組轉(zhuǎn)發(fā)設(shè)備。應(yīng)該理解到,計(jì)算機(jī)系統(tǒng)400的各組件可以被重新安排,并且本發(fā)明的某些實(shí)現(xiàn)可以不需要也不包括所有上述組件。此外,系統(tǒng)400中也可以包括其他組件,如附加處理器(例如數(shù)字信號(hào)處理器)、存儲(chǔ)設(shè)備、內(nèi)存、以及網(wǎng)絡(luò)或通信接口。
如本領(lǐng)域內(nèi)的技術(shù)人員所知,用于實(shí)現(xiàn)本發(fā)明的方法的實(shí)施例的內(nèi)容例如計(jì)算機(jī)程序指令,可以由任何能夠存儲(chǔ)數(shù)據(jù)、可由系統(tǒng)100訪問的介質(zhì)提供,并作為存儲(chǔ)器的一部分或者附加部分,所述介質(zhì)包括但不局限于錄音帶、磁帶、閃存卡、數(shù)字視頻光盤、隨機(jī)訪問存儲(chǔ)器(RAM)和只讀存儲(chǔ)器(ROM)等等。在這點(diǎn)上,系統(tǒng)100用來以一種本領(lǐng)域內(nèi)公知的方式與所述機(jī)器可讀介質(zhì)進(jìn)行通信。
本領(lǐng)域內(nèi)的技術(shù)人員可進(jìn)一步得知,用于實(shí)現(xiàn)本發(fā)明的方法的實(shí)施例的內(nèi)容可以從任何能夠存儲(chǔ)該內(nèi)容并將該內(nèi)容發(fā)送到系統(tǒng)100的外部設(shè)備提供給系統(tǒng)100。例如,在本發(fā)明的一個(gè)實(shí)施例中,系統(tǒng)100可以連接到網(wǎng)絡(luò)上,并且該內(nèi)容可以存儲(chǔ)在網(wǎng)絡(luò)中的任何設(shè)備上。
盡管已用幾個(gè)實(shí)施例來描述了本發(fā)明,但是,本領(lǐng)域內(nèi)的技術(shù)人員將會(huì)認(rèn)識(shí)到本發(fā)明并不限于所述實(shí)施例,而是可在所附權(quán)利要求的精神和范圍內(nèi)帶有改進(jìn)或變更地實(shí)施。因此本說明書應(yīng)該被看成是說明性的而不是限制性的。
權(quán)利要求
1.一種方法,包括在存儲(chǔ)器中存儲(chǔ)一個(gè)或多個(gè)目標(biāo)字符串的多個(gè)字符串段;讀取多個(gè)字節(jié)的數(shù)據(jù);以及并行地將所述多個(gè)字節(jié)的數(shù)據(jù)與所述已存儲(chǔ)的字符串段進(jìn)行比較以確定是否存在與所述目標(biāo)字符串之一相對(duì)應(yīng)的可能匹配。
2.如權(quán)利要求1所述的方法,還包括如果確定存在可能匹配,則將所述目標(biāo)字符串中的一個(gè)或多個(gè)與所述數(shù)據(jù)進(jìn)行比較,以確定是否存在實(shí)際匹配。
3.如權(quán)利要求2所述的方法,其中,將所述目標(biāo)字符串中的一個(gè)或多個(gè)與所述數(shù)據(jù)進(jìn)行比較以確定是否存在實(shí)際匹配包括檢查發(fā)現(xiàn)所述可能匹配的位置附近的數(shù)據(jù),以確定是否存在與所述目標(biāo)字符串之一相對(duì)應(yīng)的實(shí)際匹配。
4.如權(quán)利要求2所述的方法,其中,將所述目標(biāo)字符串中的一個(gè)或多個(gè)與所述數(shù)據(jù)進(jìn)行比較以確定是否存在實(shí)際匹配包括利用有限狀態(tài)自動(dòng)機(jī)來檢查所述數(shù)據(jù),以確定是否存在與所述目標(biāo)字符串之一相對(duì)應(yīng)的實(shí)際匹配。
5.如權(quán)利要求1所述的方法,其中,將所述多個(gè)字節(jié)的數(shù)據(jù)與所述已存儲(chǔ)的字符串段并行地進(jìn)行比較包括通過所述存儲(chǔ)器將所述多個(gè)字節(jié)的數(shù)據(jù)與所述已存儲(chǔ)的字符串段并行地進(jìn)行比較,以確定是否存在與所述目標(biāo)字符串之一相對(duì)應(yīng)的可能匹配。
6.如權(quán)利要求1所述的方法,其中,在存儲(chǔ)器中存儲(chǔ)一個(gè)或多個(gè)目標(biāo)字符串的多個(gè)字符串段包括在內(nèi)容可尋址存儲(chǔ)器中存儲(chǔ)一個(gè)或多個(gè)目標(biāo)字符串的多個(gè)字符串段。
7.如權(quán)利要求1所述的方法,還包括向與所述存儲(chǔ)器相連接的處理器報(bào)告所述并行比較的結(jié)果。
8.如權(quán)利要求7所述的方法,還包括向所述處理器指出所述數(shù)據(jù)可能匹配所述目標(biāo)字符串中的哪一個(gè)。
9.如權(quán)利要求1所述的方法,其中,所讀取的多個(gè)字節(jié)的數(shù)據(jù)的字節(jié)數(shù)超過所述已存儲(chǔ)的字符串段中的一個(gè)或多個(gè)的字節(jié)數(shù)。
10.如權(quán)利要求9所述的方法,其中,在存儲(chǔ)器中存儲(chǔ)一個(gè)或多個(gè)目標(biāo)字符串的多個(gè)字符串段包括存儲(chǔ)一個(gè)或多個(gè)可以匹配任何數(shù)據(jù)字節(jié)的通配符字節(jié)。
11.如權(quán)利要求10所述的方法,其中,在存儲(chǔ)器中存儲(chǔ)一個(gè)或多個(gè)目標(biāo)字符串的多個(gè)字符串段包括在所述存儲(chǔ)器中存儲(chǔ)所述目標(biāo)字符串以及所述目標(biāo)字符串的一個(gè)或多個(gè)字符串段。
12.如權(quán)利要求11所述的方法,其中,將所述多個(gè)字節(jié)的數(shù)據(jù)與所述已存儲(chǔ)的字符串段并行地進(jìn)行比較包括將所述多個(gè)字節(jié)的數(shù)據(jù)與所述已存儲(chǔ)的字符串段并行地進(jìn)行比較,以確定是否存在與所述目標(biāo)字符串之一相對(duì)應(yīng)的可能匹配或者實(shí)際匹配。
13.一種設(shè)備,包括存儲(chǔ)器,用于存儲(chǔ)一個(gè)或多個(gè)目標(biāo)字符串的多個(gè)字符串段,以及并行地比較多個(gè)字節(jié)的掃描數(shù)據(jù)和所述已存儲(chǔ)的字符串段;和處理器,與所述存儲(chǔ)器相連接,用于處理所述掃描數(shù)據(jù),以及如果在所述掃描數(shù)據(jù)中發(fā)現(xiàn)了所述字符串段中的至少一個(gè),則確定是否存在與所述目標(biāo)字符串之一相對(duì)應(yīng)的實(shí)際匹配。
14.如權(quán)利要求13所述的設(shè)備,其中,所述存儲(chǔ)器是一個(gè)內(nèi)容可尋址存儲(chǔ)器。
15.如權(quán)利要求13所述的設(shè)備,其中,所述存儲(chǔ)器包含向所述處理器報(bào)告所述并行比較的結(jié)果的邏輯。
16.如權(quán)利要求13所述的設(shè)備,其中,所述存儲(chǔ)器包括下述邏輯,如果所述字符串段中的至少一個(gè)匹配所述多個(gè)字節(jié)的掃描數(shù)據(jù),則指出所述掃描數(shù)據(jù)可能匹配所述目標(biāo)字符串中的哪一個(gè)。
17.一種制品,包括機(jī)器可訪問介質(zhì),該介質(zhì)包括這樣的內(nèi)容,當(dāng)被機(jī)器訪問時(shí),可以使得所述機(jī)器在存儲(chǔ)器中存儲(chǔ)一個(gè)或多個(gè)目標(biāo)字符串的多個(gè)字符串段;掃描多個(gè)字節(jié)的數(shù)據(jù);使得所述存儲(chǔ)器進(jìn)行所述多個(gè)字節(jié)的數(shù)據(jù)與所述已存儲(chǔ)的字符串段之間的并行比較;以及接收來自所述存儲(chǔ)器的結(jié)果,所述結(jié)果指示所述并行比較是否得到了至少一個(gè)匹配。
18.如權(quán)利要求17所述的制品,其中,所述機(jī)器可訪問介質(zhì)還包括如下內(nèi)容,如果從存儲(chǔ)器接收到的結(jié)果指示所述并行比較得到了至少一個(gè)匹配,則所述內(nèi)容使得所述機(jī)器將所述目標(biāo)字符串中的一個(gè)或多個(gè)與所述掃描數(shù)據(jù)相比較以確定是否存在匹配。
19.如權(quán)利要求18所述的制品,其中,所述機(jī)器可訪問介質(zhì)包括如下內(nèi)容,當(dāng)被機(jī)器訪問時(shí),所述內(nèi)容使得該機(jī)器將所述目標(biāo)字符串中的一個(gè)或多個(gè)與所述掃描數(shù)據(jù)進(jìn)行比較以確定是否存在匹配,該機(jī)器可訪問介質(zhì)包括具有如下內(nèi)容的機(jī)器可訪問介質(zhì),當(dāng)被該機(jī)器訪問時(shí),所述內(nèi)容使得所述機(jī)器檢查發(fā)現(xiàn)與所述已存儲(chǔ)的字符串段之一相對(duì)應(yīng)的匹配的位置附近的數(shù)據(jù),以確定是否存在與所述目標(biāo)字符串之一相對(duì)應(yīng)的匹配。
20.如權(quán)利要求17所述的制品,其中,所述機(jī)器可訪問介質(zhì)還包括如下內(nèi)容,如果所述并行比較得到了至少一個(gè)匹配,則該內(nèi)容使得機(jī)器從所述存儲(chǔ)器接收一個(gè)指示,指示哪個(gè)目標(biāo)字符串可能匹配所述掃描數(shù)據(jù)。
21.如權(quán)利要求20所述的制品,其中,所述機(jī)器可訪問介質(zhì)還包括如下內(nèi)容,使得所述機(jī)器將所述可能匹配的目標(biāo)字符串與所述掃描數(shù)據(jù)進(jìn)行比較以確定是否存在實(shí)際匹配。
22.如權(quán)利要求17所述的制品,其中,所述機(jī)器可訪問介質(zhì)包括如下內(nèi)容,當(dāng)被機(jī)器訪問時(shí),該內(nèi)容使得該機(jī)器在存儲(chǔ)器中存儲(chǔ)一個(gè)或多個(gè)目標(biāo)字符串的多個(gè)字符串段,該機(jī)器可訪問介質(zhì)包括具有如下內(nèi)容的機(jī)器可訪問介質(zhì),當(dāng)被機(jī)器訪問時(shí),所述內(nèi)容使得所述機(jī)器在內(nèi)容可尋址存儲(chǔ)器中存儲(chǔ)一個(gè)或多個(gè)目標(biāo)字符串的多個(gè)字符串段。
23.一種系統(tǒng),包括動(dòng)態(tài)隨機(jī)訪問存儲(chǔ)器,用于存儲(chǔ)源數(shù)據(jù);內(nèi)容可尋址存儲(chǔ)器,與所述動(dòng)態(tài)隨機(jī)訪問存儲(chǔ)器相連接,用于存儲(chǔ)一個(gè)或多個(gè)目標(biāo)字符串的多個(gè)字符串段,以將所述已存儲(chǔ)的字符串段與多個(gè)字節(jié)的所述源數(shù)據(jù)進(jìn)行比較;和處理器,與所述動(dòng)態(tài)隨機(jī)訪問存儲(chǔ)器以及內(nèi)容可尋址存儲(chǔ)器相連接,用于處理所述源數(shù)據(jù),并且,如果所述已存儲(chǔ)的字符串段中的至少一個(gè)匹配所述源數(shù)據(jù),則確定是否存在與所述目標(biāo)字符串之一相對(duì)應(yīng)的實(shí)際匹配。
24.如權(quán)利要求23所述的系統(tǒng),其中,如果所述字符串段中的至少一個(gè)匹配所述源數(shù)據(jù),則所述內(nèi)容可尋址存儲(chǔ)器還指出所述源數(shù)據(jù)可能匹配所述目標(biāo)字符串中的哪一個(gè)。
25.如權(quán)利要求24所述的系統(tǒng),其中,所述處理器將所述可能匹配的目標(biāo)字符串與所述源數(shù)據(jù)進(jìn)行比較,以確定是否存在實(shí)際匹配。
全文摘要
本發(fā)明描述了一種比較多個(gè)字節(jié)的數(shù)據(jù)與已存儲(chǔ)的字符串段的方法及系統(tǒng)。所述方法包括在存儲(chǔ)器中存儲(chǔ)一個(gè)或多個(gè)目標(biāo)字符串的多個(gè)字符串段,掃描多個(gè)字節(jié)的數(shù)據(jù),以及將所述多個(gè)字節(jié)的掃描數(shù)據(jù)與所述已存儲(chǔ)的字符串段并行地進(jìn)行比較以確定是否存在與目標(biāo)字符串之一相對(duì)應(yīng)的可能匹配。在發(fā)現(xiàn)可能匹配后,可以將目標(biāo)字符串中的一個(gè)或多個(gè)與所述掃描數(shù)據(jù)進(jìn)行比較以確定是否存在實(shí)際匹配。
文檔編號(hào)G06F17/30GK1573714SQ20031012305
公開日2005年2月2日 申請(qǐng)日期2003年12月23日 優(yōu)先權(quán)日2003年6月4日
發(fā)明者肯尼思·A·赫夫林格爾 申請(qǐng)人:英特爾公司