TWI417784B - 平行多字元字串比對裝置 - Google Patents

平行多字元字串比對裝置 Download PDF

Info

Publication number
TWI417784B
TWI417784B TW99125682A TW99125682A TWI417784B TW I417784 B TWI417784 B TW I417784B TW 99125682 A TW99125682 A TW 99125682A TW 99125682 A TW99125682 A TW 99125682A TW I417784 B TWI417784 B TW I417784B
Authority
TW
Taiwan
Prior art keywords
output
state
character
string
rule
Prior art date
Application number
TW99125682A
Other languages
English (en)
Other versions
TW201207725A (en
Inventor
Chien Chi Chen
Sheng De Wang
Original Assignee
Univ Nat Taiwan
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Univ Nat Taiwan filed Critical Univ Nat Taiwan
Priority to TW99125682A priority Critical patent/TWI417784B/zh
Publication of TW201207725A publication Critical patent/TW201207725A/zh
Application granted granted Critical
Publication of TWI417784B publication Critical patent/TWI417784B/zh

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

平行多字元字串比對裝置
本發明係有關於一種字串比對裝置,特別是關於一種平行多字元字串比對裝置,其可在一時脈週期內完成多字元之比對。
在習知的字串比對演算法中,AC演算法─由Alfred V. Aho及Margaret J. Corasick所提出─係一種有效率之方法,其可藉由一AC-trie(AC搜尋樹)-依據AC演算法所建立的搜尋樹(search tree),在一段式搜尋(one pass search)之過程中找出待比對字串中之所有關鍵字(keyword)。AC演算法可應用在網路入侵偵測系統(Network Intrusion Detection System,簡稱NIDS),例如一般所熟知的SNORT中。
請一併參照圖1a及圖1b,其繪示依關鍵字群組{he,she,his,hers}所建立之AC-trie及其輸出函式(output function)。圖1a中之狀態0為預定(default)之未符合次狀態(non-matching next state)。各指向實線係各代表一進行函式(goto function): G(SPi ,Ci )=SNg ,其意義為在目前狀態等於SPi 時,若待比對字元與一關鍵字元Ci 比對相符,則其次狀態為SNg 。例如在目前狀態為狀態1時,若待比對字元與e字元相符,則其次狀態為狀態2。除了狀態0之外,每一狀態皆有一失敗函式(failure function): F(SPi )=SNf ,圖中各指向虛線係各代表一非指到狀態0之失敗函式,其意義為在比對由目前狀態SPi 開始的進行函式未有相符之情況下將比對由狀態SNf 開始的進行函式,直到找到次狀態為止。例如在目前狀態為狀態4時,若待比對字元未與e字元相符,則將比對由狀態1開始的進行函式。若某狀態-例如狀態6-未附帶指向虛線,則在該待比對字元未與關鍵字元-在此例中為s字元-相符時,則將比對由狀態0開始的進行函式。
當該失敗函式F(SPi )輸出之狀態SNf 係非狀態0時,表示該狀態SNf 所指到的字首(prefix)包含在該狀態SPi 所指到的字首中。例如,圖1a中狀態5之失敗函式F(SPi )輸出為狀態2,而狀態5所指到的字首為"she",狀態2所指到的字首為"he"-"she"包含"he"。依此,可充分利用先前之比對成果,使比對過程更有效率。
另外,請參照圖1b,其繪示與圖1a AC-trie對應之4個輸出函式(output function),其輸出為比對符合的關鍵字。例如,在比對一待比對字串至某一個字元後,到達狀態5,透過output(5)={she,he},可以知道該待比對字串中包含有關鍵字"she"與"he"。假如輸出函式的輸出為空字串,則表示該待比對字串中未包含該關鍵字群組中之任何關鍵字。
AC-trie之一般應用方式如下:在進行字串比對前,先將目前狀態(current state)指到初始狀態0。然後,一次比對一個字元。針對待比對字元,從對應目前狀態的進行函式中找到符合者以決定次狀態(next state);假如無法找到符合的進行函式,再透過失敗函式找到與該目前狀態對應者以決定次狀態。由於由初始狀態0開始的進行函式含蓋所有的字元,所以透過進行函式及失敗函式,在每次輸入一個字元後,保證一定能夠決定次狀態。從接受輸入的一個字元開始,到透過進行函式及失敗函式決定次狀態為止,算是一個比對週期(matching cycle)。比對完一個字元,決定次狀態後,再將次狀態指定為目前狀態,然後接受輸入下一個字元,進行下一個比對週期。
如上所述建立AC-trie後,透過進行函式或失敗函式進行字串比對,只需一段式搜尋(one pass search)即可完成輸入字串與該關鍵字群組之比對,並可輸出符合的關鍵字。
然而,上述AC-trie之習知應用方式,僅適用於字元導向(character-oriented)之資料處理方式,即以字元為基礎來決定所處理的資訊。亦即,在使用AC-trie來進行字串比對時,只能一個字元接著一個字元的比對,無法一次同時比對多個字元。
另一方面,即使目前的硬體技術進步快速,例如,一般通用的處理器(CPU)一次可以同時處理的資料多達64位元,64位元即相當於8個字元;但是依AC-trie之習知應用方式,仍然只能一次比對一個字元。
另外,即使半導體技術持續進步,使工程人員可以很容易的依據需求,自行設計開發所需的硬體架構,及在相同的面積中放入更多的電路;但依AC-trie之習知應用方式所設計出來的硬體架構仍然只能一次比對一個字元。
本發明之一目的在於提出一種平行多字元字串比對裝置,其可在一個比對週期內比對多個字元以充份發揮硬體的效能。
本發明之另一目的在於提出一種平行多字元字串比對裝置,其係利用分別與AC-trie各循序比對路徑對應之複數個樣版資料達成平行多字元字串比對。
為達到上述之目的,一平行多字元字串比對裝置乃被提出。該平行多字元字串比對裝置係用以使一輸入字串分別與複數個樣版資料比對而產生一組比對輸出資料,其具有:複數個多字元比對手段;複數個優先權多工手段;以及一狀態暫存手段。其中該多字元比對手段具有:一資料暫存器,用以儲存一所述之樣版資料及一輸出資料;一比對電路,用以使該輸入字串合併一目前狀態而與該樣版資料比對,及在比對符合時輸出一致能信號;以及一輸出電路,用以在該致能信號之驅動下送出該輸出資料。依此設計,本發明之平行多字元字串比對裝置即可利用一時脈信號作為同步運作之參考,而在一時脈週期內完成多字元字串之比對工作。
為使 貴審查委員能進一步瞭解本發明之結構、特徵及其目的,茲附以圖式及較佳具體實施例之詳細說明如后。
以下將先說明本發明平行多字元字串比對裝置(Parallel Multiple-Character String Matching Device)之整體架構,之後,再說明如何依據AC-trie產生多字元樣版資料之轉移規則。
請參照圖2,其繪示本發明平行多字元字串比對裝置一較佳實施例之架構。如圖2所示,該平行多字元字串比對裝置包括複數個多字元比對手段110、複數個優先權多工手段120、一狀態暫存手段130、及複數個輸出暫存手段131。
本發明之平行多字元字串比對裝置接受輸入字串input_chars,輸入字串之字元數目n係依實際規劃之需求而決定,例如3個、5個、或更多。在後面所與之實例,為一個比對週期平行比對5個字元,即n等於5。在一個比對週期中平行比對的字元數越多,則比對的速度越快,但轉移規則將會變得更為複雜,硬體的成本也就相對的變高。
本裝置依據時脈信號clk執行同步的運作。m個多字元比對手段110所輸出的結果送至n個優先權多工手段120,所述優先權多工手段120選擇最高優先的資料由其輸出dout送至狀態暫存手段130及n個輸出暫存手段131,然後改變clk,使得所述狀態暫存手段130及n個輸出暫存手段131可保留這一個比對週期的比對結果。其中輸出信號output_1~output_n係對應於輸入字串input_chars中經比對符合的字串。為了有利於硬體儲存空間的規劃,輸出信號output_1~output_n可以是對應於符合字串的代碼,例如AC-trie中對應於該輸出字串的狀態編號。
該狀態暫存手段130係用以儲存目前狀態(current state),其餘n個輸出暫存手段131係用以儲存分別對應於n個輸入字元之n個輸出字串的資料。
setting_input為設定輸入端,用來設定多字元比對單元110的內容,亦即轉移規則。在方塊圖中並未繪示詳細的作法,但熟習相關技藝者,可以很容易的實作出達到設定功能的電路。
所述優先權多工手段120之數目係對應於平行比對的字元數,例如,如圖所示,平行比對的字元數為n時,則優先權多工手段120的數目為n+1個,其中一個用來選擇次狀態(next state)的資料,另外n個用來選擇符合字串的輸出。
請參照圖3,其繪示所述優先權多工手段120一較佳實施例之方塊圖。如圖3所示,其包含m個多工器121。此方塊圖僅是用以說明優先權多工器的運作原理,並非用以限制本發明的裝置中所使用的優先權多工器,熟習相關技藝者,可以很容易的實作不同架構的優先權多工器,而達到相同之目的。
其運作原理解釋如後:輸入c_1~c_m為控制信號,用以控制對應的輸入資料d_1~d_m,決定要選擇d_1~d_m中的其中一個來當作輸出,其中,c_1的優先順序最高,而c_m的優先順序最低。例如,當c_1為’1’時,則選擇d_1的值由dout輸出,不管其他c_2~c_m是否為’1’。或者,當c_2及c_3同時為’1’時,因為c_2的優先順序(priority)比c_3高,因此選擇d_2的值由dout輸出。另外,c_1~c_m為1位元的信號,而d_1~d_m為多個位元的信號,其資料的寬度依實際應用所需而定,例如可以為8位元,以十進位數值來表示為0~255。
請參照圖4,其繪示該多字元比對手段110一較佳實施例之方塊圖。如圖4所示,其包括一資料暫存器111、一比對電路112、及一輸出電路113。
該資料暫存器111係用以儲存對應的轉移規則(transition rule)之資料。一個多字元比對手段110對應一條轉移規則,例如在本實施例中所舉的例子,依據AC_trie所產生的轉移規則有80條,則至少需要80個多字元比對手段110。每一個多字元比對手段110的輸出包括op_1~op_n,of_1~of_n,nx_st,及nx_flg。其中op_1~op_n分別為對應於每個輸入字元的輸出結果,在實施例中,其係以輸出字串表示,但實際上可以存放對應的狀態編號(state number),例如,對應於狀態5的輸出字串為"she he",可以存放狀態的編號5,如此可以使用固定長度的空間來存放,不用存放長度會變動的字串資料,有利於硬體儲存空間的規劃。of_1~of_n為分別對應於op_1~op_n的輸出遮罩控制,例如,of_1為’1’時,則表示op_1的資料是要輸出的;而of_1為’0’時,則表示op_1的資料是不輸出的。
資料暫存器111所儲存之資料可分為兩部分,第一個部份為樣版(pattern)資料,第二部分則為輸出資料。但這只是為了方便說明,實際上,可以依據實際情形來設計規劃資料暫存器111的配置。樣版資料包括三元遮罩tmask、樣版字元p_chrs、及目前狀態p_st,輸出資料包括輸出遮罩omask、輸出字串op_1~op_n、及次狀態nx_st。樣版資料及輸出資料將在後面說明。
比對電路112係用以比較輸入的資料與樣版資料,假如符合,則其輸出eq會是真(true),例如電路邏輯的’1’或高電位。假如比對的結果為不符合,則其輸出eq會是假(false),例如電路邏輯的’0’或低電位。
該輸出電路113包含複數個AND閘。輸出電路113的作用是將比對電路112的輸出信號eq與該資料暫存器111之各輸出遮罩omask位元做AND以得到所需的控制信號,亦即控制信號nx_flg及of_1~of_n,這些控制信號是用來控制對應的輸出資料nx_st及op_1~op_n是否要輸出。輸出nx_st為次狀態(next state)的資料,nx_flg是對應於nx_st的輸出遮罩(mask)控制,例如,nx_flg為’1’時,則表示nx_st的資料是要輸出的;而nx_flg為’0’時,則表示nx_st的資料是不輸出的。其中所述m個多字元比對手段110的輸出nx_st及nx_flg係送至所述(n+1)個優先權多工手段120中之第一個,而所述m個多字元比對手段110的輸出op_1~op_n及of_1~of_n則分別送至所述(n+1)個優先權多工手段120中之其餘n個。
轉移規則說明
如圖5a、圖5b及圖5c所示的表格為轉移規則的實例,其係根據關鍵字群組為{he,she,his,hers}的AC-trie所建立的5字元轉移函式轉移規則。產生轉移規則的作法將在後面說明。
轉移規則的資料被儲存於所述多字元比對手段110的資料暫存器111中,每一多字元比對手段110負責處理一條轉移規則,因此每一多字元比對手段110的資料暫存器111中各存放有對應的轉移規則的資料。以下將說明轉移規則的內容。
為了說明的一致性,規則的欄位名稱對應於多字元比對手段110的資料暫存器111中的代號。第一個欄位規則編號僅是為了方便說明,以及表示規則的優先順序。因此多字元比對手段110的資料暫存器111中並未儲存規則編號。規則的實際的優先順序是依存放的多字元比對手段110在實際電路中的位置所決定,例如,以圖2的方塊圖配合圖5a~5c的規則表來說明,規則1~80將由上至下分別存放在所述m個多字元比對手段110中,此時m=80,其中規則1的優先順序最高,而規則80的優先順序最低。
tmask係三元遮罩(ternary mask)資料,其最高位元,即上述規則的tmask的第5位元,對應於目前狀態,即p_st欄位的資料。其餘的位元則依序對應於個別的樣版字元(pattern characters),例如次高位元,即上述規則的tmask的第4位元,對應於第一個樣版字元,而最低位元,即上述規則的tmask的第0位元,則對應於最後一個樣版字元。然而,在此只是舉出一種三元遮罩的資料表示方式,並不限定於此作法,熟習此技藝者,可以很容易的設計出不同的資料表示方式,能夠達到在此所提到的功能。
當對應的三元遮罩位元為’1’時,表示要比對對應的樣版資料,而當其為’0’時,則表示對應的樣版資料為略過(don’t care),例如,規則53~80中的tmask的第5個位元(bit 5)皆為’0’,表示不論目前狀態為何,皆為與p_st符合。同樣的,對於樣版字元也是如此,當對應的三元遮罩位元為’0’時,表示對應的樣版字元為略過(don’t care),只有在其為’1’時,才要實際的比對。
omask係輸出遮罩(output mask)資料,其最高位元,即上述規則的omask的第5位元,對應於次狀態(next state),即nx_st欄位的資料。其餘的位元則依序對應於個別的輸出字串(output strings),例如次高位元,即上述規則的omask的第4位元,對應於第一個輸出字串op_1,而最低位元,即上述規則的omask的第0位元,則對應於最後一個輸出字串op_5。當omask的某個位元為’0’時,表示對應的資料是不輸出的,例如規則3的omask的第5、1、0個位元(bit 5、bit 1、及bit 0)皆為’0’,表示此規則的nx_st、op_4、及op_5皆不輸出,亦即,當此規則被觸發時,並不會用來決定次狀態,而且也不決定對應於輸入字元的第4及第5字元的符合字串輸出。
規則中的op_1~op_5為對應於樣版字元第一個至第五個字元的輸出字串。
如前面所提到的,因為輸出字串的長度是不固定的,而規則是儲存在每一比對單元的資料暫存器中,為了方便硬體的設計,在資料暫存器中可以儲存對應的輸出字串的的代碼,例如規則1的op_5為"she he"為對應於將態5的輸出字串,因此可以用狀態的編號’5’來代表"She he"的輸出字串。在上述的規則表中,雖然僅以字串來表示輸出字串,但熟習相關技藝者,可以很容易的達到以代碼來表示輸出字串的作法。
運作說明
以下將依據以上所述的平行多字元字串比對裝置的硬體架構及轉移規則,說明字串比對的運作。
首先,我們定義比對週期(matching cycle),從接受輸入的n個字元開始,直到本裝置輸出次狀態及n個符合的輸出字串為止,為一個比對週期。以本發明所提出的作法來說,一個比對週期即為時脈信號clk的一個週期。另外,以本實施例的轉移規則來說,每個比對週期可以處理5個字元的輸入,n即等於5。
運作之前,透過輸入setting_input,將前述的轉移規則設定至字串比對裝置的各個多字元比對手段110的資料暫存器111中。當要搜尋的關鍵字變動時,必需重新產生轉移規則,再重新將新的轉移規則設定至比對裝置的各個多字元比對手段110的資料暫存器111中。
在開始進行字串比對之前,藉由初始信號init將狀態暫存手段130及n個輸出暫存手段131的狀態初始化(initialization),即將目前狀態指到初始狀態0,而且輸出字串皆為空字串。進行字串比對時,將要比對的字串,由開頭的第1個字元開始,依序的一次n個字元由輸入input_chars配合時脈信號clk送進字串比對裝置。
由輸入端input_chars輸入的字元和儲存在狀態暫存手段130中的次狀態next_state-被視為目前狀態-會被送至字串比對裝置中的每一個多字元比對手段110。每個多字元比對手段110的比對電路112會依據其中儲存的樣版資料p_st及p_chrs和三元遮罩tamsk,比對輸入的字元input_chars和目前狀態。假如輸入的字元資料及目前狀態與其內部儲存的樣版資料相符(matching),則比對電路的輸出eq會致能(enable),例如在此實施例為變成邏輯上的’1’,其將致能相關的控制旗號nx_flg及of_l~of_n,籍以控制對應的輸出資料經由所述之優先權多工手段120輸出至狀態暫存手段130及n個輸出暫存手段131。
若比對結果為不符合時,則比對電路112的輸出信eq為禁能(disable),例如在此實施例為變成邏輯上的’0’,則多字元比對手段110輸出的控制信號nx_flg及of_1~of_n也會變為禁能,故對最後的結果沒有影響。
依據每個多字元比對手段110送出的控制信號nx_flg及of_l~of_n,所述之優先權多工手段120會選擇優先順序最高的輸出送至狀態暫存手段130及n個輸出暫存手段131,並在時脈信號clk的控制下,將結果存入狀態暫存手段130及n個輸出暫存手段131中。其中,狀態暫存手段130儲存的為次狀態,n個輸出暫存手段131儲存的則為比對的結果。
比對完一組n個字元後,保存於狀態暫存手段130中的次狀態,會被當作目前狀態,然後接受輸入下一組n個字元,進行下一個比對週期。
規則產生
本發明提出一種簡單且有效的作法,可以依據原始的AC-trie產生平行比對多字元的轉移規則。在下面將要說明本發明所提出的產生轉移規則的作法。
由原始的AC-trie的運作方式,我們可以知道,所有的狀態的失敗函式,最後都會指到初始狀態。
在AC-trie中,假如一個狀態的失敗函式指向不是初始狀態的狀態,表示兩個狀態之間有共同的字首(prefix)。而假如比對的結果為留在初始狀態,則表示沒有任何的符合的比對結果。因此,當對應所有的狀態的轉移規則(transition rule)都不符合時,將會比對由初始狀態開始的轉移規則。基於此事實,在平行處理多個字元的比對時,利用硬體的特性,可以多個規則同時作用、平行比對不同部分的字元。
例如,目前狀態為4以及輸入字串為"ersis"時,可以由規則21來比對前3個字元"ers",得到對應於第一個字元的輸出"she he",以及對應於第三個字元的輸出"hers",另外由規則79決定次狀態為3。
另外,平行比對的字元n不論是多少,狀態的個數仍會保持不變,與原始的AC-trie一樣。因為,依據相同關鍵字建立的不同個數字元的轉移規則,處理相同的輸入字串,最後得到的狀態一定是一樣的,這樣這些不同個數字元的轉移規則才能用以比對相同的關鍵字。
以下所敘述的作法,即是依據前述說明所推導得到的。
為了說明推導的過程,我們定義NXn (S1 ,T)=S2 來表示n字元的轉移函式,其中S1 為目前狀態(current state),T為n個字元的字串,S2 為次狀態(next state)。此轉移函式所代表的意義即為目前狀態為S1 ,接受輸入的n個字元的字串T之後,狀態會改變為次狀態S2 。例如,NX2 (1,er)=8為2字元的轉移函式,所代表的意義為,目前狀態為1,接受輸入的2個字元的字串"er"之後,得到的次狀態為8。
首先,依據先前所敘述的{he,she,his,hers}四個關鍵字建立原始的AC-trie,此AC-trie請參考第圖1a。
首先,針對初始狀態0以外的每一個狀態1至9,將其進行函式以及除了指到初始狀態0以外的失敗函式展開成1字元的轉移函式。對於初始狀態0,因為沒有失敗函式,所以其1字元的轉移函式皆為其進行函式。
其中,由初始狀態0開始的轉移函式NX1 (0,﹁{h,s})=0,﹁{h,s}是指’h’及’s’以外的任何字元,在此實施例所敘述的規則中,我們以符號’~’來表示,在硬體實作上,則是以三元比對(ternary matching)來實現,亦即將對應的三元遮罩位元設為’0’,使其符合於任何字元,但是因為將規則的優先順序放在完全比對的規則之後,所以會由完全比對的結果優先來決定最後的輸出。
如圖6中的(a)至(j)所繪示,分別為依據原始的AC-trie所展開的狀態0至9的轉移函式(transition function)。其中,對於指到初始狀態0的失敗函式並未展開。
請注意,為了後面的多字元的轉移函式的推導,對於輸出函式不為空字串的狀態,如狀態2、5、7、及9,我們多加了一個虛假轉移函式(pseudo transition function),在圖式中以虛線表示。加入此虛假轉移函式的目的是在使推導出的每個多字元轉移函式具有相同數目的樣版字元(pattern character)和相同數目的輸出函式。但假如此虛假轉移函式是在開頭的第一個狀態,則不需要考慮,只有在後面串接時才要考慮。
為了說明本發明所提出的產生多字元的轉移函式的過程,下面以第7圖的實例來說明,其為產生從狀態1開始的所有的5字元轉移函式。
首先,如圖所示,圖中的(a)用以說明由狀態1本身開始的1字元的轉移函式產生2字元的轉移函式的過程,(b)用以說明由狀態1的2字元的轉移函式產生3字元的轉移函式的過程,(c)用以說明由狀態1的3字元的轉移函式產生4字元的轉移函式的過程,以及,(d)用以說明由狀態1的4字元的轉移函式產生5字元的轉移函式的過程。依照圖示的舉例,可以推導任何一個狀態開始的任何數目的字元的轉移函式。
圖7中的(a)至(d),=>的左邊為狀態1開始的k字元轉移函式及其每一k字元轉移函式的次狀態開始的1字元轉移函式,將前述兩種規則串接之後即可產生的狀態1的k+1字元轉移函式,其繪示於=>的右邊。以圖7中的(a)至(d)而言,k為1至4。在圖示中,在=>的左邊部分,以虛線來表示每一k字元轉移函式與其次狀態開始的1字元轉移函式的串接關係。
如圖7中的(a)所繪示,由狀態1本身開始的1字元的轉移函式有2個。請注意,完整的由狀態1開始的1字元轉移函式還要包括失敗函式指到初始狀態0的轉移函式。但在我們的所提的作法中,由初始狀態0開始的轉移函式,是以硬體的方式來達成平行處理。如此可以大幅減少產生出來的多字元轉移函式的數量,也就是大幅降低所需的硬體成本。所以在此的推導中,對於初始狀態(initial state)以外的狀態,都不包括指到初始狀態的失敗函式。
首先,參照圖7中的(a),我們推導由狀態1開始的2字元轉移函式。於=>左邊表示由狀態1開始的2個1字元轉移函式,分別為NX1 (1,e)=2及NX1 (1,i)=6。分別串接由狀態2及狀態6開始的1字元轉移函式,即可成為由狀態1開始的2字元轉移函式。如圖中的(a)的=>右半邊的轉移函式即為NX2 (1,er)=8、NX2 (1,e~)=~、及NX2 (1,is)=7。
此推導的過程可以用符號來表示如下;
NX2 (1,er)=NX1 (NX1 (1,e),r)=NX1 (2,r)=8
NX2 (1,e~)=NX1 (NX1 (1,e),~)=NX1 (2,~)=~
以及NX2 (1,is)=NX1 (NX1 (1,i),s)=NX1 (6,s)=7
熟習相關技藝者,可以很容易的依據圖式推導出如上的表示式,在後面我們將省略其他3字元至5字元的轉移函數的表示式。
圖中(b)至(c)的推導過程與(a)類似,熟習相關技藝者,可以很容易的瞭解,故不再贅述。
經過上述4次的推導步驟後,可以推導出由狀態1開始的5字元轉移函式,總共有8條轉移函式。
在前述的推導過程中,我們著重在狀態的轉移過程,但在狀態轉移的過程中,每個狀態都會有對應的符合輸出字串(matching output string)。如圖7所示,在每個終點狀態(destination state)旁括弧內的字串即為符合輸出字串,但為了圖示的簡潔,當符合輸出字串都是空字串時,則省略未標示出來。
在圖7中以’~’來表示不比對的字元及狀態或不要輸出的結果,但這只是為了說明上便於辨識的作法,在實際的轉移規則(transition rule)中是以三元遮罩tmask及輸出遮罩omask的對應位元來控制的。
以下,我們將以程式的演算法來說明依據1字元轉移函式來產生n字元轉移函式的作法。從原始的AC-trie展開所有的1字元轉移函式,是很直接的,依據前面的說明,熟習相關技藝者可以很容易的達成此作法,故在此說明中略過關於此部分的敘述。
因為在產生n字元轉移函式後,我們最後的目的是要產生n字元轉移規則,在下面的演算法的說明中,我們將統一使用轉移規則的稱呼。
如圖8所示,為依據1字元轉移規則建構n字元轉移規則的演算法,為了便於說明,在演算法的虛擬碼部份的前面加上行號。n是要平行處理的字元數,原來的1字元的轉移規則放在變數nx中,產生的最後結果是放在變數trset中。
演算法開始時,在第2行將trset清空。在第3行至21行中的迴圈,針對所有的狀態中的每一個狀態Si進行處理。如前所述,所有的狀態即原始的AC-trie中的所有狀態。在第5行中,將由狀態Si開始的所有的1字元轉移規則,但排除先前為了便於推導所加入的虛假轉移規則,複製到nset中。
第6行至第19行中的迴圈,重複做n-1次,將由Si開始1字元轉移規則擴展為n字元轉移規則。在每一次執行迴圈中第7行至第19行之間的程式碼時,將新產生的轉移規則暫放在變數tmpset中,執行一次迴圈後,再將tmpset指定至nset,然後再重複執行下一次的迴圈。當執行n-1次後,nset即為由Si開始的所有的n字元轉移規則,在第20行中,將nset加入trset中,然後再回到第5行,處理下一個狀態。當所有的狀態都處理之後,即結束此程式。
接著解釋第7行至第19行之間的程式碼,在第8行,將變數tmpset清空。然後在第9行至第17行的迴圈中,針對nset中所有的轉移規則的每一個轉移規則Ri進行展開。在第11行,將Ri的次狀態(next state)指定至變數nx_st。在第13行至第16行的迴圈中,針對由nx_st開始的所有的轉移規則中的每一個轉移規則Rj,將轉移規則Ri與轉移規則Rj串接產生新的轉移規則new_rule,然後將轉移規則new_rule加入tmpset中。其中轉移規則new_rule的樣版字元數會比轉移規則Ri的樣版字元數多一個。
以上是關於演算法的說明。建立n字元的轉移規則後,還需將規則的順序予以重新排列,完全比對的樣版(pattern)的優先順序要在部分比對的樣版(pattern)之前,如本實施例所舉的例子中,是將由同一個狀態(表中的p_st欄位)出發的規則擺在一起,例如規則2的樣版字串為"ershi",而規則3的樣版字串為"ers~~",後者的最後兩個字元是不比對的,所以其優先順序在規則2之後。另外,從初始狀態0開始的所有轉移規則,其目前狀態(current state)皆不比對,所以其優先順序在所有其他狀態開始的轉移規則之後。
一個簡單的作法,是依據三元遮罩tmask的二進位數值排序,數值大的優先順序較高,例如"111111",而規則80的三元遮罩tmask為"000000"最小,所以排在最後。雖然,在前述實施例的規則並非依照三元遮罩tmask的二進位數值排序,但習知此相關技藝者,應可很容易以此作法實施。
字串比對範例
圖9係用以說明本發明的平行多字元字串比對裝置的運作的字串比對範例。在此範例中總共輸入3組資料,共15個字元。為了方便說明,在圖中每一行的前面加上行號。
在開始時,即第1行,目前狀態為初始狀態(initial state)0。
在輸入第一組的5個字元"xhish"後,會符合(matching)的轉移規則為65、66、77、78、及80。其中規則80在所有的情況下都會符合,確保在沒有任何規則符合的狀況下,系統會停留在初始狀態(initial state)0。
其中優先順序最高的規則65即決定了次狀態及分別對應於5個字元的5個輸出,其中對應於第4個字元的第4個輸出結果輸出了符合的關鍵字"his"。優先順序比規則65低的其他的符合的規則對於次狀態及輸出結果沒有影響。
第13行開始,輸入第二組的5個字元"ersis"後,會符合(matching)的轉移規則為21、22、79、及80。
其中優先順序最高的規則21只決定了對應於前3個字元的3個輸出,其中對應於第1個字元的第1個輸出結果輸出了符合的關鍵字"she he",以及對應於第3個字元的第3個輸出結果輸出了符合的關鍵字"hers"。
優先順序次高的規則22只決定了對應於第1個字元的1個輸出,但因第1個輸出已由規則21決定,故其沒有作用。
優先順序第三高的規則79則決定了次狀態及分別對應於第4及第5個字元的第4及第5個輸出,次狀態為3。優先順序比規則79低的規則80對於次狀態及輸出結果沒有影響。
第23行開始,輸入第三組的5個字元"heheh",會符合(matching)的轉移規則為15、55、71、78、及80。
其中優先順序最高的規則15只決定了對應於前2個字元的2個輸出,其中對應於第1個字元的第1個輸出結果為空字串,以及對應於第2個字元的第2個輸出結果輸出了符合的關鍵字"she he"。
優先順序次高的規則55,樣版字元與規則15一樣,只有目前狀態不一樣。因為對應於前2個字元的2個輸出已由規則15決定,所以此規則對最後的結果沒有影響。
優先順序第三高的規則71則決定了對應於第3個及第4個字元的2個輸出,其中對應於第3個字元的第3個輸出結果為空字串,以及對應於第4個字元的第4個輸出結果輸出了符合的關鍵字"he"。
優先順序第三高的規則78則決定了對應於第5個字元的輸出及次狀態,次狀態為1,以及對應於第5個字元的第5個輸出結果為空字串。優先順序比規則78低的規則80對於次狀態及輸出結果沒有影響。
至此,本發明之內容已詳盡揭露,而依其平行多字元字串比對之設計確可在一個比對週期內比對多個字元而充份發揮硬體的效能。
本案所揭示者,乃較佳實施例,舉凡局部之變更或修飾而源於本案之技術思想而為熟習該項技藝之人所易於推知者,俱不脫本案之專利權範疇。
綜上所陳,本案無論就目的、手段與功效,在在顯示其迥異於習知之技術特徵,且其首先發明合於實用,亦在在符合發明之專利要件,懇請 貴審查委員明察,並祈早日賜予專利,俾嘉惠社會,實感德便。
110...多字元比對手段
111...資料暫存器
112...比對電路
113...輸出電路
120...優先權多工手段
121...多工器
130...狀態暫存手段
131...輸出暫存手段
圖1a繪示本發明依關鍵字群組{he,she,his,hers}所建立之AC-trie。
圖1b繪示本發明依關鍵字群組{he,she,his,hers}所建立之AC-trie之輸出函式。
圖2為一示意圖,其繪示本發明平行多字元字串比對裝置一較佳實施例之方塊圖。
圖3為一示意圖,其繪示圖2之優先權多工手段其一較佳實施例之方塊圖。
圖4為一示意圖,其繪示圖2之多字元比對手段其一較佳實施例之方塊圖。
圖5a~5c繪示本發明依一AC-trie所建立之轉移規則的表格。
圖6為一示意圖,其繪示依一AC-trie之狀態0至9分別展開的轉移函式。
圖7為一示意圖,其繪示由一AC-trie之狀態1開始的5字元轉移函式推導過程。
圖8繪示本發明依據1字元轉移規則建構n字元轉移規則的演算法。
圖9繪示本發明平行多字元字串比對裝置之字串比對範例。
110...多字元比對手段
120...優先權多工手段
130...狀態暫存手段
131...輸出暫存手段

Claims (4)

  1. 一種平行多字元字串比對裝置,用以在一個時脈週期內比對由多個字元形成的字串,以使一輸入字串分別與複數個樣版資料比對而產生一組比對輸出資料,其具有:複數個多字元比對手段;複數個優先權多工手段;以及一狀態暫存手段。
  2. 如申請專利範圍第1項所述之平行多字元字串比對裝置,其中該多字元比對手段具有:一資料暫存器,用以儲存一所述之樣版資料及一輸出資料;一比對電路,用以使該輸入字串合併一目前狀態而與該樣版資料比對,及在比對符合時輸出一致能信號;以及一輸出電路,用以在該致能信號之驅動下送出該輸出資料。
  3. 如申請專利範圍第1項所述之平行多字元字串比對裝置,其中該優先權多工手段具有複數個輸入端、複數個優先權控制端及一輸出端,其中所述之複數個優先權控制端係用以接收一組優先權控制信號以自所述之複數個輸入端中擇一與該輸出端耦接。
  4. 如申請專利範圍第1項所述之平行多字元字串比對裝置,其進一步以一時脈信號作為同步運作之參 考。
TW99125682A 2010-08-03 2010-08-03 平行多字元字串比對裝置 TWI417784B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
TW99125682A TWI417784B (zh) 2010-08-03 2010-08-03 平行多字元字串比對裝置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW99125682A TWI417784B (zh) 2010-08-03 2010-08-03 平行多字元字串比對裝置

Publications (2)

Publication Number Publication Date
TW201207725A TW201207725A (en) 2012-02-16
TWI417784B true TWI417784B (zh) 2013-12-01

Family

ID=46762293

Family Applications (1)

Application Number Title Priority Date Filing Date
TW99125682A TWI417784B (zh) 2010-08-03 2010-08-03 平行多字元字串比對裝置

Country Status (1)

Country Link
TW (1) TWI417784B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201029008A (en) * 2009-01-16 2010-08-01 Univ Nat Taiwan Content addressable memory

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201029008A (en) * 2009-01-16 2010-08-01 Univ Nat Taiwan Content addressable memory

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
蔡睿哲碩士論文,「低功率內容可定址記憶體設計及其在網路路由器之應用」,2007年01月。 *

Also Published As

Publication number Publication date
TW201207725A (en) 2012-02-16

Similar Documents

Publication Publication Date Title
US9582251B2 (en) Algorithm to achieve optimal layout of decision logic elements for programmable network devices
US8972450B2 (en) Multi-stage parallel multi-character string matching device
Sourdis et al. Scalable multigigabit pattern matching for packet inspection
Le et al. A memory-efficient and modular approach for large-scale string pattern matching
US9983876B2 (en) Non-deterministic finite state machine module for use in a regular expression matching system
CN107609644A (zh) 用于状态机中的数据分析的方法及系统
Verhaeghe et al. Extending compact-table to negative and short tables
JP2011066557A (ja) データ処理装置およびデータ処理方法
JP6613019B2 (ja) パターンを探索する装置
KR100542467B1 (ko) 연상 메모리 시스템 및 네트워크 기기 및 네트워크 시스템
TWI417784B (zh) 平行多字元字串比對裝置
US8463988B2 (en) System and method for matching patterns
CN108270548B (zh) 一种Grain型流密码的判别方法
US8626688B2 (en) Pattern matching device and method using non-deterministic finite automaton
KR101276796B1 (ko) 패턴 매칭 장치 및 방법
TWI443538B (zh) Multi - hierarchical parallel multi - character string alignment device
CN112819160B (zh) 一种神经网络模型的可视化方法、装置、设备及存储介质
US10009041B2 (en) BCH decorder in which folded multiplier is equipped
Soewito et al. Self-addressable memory-based FSM: a scalable intrusion detection engine
CN112634989A (zh) 基于片段重叠群的双面基因组片段填充方法及装置
TWI521364B (zh) 多階層式平行多字元字串比對裝置
Chen et al. A hybrid multiple-character transition finite-automaton for string matching engine
TWI509441B (zh) Can flexibly set the data width of the multi-character string alignment device
Chen et al. A multi-character transition string matching architecture based on Aho-Corasick algorithm
Zhou et al. Research of multi-pattern matching algorithm based on characteristic value

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees