專利名稱:并行模式檢測(cè)引擎集成電路、相關(guān)方法及數(shù)據(jù)處理系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及用于執(zhí)行快速部分或精確模式(pattern)匹配的方法和系統(tǒng)。
背景技術(shù):
識(shí)別一組數(shù)據(jù)中的模式在很多領(lǐng)域包括語(yǔ)音識(shí)別、圖像處理、地震數(shù)據(jù)等中都是重要的。某些圖像處理器收集圖像數(shù)據(jù)并隨后預(yù)處理該數(shù)據(jù)以使其與基準(zhǔn)數(shù)據(jù)相關(guān)聯(lián)。其他系統(tǒng)例如語(yǔ)音識(shí)別系統(tǒng)是實(shí)時(shí)的,其中實(shí)時(shí)地將輸入數(shù)據(jù)與基準(zhǔn)數(shù)據(jù)相比較以識(shí)別模式。一旦模式被“識(shí)別”或與基準(zhǔn)相匹配,則系統(tǒng)可輸出該基準(zhǔn)。例如,語(yǔ)音識(shí)別系統(tǒng)可輸出與被處理的語(yǔ)音模式等價(jià)的文本。其他系統(tǒng)如生物系統(tǒng)可使用類似技術(shù)來(lái)確定分子串例如DNA的序列。
在某些系統(tǒng)中,需要發(fā)現(xiàn)嵌入連續(xù)數(shù)據(jù)流中的模式。在非對(duì)齊的數(shù)據(jù)流中,如果實(shí)施的僅是單一的逐字節(jié)比較,則存在可能錯(cuò)失模式的情況。當(dāng)在輸入流或要檢測(cè)的模式中存在重復(fù)的或嵌套重復(fù)的模式時(shí),將發(fā)生可能錯(cuò)失模式的情況。包含正被尋找的序列的一基準(zhǔn)模式(RP)被裝入存儲(chǔ)器中,在存儲(chǔ)器中該序列的每個(gè)元素具有唯一地址。將與輸入模式(IP)的第一個(gè)元素相比較的、該RP的第一個(gè)元素的地址被裝入一地址寄存器中。該地址寄存器稱為“指針”。在通常情況下,可向一指針裝入一或者遞增(增加)或者遞減(減少)的地址。該指針?biāo)赶虻脑乇粰z索出來(lái)并與隨時(shí)鐘輸入或裝入一比較器中的輸入元素(IE)進(jìn)行比較。
在模式識(shí)別中,經(jīng)常希望將一IP的各元素與很多RP進(jìn)行比較。例如,可能希望比較從掃描一指紋得到的一IP(對(duì)于在指紋技術(shù)中定義的某些特征組合,典型地為1千字節(jié)大小)與一RP庫(kù)(存檔的所有掃描結(jié)果)。為快速完成工作,可將每個(gè)RP的元素并行地與IP中的元素相比較。每個(gè)RP可能有重復(fù)的子串(短模式),這些子串是嵌入該RP中的較小的模式。因?yàn)镽P庫(kù)可能非常大,所需的處理量可能是相當(dāng)大的。希望有一種方法來(lái)減少保存這些RP所需的存儲(chǔ)量。如果能夠減少用來(lái)表示RP的數(shù)據(jù)的量,則也會(huì)減少裝載和卸載RP所需的時(shí)間。并行處理也可用于每個(gè)RP和IP被裝入不同的處理單元以確定匹配的場(chǎng)合。
生物系統(tǒng)中的其他模式識(shí)別處理可能需要比較一IP與所存儲(chǔ)的大量具有重復(fù)的子串的RP。在小的并行處理單元中的處理可能受限于RP所需的存儲(chǔ)器大小。用于化學(xué)分析、生物分析等的便攜式的、廉價(jià)的處理系統(tǒng)也會(huì)受限于快速處理大量RP所需的存儲(chǔ)量。
模式檢測(cè)或識(shí)別是當(dāng)今很多應(yīng)用的瓶頸,并且軟件解決方案無(wú)法達(dá)到所需的性能。希望有一種用于快速匹配模式的可擴(kuò)展的硬件解決方案。還希望有一種允許多種方式(mode)的模式識(shí)別的系統(tǒng)。某些應(yīng)用要求在輸入數(shù)據(jù)流中的模式與希望的目標(biāo)模式的精確匹配。在其他情況下,希望確定最長(zhǎng)的匹配、最大字符數(shù)的匹配、或者需要各種字符包含或排除的“模糊”匹配。
因此,需要一種用于模式檢測(cè)的、方式可編程的、并包括大量并行處理單元的方法和系統(tǒng),其是可擴(kuò)展的以使能可變模式長(zhǎng)度的匹配,以及允許添加附加的處理單元以加速匹配速度。
發(fā)明內(nèi)容
一種并行模式檢測(cè)引擎(PPDE)包括大量小的執(zhí)行模式檢測(cè)的處理單元(PU)構(gòu)建塊。這些處理單元具有多種模式檢測(cè)方式,并且每個(gè)都具有用于存儲(chǔ)模式的存儲(chǔ)器。一個(gè)大的并行接口總線將輸入數(shù)據(jù)提供給一輸入緩沖器。所選的輸入數(shù)據(jù)并行地與每個(gè)處理單元連接,從而每個(gè)處理單元并行地比較在并行總線上接收到的輸入數(shù)據(jù)。每個(gè)處理單元也連接到一并行地址總線,從而檢測(cè)模式數(shù)據(jù)可有選擇地裝入每個(gè)處理單元。每個(gè)處理單元的地址包括其標(biāo)識(shí)(ID)。根據(jù)其特定方式產(chǎn)生其檢測(cè)模式與輸入數(shù)據(jù)中的一模式的匹配的處理單元使其相應(yīng)ID由一ID選擇單元轉(zhuǎn)送到一輸出緩沖器。來(lái)自輸出緩沖器的數(shù)據(jù)被耦合到所述接口總線,以便發(fā)送一特定輸入數(shù)據(jù)流比較的結(jié)果。每個(gè)處理單元具有一“鏈接的”(chaining)級(jí)聯(lián)的通信接口,該通信接口允許一特定處理單元耦合到其相應(yīng)的相鄰處理單元,以產(chǎn)生比單個(gè)處理單元能夠處理的更大的檢測(cè)模式或確定特定類型的模式匹配。所述并行輸入總線結(jié)構(gòu)和鏈接通信接口便利了添加平行模式檢測(cè)引擎組來(lái)創(chuàng)建更大的系統(tǒng),以便提高速度或者處理大量的模式或者達(dá)到為了這兩者。
以上相當(dāng)粗略地概述了本發(fā)明的特征和技術(shù)優(yōu)點(diǎn),以便更好地理解以下對(duì)本發(fā)明的詳細(xì)描述。本發(fā)明的其他特征和優(yōu)點(diǎn)將在下文中描述,它們構(gòu)成了本發(fā)明要求保護(hù)的主題。
為了更完整地理解本發(fā)明及其優(yōu)點(diǎn),現(xiàn)結(jié)合附圖參照以下描述,在附圖中圖1是根據(jù)本發(fā)明的實(shí)施例由N個(gè)處理單元構(gòu)成的并行模式檢測(cè)引擎(PPDE)的結(jié)構(gòu)框圖;圖2A-2D是可以為圖1的N個(gè)處理單元(PU)中的每一個(gè)編程的4種匹配方式的框圖;圖3是示出本發(fā)明的PPDE的可伸縮性的各種方式的圖示;圖4是在本發(fā)明的實(shí)施例中使用的方法步驟的流程圖;圖5是根據(jù)本發(fā)明的實(shí)施例的單個(gè)PU的概略框圖;圖6是根據(jù)本發(fā)明的實(shí)施例的單個(gè)PU的詳細(xì)框圖;圖7是一PU體系結(jié)構(gòu)的詳細(xì)框圖;圖8是單個(gè)PU的一特定實(shí)現(xiàn)的電路圖;圖9是本發(fā)明的實(shí)施例中的方法步驟的流程圖;圖10是適于實(shí)施本發(fā)明的實(shí)施例的數(shù)據(jù)處理系統(tǒng);以及圖11A-11G描述了根據(jù)本發(fā)明的實(shí)施例的各種方式的模式匹配中的操作。
具體實(shí)施例方式
在以下描述中,提出了很多特定細(xì)節(jié),以便提供對(duì)本發(fā)明的充分理解。然而對(duì)本領(lǐng)域的技術(shù)人員顯然的是,可以沒(méi)有這些特定細(xì)節(jié)而實(shí)施本發(fā)明。在其他一些情況下,公知的電路將以框圖的形式示出,以免因不必要的細(xì)節(jié)模糊本發(fā)明。一般來(lái)說(shuō),省略了有關(guān)定時(shí)、通信協(xié)議中的數(shù)據(jù)格式等等的細(xì)節(jié),只要這些細(xì)節(jié)對(duì)于充分理解本發(fā)明不是必要的并且處于相關(guān)領(lǐng)域的普通技術(shù)人員的技能范圍內(nèi)的。
現(xiàn)在參照附圖,其中所示的元件不一定是按比例顯示的,并且相同或相似的元件在若干視圖中都以相同的標(biāo)號(hào)標(biāo)示。
軟件中數(shù)據(jù)流的順序匹配目前是一種中央處理單元(CPU)密集的任務(wù)。因此很難獲得高性能。模式匹配處理單元(此后稱為PU)體系結(jié)構(gòu)可提供高性能的匹配,因?yàn)樗且患S糜谀J狡ヅ涞挠布?。該P(yáng)U提供了更有效的搜索(匹配),因?yàn)槊總€(gè)輸入模式被并行地與相應(yīng)的目標(biāo)模式進(jìn)行匹配。并行匹配之所以可能,是因?yàn)榭梢约?jí)聯(lián)幾乎不限數(shù)量的PU。此外,每個(gè)PU具有這樣的內(nèi)建功能,其可通過(guò)納入這樣一些方式而減少所需PU的數(shù)量,這些方式允許包括通配符(目標(biāo)模式中的任意字符)、多個(gè)通配符和反向操作的匹配。PU體系結(jié)構(gòu)的快速模式檢測(cè)能力在網(wǎng)絡(luò)侵入檢測(cè)、數(shù)據(jù)庫(kù)掃描和移動(dòng)設(shè)備安全性應(yīng)用中是有用的。此外,使用其內(nèi)建的距離計(jì)算,可實(shí)現(xiàn)在圖像處理和生命科學(xué)應(yīng)用中特別有用的“模糊”模式檢測(cè)。
圖5是根據(jù)本發(fā)明的實(shí)施例的一PU500的概略框圖。PU500從標(biāo)識(shí)(ID)總線501、控制總線502和輸入數(shù)據(jù)總線503接收輸入。來(lái)自各總線的輸入被緩沖在ID寄存器509、控制寄存器505和輸入數(shù)據(jù)寄存器504中。來(lái)自控制寄存器505的控制數(shù)據(jù)被耦合到控制邏輯電路508,該電路也從存儲(chǔ)器507接收數(shù)據(jù)。來(lái)自輸入數(shù)據(jù)寄存器504的輸入數(shù)據(jù)被耦合到存儲(chǔ)器507、地址電路506、屏蔽電路510。地址電路506將地址耦合到存儲(chǔ)器507。地址電路506也耦合到屏蔽電路510和輸出電路512。輸出電路512接收來(lái)自ID寄存器509、地址電路506和距離電路511的數(shù)據(jù),并有選擇地將數(shù)據(jù)耦合到輸出總線513。
圖6是根據(jù)本發(fā)明的實(shí)施例的PU500的另一更詳細(xì)的框圖。為清楚起見(jiàn),重復(fù)了圖5所示的方框。PU500從標(biāo)識(shí)(ID)總線501、控制總線502和輸入數(shù)據(jù)總線503接收輸入。各總線的輸入被緩沖在ID寄存器509、控制寄存器505和輸入數(shù)據(jù)寄存器504中。存儲(chǔ)器507是一具有用于模式數(shù)據(jù)601和操作碼(Opcode)602的字段的寄存器陣列。存儲(chǔ)器507存儲(chǔ)與輸入數(shù)據(jù)相比較的模式。操作碼602定義正在執(zhí)行哪種類型的模式比較。操作碼602和來(lái)自控制寄存器505的控制位被耦合到控制邏輯電路508。模式數(shù)據(jù)601被耦合到屏蔽電路510中的屏蔽寄存器603。屏蔽寄存器603的輸出在邏輯與605中合并,以產(chǎn)生對(duì)距離電路511中的分量距離計(jì)算單元610的輸入。類似地屏蔽寄存器603的輸出在邏輯與606中合并,以形成對(duì)數(shù)據(jù)選擇器604的輸入。數(shù)據(jù)選擇器604在來(lái)自輸入寄存器504的輸入數(shù)據(jù)和來(lái)自地址寄存器614的地址之間進(jìn)行選擇以提供對(duì)分量距離計(jì)算單元610的輸入。地址寄存器614將地址耦合到存儲(chǔ)器507。分量距離計(jì)算單元610將輸出耦合到模式距離計(jì)算單元611。當(dāng)前的距離計(jì)算結(jié)果被存儲(chǔ)在距離寄存器612中。當(dāng)前的距離計(jì)算結(jié)果被向回耦合到模式距離計(jì)算單元611和比較電路607。將距離寄存器612的輸出與存儲(chǔ)在最終距離寄存器中的值相比較,以產(chǎn)生輸出GT615。GT代表“大于”,并且當(dāng)存儲(chǔ)在最終距離寄存器中的值大于存儲(chǔ)在距離寄存器中的值時(shí),該信號(hào)被置為有效。存儲(chǔ)在最終距離寄存器608中的最終距離值是由距離選擇器609從輸入寄存器504或距離寄存器612中的選擇的。
每個(gè)PU500具有有限的存儲(chǔ)器來(lái)存儲(chǔ)模式數(shù)據(jù)601。如果一模式較長(zhǎng),則可能合并幾個(gè)PU500單元來(lái)存儲(chǔ)模式數(shù)據(jù)601的一個(gè)長(zhǎng)序列。例如,如果使用兩個(gè)PU500,則當(dāng)一模式檢測(cè)階段開(kāi)始時(shí),使用該兩個(gè)PU500單元中的第一個(gè)的存儲(chǔ)器507。根據(jù)匹配方式和操作碼602來(lái)修改該第一個(gè)PU500的地址指針。當(dāng)?shù)刂分羔樀竭_(dá)其最后存儲(chǔ)器位置時(shí),將一最后信號(hào)650發(fā)送給該兩個(gè)PU500單元中的第二個(gè),以便使用存儲(chǔ)在該第二個(gè)PU500中的、模式數(shù)據(jù)601的剩余部分來(lái)繼續(xù)匹配過(guò)程。在此情況下,使用控制總線502中的控制數(shù)據(jù)來(lái)初始化該第二個(gè)PU500,因此僅當(dāng)該第二個(gè)PU500接收到來(lái)自該第一個(gè)PU500的“最后”信號(hào)650時(shí),它才開(kāi)始匹配。另外在此情況下,如果在匹配過(guò)程中指出了“重新裝載”指針地址,則必須更新用于該模式數(shù)據(jù)601的長(zhǎng)序列的該兩個(gè)PU500單元的地址指針。這是通過(guò)向適當(dāng)?shù)腜U500(其包含開(kāi)始的模式601字節(jié))發(fā)送“重新裝載”信號(hào)651來(lái)完成的。因?yàn)樵谝荒J綌?shù)據(jù)601序列中的字節(jié)數(shù)不是特別限定的,可能以上述方式使用多于兩個(gè)PU500單元。再次地,控制總線502上的初始化控制數(shù)據(jù)配置PU500以作為獨(dú)立的PU或者級(jí)聯(lián)的PU運(yùn)行。
當(dāng)匹配方式是“模糊”匹配時(shí),模式距離計(jì)算單元611計(jì)算存儲(chǔ)在距離寄存器612中的當(dāng)前距離值。如果使用了兩個(gè)或更多級(jí)聯(lián)在一起的PU500單元來(lái)存儲(chǔ)用于模糊匹配的模式數(shù)據(jù)601,則通過(guò)距離信號(hào)652將距離值發(fā)送給級(jí)聯(lián)中的下一個(gè)PU500,從而可確定最終的距離值,并將其存儲(chǔ)在級(jí)聯(lián)中的最后一個(gè)PU500的最終距離寄存器608中。
圖7是電路PU500的更多細(xì)節(jié)的框圖。將待比較的模式預(yù)裝入到存儲(chǔ)器(寄存器文件)507中作為一些字節(jié),其中每個(gè)字節(jié)存儲(chǔ)為位[11:4]中的8位。每個(gè)操作碼602存儲(chǔ)為位[3:0]。將輸入數(shù)據(jù)流750與由讀地址614所確定的、存儲(chǔ)器507中的存儲(chǔ)的字節(jié)相比較。比較和距離單元511為該比較操作計(jì)算距離。匹配邏輯709產(chǎn)生被耦合到重新裝載邏輯710、遞增邏輯711或保持邏輯712的邏輯信號(hào)。多種類型的匹配都是可能的,如由與模式的每個(gè)字節(jié)一起存儲(chǔ)在存儲(chǔ)器507中的操作碼602所確定的那樣。取決于操作碼602以及比較和距離單元511中的比較的結(jié)果,重新裝載邏輯710、遞增邏輯711和保持邏輯712中的邏輯確定是否保持當(dāng)前讀地址、遞增當(dāng)前讀地址到下一個(gè)值、或者將該讀地址重新裝載為其初始值以便在該模式的開(kāi)始進(jìn)行比較。選擇線邏輯705由啟動(dòng)邏輯713通過(guò)啟動(dòng)信號(hào)730使能。取決于重新裝載邏輯710、遞增邏輯711和保持邏輯712的輸出邏輯狀態(tài),對(duì)多路轉(zhuǎn)換器(MUX)704的輸入之一,即保持723、遞增722或重新裝載721,將成為邏輯1,從而分別選擇輸入703、702或701。遞增1(714)向當(dāng)前讀地址添加1并產(chǎn)生輸入702。當(dāng)前讀地址被耦合到保持703,并且該模式中的首地址是從714耦合的。寄存器614在操作碼602的控制下被裝入該模式中的首地址。包重置信號(hào)751重置讀地址。如果活動(dòng)信號(hào)706是邏輯0,則選擇線邏輯705被切斷(degate),從而所有的輸入保持703、遞增702和重新裝載701是邏輯0,并且MUX704被切斷。為允許多個(gè)PU(例如PU500)的級(jí)聯(lián),信號(hào)730和ID707被耦合到下一個(gè)PU。類似地,PU500從上一個(gè)PU接收ID752和活動(dòng)信號(hào)753。啟動(dòng)邏輯712通過(guò)信號(hào)線790被耦合到前一個(gè)PU。
圖8是PU500的電路的更詳細(xì)的電路圖。圖8示出了用于選擇線邏輯705(與門(mén)760-762)、重新裝載邏輯710(或門(mén)763和與門(mén)764-765)、遞增邏輯711(或門(mén)766和與門(mén)767-769)以及保持邏輯712(與門(mén)770)的更詳細(xì)的電路。反相器780-784用于產(chǎn)生操作碼602信號(hào)的補(bǔ)碼。
以下描述將參照?qǐng)D5、6、7和8,因?yàn)檫@些圖以不同程度的細(xì)節(jié)示出了PU500。
該快速模式匹配技術(shù)利用了每個(gè)PU500中的本地存儲(chǔ)器(例如寄存器陣列507),其包含一模式601和指定了各選項(xiàng)的標(biāo)志位(操作碼602)。這些選項(xiàng)可包括單個(gè)通配符、多個(gè)通配符、最后以及反向匹配操作。單個(gè)通配符匹配意味著如果已設(shè)置了單個(gè)通配符匹配操作碼602的字節(jié)匹配輸入流中的當(dāng)前字節(jié),則指示匹配。多個(gè)通配符匹配意味著如果不定數(shù)量的成序列的字節(jié)不與具有多個(gè)通配符操作碼602的字節(jié)匹配,則指示匹配。反向匹配意味著如果除了具有反向操作碼602的字節(jié)之外的每個(gè)字節(jié)都與輸入流中的一字節(jié)匹配,則指示匹配。最后操作碼602意味著該字節(jié)是一模式中的最后一個(gè)字節(jié)。
全局寄存器包括ID寄存器509、讀地址寄存器614、控制寄存器505和寄存器陣列507中的寄存器。其他全局寄存器,即活動(dòng)寄存器706、匹配寄存器708和選擇寄存器(未示出)可用于指定PU500為活動(dòng)的、已匹配的、或已被選擇來(lái)寫(xiě)入配置數(shù)據(jù)。一PU500的ID是在包含多個(gè)PU的整個(gè)芯片中的唯一的ID,并用來(lái)確定在被并行地耦合到多于一個(gè)PU500的數(shù)據(jù)流中已檢測(cè)到什么模式。計(jì)數(shù)器714用來(lái)在存儲(chǔ)的模式601中進(jìn)行索引,以便與輸入數(shù)據(jù)流(來(lái)自輸入總線503)中的字節(jié)801進(jìn)行比較,并且比較單元511中的比較器(未示出)將模式601與輸入數(shù)據(jù)801一次一個(gè)字節(jié)地進(jìn)行比較。
當(dāng)PU500開(kāi)始在線時(shí),所有寄存器被初始化為0(重置)。接著PU500從輸入總線503接收到唯一的ID,并將其存儲(chǔ)在ID寄存器509中。然后PU500等待,直到接收到其他命令。第一個(gè)命令是選擇命令,其啟動(dòng)PU500接收進(jìn)一步的只適用于PU500的配置命令。此時(shí)可裝載全局寄存器。將包括模式數(shù)據(jù)601和相應(yīng)的操作碼數(shù)據(jù)602的數(shù)據(jù)字節(jié)發(fā)送給寄存器陣列507。當(dāng)配置完成并且活動(dòng)寄存器被置為“活動(dòng)的”時(shí),PU500等待包重置信號(hào)802以使能讀地址614。這表明一個(gè)新的輸入包正被發(fā)送給PU500以開(kāi)始匹配階段。
在匹配階段,每個(gè)時(shí)鐘周期發(fā)送給PU500一個(gè)字節(jié)。PU500比較存儲(chǔ)在寄存器陣列507的當(dāng)前寄存器陣列位置(由地址614確定)中的字節(jié)(601)與輸入寄存器504中的輸入字節(jié),并檢查用于存儲(chǔ)在601中的模式的、當(dāng)前寄存器陣列位置的字節(jié)的操作碼(602)。如果存在匹配,或者該操作碼602被置為單個(gè)通配符匹配,則遞增指針以在地址寄存器614中選擇下一個(gè)讀地址。如果用于模式601中的當(dāng)前字節(jié)的操作碼602被設(shè)置為多個(gè)通配符,則地址寄存器614的指針保持其當(dāng)前值。如果未發(fā)現(xiàn)匹配,則重新裝載該指針。該過(guò)程繼續(xù)進(jìn)行,直到該指針位于模式的最后位置并且發(fā)生匹配。此時(shí),在PU500中匹配寄存器被置位。該過(guò)程的最后階段是報(bào)告發(fā)現(xiàn)的匹配。如果匹配寄存器708置位,則輸出邏輯電路512發(fā)送PU500的ID到輸出總線513。
圖1是并行模式檢測(cè)引擎(PPDE)100集成電路(IC)體系結(jié)構(gòu)的框圖。PPDE100提供了多方式模式匹配,并具有高度靈活的、大規(guī)模并行的體系結(jié)構(gòu)。PPDE100可執(zhí)行精確、模糊、最長(zhǎng)和最大字符的模式匹配??傻靡嬗赑PDE100的高性能模式匹配的某些可能應(yīng)用有網(wǎng)絡(luò)侵入檢測(cè)、數(shù)據(jù)庫(kù)搜索圖像處理、無(wú)損壓縮、和實(shí)時(shí)數(shù)據(jù)處理(聲音、EKG、MRI等)。PPDE100的體系結(jié)構(gòu)是高度靈活和可伸縮的,并可使其適應(yīng)于特定應(yīng)用。
PPDE100是一種包括多個(gè)PU500單元和其他邏輯功能的集成電路。輸入/輸出(I/O)接口101將PPDE芯片100耦合到系統(tǒng)功能。I/O接口101將64位的輸入數(shù)據(jù)耦合到IC輸入總線120,后者轉(zhuǎn)而耦合到輸入緩沖器103。將數(shù)據(jù)寫(xiě)入輸入緩沖器103中由寫(xiě)地址102確定的位置。使用讀地址108將數(shù)據(jù)從輸入緩沖器103中讀出。數(shù)據(jù)是使用由選擇線邏輯109控制的多路轉(zhuǎn)換器(MUX)115以8位字節(jié)從輸入緩沖器103中讀出的。輸入總線503被耦合到N個(gè)PU500單元中的每一個(gè)。I/O接口101也將控制數(shù)據(jù)耦合到全局控制107,后者將ID總線501上的24位ID數(shù)據(jù)和控制總線502上的4位控制數(shù)據(jù)發(fā)送給每個(gè)PU500單元(PU1-PUn)。
圖9是根據(jù)本發(fā)明的實(shí)施例的使用一PU500的模式匹配中的方法步驟的流程圖。在步驟901中,接收到一包重置信號(hào),其表明PU500的配置已完成,并且一新包(輸入模式)正被發(fā)送到PU,并且它應(yīng)當(dāng)開(kāi)始匹配過(guò)程。在步驟902,檢索出模式的第一模式字節(jié)。在步驟903,將該第一模式字節(jié)與輸入數(shù)據(jù)中的第一個(gè)字節(jié)進(jìn)行比較,并進(jìn)行檢驗(yàn)以確定它們是否匹配。該第一模式字節(jié)由地址指針(指針)指明。如果在步驟903中存在匹配,則在步驟910進(jìn)行檢驗(yàn)以確定是否已為當(dāng)前模式字節(jié)(在該第一遍,當(dāng)前模式字節(jié)為第一模式字節(jié))將操作碼602設(shè)置為“匹配”。如果操作碼602已被設(shè)置為“匹配”,則將指針增加1以移到下一個(gè)模式字節(jié),因?yàn)檫@是所希望的結(jié)果。如果當(dāng)前模式字節(jié)的操作碼602未被設(shè)置為“匹配”,則在步驟911檢驗(yàn)操作碼602以確定它是否已被設(shè)置為“反向”。如果操作碼602已被設(shè)置為“反向”,則這不是所希望的結(jié)果,并且在步驟913將指針重新裝載回到第一模式字節(jié),如果它尚未裝載第一模式字節(jié)的話。然后分支回到步驟902。如果在步驟911中操作碼602未被設(shè)置為“反向”,則檢驗(yàn)操作碼602以確定它是已被設(shè)置為“最后”,從而表明該模式字節(jié)是該模式中的最后一個(gè)字節(jié)。如果操作碼602在步驟912未被設(shè)置為“最后”,則在步驟914指針遞增,并且分支回到步驟902。如果操作碼602在步驟912已被設(shè)置為“最后”,則將指針“凍結(jié)”,并分支回到步驟901,等待一個(gè)新的包重置信號(hào)來(lái)重新開(kāi)始匹配處理。
如果在步驟903中模式字節(jié)和輸入數(shù)據(jù)字節(jié)不匹配,則在步驟904進(jìn)行檢驗(yàn)以確定是否已為該模式字節(jié)將操作碼602設(shè)置為“匹配”。如果在步驟904中確定操作碼602已被設(shè)置為“匹配”,則這不是所希望的結(jié)果,并且在步驟913將指針重新裝載回到第一模式字節(jié),如果它尚未裝載第一模式字節(jié)的話。然后分支回到步驟902。如果在步驟904中確定操作碼602未被設(shè)置為“匹配”,則在步驟905進(jìn)行檢驗(yàn)以確定操作碼602是否已被設(shè)置為“反向”。如果在步驟905中確定操作碼602已被設(shè)置為“反向”,則這是所希望的結(jié)果,并且在步驟914指針遞增,并且分支回到步驟902。如果在步驟905中確定操作碼602未被設(shè)置為“反向”,則在步驟906進(jìn)行檢驗(yàn)以確定操作碼602是否已被設(shè)置為“通配符”。如果在步驟906中確定操作碼602已被設(shè)置為“通配符”,則這是所希望的結(jié)果,并且在步驟914指針遞增,并且分支回到步驟902。如果在步驟906中確定操作碼602未被設(shè)置為“通配符”,則在步驟907進(jìn)行檢驗(yàn)以確定操作碼602是否已被設(shè)置為“多個(gè)通配符”。如果在步驟907中確定操作碼602已被設(shè)置為“多個(gè)通配符”,則在步驟908中保持該指針,并且分支回到步驟902。如果在步驟907中確定操作碼602未被設(shè)置為“多個(gè)通配符”,則在步驟909重新裝載指針,并且分支回到902。
參照?qǐng)D9所討論的操作稱為正則表達(dá)式匹配。在由根據(jù)本發(fā)明的實(shí)施例的包含了多個(gè)PU500單元的PPDE所使用的匹配方式中使用了這些正則表達(dá)式。
圖11A-11G示出了當(dāng)將一模式601與一輸入數(shù)據(jù)流750進(jìn)行比較時(shí)采取的動(dòng)作。圖11A示出了這樣一種情形1100的3個(gè)時(shí)鐘周期,在這種情形中,輸入數(shù)據(jù)750是“AAC”,將其與身為“ABC”的模式數(shù)據(jù)601進(jìn)行比較,其中每個(gè)模式字節(jié)具有一操作碼602。動(dòng)作1101是響應(yīng)于操作碼602而采取的。在時(shí)鐘周期1,指針614開(kāi)始于模式601中的字節(jié)(“A”)。輸入數(shù)據(jù)750的第一個(gè)字節(jié)也是“A”。模式601中的第一字節(jié)的操作碼602被設(shè)置為“匹配”。因?yàn)檩斎霐?shù)據(jù)750的第一個(gè)字節(jié)和模式601匹配,并且操作碼601被設(shè)置為“匹配”,所以指針遞增而移到模式601中的第二個(gè)字節(jié)“B”。這是在一個(gè)時(shí)鐘周期中發(fā)生的,因此,在第二個(gè)時(shí)鐘周期(其被標(biāo)記為1102,因?yàn)槠鋵?duì)于圖11A中的特定模式是有重要意義的),將輸入模式750中的第二字節(jié)(“A”)與模式601中的第二字節(jié)(“B”)進(jìn)行比較。模式602的第二字節(jié)的操作碼602被設(shè)置為“匹配”。因?yàn)檫@兩個(gè)字節(jié)不匹配,所以模式601中的序列“AB”不能如操作碼602所要求的那樣與輸入數(shù)據(jù)750的前兩個(gè)字節(jié)“AA”匹配。因此,在時(shí)鐘周期2(1102)中,以模式602的第一個(gè)字節(jié)的地址重新裝載指針614,并再次進(jìn)行比較。在時(shí)鐘周期3,將輸入數(shù)據(jù)750中的第三個(gè)字節(jié)與模式602中的第一個(gè)字節(jié)“A”進(jìn)行比較。
圖11B示出了這樣一種情形1110,其中輸入數(shù)據(jù)流750的字節(jié)序列“CDE”確實(shí)與匹配模式602“CDE”匹配,但其中一個(gè)模式字節(jié)的操作碼602被設(shè)置為“反向”,指示在輸入數(shù)據(jù)750中的一字節(jié)與模式601中的一字節(jié)之間的匹配不是所希望的。在時(shí)鐘周期1,輸入數(shù)據(jù)750中的第一字節(jié)“C”與模式601中的“C”匹配,并且操作碼602被設(shè)置為“匹配”。因?yàn)檫@是所希望的結(jié)果,指針614遞增,并且將輸入數(shù)據(jù)750的第二字節(jié)(“D”)與模式601的第二字節(jié)(“D”)進(jìn)行比較,并且這兩個(gè)字節(jié)確實(shí)匹配。但是,操作碼602已被設(shè)置為“反向”因而匹配不是所希望的,因此在時(shí)鐘周期2(1103)指針614被重新裝載,并且再次選擇模式601的第一字節(jié)。在時(shí)鐘周期3,將輸入數(shù)據(jù)750的第三字節(jié)“E”與模式601的第一字節(jié)“C”進(jìn)行比較。圖11B的例子是“尋找”一輸入序列“C!DE”,其中“!D”表示除“D”之外的任何字符是可接受的。
圖11C示出了這樣一種情形1120,其中一完整的模式601被顯示為具有一被設(shè)置為“最后”的操作碼602。在時(shí)鐘周期1,輸入數(shù)據(jù)750中的第一字節(jié)“F”與模式601中的第一個(gè)字節(jié)“F”匹配,并且操作碼602被設(shè)置為“匹配”。因?yàn)檫@是正確的結(jié)果,指針614遞增。在時(shí)鐘周期2,輸入數(shù)據(jù)750的第二字節(jié)“G”與模式601的第二字節(jié)“G”相匹配,并且操作碼602已被設(shè)置為“匹配”。再次地,指針614遞增,因?yàn)檫@是正確的結(jié)果。在時(shí)鐘周期3(1104),輸入數(shù)據(jù)750的第三字節(jié)“H”與模式601的第三字節(jié)“H”匹配。在這種情況下,操作碼602已被設(shè)置為“最后”,表明該第三個(gè)字節(jié)是一完整模式601(在該情況中為“FGH”)中的最后一個(gè)字節(jié)。在這種情況下,在輸入數(shù)據(jù)750中檢測(cè)到了模式“FGH”,并且可使一匹配信號(hào)有效。因?yàn)檫€存在其他輸入數(shù)據(jù)750,將指針614重新裝載回到模式601的第一個(gè)字節(jié),并且匹配過(guò)程繼續(xù)“尋找”在輸入數(shù)據(jù)750的隨后字節(jié)中完整的模式“FGH”的其他出現(xiàn)。
圖11D示出了這樣一種情形1130,其中一模式601字節(jié)具有被設(shè)置為“反向”的操作碼602,并且字節(jié)不匹配。在時(shí)鐘周期1,輸入數(shù)據(jù)750中的第一字節(jié)“I”與模式601中的第一個(gè)字節(jié)“I”匹配,并且操作碼602被設(shè)置為“匹配”。因?yàn)檫@是所希望的結(jié)果,指針614遞增,并且將輸入數(shù)據(jù)750的第二字節(jié)“J”與模式601的第二字節(jié)“I”相比較,并且這些字節(jié)不匹配。然而,操作碼602已被設(shè)置為“反向”,因而不匹配是所希望的結(jié)果;因此,在時(shí)鐘周期2(1105),指針614遞增,并且再次選擇模式601的第三個(gè)字節(jié)“K”。在時(shí)鐘周期3,將輸入數(shù)據(jù)750的第三字節(jié)“K”與模式601的第三字節(jié)“K”比較。再次地,檢測(cè)到匹配,并且指針614遞增。圖11D的例子是“尋找”一輸入序列“I!JK”,其中“!J”表示除“J”之外的任何字符是可接受的。
圖11E示出了這樣一種情形1140,其中模式601匹配輸入數(shù)據(jù)750中的一序列,并且操作碼602被設(shè)置為“匹配”。在時(shí)鐘周期1,指針614開(kāi)始于模式601中的字節(jié)(“L”)。輸入數(shù)據(jù)750中的第一字節(jié)也是“L”。模式601中的第一字節(jié)的操作碼602被設(shè)置為“匹配”。因?yàn)檩斎霐?shù)據(jù)750中的第一字節(jié)與模式601匹配,并且操作碼602被設(shè)置為“匹配”,指針614遞增到模式601中的第二個(gè)字節(jié)“M”。在第二個(gè)時(shí)鐘周期,將輸入數(shù)據(jù)750中的第二字節(jié)(“M”)與模式601中的第二字節(jié)(“M”)相比較。模式601的第二個(gè)字節(jié)“M”的操作碼602已被設(shè)置為“匹配”。因?yàn)檫@兩個(gè)字節(jié)匹配,指針614再次遞增。在時(shí)鐘周期3,將輸入數(shù)據(jù)750中的第三字節(jié)“N”與模式601的第三字節(jié)“N”比較。因?yàn)樗鼈兤ヅ洌羔樤俅芜f增。圖11E示出了模式601中的“LMN”與輸入數(shù)據(jù)750中的序列“LMN”的部分匹配。
圖11F示出了這樣一種情形1150,其中沒(méi)有模式匹配,并且已為模式601中的一字節(jié)設(shè)置了通配符操作碼。在時(shí)鐘周期1,輸入數(shù)據(jù)750中的“O”與模式601中“O”匹配。因?yàn)椴僮鞔a602被設(shè)置為“匹配”,指針614遞增。在第二個(gè)時(shí)鐘周期,模式601的第二字節(jié)“O”與輸入數(shù)據(jù)750的第二字節(jié)“P”不匹配。然而,因?yàn)椴僮鞔a602已被設(shè)置為“通配符”,任何字符都是可接受的,因而指針614再次遞增。在時(shí)鐘周期3,模式601的第三字節(jié)“Q”與輸入數(shù)據(jù)750中的第三字節(jié)“Q”匹配,因而指針614遞增。在這種情況下,發(fā)現(xiàn)了“O·Q”,其中“·”表示任何字符。
圖11G示出了這樣一種情形1160,其中沒(méi)有模式匹配,并且模式601中的一字節(jié)具有已被設(shè)置為“多個(gè)通配符”(簡(jiǎn)單地示為“多個(gè)”)的操作碼602。在時(shí)鐘周期1,模式601中的第一字節(jié)“T”不與輸入數(shù)據(jù)750中的第一個(gè)字節(jié)“R”匹配。然而,因?yàn)椴僮鞔a602被設(shè)置為“多個(gè)”,指針614保持在其當(dāng)前位置(在該情況中,為模式601的第一個(gè)字節(jié))。在時(shí)鐘周期2,模式601的第一個(gè)字節(jié)“T”不與輸入數(shù)據(jù)750中的第二字節(jié)匹配。因?yàn)椴僮鞔a602仍被設(shè)置為“多個(gè)”,指針614被保持在模式601的第一個(gè)字節(jié)。在時(shí)鐘周期3,模式601的第一個(gè)字節(jié)“T”確實(shí)與輸入數(shù)據(jù)750的第三字節(jié)匹配,因而指針614遞增到模式601的第二個(gè)字節(jié)。在時(shí)鐘周期4,模式601的第二個(gè)字節(jié)確實(shí)與輸入數(shù)據(jù)750的第四個(gè)字節(jié)匹配,因而指針614再次遞增。在時(shí)鐘周期5(未示出),模式601的第三個(gè)字節(jié)與輸入數(shù)據(jù)750的第五個(gè)字節(jié)匹配,并且檢測(cè)到輸入數(shù)據(jù)750中的模式“TUV”。
PPDE100具有4種匹配方式精確的、最長(zhǎng)的、最大的和模糊的。精確匹配可用于對(duì)齊或非對(duì)齊數(shù)據(jù),并且可包含正則表達(dá)式例如單個(gè)通配符、多個(gè)通配符、反向、或包含集(inclusive set)。精確匹配方式可用于諸如網(wǎng)絡(luò)侵入等應(yīng)用中,其中線路速度匹配是關(guān)鍵性的,并且只需要二元的匹配或不匹配響應(yīng)。
在最長(zhǎng)匹配方式中,每個(gè)PU500跟蹤連續(xù)的匹配字節(jié)的數(shù)量,并且直到一模式包的末尾才重置。在最長(zhǎng)匹配方式中,每個(gè)PU500將匹配字節(jié)的數(shù)量與其ID一起輸出給ID選擇單元114(圖1A)。然后ID選擇單元114將具有最大數(shù)量的匹配字節(jié)的PU500的ID以及該最長(zhǎng)匹配的長(zhǎng)度值輸出給輸出緩沖器105。
在最大匹配方式中,每個(gè)PU500跟蹤匹配字節(jié)的數(shù)量,并且直到一模式包的末尾才重置。在這種方式中,每個(gè)PU500將匹配字節(jié)的數(shù)量與其ID一起輸出給ID選擇單元114。然后ID選擇單元114將具有最大數(shù)量的匹配的PU500的ID以及該最大數(shù)量的值輸出給輸出緩沖器105。
在模糊匹配方式中,每個(gè)PU500“尋找”接近的模式,并且然后將具有最接近的匹配的PU500的ID以及一相應(yīng)的量化了該匹配的接近程度的距離值輸出給ID選擇單元114,后者轉(zhuǎn)而將結(jié)果輸出給輸出緩沖器105。該距離是在輸入模式和先前存儲(chǔ)在存儲(chǔ)器中的基準(zhǔn)模式(RP)之間進(jìn)行比較的結(jié)果。距離計(jì)算方法是基于用戶可選擇的準(zhǔn)則??墒褂萌舾蓽?zhǔn)則,并且準(zhǔn)則可使用“差異的絕對(duì)值”算符。在曼哈坦(Manhattan)距離的情況下,可將連續(xù)的初級(jí)距離相加,即dist=sum(abs(IEi-REi)),或者在最大準(zhǔn)則的情況下,選擇其中的最大值來(lái)確定最終的距離。即dist=max(abs(IEi-Rei)),其中IEi(輸入元素)和REi(基準(zhǔn)元素)分別是輸入模式IP和存儲(chǔ)的原型基準(zhǔn)模式RP的第i個(gè)分量(變量i的變化范圍為1到k)。注意“abs”是“絕對(duì)值”的通??s寫(xiě)。也存在其他準(zhǔn)則,例如諸如dist=square root(sum(IEi-REi)2等L2準(zhǔn)則。L2準(zhǔn)則被稱為“歐幾里德的”,而曼哈坦及最大準(zhǔn)則是“非歐幾里德的”準(zhǔn)則的例子。其他歐幾里德或非歐幾里德準(zhǔn)則(例如“匹配/不匹配”)是本領(lǐng)域的技術(shù)人員已知的。特別地,由“match(IEi,REi)”算符所表示的“匹配/非匹配”準(zhǔn)則被廣泛使用。最接近的匹配是具有最低結(jié)果的模式。模糊匹配在圖像處理以及其中輸入數(shù)據(jù)流具有施加于數(shù)據(jù)之上的白噪聲的實(shí)時(shí)數(shù)據(jù)處理中是有用的。
圖2A示出了使用根據(jù)本發(fā)明的實(shí)施例的PPDE100的精確匹配方式200的一例子。模式203對(duì)應(yīng)于標(biāo)號(hào)為1-n并標(biāo)識(shí)了PPDE100中所包含n個(gè)PU500單元的各ID號(hào)碼205。輸入模式201將被并行發(fā)送這n個(gè)PU500單元中的每一個(gè)。在該方式中,PPDE100被編程為去尋找是否在輸入數(shù)據(jù)流201中存在這n個(gè)模式中的任何一個(gè)。通過(guò)查看,可以看到只有模式“4”以其精確的序列存在于所示輸入數(shù)據(jù)流201的一部分中。在這種情況下,具有該精確匹配的PU500的ID(在該情況中,該ID是“4”)將被輸出(輸出204)給ID選擇單元114(未示出),而后者將把該值發(fā)送給輸出緩沖器105(未示出)。
圖2B示出了使用根據(jù)本發(fā)明的實(shí)施例的PPDE100的最長(zhǎng)匹配方式220的一例子。再次地,輸入數(shù)據(jù)流201被并行耦合到具有標(biāo)號(hào)為1-n的ID號(hào)碼205的n個(gè)PU500單元。在該方式中,PPDE100被編程為去確定模式213中的在輸入數(shù)據(jù)流201中出現(xiàn)的最多的連續(xù)字節(jié)。再次地,通過(guò)查看,可以看到模式“4”具有帶有出現(xiàn)在輸入數(shù)據(jù)流201中的5個(gè)連續(xù)字節(jié)“ABCDE”的最長(zhǎng)匹配。在這種情況下,具有該最長(zhǎng)匹配的PU500的ID(在該情況中,該ID是“4”)將和最長(zhǎng)匹配值“5”一起被輸出(輸出204)給ID選擇單元114(未示出),而后者將把該值發(fā)送給輸出緩沖器105(未示出)。
圖2C示出了使用根據(jù)本發(fā)明的實(shí)施例的PPDE100的最大匹配方式230的一例子。再次地,輸入數(shù)據(jù)流212被并行耦合到具有標(biāo)號(hào)為1-n的ID號(hào)碼205的n個(gè)PU500單元。在該方式中,PPDE100被編程為去確定模式223中的在輸入數(shù)據(jù)流212中出現(xiàn)的未必呈連續(xù)順序的最大數(shù)量的字節(jié)。再次地,通過(guò)查看,可以看到模式“4”具有帶有出現(xiàn)在輸入數(shù)據(jù)流212中的5個(gè)匹配字節(jié)“ACYEF”的最大數(shù)量。在這種情況下,具有該最大數(shù)量匹配的PU500的ID(在該情況中,該ID是“4”)將和該最大數(shù)量值“5”一起被輸出(輸出206)給ID選擇單元114(未示出),而后者將把該值發(fā)送給輸出緩沖器105(未示出)。
圖2D示出了使用根據(jù)本發(fā)明的實(shí)施例的PPDE100的模糊匹配方式240的一例子。輸入數(shù)據(jù)流222被并行耦合到具有標(biāo)號(hào)為1-n的ID號(hào)碼205的n個(gè)PU500單元。在該例子中,輸入數(shù)據(jù)流222是模擬信號(hào),其將被數(shù)字化,并且每個(gè)8位輸入值將被并行發(fā)送給n個(gè)PU500單元。在該方式中,PPDE100被編程為去確定其中哪一個(gè)模式233最接近地匹配輸入數(shù)據(jù)流222。再次地,通過(guò)查看,可以看到模式“4”具有最接近的匹配。在實(shí)際操作中,將使用距離電路611(未示出)來(lái)進(jìn)行這種判定。在這種情況下,具有該最接近匹配的PU500的ID(在該情況中,該ID是“4”)將和該距離值“10”一起被輸出給ID選擇單元114(未示出),而后者將把該值發(fā)送給輸出緩沖器105(未示出)。
圖3是示出了PPDE100的可伸縮性的框圖。PPDE100的體系結(jié)構(gòu)允許將多個(gè)芯片級(jí)聯(lián)起來(lái)。可使用這一特征或者增加處理單元的數(shù)量,或者通過(guò)將輸入數(shù)據(jù)在若干芯片之間劃分而提高性能。圖3示出了芯片的數(shù)量和PU500單元的數(shù)量之間的直接相關(guān)性。方框303示出了一個(gè)PPDE100芯片的標(biāo)準(zhǔn)性能。當(dāng)沿著X軸添加PPDE100芯片時(shí)(通過(guò)級(jí)聯(lián)),性能就提高了。此外,當(dāng)沿著Y軸增加每個(gè)PPDE100芯片的PU500單元的數(shù)量時(shí),性能也提高了。方框301示出了通過(guò)添加4個(gè)芯片(1500個(gè)PU500單元),處理速度提高到對(duì)于1500個(gè)模式的8Gb/sec。方框304示出了使用4個(gè)芯片來(lái)增加模式的數(shù)量,而同時(shí)保持2Gb/sec的處理速度。方框302示出了添加5組耦合起來(lái)以處理6000個(gè)模式的4個(gè)芯片,從而使得系統(tǒng)可以10Gb/sec的速度處理6000個(gè)模式。
圖4是在本發(fā)明的實(shí)施例中使用的方法步驟的流程圖。在步驟401,將模式數(shù)據(jù)的N個(gè)序列裝入M個(gè)處理單元(PU)500,以便比較模式數(shù)據(jù)和輸入數(shù)據(jù)。在步驟402,將確定每個(gè)PU500的唯一ID的標(biāo)識(shí)數(shù)據(jù)(ID)裝入每個(gè)PU500中。在步驟403,將匹配方式數(shù)據(jù)裝入每個(gè)PU500中,從而設(shè)定指示在所選模式數(shù)據(jù)和輸入數(shù)據(jù)中已出現(xiàn)匹配的標(biāo)準(zhǔn)。在步驟404中,將第一個(gè)輸入數(shù)據(jù)并行發(fā)送給M個(gè)PU500單元中的每一個(gè)。在步驟405,在同一時(shí)鐘周期中,將第一個(gè)輸入數(shù)據(jù)與由PU500中的地址指針?biāo)x擇的所選模式數(shù)據(jù)進(jìn)行比較,并在M個(gè)PU500單元中的每一個(gè)中產(chǎn)生一比較輸出信號(hào)。在步驟406,響應(yīng)于比較輸出信號(hào)的邏輯狀態(tài)和與所選模式數(shù)據(jù)一起存儲(chǔ)在每個(gè)PU單元中的操作碼,修改每個(gè)PU500單元中的地址指針。在步驟407,響應(yīng)于指示在輸入數(shù)據(jù)中已檢測(cè)到所選模式數(shù)據(jù)的一模式匹配信號(hào),從所述ID數(shù)據(jù)中選擇一匹配ID。在步驟408,存儲(chǔ)該匹配ID和對(duì)應(yīng)于該匹配ID的匹配數(shù)據(jù)。在步驟409,進(jìn)行檢驗(yàn)以確定是否已處理了所有輸入數(shù)據(jù)。如果在步驟409的檢驗(yàn)的結(jié)果是“否”,則在步驟411將其他輸入數(shù)據(jù)并行發(fā)送給PU500單元。如果在步驟409的檢驗(yàn)的結(jié)果是“是”,則在步驟410該過(guò)程結(jié)束。
圖10示出了用于實(shí)施本發(fā)明的一典型硬件環(huán)境,其中示出了一根據(jù)本發(fā)明的工作站的典型硬件配置,其具有帶有一個(gè)或多個(gè)PPDE100芯片的中央處理單元(CPU)1034以及通過(guò)系統(tǒng)總線1012互連的其他單元。圖10示出的工作站包括隨機(jī)存取存儲(chǔ)器(RAM)1014,只讀存儲(chǔ)器(ROM)1016,和用于將外圍設(shè)備例如盤(pán)單元1020和磁帶驅(qū)動(dòng)器1040連接到總線1012的輸入/輸出(I/O)適配器1018,用于將鍵盤(pán)1024、鼠標(biāo)1026、揚(yáng)聲器1028、話筒1032、和/或諸如觸摸屏設(shè)備(未示出)等其他用戶接口設(shè)備連接到總線1012的用戶接口器,用于將該工作站連接到數(shù)據(jù)處理網(wǎng)絡(luò)的通信適配器1035,以及用于將總線1012連接到顯示設(shè)備1038的顯示適配器1036??梢詮母鞣N源包括網(wǎng)絡(luò)1041、盤(pán)單元1020、磁帶驅(qū)動(dòng)器1040或者從各種輸入設(shè)備例如話筒1032、鍵盤(pán)1024等將輸入數(shù)據(jù)120(輸入數(shù)據(jù)流、模式數(shù)據(jù)和各種控制數(shù)據(jù))提供給CPU1034中的PPDE100芯片。其他輸入設(shè)備,例如指紋閱讀器和語(yǔ)音識(shí)別單元,可提供輸入數(shù)據(jù)流,該些輸入數(shù)據(jù)流將使用根據(jù)本發(fā)明的實(shí)施例的一個(gè)或多個(gè)PPDE100芯片與存儲(chǔ)的模式進(jìn)行匹配。
盡管已詳細(xì)描述了本發(fā)明及其優(yōu)點(diǎn),應(yīng)當(dāng)理解在此可以進(jìn)行各種改變、替換和變更,而不脫離由所附權(quán)利要求所定義的本發(fā)明的精神和范圍。
權(quán)利要求
1.一種用于檢測(cè)輸入數(shù)據(jù)序列中的一個(gè)或多個(gè)模式的并行模式檢測(cè)引擎(PPDE)集成電路(IC),包括輸入/輸出(I/O)接口,其用于將數(shù)據(jù)耦合進(jìn)入或出自該P(yáng)PDE;M個(gè)處理單元(PU),該M個(gè)處理單元中的每一個(gè)都具有比較電路,該比較電路用于將輸入數(shù)據(jù)序列的每一個(gè)與存儲(chǔ)在該M個(gè)PU中的每一個(gè)中的模式相比較,并產(chǎn)生比較輸出,其中響應(yīng)于該比較輸出的邏輯狀態(tài)和與該模式一起存儲(chǔ)的操作碼,修改該M個(gè)PU中的每一個(gè)中的選擇該模式的地址指針;輸入總線,其用于將該輸入數(shù)據(jù)序列并行地耦合到該M個(gè)PU中的每一個(gè);輸出總線,其被耦合到該I/O接口,用于將輸出數(shù)據(jù)發(fā)送到該I/O接口;控制電路,其被耦合到該I/O接口,并將控制數(shù)據(jù)總線上的控制數(shù)據(jù)和ID總線上的標(biāo)識(shí)(ID)耦合到該M個(gè)處理單元中的每一個(gè);ID選擇電路,其用于響應(yīng)于模式匹配信號(hào)和匹配方式數(shù)據(jù)而從標(biāo)識(shí)該M個(gè)PU的ID數(shù)據(jù)中選擇匹配ID,其中該匹配ID和相應(yīng)于該匹配ID的匹配數(shù)據(jù)存儲(chǔ)在暫時(shí)寄存器中作為輸出數(shù)據(jù);以及級(jí)聯(lián)電路,其被從該M個(gè)PU中的每一個(gè)耦合到該M個(gè)PU中的一個(gè)或多個(gè)相鄰的PU,用于響應(yīng)于所述控制數(shù)據(jù)在一個(gè)或多個(gè)由從該M個(gè)PU中選擇的兩個(gè)或更多相鄰的PU組成的組之間有選擇地耦合鏈接數(shù)據(jù)。
2.如權(quán)利要求1所述的PPDE,進(jìn)一步包括輸入緩沖器,該輸入緩沖器耦合到該I/O接口上,以便接收和在一寫(xiě)地址上寫(xiě)入輸入數(shù)據(jù)作為并行數(shù)據(jù)。
3.如權(quán)利要求2所述的PPDE,進(jìn)一步包括耦合到該輸入總線和輸入緩沖器上的多路轉(zhuǎn)換器,其用于順序地將來(lái)自該輸入緩沖器數(shù)據(jù)的單個(gè)數(shù)據(jù)耦合到該輸入總線上,其中使用一讀地址選擇并行數(shù)據(jù)。
4.如權(quán)利要求1所述的PPDE,進(jìn)一步包括耦合到該輸出總線和暫時(shí)寄存器的輸出緩沖器,該暫時(shí)寄存器接收輸出數(shù)據(jù)并在一寫(xiě)地址上向該輸出緩沖器寫(xiě)入輸出數(shù)據(jù),輸出緩沖器相應(yīng)于一讀地址將輸出數(shù)據(jù)耦合到該輸出總線上。
5.如權(quán)利要求1所述的PPDE,其中該M個(gè)處理單元(PU)中的每一個(gè)具有ID寄存器,用于存儲(chǔ)從該控制電路發(fā)送的唯一ID。
6.如權(quán)利要求1所述的PPDE,其中該M個(gè)處理單元(PU)中的每一個(gè)具有控制寄存器,用于存儲(chǔ)所述匹配方式數(shù)據(jù),其中所述匹配方式數(shù)據(jù)確定用于產(chǎn)生該匹配信號(hào)和該匹配數(shù)據(jù)的標(biāo)準(zhǔn)。
7.如權(quán)利要求1所述的PPDE,其中該M個(gè)處理單元(PU)中的每一個(gè)具有存儲(chǔ)器寄存器陣列,用于存儲(chǔ)模式序列以及相應(yīng)的操作碼,該操作碼由地址寄存器尋址,該地址寄存器由所述地址指針?biāo)饕?br>
8.如權(quán)利要求1所述的PPDE,其中所述級(jí)聯(lián)電路使能兩個(gè)或更多PU的存儲(chǔ)的模式鏈接在一起,作為使用該鏈接數(shù)據(jù)的單個(gè)模式。
9.如權(quán)利要求8所述的PPDE,其中該鏈接數(shù)據(jù)阻止索引一個(gè)PU的指針,直到與該級(jí)聯(lián)電路耦合的一相鄰PU已比較了最后模式與輸入數(shù)據(jù)。
10.如權(quán)利要求1所述的PPDE,其中在該M個(gè)PU中的每一個(gè)中的比較電路在同一個(gè)時(shí)鐘信號(hào)周期里完成輸入數(shù)據(jù)與所選模式的比較并且產(chǎn)生比較輸出并且修改所述地址指針。
11.如權(quán)利要求1所述的PPDE,其中該M個(gè)PU中的每一個(gè)中的匹配方式數(shù)據(jù)設(shè)置一匹配方式,該匹配方式包括精確匹配方式,其中模式匹配指示模式的序列與輸入數(shù)據(jù)的序列精確地匹配,最長(zhǎng)匹配方式,其中模式匹配指示與該匹配ID相應(yīng)的模式的特定序列具有與輸入數(shù)據(jù)序列中的一數(shù)據(jù)序列相匹配的成序列的最大數(shù)量的數(shù)據(jù),其中該匹配數(shù)據(jù)指示該最大數(shù)量的值;最大匹配方式,其中模式匹配指示與該匹配ID相應(yīng)的模式字節(jié)的特定序列具有與輸入數(shù)據(jù)的一不連續(xù)序列相匹配的成不連續(xù)序列的最大數(shù)量的數(shù)據(jù),其中該匹配數(shù)據(jù)指示該最大數(shù)量的值;以及模糊匹配方式,其中模式匹配指示與該匹配ID相應(yīng)的模式的特定序列具有由一距離值確定的與輸入數(shù)據(jù)序列的最接近匹配,其中該匹配數(shù)據(jù)指示該距離值。
12.如權(quán)利要求1所述的PPDE,其中該操作碼是從這樣一組操作碼中選擇的,該組操作碼包括匹配操作碼,其指示如果比較輸出是邏輯1則地址指針遞增,并且如果比較輸出是邏輯0則將地址指針重新裝載為其初始值;反向操作碼,其指示如果比較輸出是邏輯0則地址指針將遞增,并且如果比較輸出是邏輯1則將地址指針重新裝載為其初始值;通配符操作碼,其指示如果比較輸出是邏輯0或邏輯1則地址指針遞增;多個(gè)通配符操作碼,其指示如果比較輸出是邏輯0則地址指針保持,否則地址指針遞增;以及最后操作碼,其指示如果比較輸出是邏輯1則地址指針被凍結(jié)直到該匹配過(guò)程接收到重置信號(hào),并且如果比較輸出是邏輯0則將地址指針重新裝載為其初始值。
13.如權(quán)利要求1所述的PPDE,其中當(dāng)所選模式與輸入數(shù)據(jù)進(jìn)行比較時(shí),該所選模式的一些位由存儲(chǔ)在屏蔽寄存器中的屏蔽數(shù)據(jù)所屏蔽,該屏蔽數(shù)據(jù)指示所選模式的哪些位不進(jìn)行比較。
14.一種使用并行模式檢測(cè)引擎(PPDE)來(lái)確定在輸入數(shù)據(jù)序列中是否出現(xiàn)N個(gè)模式序列中的任何一個(gè)的方法,其包括以下步驟a)將該N個(gè)模式序列裝入M個(gè)處理單元(PU),該M個(gè)PU中的每一個(gè)具有比較電路,用于并行地將輸入數(shù)據(jù)序列中的每一個(gè)與存儲(chǔ)在該M個(gè)PU中的該N個(gè)模式序列中的每一個(gè)中的一所選模式進(jìn)行比較;b)將標(biāo)識(shí)(1D)數(shù)據(jù)裝入該M個(gè)PU中的每一個(gè),其中該ID數(shù)據(jù)確定該M個(gè)PU中的每一個(gè)的ID;c)將匹配方式數(shù)據(jù)裝入該M個(gè)PU中的每一個(gè),該匹配方式數(shù)據(jù)設(shè)定了用于確定何時(shí)已滿足了指示在輸入數(shù)據(jù)序列中已檢測(cè)到該N個(gè)模式序列中的一個(gè)的條件的標(biāo)準(zhǔn);d)將第一輸入數(shù)據(jù)并行地耦合到該M個(gè)PU中的每一個(gè);e)在同一時(shí)鐘周期內(nèi)將該第一輸入數(shù)據(jù)與由該M個(gè)PU中的每一個(gè)中的地址指針確定的所選模式進(jìn)行比較,并在該M個(gè)PU中的每一個(gè)中產(chǎn)生比較輸出;f)響應(yīng)于相應(yīng)的比較輸出的邏輯狀態(tài)和在該M個(gè)PU中的每一個(gè)中與該所選模式一起存儲(chǔ)的操作碼,修改該M個(gè)PU中的每一個(gè)中的該地址指針的值;g)響應(yīng)于指示已檢測(cè)到該N個(gè)模式序列中的一個(gè)的模式匹配信號(hào),從該ID數(shù)據(jù)中選擇匹配ID;h)將該匹配ID與相應(yīng)于該匹配ID的匹配數(shù)據(jù)存儲(chǔ)起來(lái);以及i)重復(fù)步驟(a-g),直到已比較了該輸入數(shù)據(jù)序列的最后一個(gè)輸入數(shù)據(jù)。
15.如權(quán)利要求14所述的方法,其中將級(jí)聯(lián)電路從該M個(gè)PU中的每一個(gè)耦合到該M個(gè)PU中的一個(gè)或多個(gè)相鄰的PU,以便響應(yīng)于裝入選自該M個(gè)PU的兩個(gè)或更多相鄰的PU中的控制數(shù)據(jù)而有選擇地在該兩個(gè)或更多相鄰的PU之間耦合鏈接數(shù)據(jù)。
16.如權(quán)利要求14所述的方法,其中將該N個(gè)模式序列中的一個(gè)分割,并裝入該M個(gè)PU中的兩個(gè)或更多個(gè)中。
17.如權(quán)利要求14所述的方法,其中該M個(gè)處理單元(PU)中的每一個(gè)具有控制寄存器,用于存儲(chǔ)該匹配方式數(shù)據(jù),其中該匹配方式數(shù)據(jù)確定用于產(chǎn)生所述匹配信號(hào)和所述匹配數(shù)據(jù)的標(biāo)準(zhǔn)。
18.如權(quán)利要求17所述的方法,其中該M個(gè)PU中的每一個(gè)具有存儲(chǔ)器寄存器陣列,用于存儲(chǔ)模式序列以及由地址寄存器尋址的相應(yīng)的操作碼,該地址寄存器由所述地址指針?biāo)饕?br>
19.如權(quán)利要求15所述的方法,其中該級(jí)聯(lián)電路使能兩個(gè)或更多PU的存儲(chǔ)的模式鏈接在一起,作為使用該鏈接數(shù)據(jù)的單個(gè)模式。
20.如權(quán)利要求19所述的方法,其中該鏈接的數(shù)據(jù)阻止索引一個(gè)PU的指針,直到與該級(jí)聯(lián)電路耦合的相鄰的一PU已完成最后一個(gè)模式與輸入數(shù)據(jù)的比較。
21.如權(quán)利要求14所述的方法,其中該M個(gè)PU中每一個(gè)中的比較電路在同一個(gè)時(shí)鐘信號(hào)周期中完成輸入數(shù)據(jù)與所選模式的比較并產(chǎn)生比較輸出并且修改所述地址指針。
22.如權(quán)利要求14所述的方法,其中該M個(gè)PU中的每一個(gè)中的匹配方式數(shù)據(jù)設(shè)置一匹配方式,該匹配方式包括精確匹配方式,其中模式匹配指示模式的序列與輸入數(shù)據(jù)的序列精確地匹配,最長(zhǎng)匹配方式,其中模式匹配指示與該匹配ID相應(yīng)的模式的特定序列具有與輸入數(shù)據(jù)序列中的一數(shù)據(jù)序列相匹配的成序列的最大數(shù)量的數(shù)據(jù),其中該匹配數(shù)據(jù)指示該最大數(shù)量的值;最大匹配方式,其中模式匹配指示與該匹配ID相應(yīng)的模式的特定序列具有與輸入數(shù)據(jù)的一不連續(xù)序列相匹配的最大數(shù)量的數(shù)據(jù),其中該匹配數(shù)據(jù)指示該最大數(shù)量的值;以及模糊匹配方式,其中模式匹配指示與該匹配ID相應(yīng)的模式的特定序列具有由一距離值確定的與輸入數(shù)據(jù)序列的最接近匹配,其中該匹配數(shù)據(jù)指示該距離值。
23.如權(quán)利要求18所述的方法,其中所述操作碼是從一組操作碼中選擇的,該組操作碼包括匹配操作碼,其指示如果比較輸出是邏輯1則地址指針遞增,并且如果比較輸出是邏輯0則將地址指針重新裝載為其初始值;反向操作碼,其指示如果比較輸出是邏輯0則地址指針將遞增,并且如果比較輸出是邏輯1則將地址指針重新裝載為其初始值;通配符操作碼,其指示如果比較輸出是邏輯0或邏輯1則地址指針遞增;多個(gè)通配符操作碼,其指示如果比較輸出是邏輯0則地址指針保持,否則地址指針遞增;以及最后操作碼,其指示如果比較輸出是邏輯1則地址指針被凍結(jié)直到匹配過(guò)程接收到重置信號(hào),并且如果比較輸出是邏輯0則將地址指針重新裝載為其初始值。
24.一種數(shù)據(jù)處理系統(tǒng),包括中央處理單元(CPU);隨機(jī)存取存儲(chǔ)器(RAM);一個(gè)或多個(gè)并行模式檢測(cè)引擎(PPDE)集成電路(IC);以及將該CPU、該RAM及該一個(gè)或多個(gè)PPDE相耦合的總線,其中每個(gè)PPDE具有輸入/輸出(I/O)接口,其用于將數(shù)據(jù)耦合進(jìn)入或出自該P(yáng)PDE;M個(gè)處理單元(PU),該M個(gè)處理單元中的每一個(gè)都具有比較電路,該比較電路用于將輸入數(shù)據(jù)序列的每一個(gè)與存儲(chǔ)在該M個(gè)PU中的每一個(gè)中的模式相比較,并產(chǎn)生比較輸出,其中響應(yīng)于該比較輸出的邏輯狀態(tài)和與該模式數(shù)據(jù)一起存儲(chǔ)的操作碼,修改該M個(gè)PU中的每一個(gè)中的選擇該模式數(shù)據(jù)的地址指針;輸入總線,其用于將該輸入數(shù)據(jù)序列并行地耦合到該M個(gè)PU中的每一個(gè);輸出總線,其被耦合到該I/O接口,用于將輸出數(shù)據(jù)發(fā)送到該I/O接口;控制電路,其被耦合到該I/O接口,并將控制數(shù)據(jù)總線上的控制數(shù)據(jù)和ID總線上的標(biāo)識(shí)(ID)耦合到該M個(gè)處理單元中的每一個(gè);ID選擇電路,其用于響應(yīng)于模式匹配信號(hào)和匹配方式數(shù)據(jù)而從標(biāo)識(shí)該M個(gè)PU的ID數(shù)據(jù)中選擇匹配ID,其中該匹配ID和相應(yīng)于該匹配ID的匹配數(shù)據(jù)存儲(chǔ)在暫時(shí)寄存器中作為輸出數(shù)據(jù);以及級(jí)聯(lián)電路,其從該M個(gè)PU中的每一個(gè)耦合到該M個(gè)PU中的一個(gè)或多個(gè)相鄰的PU,用于響應(yīng)于所述控制數(shù)據(jù)在一個(gè)或多個(gè)由從該M個(gè)PU中選擇的兩個(gè)或更多相鄰的PU組成的組之間有選擇地耦合鏈接數(shù)據(jù)。
25.如權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中該M個(gè)處理單元(PU)中的每一個(gè)具有ID寄存器,用于存儲(chǔ)從該控制電路發(fā)送的唯一ID。
26.如權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中該M個(gè)PU中的每一個(gè)具有存儲(chǔ)器寄存器陣列,用于存儲(chǔ)模式序列以及相應(yīng)的操作碼,該操作碼由地址寄存器尋址,該地址寄存器由所述地址指針?biāo)饕?br>
27.如權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中所述級(jí)聯(lián)電路使能兩個(gè)或更多PU的存儲(chǔ)的模式鏈接在一起,作為使用該鏈接數(shù)據(jù)的單個(gè)模式。
28.如權(quán)利要求27所述的數(shù)據(jù)處理系統(tǒng),其中該鏈接數(shù)據(jù)阻止索引一個(gè)PU的指針,直到與該級(jí)聯(lián)電路耦合的一相鄰PU已比較了最后模式與輸入數(shù)據(jù)。
29.如權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中在該M個(gè)PU中的每一個(gè)中的比較電路在同一個(gè)時(shí)鐘信號(hào)周期里完成輸入數(shù)據(jù)與所選模式的比較并且產(chǎn)生比較輸出并且修改所述地址指針。
30.如權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中該M個(gè)PU中的每一個(gè)中的匹配方式數(shù)據(jù)設(shè)置一匹配方式,該匹配方式包括精確匹配方式,其中模式匹配指示模式的序列與輸入數(shù)據(jù)的序列精確地匹配,最長(zhǎng)匹配方式,其中模式匹配指示與該匹配ID相應(yīng)的模式的特定序列具有與輸入數(shù)據(jù)序列中的一數(shù)據(jù)序列相匹配的成序列的最大數(shù)量的數(shù)據(jù),其中該匹配數(shù)據(jù)指示該最大數(shù)量的值;最大匹配方式,其中模式匹配指示與該匹配ID相應(yīng)的模式的特定序列具有與輸入數(shù)據(jù)的一不連續(xù)序列相匹配的最大數(shù)量的數(shù)據(jù),其中該匹配數(shù)據(jù)指示該最大數(shù)量的值;以及模糊匹配方式,其中模式匹配指示與該匹配ID相應(yīng)的模式的特定序列具有由一距離值確定的與輸入數(shù)據(jù)序列的最接近匹配,其中該匹配數(shù)據(jù)指示該距離值。
31.如權(quán)利要求30所述的數(shù)據(jù)處理系統(tǒng),其中該操作碼是從這樣一組操作碼中選擇的,該組操作碼包括匹配操作碼,其指示如果比較輸出是邏輯1則地址指針遞增,并且如果比較輸出是邏輯0則將地址指針重新裝載為其初始值;反向操作碼,其指示如果比較輸出是邏輯0則地址指針將遞增,并且如果比較輸出是邏輯1則將地址指針重新裝載為其初始值;通配符操作碼,其指示如果比較輸出是邏輯0或邏輯1則地址指針遞增;多個(gè)通配符操作碼,其指示如果比較輸出是邏輯0則地址指針將保持,否則地址指針遞增;以及最后操作碼,其指示如果比較輸出是邏輯1則地址指針被凍結(jié)直到匹配過(guò)程接收到重置,并且如果比較輸出是邏輯0則將地址指針重新裝載為其初始值。
32.如權(quán)利要求30所述的數(shù)據(jù)處理系統(tǒng),其中當(dāng)所選模式與輸入數(shù)據(jù)進(jìn)行比較時(shí),該所選模式的一些位由存儲(chǔ)在屏蔽寄存器中的屏蔽數(shù)據(jù)所屏蔽,該屏蔽數(shù)據(jù)指示所選模式的哪些位不進(jìn)行比較。
全文摘要
一種并行模式檢測(cè)引擎(PPDE)包括多個(gè)被定制為執(zhí)行各種模式識(shí)別方式的處理單元(PU)。將不同模式裝入到這些PU中,并且將待匹配的輸入數(shù)據(jù)并行地提供給這些PU。每個(gè)模式具有一操作碼,其定義了當(dāng)在一個(gè)時(shí)鐘周期中輸入數(shù)據(jù)流中的一特定數(shù)據(jù)與被比較的相應(yīng)數(shù)據(jù)匹配或者不匹配時(shí)所采取的動(dòng)作。每個(gè)PU傳遞所選的信息,從而可將這些PU級(jí)聯(lián)起來(lái),以使得對(duì)于一特定的輸入數(shù)據(jù)流能夠匹配更長(zhǎng)的模式或者允許并行處理更多的模式。
文檔編號(hào)G06K9/00GK1641685SQ20051000013
公開(kāi)日2005年7月20日 申請(qǐng)日期2005年1月4日 優(yōu)先權(quán)日2004年1月14日
發(fā)明者K·A·克拉韋克, A·G·塞義迪, J·M·斯萊費(fèi)爾德, P·R·塔恩霍夫 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司