两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

用于執(zhí)行高速上下文檢索和數(shù)據(jù)模式特征描述的可編程規(guī)則處理設(shè)備的制作方法

文檔序號(hào):6418549閱讀:172來(lái)源:國(guó)知局
專利名稱:用于執(zhí)行高速上下文檢索和數(shù)據(jù)模式特征描述的可編程規(guī)則處理設(shè)備的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及信息處理領(lǐng)域,尤其是內(nèi)容分析學(xué)和處理領(lǐng)域。
背景技術(shù)
計(jì)算和通信領(lǐng)域的顯著趨勢(shì)導(dǎo)致充斥著內(nèi)容分析學(xué)和處理的環(huán)境的出現(xiàn)。這些環(huán)境在某些類型的功能上要求高性能以及可編程性,即對(duì)消息、文檔或者信息包中的內(nèi)容進(jìn)行搜索、剖析、分析、解釋以及轉(zhuǎn)化。強(qiáng)調(diào)所述的大容量?jī)?nèi)容分析學(xué)和處理的顯著領(lǐng)域包括內(nèi)容識(shí)別(content-aware)網(wǎng)絡(luò),基于內(nèi)容的安全系統(tǒng),監(jiān)視,分布式計(jì)算,無(wú)線通信,人機(jī)接口,信息存儲(chǔ)和檢索系統(tǒng),語(yǔ)義網(wǎng)絡(luò)上的內(nèi)容搜索,生物信息學(xué)以及其他等等。
內(nèi)容識(shí)別網(wǎng)絡(luò)領(lǐng)域需要對(duì)信息包或消息中的內(nèi)容進(jìn)行搜索和檢查以確定將會(huì)把這些信息包和消息發(fā)送或轉(zhuǎn)發(fā)到哪里。所述檢查必須在以“線速”傳送中的消息上進(jìn)行操作,所述“線速”是指網(wǎng)絡(luò)連接的數(shù)據(jù)速率。假定當(dāng)今網(wǎng)絡(luò)中整個(gè)過程的線路速率范圍從100Mbits/S到40Gbits/S,這對(duì)內(nèi)容檢查功能被執(zhí)行時(shí)所需要的速率有巨大的壓力。
基于內(nèi)容的安全系統(tǒng)和監(jiān)視與監(jiān)控系統(tǒng)需要用來(lái)分析消息或信息包的內(nèi)容并且應(yīng)用一系列規(guī)則以確定是否存在安全缺口或者入侵的可能性。典型地,在當(dāng)今的網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)中(NIDS),必須以線路速率對(duì)輸入有效載荷應(yīng)用大量模式、規(guī)則和語(yǔ)法以確保所有潛在的系統(tǒng)弱點(diǎn)被揭示出來(lái)。倘若網(wǎng)絡(luò)和計(jì)算的基礎(chǔ)結(jié)構(gòu)在不斷地發(fā)展,新的弱點(diǎn)就會(huì)不斷出現(xiàn)。而且,入侵者采用了越來(lái)越復(fù)雜的攻擊以避免被檢測(cè)到。入侵檢測(cè)系統(tǒng)需要能夠檢測(cè)到系統(tǒng)中所有已知的攻擊,并且還要足夠智能化以檢測(cè)不正常的和可疑的預(yù)示新的攻擊的行為。所有這些因素導(dǎo)致了對(duì)內(nèi)容分析和處理的可編程性與極度高性能兩方面的需求。
隨著分布式和聚集式計(jì)算的出現(xiàn),現(xiàn)今任務(wù)被分配給互相協(xié)作與通信的多臺(tái)計(jì)算機(jī)或服務(wù)器以完成綜合工作。這種分配導(dǎo)致計(jì)算機(jī)通信的迅速增長(zhǎng),對(duì)這些消息的處理要求高性能。隨著作為通用數(shù)據(jù)交換的新標(biāo)準(zhǔn)的XML(擴(kuò)展標(biāo)記語(yǔ)言)的出現(xiàn),應(yīng)用程序使用XML作為“應(yīng)用層數(shù)據(jù)傳輸”進(jìn)行互相通信。消息和文檔現(xiàn)在被嵌入在XML標(biāo)記中。所有的消息處理首先要求對(duì)XML文檔進(jìn)行解析,并且提取和解釋相關(guān)內(nèi)容,接下來(lái)是任何所需的轉(zhuǎn)化和過濾。由于這些功能需要以很高的信息速率進(jìn)行,它們?cè)谟?jì)算性能上要求很苛刻。
隨著無(wú)線(untethered)通信和無(wú)線網(wǎng)絡(luò)的發(fā)展,從無(wú)線設(shè)備對(duì)信息的訪問有一定增長(zhǎng)。對(duì)于給定的小型化(light form factor)客戶端設(shè)備,對(duì)投遞到該設(shè)備的數(shù)據(jù)進(jìn)行過濾并保持有效載荷較低是很重要的。未來(lái)的環(huán)境會(huì)將來(lái)自有線基礎(chǔ)結(jié)構(gòu)的XML內(nèi)容過濾并轉(zhuǎn)化為無(wú)線基礎(chǔ)結(jié)構(gòu)上的輕量?jī)?nèi)容(使用無(wú)線標(biāo)記語(yǔ)言或者WML)。隨著無(wú)線網(wǎng)絡(luò)應(yīng)用的不斷增長(zhǎng),這種內(nèi)容轉(zhuǎn)化功能會(huì)變得很常見,從而需要對(duì)其進(jìn)行處理的有效解決方案。
另一種重要的新興需求是使用人機(jī)接口例如語(yǔ)音與計(jì)算機(jī)進(jìn)行通信和交互的能力。語(yǔ)音處理和自然語(yǔ)言處理在內(nèi)容搜索、詞匯分析、內(nèi)容解析以及語(yǔ)法處理中特別密集。一旦音頻流被轉(zhuǎn)換為文本,語(yǔ)音系統(tǒng)需要對(duì)進(jìn)入的文本流應(yīng)用大量詞匯以及句法和語(yǔ)法規(guī)則以理解語(yǔ)音。
萬(wàn)維網(wǎng)的出現(xiàn)和發(fā)展給信息檢索(IR)系統(tǒng)帶來(lái)了巨大的計(jì)算負(fù)荷。信息繼續(xù)被高速添加到網(wǎng)絡(luò)。這些信息典型地針對(duì)完備的詞匯表進(jìn)行完全索引并且被添加到搜索引擎和IR系統(tǒng)的數(shù)據(jù)庫(kù)。由于信息不斷產(chǎn)生并添加,索引編制器(indexer)需要“一直在線”。為了提供高效實(shí)時(shí)的上下文檢索,需要高性能的模式匹配系統(tǒng)用于索引功能。
另一個(gè)強(qiáng)調(diào)大容量?jī)?nèi)容分析學(xué)和處理的領(lǐng)域是生物信息學(xué)領(lǐng)域。基因分析學(xué)和蛋白體學(xué)(proteomics)需要對(duì)基因序列和結(jié)構(gòu)應(yīng)用復(fù)雜的搜索和分析算法。同樣地,這樣的計(jì)算需要高性能的搜索、分析以及解釋能力。
因此,未來(lái)出現(xiàn)的計(jì)算機(jī)和通信環(huán)境會(huì)強(qiáng)調(diào)大容量?jī)?nèi)容分析和處理。這樣的環(huán)境對(duì)于以下功能需要高效率和可編程的解決方案——對(duì)文檔、消息或者信息包中的內(nèi)容的搜索、詞匯分析、解析、特征描述、解釋、過濾以及轉(zhuǎn)化。
這些大容量?jī)?nèi)容處理功能的核心是進(jìn)行上下文和基于內(nèi)容的搜索和導(dǎo)航以及大量相關(guān)查找的操作。
在以前的技術(shù)中,搜索和查找處理典型地以兩種方式中的一者進(jìn)行。在第一種方式中,這樣的處理使用由內(nèi)容可尋址存儲(chǔ)器(CAM)、比較器硬件和專用邏輯組成的固定的專用集成電路(ASIC)解決方案進(jìn)行。例如,搜索規(guī)則存儲(chǔ)在內(nèi)容可尋址存儲(chǔ)器中,并且數(shù)據(jù)流過該結(jié)構(gòu),每次將其移位1個(gè)字節(jié)或者1個(gè)字長(zhǎng)??蛇x擇地,特定比較器被設(shè)置在固定位置以識(shí)別輸入數(shù)據(jù)中的特定值。匹配的出現(xiàn)通過專用邏輯由目標(biāo)應(yīng)用的需要進(jìn)行記錄和使用。盡管固定ASIC方法可以增加性能,但是它缺乏簡(jiǎn)易的可編程性,因此其應(yīng)用被嚴(yán)重限制。而且,對(duì)于每個(gè)目標(biāo)解決方案的與設(shè)計(jì)和定制特定芯片相關(guān)的費(fèi)用也受到限制。
在第二種方式中,使用了傳統(tǒng)的通用微處理器以處理大量搜索和查找功能以及相關(guān)的內(nèi)容處理。微處理器是完全可編程器件并且能夠處理不斷變化的問題的需求——通過對(duì)軟件簡(jiǎn)單的重新編程,新的功能可以重新設(shè)置。然而,傳統(tǒng)微處理器在其可以提供的大容量?jī)?nèi)容分析和處理的性能級(jí)別上受到限制。
對(duì)于內(nèi)容分析的性能局限性是微處理器架構(gòu)的設(shè)計(jì)和演化所固有的。微處理器作為計(jì)算單元而產(chǎn)生,對(duì)1、2、4、8字節(jié)字長(zhǎng)進(jìn)行算術(shù)運(yùn)算。接著,隨著計(jì)算領(lǐng)域的發(fā)展,更多的功能不斷添加到微處理器以應(yīng)用于不斷出現(xiàn)的領(lǐng)域。最終,通用微處理器可以使用于非常廣泛范圍內(nèi)的應(yīng)用,但是對(duì)于特殊的任何一者并不是非常協(xié)調(diào)。基本地,在它應(yīng)用到內(nèi)容分析學(xué)的需求上時(shí),微處理器架構(gòu)具有兩種關(guān)鍵的局限性——(1)它缺乏對(duì)大型數(shù)據(jù)集同時(shí)進(jìn)行大規(guī)模并行而且精細(xì)的模式匹配以及比較運(yùn)算的能力,以及(2)它缺乏基于輸入數(shù)據(jù)進(jìn)行快速的多狀態(tài)轉(zhuǎn)換和高效的多方向控制流改變的能力。
微處理器的指令組是標(biāo)量(scalar)指令組,從而指令需要在單個(gè)有序序列中執(zhí)行。典型的微處理器的指令組可以對(duì)存儲(chǔ)在寄存器中的單個(gè)64位數(shù)值與存儲(chǔ)在不同的寄存器中的64位數(shù)值進(jìn)行比較。這種比較在兩個(gè)運(yùn)算數(shù)對(duì)齊時(shí)進(jìn)行。如果為了模式搜索而進(jìn)行比較,那么需要在每次對(duì)操作數(shù)中的一者或兩者移位可變數(shù)量的字節(jié)后重復(fù)調(diào)用比較。通常地,這樣的重復(fù)移位以控制流改變?cè)谘h(huán)中進(jìn)行,所述控制流改變?cè)诿看窝h(huán)中將控制從循環(huán)底部的代碼傳送到循環(huán)頂部的代碼。微處理器中的控制流改變通過分支到新的代碼序列而完成。由于當(dāng)今的微處理器高度流水線化(pipelined)(在位于加利福尼亞圣塔克萊拉的Intel公司提供的奔騰三代和奔騰四代處理器等產(chǎn)品中達(dá)到20-30級(jí)),由于分支帶來(lái)的性能損失是巨大的。整個(gè)微處理器流水線需要在采用的分支上被刷新(flushed)。因此需要對(duì)這樣的處理器應(yīng)用復(fù)雜的分支預(yù)測(cè)技術(shù)從而緊跟控制流改變之后保持流水線被來(lái)自所需路徑的指令充分地供應(yīng)。然而,多數(shù)分支預(yù)測(cè)技術(shù)僅僅提供經(jīng)驗(yàn)和統(tǒng)計(jì)上的性能改進(jìn),從而控制流改變?cè)跇O大程度上帶來(lái)了所能提供的性能級(jí)別上的減緩以及非確定性。
大量搜索和模式匹配算法被發(fā)展以最好地利用微處理器。Boyer-Moore算法被廣泛的認(rèn)為是微處理器上采用的用于尋找給定數(shù)據(jù)集中的模式發(fā)生的最著名的技術(shù)之一。該算法每次僅處理一個(gè)模式并且如果在數(shù)據(jù)集中有多于一個(gè)的模式需要搜索時(shí)則必須反復(fù)調(diào)用。對(duì)于每個(gè)將要搜索的模式,它在數(shù)據(jù)集中順次前進(jìn)以基于從特征化模式過程中所獲得的觀測(cè)數(shù)據(jù)進(jìn)行選擇性的比較。該算法通過減少在給定數(shù)據(jù)集內(nèi)進(jìn)行的比較總次數(shù)從而提供了相對(duì)于其他模式匹配算法更優(yōu)的性能。然而,由于該算法的有序性質(zhì),其性能受到微處理器架構(gòu)的基本約束的限制,即標(biāo)量指令組和分支時(shí)的損失。
由于前面所述的微處理器的架構(gòu)的局限性,傳統(tǒng)微處理器的效率和性能受到前面描述的新興的計(jì)算和通信環(huán)境的激烈地挑戰(zhàn)??梢蕴峁醉?xiàng)數(shù)據(jù)點(diǎn)以支持該觀點(diǎn)。例如,在網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)(NIDS)例如Snort中,已經(jīng)需要對(duì)進(jìn)入的信息包應(yīng)用數(shù)百個(gè)字符串的簽名檢測(cè)。在采用Boyer-Moore模式匹配算法改進(jìn)版本的商業(yè)化的基于微處理器系統(tǒng)中的3GHz奔騰IV處理器中以8字節(jié)簽名模式執(zhí)行該工作量會(huì)將信息包速率限制在50Mbps以下。同樣地,在這樣的平臺(tái)上的XML文檔的解析限制在10MB/s的范圍內(nèi),并且語(yǔ)音處理限制于對(duì)于受限語(yǔ)法和詞匯的1個(gè)實(shí)時(shí)流。這些數(shù)據(jù)點(diǎn)表明2003年或者2004年的傳統(tǒng)微處理器可以在100Mbps左右的速率范圍內(nèi)進(jìn)行大容量?jī)?nèi)容分析和處理。然而,到那個(gè)時(shí)候,1Gbps至10Gbps的數(shù)據(jù)速率在企業(yè)網(wǎng)絡(luò)和環(huán)境中將并不少見。顯然,在傳統(tǒng)微處理器所能提供的性能和環(huán)境所需的性能之間存在著一到兩個(gè)數(shù)量級(jí)的嚴(yán)重不匹配。盡管可以采用多個(gè)并行微處理器系統(tǒng)從而以目標(biāo)速率執(zhí)行某些需求功能,但是這樣大大增加了系統(tǒng)的成本。顯然需要對(duì)于這些目標(biāo)功能的更有效的解決方案。
需要一種對(duì)于可編程處理設(shè)備的更適合內(nèi)容分析和處理的新的解決方案,并且在一系列功能上很有成效,所述功能包括對(duì)于消息、信息包或者文檔中的上下文檢索、詞匯分析、解析、解釋以及內(nèi)容轉(zhuǎn)化。

發(fā)明內(nèi)容
在此公開了一種用于進(jìn)行上下文搜索的針對(duì)規(guī)則處理器的方法和設(shè)備。在一個(gè)實(shí)施例中,所述處理器包括多個(gè)輸入有效載荷搜索寄存器和連接到所述搜索寄存器的搜索執(zhí)行硬件從而響應(yīng)于指定一個(gè)或多個(gè)模式搜索并表示一個(gè)或多個(gè)對(duì)于所述搜索寄存器中內(nèi)容的模式的指令的執(zhí)行而通過并行模式匹配對(duì)所述搜索寄存器中的內(nèi)容進(jìn)行一個(gè)或多個(gè)上下文搜索。


本發(fā)明可以通過下面給出的詳細(xì)描述和本發(fā)明各種實(shí)施例的附圖而更全面的理解,然而,不應(yīng)認(rèn)為是將本發(fā)明限制在特定實(shí)施例,而僅是用于解釋和理解。
圖1是具有搜索設(shè)備的規(guī)則處理器的一個(gè)實(shí)施例的結(jié)構(gòu)圖;圖2A是搜索寄存器和搜索執(zhí)行硬件的一個(gè)實(shí)施例的結(jié)構(gòu)圖;圖2B是搜索陣列的一個(gè)實(shí)施例的結(jié)構(gòu)圖;圖3A是分類器的一個(gè)實(shí)施例的結(jié)構(gòu)圖;圖3B是分類器中類別選擇構(gòu)件的一個(gè)實(shí)施例的結(jié)構(gòu)圖;圖4是搜索陣列的一個(gè)實(shí)施例的電路示意圖;圖5顯示了包含四個(gè)處理階段的規(guī)則處理器的示例微結(jié)構(gòu);圖6顯示了復(fù)雜模式匹配規(guī)則集的示例偽碼和對(duì)應(yīng)的示例規(guī)則處理器的微碼;圖7顯示了圖6所示的微碼的時(shí)鐘順序流水線執(zhí)行。
具體實(shí)施例方式
在此描述了一種對(duì)文檔、消息或者其他內(nèi)容中的任意長(zhǎng)度模式進(jìn)行高速上下文搜索的可編程規(guī)則處理設(shè)備。所述規(guī)則處理器提供了一種為內(nèi)容搜索和分析定制的架構(gòu)。在一個(gè)實(shí)施例中,所述規(guī)則處理器針對(duì)內(nèi)容有效載荷考慮到規(guī)則的高速并行以及遞歸順序,從而對(duì)密集的規(guī)則語(yǔ)法工作量進(jìn)行高效處理。
在架構(gòu)上,所述規(guī)則處理器采用了一組輸入有效載荷搜索寄存器。搜索寄存器文件保存了將要呈遞給多種搜索規(guī)則的輸入數(shù)據(jù)(或者內(nèi)容有效載荷)。數(shù)據(jù)可以從存儲(chǔ)器加載到搜索寄存器中,或者從規(guī)則處理器中的其他來(lái)源移入到搜索寄存器以及從搜索寄存器移出到這些來(lái)源。在一個(gè)實(shí)施例中,可以對(duì)搜索寄存器中的內(nèi)容進(jìn)行多種的搜索。這些搜索是以向有效載荷數(shù)據(jù)提出的搜索指令或搜索規(guī)則的形式而指定的。搜索執(zhí)行硬件連接到搜索寄存器。所述硬件執(zhí)行模式匹配和計(jì)算搜索函數(shù)結(jié)果所需的處理功能。
圖1是包括搜索寄存器101和搜索執(zhí)行硬件102的規(guī)則處理器的一個(gè)實(shí)施例的結(jié)構(gòu)圖。搜索指令103發(fā)送給搜索寄存器101和搜索執(zhí)行硬件102。所述處理器進(jìn)一步包括作為規(guī)則/指令存儲(chǔ)器104的指令存儲(chǔ)裝置和控制指令流的裝置,所述裝置在一個(gè)實(shí)施例中包括指令序列發(fā)生器105和指令指示器106。
在一個(gè)實(shí)施例中,搜索寄存器101包括寄存器文件,所述寄存器文件具有2K個(gè)條目,每個(gè)占一字節(jié),其中搜索寄存器101中的值通過11位寄存器地址進(jìn)行尋址。因此,待搜索的2KB內(nèi)容數(shù)據(jù)可以被加載到搜索寄存器101中。
典型的搜索需要將指令或規(guī)則發(fā)送給搜索寄存器。所述規(guī)則指定了一個(gè)模式以及一個(gè)或多個(gè)附加搜索參數(shù)。在一個(gè)實(shí)施例中,搜索函數(shù)返回多個(gè)結(jié)果。這些結(jié)果包括關(guān)于是否建立模式和搜索寄存器中內(nèi)容之間的匹配的提示,以及指明在有效載荷搜索寄存中何處產(chǎn)生了匹配的匹配位置。
附加搜索控制參數(shù)通過規(guī)則處理器提供給搜索執(zhí)行硬件102。搜索指令可以提供掩碼向量(mask vector)以及包含目標(biāo)搜索模式的一組字節(jié)。所述掩碼向量可以由對(duì)應(yīng)于目標(biāo)模式字節(jié)或字節(jié)組的比特位組成。在一個(gè)實(shí)施例中,在搜索操作期間將要忽略的目標(biāo)模式中的特定字節(jié)是通過在掩碼向量中將對(duì)應(yīng)的比特位設(shè)置為預(yù)定邏輯值0或1而選擇的。因此,在搜索中使用的目標(biāo)模式可以減少。并且,規(guī)則處理指令可以指定組成搜索被限制的搜索寄存器101中的搜索窗或者字節(jié)范圍的起始和終止位置。
搜索指令的附加參數(shù)可以包括在如果搜索失敗時(shí)規(guī)則處理器使用的分支地址。該特性可以在比搜索執(zhí)行硬件102的搜索數(shù)據(jù)路徑寬度長(zhǎng)很多的字節(jié)串進(jìn)行的搜索沒有得到任何匹配而失敗或者在僅僅匹配搜索寄存器101中內(nèi)容的前面少數(shù)字節(jié)之后而失敗的情況下提高規(guī)則處理器的性能。規(guī)則處理器可以通過分支到緊跟當(dāng)前字符串的最末搜索指令的指令而跳過對(duì)于當(dāng)前字符串的剩下的搜索指令。
一個(gè)搜索指令的示例為窗口式前向?qū)な?windowed-find-first-forward)指令。在一個(gè)實(shí)施例中,在窗口式前向?qū)な姿阉髦?,給定規(guī)則指定的8字節(jié)模式,8位掩碼,指向搜索寄存器101中的2KB內(nèi)容數(shù)據(jù)(例如文檔數(shù)據(jù))的起始字節(jié)的起始位置偏移地址,以及指向搜索寄存器101中的2KB內(nèi)容數(shù)據(jù)(例如文檔數(shù)據(jù))的結(jié)束字節(jié)的結(jié)束位置偏移地址,所述搜索在指定與所述掩碼模式相匹配的起始位置地址之后返回第一個(gè)字符串在搜索寄存器101中的起始地址(例如11位向量),假定該地址起始于所述終止位置偏移地址之前。在另一個(gè)示例中,可以進(jìn)行窗口式反向?qū)な姿阉?windowed-find-first-reverse)。在一個(gè)實(shí)施例中,在窗口式反向?qū)な姿阉髦?,在所述?guī)則中給定8字節(jié)模式,8位掩碼,指向搜索寄存器101中的2KB內(nèi)容的起始字節(jié)的起始位置偏移地址,以及指向搜索寄存器101中的2KB內(nèi)容的結(jié)束字節(jié)的結(jié)束位置偏移地址,所述搜索在指定的與所述掩碼模式相匹配的終止位置地址之前返回最末字符串的起始地址(例如11位向量),假定該地址起始于所述起始位置偏移地址之后。
規(guī)則處理器還提供包含將要應(yīng)用到載荷數(shù)據(jù)的規(guī)則或者規(guī)則集的控制存儲(chǔ)器或者規(guī)則存儲(chǔ)器104。在一個(gè)實(shí)施例中,存儲(chǔ)器104保存了描述需要在搜索寄存器101中應(yīng)用并檢測(cè)的模式、規(guī)則、表達(dá)式或者語(yǔ)法的規(guī)則集或者指令或代碼序列。規(guī)則詞匯表可以指定運(yùn)算范圍,包括但不限于具有精確匹配或部分匹配并傳送單個(gè)或者多個(gè)匹配信息到某些寄存器的全局或局部(窗口的)搜索、在規(guī)則處理器的輸出載荷中產(chǎn)生偏移和地址的原語(yǔ)(primitives),以及待應(yīng)用到搜索結(jié)果的邏輯和算術(shù)操作符。這些規(guī)則可以由上述指定的多種參數(shù)的多個(gè)域組成。每個(gè)參數(shù)可以直接在所述規(guī)則中指定或者可選擇的通過使用包含待使用的數(shù)值的寄存器或存儲(chǔ)器位置的指針間接指定。在所述直接和間接指定均被允許的實(shí)施例中,每個(gè)所述域可以包含指示直接或者間接指定正在被使用的附加子域。
在下面的描述中,提出了大量細(xì)節(jié)以提供對(duì)本發(fā)明地完全理解。然而很顯然,對(duì)于熟悉本領(lǐng)域技術(shù)人員,本發(fā)明可以不通過這些特定細(xì)節(jié)被實(shí)施。在其他實(shí)例中,公知的結(jié)構(gòu)和設(shè)備以結(jié)構(gòu)圖形式給出而不詳細(xì)描述,以避免模糊本發(fā)明。
下面的詳細(xì)描述的某些部分根據(jù)計(jì)算機(jī)存儲(chǔ)器內(nèi)的數(shù)據(jù)位上的操作的算法和符號(hào)表示而給出。這些算法描述和表示被熟悉數(shù)據(jù)處理領(lǐng)域的技術(shù)人員所使用以向熟悉本領(lǐng)域的其他人員高效的傳達(dá)他們工作的實(shí)質(zhì)。此處的算法一般情況下被認(rèn)為是導(dǎo)致所需結(jié)果的前后一致的步驟序列。這些步驟需要進(jìn)行物理量的物理操作。通常而非必要地,這些量采取能夠被存儲(chǔ)、傳送、組合、比較以及其他操作的電信號(hào)或磁信號(hào)的形式。主要由于通常使用的原因,以比特、數(shù)值、元素、符號(hào)、字符、項(xiàng)目、數(shù)字等等來(lái)提及這些信號(hào)被證實(shí)是方便的。
然而應(yīng)當(dāng)知道,所有這些和類似的術(shù)語(yǔ)均與適當(dāng)?shù)奈锢砹肯嚓P(guān)聯(lián)并且僅僅是應(yīng)用到這些量的方便標(biāo)記。除非特別在下面討論中明顯提及,可以認(rèn)為在整個(gè)下面的描述中,使用例如“處理”或“計(jì)算”或“計(jì)算用的”或“確定”或“顯示”等等之類術(shù)語(yǔ)的討論均是指計(jì)算機(jī)系統(tǒng)或者類似電子計(jì)算設(shè)備的動(dòng)作和處理,其將在計(jì)算機(jī)系統(tǒng)的寄存器和存儲(chǔ)器中表示為物理(電子)量的數(shù)據(jù)操作并轉(zhuǎn)化為類似地表示為計(jì)算機(jī)存儲(chǔ)器或寄存器或其他類似信息存儲(chǔ)、傳送或顯示設(shè)備中的物理量的其他數(shù)據(jù)。
本發(fā)明還涉及一種用于進(jìn)行此處運(yùn)算的設(shè)備。該設(shè)備可以針對(duì)所需目的而特別構(gòu)建,或者它可以包含通過存儲(chǔ)在計(jì)算機(jī)中的計(jì)算機(jī)程序選擇性激活或者重新配置的通用計(jì)算機(jī)。所述計(jì)算機(jī)程序可以存儲(chǔ)在計(jì)算機(jī)可讀的存儲(chǔ)介質(zhì)中,例如但不限于任何類型的磁盤,包括軟盤、光盤、CD-ROM、以及磁-光盤、只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、EPROM、EEPROM、磁卡或光學(xué)卡或者適合存儲(chǔ)電子指令的任何類型的介質(zhì),并且每個(gè)均連接到計(jì)算機(jī)系統(tǒng)總線。
此處提出的算法和顯示并不固有的涉及任何特定計(jì)算機(jī)或者其他設(shè)備??梢愿鶕?jù)此處的指示的程序使用各種通用系統(tǒng),并且可以證明構(gòu)建更專門化的設(shè)備以執(zhí)行所需方法步驟是方便的。各種這類系統(tǒng)的所需結(jié)構(gòu)將在下面進(jìn)行描述。另外,本發(fā)明并不參考任何特定程序設(shè)計(jì)語(yǔ)言進(jìn)行描述。可以理解,各種編程語(yǔ)言均可以用于實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容。
可用計(jì)算機(jī)處理的介質(zhì)包括用于以機(jī)器(例如計(jì)算機(jī))可讀的形式存儲(chǔ)或者傳送信息的任何裝置。例如,可用計(jì)算機(jī)處理的介質(zhì)包括只讀存儲(chǔ)器(“ROM”);隨機(jī)存取存儲(chǔ)器(“RAM”);磁盤存儲(chǔ)器;光存儲(chǔ)器;閃存設(shè)備;電、光、產(chǎn)或其他形式的傳播信號(hào)(例如載波、紅外信號(hào)、數(shù)字信號(hào)等);等等。
示例的規(guī)則引擎架構(gòu)規(guī)則處理架構(gòu)描述為在規(guī)則處理器中使用以進(jìn)行針對(duì)內(nèi)容載荷允許進(jìn)行并行以及遞歸的順序的內(nèi)容分析。該架構(gòu)提供了并行模式匹配能力以及進(jìn)行多個(gè)快速的基于內(nèi)容的狀態(tài)轉(zhuǎn)換的能力。
在一個(gè)實(shí)施例中,規(guī)則處理器包括指令或者規(guī)則序列發(fā)生器以將來(lái)自搜索寄存器中包含的內(nèi)容上的程序存儲(chǔ)的規(guī)則應(yīng)用以執(zhí)行。所述規(guī)則和內(nèi)容被執(zhí)行引擎所使用,所述執(zhí)行引擎支持為一個(gè)或多個(gè)操作,例如模式匹配、詞匯分析、解析和解釋功能而特別定制的規(guī)則詞匯表。
在一個(gè)實(shí)施例中,所述規(guī)則處理器對(duì)固定(anchored)或非固定(unanchored)模式執(zhí)行按優(yōu)先級(jí)排序并且定向的搜索序列和對(duì)從文檔、流、消息或者信息包中任意位置開始的任意長(zhǎng)度模式執(zhí)行窗口式并且限定范圍的(ranged)搜索序列。所述模式以及范圍控制和程序控制流(例如分支地址)可以在包含在程序存儲(chǔ)中的規(guī)則中靜態(tài)指定或者使用規(guī)則中給出的指針或索引從寄存器文件中動(dòng)態(tài)的間接選擇。這樣可以進(jìn)行很有效的動(dòng)態(tài)并且上下文的模式匹配。
規(guī)則處理器部分地使用連接到搜索寄存器的專用模式匹配硬件結(jié)構(gòu)進(jìn)行搜索。在一個(gè)實(shí)施例中,規(guī)則處理器支持大容量搜索、分類和優(yōu)先級(jí)排序功能。在一個(gè)實(shí)施例中,規(guī)則處理硬件為由具有搜索陣列和分類器模塊組成的四級(jí)流水線,直接對(duì)搜索寄存器中包含的2KB內(nèi)容數(shù)據(jù)(例如文檔數(shù)據(jù))進(jìn)行操作。這四級(jí)為(1)從規(guī)則存儲(chǔ)器獲取規(guī)則并解碼規(guī)則,(2)間接域的規(guī)則匯編,(3)對(duì)搜索寄存器中的值的搜索執(zhí)行操作,以及(4)對(duì)搜索操作結(jié)果的分類操作,緊接著是發(fā)送結(jié)果。
規(guī)則處理器向搜索寄存器結(jié)構(gòu)提出搜索的一個(gè)或多個(gè)規(guī)則。在一個(gè)實(shí)施例中,搜索寄存器是2KB的每個(gè)條目為一個(gè)字節(jié)寬度的寄存器文件。待搜索的數(shù)據(jù)被載入到該搜索寄存器文件。每個(gè)規(guī)則指定一個(gè)向所述搜索寄存器文件提出的模式以確定該模式是否存在于在此存儲(chǔ)的數(shù)據(jù)中。還可以提供掩碼以進(jìn)一步配置所述模式和/或減少搜索中使用的模式數(shù)量。
圖1是規(guī)則處理器一個(gè)實(shí)施例的結(jié)構(gòu)圖。參考圖1,搜索寄存器101和搜索執(zhí)行硬件102共同的接受搜索指令103。搜索指令103進(jìn)一步顯示在圖2A中。參考圖2A,搜索指令201包括描述搜索操作類型的操作碼(opcode)201a,搜索模式201b,指定模式中與當(dāng)前搜索指令相關(guān)的字節(jié)的掩碼201c以及分別指定與當(dāng)前搜索指令相關(guān)的搜索寄存器中位置的起始和終止邊界的兩個(gè)偏移201d和201e。搜索執(zhí)行單元202輸出結(jié)果203,所述結(jié)果203在一個(gè)實(shí)施例中包括指示搜索操作成功的標(biāo)記并且另外還包括一個(gè)或多個(gè)參數(shù),例如但不限于指示滿足搜索操作的搜索指令的在搜索寄存器中的位置的索引。
搜索執(zhí)行硬件202包括搜索寄存器202a和分類器202b,如圖2A所示。搜索寄存器202a存儲(chǔ)可搜索數(shù)據(jù),可以是來(lái)自文檔、消息、信息包或者任何其他公知的可以接受搜索的數(shù)據(jù)源的內(nèi)容。搜索寄存器202a的大小可以為任意M字節(jié),并且在一個(gè)實(shí)施例中是在更大的陣列中組成,稱為搜索陣列202c,具有M行每行N字節(jié)。來(lái)自搜索寄存器202a的數(shù)據(jù)以復(fù)制方式被存儲(chǔ)在所述搜索陣列中。搜索寄存器的該實(shí)施例因?yàn)榘ㄆ鋵?duì)在N個(gè)相鄰字節(jié)的模式上的搜索具有更好的性能的多種原因而成為優(yōu)選的。
在一個(gè)實(shí)施例中,待搜索數(shù)據(jù)基于地址發(fā)生器211產(chǎn)生的地址通過使用數(shù)據(jù)發(fā)生器213而存儲(chǔ)在搜索寄存器202a中,所述地址發(fā)生器211產(chǎn)生的地址通過地址解碼器212進(jìn)行解碼。該存儲(chǔ)過程還需要記錄搜索寄存器202a中的可搜索數(shù)據(jù)的數(shù)量。對(duì)于數(shù)量少于搜索寄存器202a的容量的數(shù)據(jù)集,搜索寄存器202a提供了一個(gè)機(jī)制來(lái)限制搜索操作到適當(dāng)?shù)臄?shù)據(jù)。在一個(gè)實(shí)施例中,數(shù)據(jù)發(fā)生器213可以存儲(chǔ)在搜索陣列202c的剩余位置中的搜索操作將要忽略的模式,或者在一個(gè)可替換實(shí)施例中,搜索寄存器202a使得搜索陣列202c的適當(dāng)位置不能參與搜索操作。
除了對(duì)指定模式的定位能力外,搜索寄存器202a還可以提供執(zhí)行例如對(duì)字符數(shù)據(jù)的大小寫敏感搜索的特別搜索的能力。為了支持這些和其他特別搜索,搜索寄存器202a可以存儲(chǔ)與可搜索數(shù)據(jù)的每個(gè)字節(jié)關(guān)聯(lián)的附加信息。在一個(gè)實(shí)施例中,搜索寄存器202a可以存儲(chǔ)與每個(gè)可搜索數(shù)據(jù)相關(guān)聯(lián)的特別位向量,允許進(jìn)行大小寫敏感搜索或者搜索屬于預(yù)定字符類別的字符。
不考慮在整個(gè)搜索陣列202c中可搜索數(shù)據(jù)組成的方式,搜索陣列202c接受模式201b和掩碼201c。模式201b與搜索陣列202c中的條目進(jìn)行比較。在一個(gè)實(shí)施例中,搜索陣列202c具有M行每行N個(gè)字節(jié),其中N與模式201b中字節(jié)數(shù)量相同。掩碼201c提供了模式201b中不作為參與搜索的模式的一部分的那些字節(jié)的標(biāo)示。換句話說(shuō),如果模式201b是少于N個(gè)字節(jié)的模式,則掩碼201c指定了搜索陣列202c將要忽略模式201b中的哪些字節(jié)。在一個(gè)實(shí)施例中,搜索陣列202c具有針對(duì)該搜索陣列202c中M行的每一行的輸出行,以表明正在搜索的模式是否與該特定行中存儲(chǔ)的內(nèi)容數(shù)據(jù)相匹配。在一個(gè)實(shí)施例中,如果輸出為1,則所述模式與該特定行中的內(nèi)容數(shù)據(jù)匹配。搜索陣列202c的M個(gè)輸出行連接到分類器202b的輸入。
分類器202b還連接以接收偏移201d和201e,偏移201d和201e分別指示搜索寄存器202a中待搜索范圍的起始和終止點(diǎn)。在一個(gè)實(shí)施例中,這些偏移為log2M位數(shù)字。在來(lái)自搜索陣列202c的匹配指示行和由偏移201d和201e指定的起始和終止范圍的基礎(chǔ)上,分類器202b處理搜索陣列202c的結(jié)果。這樣的處理可以包括執(zhí)行一個(gè)或多個(gè)操作。這些操作可以為索引解析函數(shù),依照操作類型輸出特定匹配索引。在一個(gè)實(shí)施例中,所述操作包括前向?qū)な?Find_First_Forward),反向?qū)な?Find_First_Reverse)和個(gè)體計(jì)數(shù)(Find_Population_Count)。這些操作由搜索指令201中的操作碼201a指定。分類器202b可以存儲(chǔ)先前操作的中間或者最終結(jié)果,所述結(jié)果可以與來(lái)自搜索陣列202c的匹配標(biāo)示行結(jié)合在一起用于后續(xù)操作。在這種方式中,分類器202b可以通過產(chǎn)生一系列利用先前操作的結(jié)果的操作而用于累進(jìn)地操作遍歷所述可搜索數(shù)據(jù)集。并且,分類器202b還可以連接到寄存器文件以存儲(chǔ)用于后續(xù)操作的先前操作結(jié)果,所述后續(xù)操作可以在執(zhí)行任意數(shù)量的其他操作之后而執(zhí)行。分類器202b的結(jié)果還可以連接到規(guī)則處理器指令序列發(fā)生器,例如圖1的指令序列發(fā)生器105,以產(chǎn)生或輔助規(guī)則程序偏移(例如分支地址)的產(chǎn)生。
在處理之后,分類器202b產(chǎn)生表明是否存在匹配的輸出,以及與該匹配相關(guān)聯(lián)的索引。該索引可以表明搜索寄存器202a中第一次匹配發(fā)生或者相對(duì)于搜索寄存器202a頂部的最后一次匹配發(fā)生的位置(地址)??商鎿Q地,所述索引可以表明由偏移指定的范圍內(nèi)發(fā)生的匹配的數(shù)量。
注意由偏移指定的范圍可以動(dòng)態(tài)改變。例如,第一搜索指令可以在由偏移201d和偏移201e指定的范圍包括搜索陣列202c的所有行時(shí)被初始應(yīng)用到搜索陣列202c。然而,在第一搜索指令和匹配被識(shí)別之后,起始和終止范圍可以在隨后的搜索指令中改變,從而所述搜索從如下包含在由先前搜索指令指定的范圍內(nèi)找到的匹配線的位置開始這種能力是通過使用允許規(guī)則或者指令的域引用通用寄存器文件中的值的間接功能而實(shí)現(xiàn)的。
在圖2A中,在一個(gè)實(shí)施例中,搜索陣列202c由2K行每行8個(gè)字節(jié)組成。因此,搜索寄存器202a保存2K字節(jié)數(shù)據(jù)。搜索陣列202c保存復(fù)制數(shù)據(jù)。以搜索寄存器202a中特別字節(jié)開始的每個(gè)8字節(jié)串在搜索陣列202c中存儲(chǔ)為特別行。這些串由來(lái)自搜索寄存器202a的特別字節(jié)和緊跟搜索寄存器202a中字節(jié)之后的附加的7個(gè)連續(xù)字節(jié)組成。因此,搜索陣列202c的每一行保存前一行的7個(gè)最高字節(jié)以及添加到這7個(gè)字節(jié)右側(cè)的緊跟高位字節(jié)的一個(gè)附加字節(jié)。
數(shù)據(jù)通過數(shù)據(jù)發(fā)生器213被加載到搜索陣列202c中,所述數(shù)據(jù)發(fā)生器213在一個(gè)實(shí)施例中提供來(lái)自數(shù)據(jù)源的每行的適當(dāng)?shù)?個(gè)字節(jié)數(shù)據(jù)。
在一個(gè)實(shí)施例中,8字節(jié)搜索模式在每個(gè)搜索指令中提供。所述搜索模式與搜索陣列202c相結(jié)合,從而在該陣列中的8列中的每一列被提供特別字節(jié)。這在圖2B中顯示。參考圖2B,狀態(tài)字節(jié)1至8存儲(chǔ)在搜索陣列1至2K行的每一行中。對(duì)于存儲(chǔ)為圖2B中所示的2K行和8列的搜索陣列的元素的每個(gè)字節(jié),存在信號(hào)行310。例如,行1的字節(jié)1產(chǎn)生信號(hào)行31011,行1的字節(jié)2產(chǎn)生信號(hào)行31012,行2的字節(jié)1產(chǎn)生信號(hào)行31021,以此類推。每個(gè)字節(jié)的信號(hào)在搜索操作期間當(dāng)所存儲(chǔ)的字節(jié)與提供給該元素所屬相同列的搜索模式的字節(jié)相匹配時(shí)被聲明。在該實(shí)施例中,每行包含8個(gè)字節(jié),8個(gè)信號(hào)行例如從31011到31018被用于標(biāo)示行內(nèi)的每個(gè)字節(jié)級(jí)匹配。所述每行的字節(jié)級(jí)匹配與來(lái)自行內(nèi)掩碼102c和掩碼解析模塊311的掩碼一起作“與”運(yùn)算?!芭c”函數(shù)的結(jié)果表明每行內(nèi)是否發(fā)生了匹配。在該實(shí)施例中,其中搜索陣列包括2K行,2K個(gè)匹配線輸出到分類器。該陣列中字節(jié)元素312的兩個(gè)電路結(jié)構(gòu)在圖4中所示。該電路以通過在一個(gè)時(shí)鐘周期內(nèi)在其所有行內(nèi)執(zhí)行同時(shí)搜索而提供完全并行搜索操作的方式工作。當(dāng)執(zhí)行搜索操作時(shí),一列內(nèi)的所有字節(jié)級(jí)匹配線401同時(shí)指示其分別存儲(chǔ)的字節(jié)的匹配。搜索操作在所有列上同時(shí)激活,允許每行內(nèi)的掩碼后縮減模塊指示行級(jí)匹配。因此,在搜索陣列的該實(shí)施例中,在單個(gè)時(shí)鐘內(nèi),執(zhí)行了對(duì)搜索寄存器內(nèi)由8個(gè)相鄰字節(jié)組成的所有2K字符串的并行搜索并且結(jié)果在2K匹配線中表現(xiàn)。
圖3A是分類器一個(gè)實(shí)施例的結(jié)構(gòu)圖。參考圖3A,來(lái)自搜索陣列的匹配線310連接并輸入到范圍掩碼和選擇單元301。在一個(gè)實(shí)施例中,匹配線310包括匹配1至匹配2048。范圍掩碼和選擇單元301接收一對(duì)指定來(lái)自搜索陣列的M個(gè)匹配線的行范圍的偏移以進(jìn)行進(jìn)一步處理。在一個(gè)實(shí)施例中,所述偏移為11位數(shù)碼,被轉(zhuǎn)換為2K掩碼位,所述2K掩碼位可以與匹配線進(jìn)行“與”運(yùn)算以提供輸出。這樣的示例在圖3B中顯示,其中起始范圍的偏移被轉(zhuǎn)換為一個(gè)或多個(gè)零,而剩下的位均為1,同時(shí)范圍終止的偏移被轉(zhuǎn)換為從底部開始向上到某點(diǎn)均為0,而此后所有位均為1。通過將這些寄存器與匹配線進(jìn)行“與”運(yùn)算,在所指定的起始和終止范圍內(nèi)的發(fā)生的匹配被原封不動(dòng)的輸出,同時(shí)在所述范圍之外的匹配線被屏蔽(be masked)(例如改變?yōu)轭A(yù)定邏輯電平)。
范圍掩碼和選擇單元301的輸出連接到索引解析函數(shù)單元302的輸入。在一個(gè)實(shí)施例中,索引解析函數(shù)單元302包括一個(gè)或多個(gè)在范圍掩碼和選擇單元301的輸出上運(yùn)算的函數(shù)。例如,如圖所示,分類器包括升序優(yōu)先編碼器302A用于找到在指定的N字節(jié)模式和非掩碼匹配線所指示的搜索陣列中的內(nèi)容數(shù)據(jù)之間發(fā)生(相對(duì)于搜索陣列的頂部)的第一次匹配。也可以包括用于尋找在N字節(jié)模式和非掩碼匹配線所指示的搜索陣列中的內(nèi)容數(shù)據(jù)之間發(fā)生(相對(duì)于搜索陣列頂部)的最后一次匹配的降序優(yōu)先編碼器302B。個(gè)體計(jì)數(shù)器302C指示在N字節(jié)模式和非掩碼匹配線所指示的搜索陣列中的數(shù)據(jù)之間發(fā)生的匹配的數(shù)量。也可以使用其他索引選擇器。
索引解析函數(shù)單元302的輸出被輸入到索引組合和選擇單元303,該單元303也被連接以接收操作碼102a。操作碼102a在搜索指令中指定并且選擇一個(gè)索引解析函數(shù)輸出作為分類器的輸出。索引組合和選擇單元303產(chǎn)生匹配指示器321以指示存在匹配以及索引322指示數(shù)據(jù)的搜索陣列中的位置,該位置在選擇升序優(yōu)先編碼器302A的輸出時(shí)為第一個(gè)匹配發(fā)生處,或者在選擇降序優(yōu)先編碼器302B的輸出時(shí)為最末一次匹配發(fā)生處,以及在選擇個(gè)體計(jì)數(shù)器302C時(shí)指示非掩碼匹配線中的匹配數(shù)量等等。緊接輸出計(jì)算之后,匹配指示器321和索引322可以用于控制一個(gè)或多個(gè)搜索指令的執(zhí)行,之后將輸出存儲(chǔ)到通用寄存器中并在隨后指令中利用間接指定,分支到指令存儲(chǔ)器(例如指令存儲(chǔ)器104)中依賴于匹配指示器321或者其他類似技術(shù)的指定地址。
圖5顯示了包括搜索裝置的規(guī)則處理器的微架構(gòu)。參考圖5,搜索指令存儲(chǔ)在指令存儲(chǔ)器501中。指令的選擇是通過流控制使用指令獲取指針寄存器502。指令由解碼器503進(jìn)行解碼。每個(gè)指令的單個(gè)子集取自該指令或者通用寄存器文件504。然后每個(gè)指令的各個(gè)子集被應(yīng)用到各個(gè)單元,即搜索陣列505,包含分類單元506a以及緊跟的特征化單元506b的分類器506,傳統(tǒng)的算術(shù)邏輯單元(ALU)507,如上所述。在一個(gè)實(shí)施例中,每個(gè)指令的處理遵循四級(jí)流水線,如前所述的包括(i)指令獲取級(jí)508,(ii)指令匯編級(jí)509,(iii)搜索/執(zhí)行級(jí)510,以及(iv)結(jié)果的分類和發(fā)送和/或分支級(jí)511。
在一個(gè)實(shí)施例中,規(guī)則引擎指令格式包括128位規(guī)則格式。所述128規(guī)則被劃分為包含向規(guī)則處理器上各種硬件引擎發(fā)出指示的各種域的子集。在一個(gè)實(shí)施例中,搜索子集包括搜索/分類操作碼域(5比特),模式域(在一個(gè)實(shí)施例中為65比特,包括8字節(jié)值或者指向提供8字節(jié)值的位置的指針,以及指定指令中所述8字節(jié)值是否為指針的附加比特位),字節(jié)級(jí)掩碼域(在一個(gè)實(shí)施例中為8比特),起始位置地址域(在一個(gè)實(shí)施例中該域?yàn)?2比特,包括11比特值或者指向提供該11比特值的寄存器的指針,并且包括一個(gè)附加比特位指示是否所述起始位置地址包括11比特值或是所述指針),終止位置地址域(在一個(gè)實(shí)施例中,該域?yàn)?2比特,包括11比特值或者指向提供該11比特值的寄存器的指針,以及指定所述終止位置地址信息是否為指針的一個(gè)附加比特位),指定搜索操作的結(jié)果返回何處的結(jié)果寄存器域(在一個(gè)實(shí)施例中,該域?yàn)?比特)以及分支地址域(在一個(gè)實(shí)施例中該域?yàn)?0比特,包括19比特值或者指向提供該19比特值的寄存器的指針,以及指示所述分支地址信息是否為指針的一個(gè)附加比特位)。
圖6顯示了規(guī)則集的示例偽碼601,所述偽碼601可以通過上述的規(guī)則處理器的一個(gè)實(shí)施例進(jìn)行處理。所述規(guī)則具有多個(gè)模式,以及某些這樣的模式可以存在于消息或文檔或信息包中的位置的特定約束。這些約束通過使用關(guān)鍵字例如BEFORE和AND而在偽碼中表達(dá)。為了簡(jiǎn)化起見,在該示例中使用的601中的模式在字符串之間不具有任何附加分隔符,這可能與實(shí)際情況相符。并且,圖6為針對(duì)示例的規(guī)則處理器的對(duì)應(yīng)的微碼的列表602。指令的格式如前所述。使用第一條指令603進(jìn)行說(shuō)明,它包含前向?qū)な?FIND_FIRST_FORWORD)操作碼,其中所有8字節(jié)模式“cp/bin/”均與搜索相關(guān)(通過使用掩碼0×FF),其中起始和終止偏移表示為常值(通過使用間接標(biāo)記)以指示搜索寄存器中保存的可搜索載荷的起始和終止點(diǎn)。為了簡(jiǎn)化起見,所述常值的推導(dǎo)在此略去。該操作碼的結(jié)果顯示為加載到通用寄存器A中并且最后分支地址被指定為常值11,這是將緊跟圖6中所示微碼段之后的指令。該指令會(huì)導(dǎo)致搜索執(zhí)行硬件在搜索寄存器202a的字節(jié)位置0×03D和0×800內(nèi)搜索“cp/bin/”的產(chǎn)生。搜索陣列202c中所有匹配的行會(huì)在微架構(gòu)流水線的搜索執(zhí)行級(jí)510結(jié)束時(shí)聲明其各自的匹配線310。在分類和分支級(jí)511中,分類器202b將0×03D和0×800轉(zhuǎn)換為如圖3B所示的位向量。所述位向量用于執(zhí)行范圍掩碼和選擇函數(shù)301以拒絕任何起始于從0×03D至0×800的位置窗口之外的匹配。在剩下的處于所述位置窗口之內(nèi)的匹配中,該指令的操作碼從索引解析函數(shù)302中選擇升序優(yōu)先編碼器302a以將最低編號(hào)的匹配轉(zhuǎn)換為11位二進(jìn)制編碼位置。如果找到這樣的匹配,則匹配321會(huì)被聲明并且索引322會(huì)保存所述11位位置。如果匹配321由于沒有找到匹配而沒有被聲明,則指令序列發(fā)生器105會(huì)將分支地址0×B載入到指令指針106。索引322會(huì)被寄存器文件504的控制電路載入到通用寄存器A。如果可應(yīng)用,則通用寄存器A中的所述加載和指令指針的加載將會(huì)在分類和分支執(zhí)行級(jí)511結(jié)束時(shí)完成。第二條指令604,固定前向?qū)な?FIND_FORWARD_ANCHORED),進(jìn)一步顯示了示例規(guī)則引擎的大容量詞匯表。它是前向?qū)な?FIND_FIRST_FORWARD)的一種變化,其中要成功搜索則匹配必須開始于起始偏移(start_offset)。
圖7顯示了在圖5中所示的示例規(guī)則處理器的微架構(gòu)內(nèi)的如圖6所示的微碼的執(zhí)行。表701顯示了多個(gè)時(shí)鐘周期內(nèi)的執(zhí)行。為了簡(jiǎn)化起見,假定所有搜索指令都成功的找到了搜索寄存器中指定的模式。所述執(zhí)行通過圖5所述的4級(jí)以流水線方式進(jìn)行。通過使用間接指定,搜索指令的執(zhí)行可以使用緊接先前指令中計(jì)算出的偏移。因此,指令1至8在連續(xù)周期內(nèi)執(zhí)行。指令8是依賴于通用寄存器A和通用寄存器B的內(nèi)容的比較結(jié)果的分支,所述比較分別在時(shí)鐘周期8和時(shí)鐘周期9中計(jì)算。所述分支在時(shí)鐘周期11中進(jìn)行并且指令執(zhí)行在時(shí)鐘周期14中完成。因此,使用偽碼601描述的復(fù)雜模式匹配表達(dá)式使用示例規(guī)則處理器的大容量指令詞匯表僅在14個(gè)時(shí)鐘周期內(nèi)即執(zhí)行完畢。該示例顯示了示例規(guī)則處理器在執(zhí)行包括動(dòng)態(tài)和上下文的文檔、消息或信息包搜索和分析等功能時(shí)的能力和效率。
盡管本發(fā)明的任何替換和修改對(duì)于本領(lǐng)域普通技術(shù)人員在理解前述說(shuō)明后無(wú)疑是顯然的,然而應(yīng)當(dāng)理解,以示例方式顯示和描述的任何特定實(shí)施例不應(yīng)被認(rèn)為是限制性的。因此,各種實(shí)施例細(xì)節(jié)所涉及到的內(nèi)容不是為了限制權(quán)利要求的范圍,權(quán)利要求書自身僅僅描述了本發(fā)明的必要特征。
權(quán)利要求
1.一種進(jìn)行上下文搜索的規(guī)則處理器,所述規(guī)則處理器包括多個(gè)輸入有效載荷搜索寄存器;連接到所述多個(gè)搜索寄存器的搜索執(zhí)行引擎,響應(yīng)于指定一個(gè)或多個(gè)模式搜索并向所述搜索寄存器中的內(nèi)容提出一個(gè)或多個(gè)模式的一個(gè)或多個(gè)搜索指令的執(zhí)行,通過并行模式匹配對(duì)所述搜索寄存器中的內(nèi)容執(zhí)行一個(gè)或多個(gè)上下文搜索。
2.根據(jù)權(quán)利要求1所述的規(guī)則處理器,其中所述一個(gè)或多個(gè)搜索指令的域連接到所述多個(gè)搜索寄存器和所述搜索執(zhí)行引擎。
3.根據(jù)權(quán)利要求1所述的規(guī)則處理器,其中所述一個(gè)或多個(gè)搜索指令中的至少一個(gè)指定了將對(duì)所述多個(gè)搜索寄存器中的內(nèi)容進(jìn)行搜索的模式和零個(gè)或者更多搜索參數(shù)。
4.根據(jù)權(quán)利要求3所述的規(guī)則處理器,其中所述一個(gè)參數(shù)指定了所述模式中將被屏蔽的部分,以使得該模式的子集能夠針對(duì)所述搜索寄存器中的內(nèi)容進(jìn)行搜索。
5.根據(jù)權(quán)利要求4所述的規(guī)則處理器,其中所述被屏蔽的部分模式是通過掩碼向量指定以屏蔽該模式中的特定字節(jié)。
6.根據(jù)權(quán)利要求4所述的規(guī)則處理器,其中所述零個(gè)或更多參數(shù)指定了組成所述搜索寄存器中內(nèi)容范圍的起始和終止位置,所述搜索執(zhí)行引擎將搜索限制在該內(nèi)容范圍內(nèi)。
7.根據(jù)權(quán)利要求4所述的規(guī)則處理器,其中所述至少一個(gè)指令指定了窗口式前向?qū)な姿阉鳌?br> 8.根據(jù)權(quán)利要求4所述的規(guī)則處理器,其中所述至少一個(gè)指令指定了窗口式反向?qū)な姿阉鳌?br> 9.根據(jù)權(quán)利要求1所述的規(guī)則處理器,其中所述搜索執(zhí)行引擎產(chǎn)生至少一個(gè)結(jié)果輸出以表明對(duì)所述搜索寄存器中內(nèi)容的搜索的成功。
10.根據(jù)權(quán)利要求4所述的規(guī)則處理器,其中所述至少一個(gè)結(jié)果輸出包括表明在所述至少一個(gè)指令中指定的模式和所述多個(gè)搜索寄存器中內(nèi)容之間是否產(chǎn)生了匹配的指示。
11.根據(jù)權(quán)利要求4所述的規(guī)則處理器,其中所述至少一個(gè)結(jié)果輸出包括表明所述至少一個(gè)指令指定的模式和所述搜索寄存器中內(nèi)容之間在所述多個(gè)搜索寄存器中發(fā)生了匹配的位置指示。
12.根據(jù)權(quán)利要求1所述的規(guī)則處理器,其中所述至少一個(gè)搜索指令包括如下域,所述域指定參數(shù)以用于控制搜索或者指定指針指向存儲(chǔ)了用于控制搜索的參數(shù)的存儲(chǔ)器。
13.根據(jù)權(quán)利要求12所述的規(guī)則處理器,其中所述指針指向通用寄存器。
14.根據(jù)權(quán)利要求12所述的規(guī)則處理器,其中所述指針指向的值是所述搜索執(zhí)行硬件先前執(zhí)行的搜索的結(jié)果。
15.根據(jù)權(quán)利要求12所述的規(guī)則處理器,其中所述值對(duì)應(yīng)于一個(gè)包括掩碼、搜索窗口參數(shù)以及控制參數(shù)的組。
16.根據(jù)權(quán)利要求1所述的規(guī)則處理器,其中所述多個(gè)輸入有效載荷搜索寄存器包括寄存器文件。
17.根據(jù)權(quán)利要求16所述的規(guī)則處理器,其中所述寄存器文件包括2K個(gè)條目,每個(gè)條目為一個(gè)字節(jié)。
18.根據(jù)權(quán)利要求16所述的規(guī)則處理器,其中所述寄存器文件包括由11位寄存器地址進(jìn)行尋址的多個(gè)條目。
19.根據(jù)權(quán)利要求1所述的規(guī)則處理器,其進(jìn)一步包括用于存儲(chǔ)一個(gè)或多個(gè)應(yīng)用到所述搜索寄存器中數(shù)據(jù)的搜索指令的存儲(chǔ)器。
20.根據(jù)權(quán)利要求1所述的規(guī)則處理器,其中所述搜索指令導(dǎo)致所述搜索執(zhí)行引擎對(duì)所述搜索寄存器的內(nèi)容中的任意長(zhǎng)度模式執(zhí)行搜索。
21.根據(jù)權(quán)利要求1所述的規(guī)則處理器,其進(jìn)一步包括指令序列發(fā)生器用于應(yīng)用一個(gè)或多個(gè)搜索指令到所述搜索執(zhí)行引擎。
22.根據(jù)權(quán)利要求21所述的規(guī)則處理器,其中所述一個(gè)或多個(gè)搜索指令指定了至少一個(gè)模式、范圍控制以及程序控制流。
23.根據(jù)權(quán)利要求21所述的規(guī)則處理器,其中所述一個(gè)或多個(gè)搜索指令包括用于指定存儲(chǔ)了指定至少一個(gè)模式、范圍控制以及程序控制流的信息的存儲(chǔ)器位置的指針。
24.根據(jù)權(quán)利要求21所述的規(guī)則處理器,其中所述一個(gè)或多個(gè)搜索指令中的至少一個(gè)搜索指令包括指示搜索操作類型的操作碼信息,指定待定位模式的模式信息,指定包括所述模式的部分模式信息的掩碼,以及指定對(duì)于至少一個(gè)搜索指令進(jìn)行搜索的搜索寄存器中位置的起始和終止邊界的一對(duì)偏移。
25.根據(jù)權(quán)利要求1所述的規(guī)則處理器,其中所述搜索執(zhí)行引擎包括表明一個(gè)搜索指令的執(zhí)行的搜索成功的第一輸出指示以及表明由一個(gè)搜索指令指定的模式的在所述搜索寄存器內(nèi)的位置的第二輸出指示。
26.根據(jù)權(quán)利要求1所述的規(guī)則處理器,其中所述搜索執(zhí)行引擎包括連接到所述多個(gè)輸入有效載荷搜索寄存器的搜索陣列,其中所述多個(gè)搜索寄存器中的內(nèi)容被復(fù)制并存儲(chǔ)到所述搜索陣列中;以及連接到所述搜索陣列的分類器,用于響應(yīng)由一個(gè)或多個(gè)搜索指令指定的信息執(zhí)行一個(gè)或多個(gè)操作。
27.根據(jù)權(quán)利要求26所述的規(guī)則處理器,其中所述搜索陣列包括M個(gè)匹配線,所述M個(gè)匹配線中的每一個(gè)與存儲(chǔ)在所述搜索陣列中的一組數(shù)據(jù)關(guān)聯(lián)并且能夠指示由一個(gè)或多個(gè)搜索指令中的一個(gè)所指定的模式是否與存儲(chǔ)在所述搜索陣列中的與其相關(guān)聯(lián)數(shù)據(jù)組中的數(shù)據(jù)相匹配。
28.根據(jù)權(quán)利要求27所述的規(guī)則處理器,其中所述分類器通過連接以用來(lái)接收所述M個(gè)匹配線以執(zhí)行與由該M個(gè)匹配線所指示的匹配相關(guān)聯(lián)的一個(gè)或多個(gè)操作。
29.根據(jù)權(quán)利要求28所述的規(guī)則處理器,其中所述信息指定了范圍,并且所述分類器僅在所指定的范圍內(nèi)對(duì)所述M個(gè)匹配線進(jìn)行分類。
30.根據(jù)權(quán)利要求29所述的規(guī)則處理器,其中所述范圍在所述搜索指令中指定。
31.根據(jù)權(quán)利要求29所述的規(guī)則處理器,其中所述信息指定了存儲(chǔ)器中所述范圍被存儲(chǔ)的位置。
32.根據(jù)權(quán)利要求31所述的規(guī)則處理器,其中所述存儲(chǔ)器為寄存器文件。
33.根據(jù)權(quán)利要求26所述的規(guī)則處理器,其中所述搜索陣列包括第一輸入用于接收包含模式的比特位,以及第二輸入用于掩碼,所述搜索陣列基于所述掩碼而屏蔽對(duì)應(yīng)于所述模式的零個(gè)或更多比特位。
34.根據(jù)權(quán)利要求33所述的規(guī)則處理器,其中所述包含模式的比特包括N個(gè)字節(jié)并且所述掩碼包括N個(gè)比特,N個(gè)比特中的每一個(gè)關(guān)聯(lián)到N個(gè)字節(jié)中不同的每個(gè)字節(jié),其中所述搜索陣列在N比特掩碼中一個(gè)比特處于第一狀態(tài)時(shí)將該比特在所述模式的N個(gè)字節(jié)中關(guān)聯(lián)的字節(jié)屏蔽。
35.根據(jù)權(quán)利要求26所述的規(guī)則處理器,其中所述分類器具有表明所述匹配線中的一個(gè)或多個(gè)是否匹配的第一輸出以及表明執(zhí)行所述一個(gè)或多個(gè)操作的結(jié)果的第二輸出。
36.根據(jù)權(quán)利要求35所述的規(guī)則處理器,其中所述第二輸出表明了所述搜索陣列內(nèi)在所述模式和存儲(chǔ)在所述搜索陣列中的數(shù)據(jù)之間第一次匹配發(fā)生的相對(duì)于所述搜索陣列一側(cè)的位置。
37.根據(jù)權(quán)利要求35所述的規(guī)則處理器,其中所述第二輸出表明了所述M個(gè)匹配線的范圍內(nèi)產(chǎn)生匹配的數(shù)量。
38.根據(jù)權(quán)利要求26所述的規(guī)則處理器,其中所述分類器響應(yīng)于范圍掩碼進(jìn)行操作以對(duì)搜索操作以屏蔽所述搜索陣列的一個(gè)或多個(gè)輸出。
39.根據(jù)權(quán)利要求26所述的規(guī)則處理器,其中所述分類器進(jìn)一步包括優(yōu)先編碼器,用于標(biāo)示在所述搜索陣列中對(duì)應(yīng)于所述模式和存儲(chǔ)在所述搜索陣列中的數(shù)據(jù)之間第一次匹配發(fā)生的相對(duì)于所述搜索陣列一側(cè)的對(duì)應(yīng)于所述M個(gè)匹配線的位置。
40.根據(jù)權(quán)利要求39所述的規(guī)則處理器,其中所述優(yōu)先編碼器為升序優(yōu)先編碼器并且所述搜索陣列的一側(cè)為該搜索陣列的頂部。
41.根據(jù)權(quán)利要求39所述的規(guī)則處理器,其中所述優(yōu)先權(quán)編碼器為降序優(yōu)先編碼器并且所述搜索陣列的一側(cè)為該搜索陣列的底部。
42.根據(jù)權(quán)利要求26所述的規(guī)則處理器,其中所述分類器進(jìn)一步包括計(jì)數(shù)器以確定所述搜索陣列中匹配的數(shù)量。
43.根據(jù)權(quán)利要求26所述的規(guī)則處理器,其中所述分類器進(jìn)一步包括升序優(yōu)先編碼器,用于標(biāo)示在所述搜索陣列中對(duì)應(yīng)于所述模式和存儲(chǔ)在所述搜索陣列中的數(shù)據(jù)之間第一次匹配發(fā)生的相對(duì)于所述搜索陣列頂部的對(duì)應(yīng)于所述M個(gè)匹配線的位置;降序優(yōu)先編碼器,用于標(biāo)示所述搜索陣列中對(duì)應(yīng)于所述模式和存儲(chǔ)在所述搜索陣列中的數(shù)據(jù)之間第一次匹配發(fā)生的相對(duì)于所述搜索陣列底部的對(duì)應(yīng)于所述M個(gè)匹配線的位置;計(jì)數(shù)器,用于確定所述M個(gè)匹配線的范圍內(nèi)產(chǎn)生匹配的數(shù)量;以及連接到所述升序優(yōu)先編碼器、降序優(yōu)先編碼器和計(jì)數(shù)器并且具有第一輸出的選擇器,所述選擇器可以被操作以選擇所述升序優(yōu)先編碼器、降序優(yōu)先權(quán)編碼器和計(jì)數(shù)器的一個(gè)輸出作為所述分類器的第一輸出。
44.根據(jù)權(quán)利要求43所述的規(guī)則處理器,其中所述選擇器具有第二輸出,指示在所述模式和所述搜索陣列中的數(shù)據(jù)之間是否產(chǎn)生了匹配。
45.根據(jù)權(quán)利要求26所述的規(guī)則處理器,其中所述搜索陣列包括多個(gè)存儲(chǔ)器位置行,用于存儲(chǔ)數(shù)據(jù)字節(jié);多個(gè)字節(jié)比較器行,用于將存儲(chǔ)在所述多個(gè)存儲(chǔ)器位置行中的數(shù)據(jù)字節(jié)與所述模式的字節(jié)進(jìn)行比較,所述多個(gè)字節(jié)比較器行中的每一個(gè)比較器具有一個(gè)輸出;多個(gè)掩碼縮減單元,所述多個(gè)掩碼縮減單元中的每一個(gè)被連接以接收字節(jié)掩碼和字節(jié)比較器一行內(nèi)的比較器的比較輸出,所述多個(gè)掩碼縮減單元基于所述字節(jié)掩碼而對(duì)各個(gè)比較器輸出進(jìn)行屏蔽操作并且將每行的未屏蔽的比較器輸出組合為多個(gè)掩碼線中的一個(gè)。
46.根據(jù)權(quán)利要求1所述的規(guī)則處理器,其進(jìn)一步包括規(guī)則存儲(chǔ)器,用于存儲(chǔ)多個(gè)規(guī)則;連接到所述規(guī)則存儲(chǔ)器的規(guī)則序列發(fā)生器,用于選擇一個(gè)或多個(gè)規(guī)則執(zhí)行;以及解碼器,用于對(duì)所述規(guī)則序列發(fā)生器選擇的一個(gè)或多個(gè)規(guī)則進(jìn)行解碼,所述解碼器連接到所述搜索陣列和分類器以提供解碼完成信息給所述搜索陣列和分類器。
47.一種規(guī)則引擎內(nèi)容處理器,包括搜索陣列,用于執(zhí)行所述搜索陣列中存儲(chǔ)的數(shù)據(jù)和在第一輸入接收到的來(lái)自搜索指令的N字節(jié)模式之間的模式匹配,所述搜索陣列具有M個(gè)匹配線作為輸出,所述M個(gè)匹配線的每一個(gè)與存儲(chǔ)在該陣列中的一個(gè)數(shù)據(jù)組相關(guān)聯(lián),并且能夠指示所述N字節(jié)模式是否與存儲(chǔ)在所述搜索陣列中的相關(guān)聯(lián)數(shù)據(jù)組中的數(shù)據(jù)相匹配;以及分類器,所述分類器被連接以接收所述M個(gè)匹配線從而執(zhí)行一個(gè)或多個(gè)與所述M個(gè)匹配線指示的匹配相關(guān)聯(lián)的操作,所述一個(gè)或多個(gè)操作響應(yīng)于所述規(guī)則指定的信息而被執(zhí)行,并且進(jìn)而其中所述分類器輸出指示所找到的任何匹配的數(shù)據(jù)。
48.根據(jù)權(quán)利要求47所述的規(guī)則引擎內(nèi)容處理器,其中所述分類器具有指示所述一個(gè)或多個(gè)匹配線是否匹配的第一輸出以及指示執(zhí)行所述一個(gè)或多個(gè)操作的結(jié)果的第二輸出。
49.根據(jù)權(quán)利要求47所述的規(guī)則引擎內(nèi)容處理器,其中所述搜索陣列包括第二輸入以接收N比特掩碼從而應(yīng)用到所述N字節(jié)模式。
50.根據(jù)權(quán)利要求47所述的規(guī)則引擎內(nèi)容處理器,其中所述分類器包括范圍掩碼用于基于一定范圍而屏蔽所述M個(gè)掩碼線的一部分。
51.根據(jù)權(quán)利要求50所述的規(guī)則引擎內(nèi)容處理器,其中所述范圍掩碼通過由所述搜索指令指定的一對(duì)偏移與所述M個(gè)掩碼線進(jìn)行邏輯“與”運(yùn)算。
52.根據(jù)權(quán)利要求51所述的規(guī)則引擎內(nèi)容處理器,其中所述規(guī)則包括所述的一對(duì)偏移。
53.根據(jù)權(quán)利要求50所述的規(guī)則引擎內(nèi)容處理器,其中所述規(guī)則包括指向所述偏移在存儲(chǔ)器中的存儲(chǔ)位置的指針。
54.根據(jù)權(quán)利要求47所述的規(guī)則引擎內(nèi)容處理器,其中所述分類器的數(shù)據(jù)輸出是以供使用的反饋并且是在下一個(gè)周期中給該分類器的輸入。
55.根據(jù)權(quán)利要求47所述的規(guī)則引擎內(nèi)容處理器,其中所述分類器進(jìn)一步包括優(yōu)先編碼器,用于標(biāo)示所述搜索陣列中對(duì)應(yīng)于所述模式和存儲(chǔ)在所述搜索陣列中的數(shù)據(jù)之間第一次匹配發(fā)生的相對(duì)于所述搜索陣列一側(cè)的對(duì)應(yīng)于所述M個(gè)匹配線的位置。
56.根據(jù)權(quán)利要求55所述的規(guī)則引擎內(nèi)容處理器,其中所述優(yōu)先編碼器為升序優(yōu)先編碼器并且所述搜索陣列的一側(cè)為該搜索陣列的頂部。
57.根據(jù)權(quán)利要求55所述的規(guī)則引擎內(nèi)容處理器,其中所述優(yōu)先編碼器為降序優(yōu)先編碼器并且所述搜索陣列的一側(cè)為該搜索陣列的底部。
58.根據(jù)權(quán)利要求47所述的規(guī)則引擎內(nèi)容處理器,其中所述分類器進(jìn)一步包括計(jì)數(shù)器以確定所述M個(gè)匹配線范圍內(nèi)的匹配的數(shù)量。
59.根據(jù)權(quán)利要求47所述的規(guī)則引擎內(nèi)容處理器,其中所述分類器進(jìn)一步包括升序優(yōu)先編碼器,用于標(biāo)示所述搜索陣列中對(duì)應(yīng)于所述模式和存儲(chǔ)在所述搜索陣列中的數(shù)據(jù)之間第一次匹配發(fā)生的相對(duì)于所述搜索陣列頂部的對(duì)應(yīng)于所述M個(gè)匹配線的位置;降序優(yōu)先編碼器,用于標(biāo)示所述搜索陣列中對(duì)應(yīng)于所述模式和存儲(chǔ)在所述搜索陣列中的數(shù)據(jù)之間第一次匹配發(fā)生的相對(duì)于所述搜索陣列底部的對(duì)應(yīng)于所述M個(gè)匹配線的位置;計(jì)數(shù)器,用于確定所述M個(gè)匹配線的范圍內(nèi)的匹配的數(shù)量;以及連接到所述升序優(yōu)先編碼器、降序優(yōu)先編碼器和計(jì)數(shù)器并且具有第一輸出的選擇器,所述選擇器可以被操作以選擇所述升序優(yōu)先編碼器、降序優(yōu)先編碼器和計(jì)數(shù)器的一個(gè)輸出作為所述分類器的第一輸出。
60.根據(jù)權(quán)利要求55所述的規(guī)則引擎內(nèi)容處理器,其中所述選擇器具有第二輸出以指示在所述模式和所述搜索陣列中的數(shù)據(jù)之間是否產(chǎn)生了匹配。
61.根據(jù)權(quán)利要求47所述的規(guī)則引擎內(nèi)容處理器,其中所述N個(gè)比特中的每一個(gè)關(guān)聯(lián)到N個(gè)字節(jié)中不同的每個(gè)字節(jié),其中所述搜索陣列在N比特掩碼中一個(gè)比特處于第一狀態(tài)時(shí)屏蔽該比特在所述模式的N個(gè)字節(jié)中關(guān)聯(lián)的字節(jié)。
62.根據(jù)權(quán)利要求47所述的規(guī)則引擎內(nèi)容處理器,其中所述信息指定了范圍,并且所述分類器僅在所指定的范圍內(nèi)對(duì)所述M個(gè)匹配線進(jìn)行分類。
63.根據(jù)權(quán)利要求62所述的規(guī)則引擎內(nèi)容處理器,其中所述范圍在所述搜索指令中指定。
64.根據(jù)權(quán)利要求62所述的規(guī)則引擎內(nèi)容處理器,其中所述信息指定了存儲(chǔ)器中所述范圍被存儲(chǔ)的位置。
65.根據(jù)權(quán)利要求47所述的規(guī)則引擎內(nèi)容處理器,其中所述搜索陣列包括多個(gè)存儲(chǔ)器位置行,用于存儲(chǔ)數(shù)據(jù)字節(jié);多個(gè)字節(jié)比較器行,用于將存儲(chǔ)在所述多個(gè)存儲(chǔ)器位置行中的數(shù)據(jù)字節(jié)與所述模式的字節(jié)進(jìn)行比較,所述多個(gè)字節(jié)比較器行中的每一個(gè)比較器具有一個(gè)輸出;多個(gè)掩碼縮減單元,所述多個(gè)掩碼縮減單元中的每一個(gè)被連接以接收字節(jié)掩碼和字節(jié)比較器一行內(nèi)的比較器的比較輸出,所述多個(gè)掩碼縮減單元基于所述字節(jié)掩碼而對(duì)各個(gè)比較器輸出進(jìn)行屏蔽操作并且將每行的未屏蔽的比較器輸出組合為M個(gè)掩碼線中的一個(gè)。
66.根據(jù)權(quán)利要求47所述的規(guī)則引擎內(nèi)容處理器,其進(jìn)一步包括規(guī)則存儲(chǔ)器,用于存儲(chǔ)多個(gè)搜索指令;連接到所述搜索指令存儲(chǔ)器的規(guī)則序列發(fā)生器,以選擇用于執(zhí)行一個(gè)或多個(gè)搜索指令;以及解碼器,用于對(duì)所述規(guī)則序列發(fā)生器選擇的一個(gè)或多個(gè)搜索指令進(jìn)行解碼,所述解碼器連接到所述搜索陣列和分類器以提供解碼完成信息給所述搜索陣列和分類器。
67.一種過程,包括為一組輸入載荷搜索寄存器加載內(nèi)容;將由搜索指令指示的模式提交到所述搜索寄存器中進(jìn)行搜索;在所述模式和存儲(chǔ)在所述搜索寄存器中的內(nèi)容之間執(zhí)行模式匹配;以及輸出表明執(zhí)行所述模式匹配結(jié)果的指示。
68.根據(jù)權(quán)利要求67所述的過程,其進(jìn)一步包括產(chǎn)生多個(gè)與所述搜索陣列的行相關(guān)聯(lián)的匹配線,其中所述多個(gè)匹配線中的匹配線指示在所述模式和與該匹配線相關(guān)聯(lián)的行中的數(shù)據(jù)之間是否產(chǎn)生了匹配;至少在一組所述匹配線上響應(yīng)于所述搜索指令指定的信息而執(zhí)行一個(gè)或多個(gè)操作;輸出表明關(guān)于所述匹配線中的一個(gè)或多個(gè)是否與所述模式匹配的指示以及執(zhí)行所述一個(gè)或多個(gè)操作的結(jié)果。
69.根據(jù)權(quán)利要求67所述的過程,其中所述加載搜索寄存器被執(zhí)行為存儲(chǔ)、復(fù)制以及插入數(shù)據(jù),從而一行的數(shù)據(jù)以轉(zhuǎn)移形式被存儲(chǔ)在相鄰行。
70.根據(jù)權(quán)利要求67所述的過程,其進(jìn)一步包括將代碼轉(zhuǎn)換為搜索指令序列;在連續(xù)周期內(nèi)執(zhí)行所述搜索指令序列從而對(duì)于所述多個(gè)搜索指令中的每一個(gè)執(zhí)行模式匹配。
71.一種以流水線方式執(zhí)行上下文搜索的過程,所述過程包括從規(guī)則存儲(chǔ)器獲取規(guī)則;解碼所述規(guī)則并且如果存在間接域則匯編間接域;對(duì)多個(gè)存儲(chǔ)內(nèi)容的輸入載荷搜索寄存器中的值執(zhí)行一個(gè)或多個(gè)搜索操作;以及對(duì)執(zhí)行所述一個(gè)或多個(gè)搜索操作的結(jié)果執(zhí)行分類操作。
72.根據(jù)權(quán)利要求71所述的過程,其中所述過程通過搜索陣列和分類器在四級(jí)流水線中執(zhí)行。
全文摘要
在此公開了一種用于進(jìn)行上下文搜索的規(guī)則處理器的方法和設(shè)備,所述處理器包括多個(gè)輸入載荷搜索寄存器,連接到所述多個(gè)搜索寄存器的用于響應(yīng)于執(zhí)行規(guī)則而通過并行模式匹配對(duì)所述搜索寄存器中的內(nèi)容執(zhí)行一個(gè)或多個(gè)上下文搜索的搜索執(zhí)行引擎,所述規(guī)則指定一個(gè)或多個(gè)搜索并向所述搜索寄存器中內(nèi)容提交一個(gè)或多個(gè)模式。
文檔編號(hào)G06F17/30GK1723454SQ03824493
公開日2006年1月18日 申請(qǐng)日期2003年8月28日 優(yōu)先權(quán)日2002年8月28日
發(fā)明者H·沙蘭帕尼, R·帕爾蒂 申請(qǐng)人:威哈娜有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
漠河县| 五大连池市| 临江市| 崇信县| 山东省| 扬中市| 特克斯县| 武功县| 泾源县| 永福县| 友谊县| 通化县| 伽师县| 赞皇县| 鄂托克旗| 临邑县| 漳浦县| 西和县| 呼图壁县| 盐边县| 子长县| 吉木萨尔县| 镇远县| 鹤庆县| 左贡县| 万山特区| 轮台县| 达拉特旗| 阳信县| 沈丘县| 平度市| 乾安县| 东兰县| 连州市| 株洲市| 万年县| 长宁县| 禄丰县| 博白县| 柘荣县| 洱源县|