TWI443538B - Multi - hierarchical parallel multi - character string alignment device - Google Patents
Multi - hierarchical parallel multi - character string alignment device Download PDFInfo
- Publication number
- TWI443538B TWI443538B TW100128652A TW100128652A TWI443538B TW I443538 B TWI443538 B TW I443538B TW 100128652 A TW100128652 A TW 100128652A TW 100128652 A TW100128652 A TW 100128652A TW I443538 B TWI443538 B TW I443538B
- Authority
- TW
- Taiwan
- Prior art keywords
- input
- output
- hierarchical
- string
- comparison
- Prior art date
Links
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
本發明係有關於一種字串比對裝置,特別是有關於一種多階層式平行多字元字串比對裝置。
由Alfred V. Aho及Margaret J. Corasick所提出的字串比對演算法是一個很有效率的完全字串比對(exact string matching)方法,只要經由一次搜尋即可於一字串中找出所有的關鍵字(keyword)。
圖1所示為依據Aho及Corasick所提出的字串比對演算法所建立的字首樹(prefix-tree)之一實例,一般稱為AC-trie,其係依關鍵字集{he,she,his,hers}所建立者。圖1中包含數字的圓圈代表狀態(state)。其中雙層圓圈的狀態為輸出的狀態,亦即當到達該狀態時,是有符合的輸出字串,例如狀態9代表符合的輸出字串為"hers"。另外,實線為進行函式(goto function),虛線為失敗函式。每一狀態皆有一失敗函式(failure function),但為了簡潔,圖中指到啟始狀態的失敗函式並未標示出來。
AC-trie是一個DFA(Deterministic Finite Automata-具確定性之有限自動機)的形式,在一個時間內,只有一個狀態是動作的(active)。其中狀態0為啟始狀態(initial state),亦即開始比對字串時,只有狀態0是動作的。DFA形式的AC-trie有利於軟體的實作,因為在程式中,是循序(sequential)的執行程式碼。使用AC-trie進行字串比對時,會先比對動作的狀態的進行函式,當動作的狀態的所有進行函式都不符合時,將透過失敗函式連結到其所指的狀態,繼續進行比對。因為所有的狀態透過失敗函式最後都會指到啟始狀態,而啟始狀態會包括所有字元的進行函式,所以最終一定會找到符合的進行函式。
我們可以將原本為DFA的形式AC-trie轉換成NFA(Non-deterministic Finite Automata-非確定性之有限自動機)的形式,此將有利於硬體的實作。另外,因為AC-trie中的每一個狀態代表一個唯一的字串,我們以每一狀態與啟始狀態之間的距離為其深度。在每一個時間內,同一深度的狀態中,只有一個狀態是動作的。因為同一深度的所有狀態代表長度相同但內容不同的字串,假如在同一個深度有超過一個的狀態同時動作,則與AC-trie定義矛盾,故不可能發生此種情形。
我們將在相同深度的狀態歸於同一層級(level),因此,在硬體實作時,我們需對每一層級提供保留狀態的暫存器(register)。假如在一組關鍵字集合(keyword set)中,最長的字串為m,則我們最多需要m個暫存器來保留每的層級的狀態。
在每一個比對週期,透過失敗函式連接的狀態都會同時動作(active)。所有的非啟始狀態,透過失敗函式最終都會連結到啟始狀態,因此啟始狀態永遠都是動作的。關於失敗函式的另一個特性是,對於每一個狀態,透過失敗函式所連接的狀態的深度都比其本身的深度較小。
DFA的形式AC-trie轉換成NFA的形式之後,因為不用再考慮失敗連結,將可使得複雜度降低,轉移函式的數目大為減少。
習知基於AC-trie所建構的硬體架構在一個時脈週期只能比對一個字元,因此其最高的比對字元數將受限於硬體的時脈速率,因此我們在此提出以AC-trie為基礎所發展出的平行多字元的字串比對裝置,藉以提昇字串的比對速度。
本發明之一目的在於提出一種多階層式平行多字元字串比對裝置,其可在一個比對週期內比對多個字元以充份發揮硬體的效能。
本發明之另一目的在於提出一種多階層式平行多字元字串比對裝置,其係利用分別與AC-trie各循序比對路徑對應之複數個樣版資料達成平行多字元字串比對。
為達到上述之目的,一多階層式平行多字元字串比對裝置乃被提出。該多階層式平行多字元字串比對裝置具有:第一複數個階層單元,各所述階層單元均具有一現態輸入端、一字串輸入端、一次態輸出端、以及第二複數個比對輸出端,其中該字串輸入端係用以接收一字串,其具有第二複數個輸入字元,而所述的階層單元係分成第二複數個串接組合,其中各所述串接組合係以前一個所述階層單元之所述次態輸出端耦接至後一個所述階層單元之所述現態輸入端之方式形成;以及第二複數個第一優先權多工器,係分別與第二複數個所述輸入字元對應,各所述第一優先權多工器均具有第一複數個第一候選資料輸入端及一個第一選定資料輸出端,其中任一所述第一優先權多工器之第一複數個所述第一候選資料輸入端係分別與第一複數個所述階層單元之一對應的所述第一比對輸出端耦接,且其所述第一選定資料輸出端係用以提供一對應的輸出資料。
較佳的,所述階層單元具有:第三複數個規則比對單元,各所述規則比對單元均具有一第一輸入端、一第二輸入端、一階段性次態輸出端、以及第二複數個階段性比對輸出端,其中該第一輸入端係耦接至所述的現態輸入端,該第二輸入端係耦接至所述的字串輸入端;一第二優先權多工器,具有第三複數個第二候選資料輸入端及一個第二選定資料輸出端,其中第三複數個所述第二候選資料輸入端係分別與第三複數個所述規則比對單元之所述階段性次態輸出端耦接;一狀態暫存器,具有一閂鎖輸入端及一閂鎖輸出端,其中所述的閂鎖輸入端係與所述的第二選定資料輸出端耦接,所述的閂鎖輸出端係耦接至所述的次態輸出端;以及第二複數個第三優先權多工器,各所述第三優先權多工器均具有第三複數個第三候選資料輸入端及一個第三選定資料輸出端,其中任一所述第三優先權多工器之第三複數個所述第三候選資料輸入端係分別與第三複數個所述規則比對單元之一對應的所述階段性比對輸出端耦接,且其所述第三選定資料輸出端係用以耦接至一對應的所述比對輸出端。
較佳的,所述的規則比對單元具有一資料暫存器、一比對電路、以及一遮罩邏輯電路。
為使 貴審查委員能進一步瞭解本發明之結構、特徵及其目的,茲附以圖式及較佳具體實施例之詳細說明如后。
以下首先說明本發明的硬體架構,接著說明用於此硬體架構的多字元轉移規則,然後說明如何產生多字元轉移規則以及產生多字元轉移規則之演算法。
請參照圖2,其繪示本發明多階層式平行多字元字串比對裝置一較佳實施例之方塊圖。如圖2所示,該多階層式平行多字元字串比對裝置,用以一次平行比對n個字元,具有L個階層單元110、n個優先權多工器120、以及n個暫存器130。
首先,為了說明本發明的字串比對裝置,我們將AC-trie的每個狀態依其深度歸類於各別的層級(level),例如啟始狀態位於層級0,狀態1及3的深度為1則歸類於層級1,依此類推。
如圖2所示,各階層單元110係由輸入端IN_CHRS接受n個輸入字元。該些編號為1~L之階層單元110係對應於AC-trie的各個層級,其中編號為1~n之階層單元110係對應於AC-trie的層級0的狀態,亦即啟始狀態0;編號為(n+1)~L之階層單元110則對應於AC-trie的層級0以外的各個層級(level),例如編號為(n+i)之階層單元110係對應於AC-trie的層級i。對應於AC-trie的層級0的n個階層單元110中,最前面的n-1個階層單元110是用來處理樣版(pattern)未與輸入的字串切齊(alignment)的情形,亦即,當一個樣版的開始並未與輸入的字串切齊時,即會只有部分的字元符合。
根據前面的討論,可以歸納出決定所需階層單元數的一般化公式。假令L為最長的關鍵字的長度,n為一個比對週期平行比對的字元數,則所需的階層單元數為L+n-1。
由圖2可以看到,該些階層單元110被串接成n個串列(chain),每一串列的每一個階層單元110的輸出端NX所輸出的次態(next state)會被送至串接於其後面的階層單元110的輸入端CUR_ST,且被該後面的階層單元當成現態(current state)。同一串列的前後兩個階層單元的編號相差n,例如,第i個階層單元110的輸出端NX所輸出的次態會被送到第(i+n)個階層單元110的輸入端CUR_ST且被該第(i+n)個階層單元110當成現態。最前面的第1~n個階層單元110,其前面並沒有其他的階層單元,因此其輸入端CUR_ST直接輸入狀態值0。
另外,編號為i之階層單元110會輸出比對輸出OPi,1
~OPi,n
及對應的控制信號OFi,1
~OFi,n
,其中i=1~L。
編號為1~n之n個優先權多工器120係用以在L個候選的比對輸出中擇一以決定對應於每一輸入字元的比對輸出,例如第1個優先權多工器120決定對應於第1個輸入字元的比對輸出,而第n個優先權多工器120決定對應於第n個輸入字元的比對輸出。
在此,對於優先權多工器120的功能作一說明。請參照圖2中的任一優先權多工器120,其具有L個候選資料輸入端D1~DL、L個控制信號輸入端C1~CL、一個選定資料輸出端Dout、以及一個控制信號輸出端Cout。優先權多工器120的候選資料輸入端和控制信號輸入端的數目依實際需要而決定,例如,在圖1中,優先權多工器120的候選資料輸入端和控制信號輸入端的數目等於階層單元110的數目。假設以Di及Ci代表第i個候選資料輸入端及第i個控制信號輸入端,則當Ci收到之信號準位為代表作用或真之準位時,表示Di所收到的候選資料為有效。假設再以Dj及Cj代表第j個候選資料輸入端及第j個控制信號輸入端,當Ci及Cj所收到的信號準位皆為真時,則表示Di及Dj所收到的候選資料皆為有效。假若i<j,則Di的優先權高於Dj,因此優先權多工器120將選擇Di,使Di所收到的候選資料由選定資料輸出端Dout輸出。控制信號輸出端Cout為多級優先權多工器串接之用,當C1~CL中有任一個所收到的信號準位為真時,則Cout輸出代表真之狀態。而當所有的C1~CL所收到的信號準位皆為假時,Cout輸出代表假之狀態,且Dout之輸出為0。
另外,較後面的階層單元110的比對輸出具有較高的優先權,因為較長的比對輸出字串包含較短的比對輸出字串,例如,在層級3的狀態5的比對輸出"she"將包含了在層級2的狀態2的比對輸出"he"。而每一優先權多工器120的D1的優先權最高,DL的優先權最低,因此較後面的階層單元110的輸出被接到優先權多工器120的較前面的輸入端,而比較前面的階層單元110的輸出則被接到優先權多工器120的較後面的輸入端。例如第L個階層單元110的輸出被接到優先權多工器120的第1個輸入端,而第1個階層單元110的輸出則被接到優先權多工器120的第L個輸入端。
另外,n個暫存器130係用以配合一時脈信號CLK將比對輸出閂鎖住,以提供對應於輸入字元IN_CHRS的符合字串。為了儲存空間的規劃較為方便,輸出信號Y1~Yn可以是對應於符合字串的代碼,例如AC-trie中對應於該輸出字串的狀態編號。
圖3所示為階層單元110的細部方塊圖,其包括m個規則比對單元111、一個優先權多工器112、n個優先權多工器113、以及一暫存器114。
規則比對單元111的數目係與階層單元110所包含的轉移規則數目相關-m條轉移規則即需m個規則比對單元111,其中各規則比對單元111負責處理一條對應的轉移規則(transition rule)。
優先權多工器112係用以決定次態。所述的次態會配合CLK閂鎖在暫存器114中。所述n個優先權多工器113則係用以決定對應於每一輸入字元的比對輸出OP1~OPn及對應的控制信號OF1~OFn。當控制信號OF1~OFn為真時,表示對應的比對輸出OP1~OPn為有效。比對輸出OP1~OPn及控制信號OF1~OFn係規則比對單元111依據輸入字元IN_CHRS及現態CUR_ST進行一比對操作而產生。
圖4繪示規則比對單元111的細部方塊圖。如圖4所示,其具有一資料暫存器1111、一比對電路1112、以及一遮罩邏輯電路1113。
資料暫存器1111係用以儲存轉移規則的資料,轉移規則的詳細內容請參見後面關於轉移規則的說明,資料暫存器1111的內容與將在後面說明的轉移規則是一致的。在此,將資料暫存器1111大致區分為樣版(pattern)資料與輸出資料,樣版資料包括樣版遮罩PMASK、現態P_ST、及樣版字元P_CHRS,輸出資料包括輸出遮罩OMASK、次態NX_ST、及比對輸出OP1~OPn。
比對電路1112係用以將由輸入端IN_CHRS和CUR_ST輸入的輸入字元和現態與資料暫存器1111中的樣版資料做比對,並且由輸出端EQ輸出比對結果。假如輸入字元和現態與樣版資料符合則EQ輸出為真,例如邏輯電路的’1’或高電位;相對的,假如輸入字元和現態與樣版資料不符合則EQ輸出為假,例如邏輯電路的’0’或低電位。信號EQ再經由遮罩邏輯電路1113與輸出遮罩資料OMASK的每一位元做邏輯運算後產生對應於各輸出資料的控制信號OF1~OFn及NX_FLG。
各規則比對單元111的輸出均包括OP1~OPn,OF1~OFn,NX_ST,及NX_FLG。其中OP1~OPn分別為對應於每個輸入字元的輸出結果,在實施例中,以輸出字串來表示,但實際上可以存放對應的狀態編號(state number),例如,對應於狀態5的輸出字串為"she he",可以存放狀態的編號5,如此可以使用固定長度的空間來存放,不用存放長度會變動的字串資料,有利於硬體儲存空間的規劃。OF1~OFn為分別對應於OP1~OPn的輸出遮罩控制,例如,OF1為’1’時,則表示OP1的資料是有效的;而OF1為’0’時,則表示OP1的資料不是有效的。
為了讓讀者能更進一步瞭解本發明的架構,請參照圖5所繪示之一較佳實施例。如圖5所示,其係包括9個階層單元510之方塊圖,此實施例可平行比對3個字元,因此該些階層單元510被串接成3個串列,且每個串列包括3個階層單元510。其中亦包括3個優先權多工器520,用以由9個階層單元510的比對輸出選擇最後的比對輸出。
此方塊圖的階層及串列只是用以說明本發明的架構,在一個實際的實作中的階層的數目是由關鍵字集合的最長的長度所決定,而串列的數目則是由一個比對週期平行比對的字元數所決定。
另外,本發明可利用可程式元件實現。在使用可程式元件,例如FPGA,來實施本發明所提之字串比對裝置時,可以將規則比對單元設計成固定的電路,使用解碼器及邏輯運算來取代樣版資料及比對電路,輸出資料則使用固定接線(hard-wired)的電路取代,如此可以結省硬體的空間。但在關鍵字集變動時,必須重新產生電路,再經編譯及合成產生電路的編程碼,會比較費時。
例如,請參考圖6的轉移規則,階層單元4的其中第一個轉移規則的樣版資料的狀態P_ST為1以及樣版字元P_CHRS為"ers”,則可以用表示式(1)的VHDL表示式來表示其組合邏輯電路。其中dec_st、dec_c1、dec_c2、及dec_c3分別表示輸入的CUR_ST和IN_CHRS的解碼後的訊號,例如字元資料為8位元,解碼後的訊號有256個,假令為0~255,其中dec_c1(101)代表對應於第一個輸入字元解碼後的第101個訊號,亦即當ASCII碼為101時為真(true),而ASCII碼101代表英文字母’e’。另外ASCII碼114及115分別代表英文字母’r’及’s’,因此表示式(1)在輸入狀態CUR_ST為1及輸入字元IN_CHRS為"ers"時r_eq(1)會為真。
再舉另外一例,階層單元4的最後一個規則的樣版資料的狀態P_ST為3以及樣版字元P_CHRS為"he?”,則可以用表示式(2)的VHDL表示式來表示其組合邏輯電路。其中ASCII碼101及104分別代表英文字母’h’及’e’,樣版字元P_CHRS的第3個字元為’?’,表示don’t-care,可以是任何字元,因此在表示式(2)中不需考慮輸入的第三個字元。因此表示式(2)在輸入狀態CUR_ST為1、輸入字元IN_CHRS的前兩個輸入字元為"he"及第三個輸入字元為任何字元時r_eq(3)會為真。
r_eq(1)<=dec_st(1) AND dec_c1(101) AND dec_c2(114) AND dec_c3(115);…(1)
r_eq(3)<=dec_st(3) AND dec_c1(104) AND dec_c2(101);…(2)
現在要以實例來說明轉移規則,且此說明的實例是以關鍵字集{he,she,his,hers}為基礎,依此關鍵字集所建立的AC-trie係如圖1所示。此AC-trie的實例,其狀態分成5個層級,其中最長的關鍵字為"hers",字串的長度為4。但最後一個層級的狀態沒有後續的狀態,因此只有4個層級有轉移規則。另外,此轉移規則係應用於圖5之實施例,一個比對週期平行比對3個字元,因此考慮關鍵字的樣版未與輸入的3個字元中的第一個字元對齊(alignment)的情形,在階層0之前需再多加兩個階層,分別處理只符合樣版字元的最後兩個字元及最後一個字元的情形。基於前面的討論,可以知道如圖1的AC-trie的實例要有6個階層單元,其中第1~3個階層單元對應於層級0,而第4~6個階層單元則分別對應於層級1~4。
如圖6所繪示為各個階層單元的規則表。在各個階層單元的規則表,依據規則的排列順序,優先權由最高至最低。例如,階層單元3的規則1的優先權高於規則4,因為規則4只比對前兩個輸入字元,而規則1與規則4的樣版字元的前兩個字元是一樣的,因此當規則1觸發時,規則4也一定會被觸發,但輸出的比對結果是由優先權較高的規則1決定。規則1會同時決定對應於3個輸入字元的比對輸出以及次態為8,但規則4只決定對應於前二個輸入字元的比對輸出,但不影響次態及對應於第三個輸入字元的比對輸出。
規則表的第一欄為規則編號(No),規則編號僅是為了方便說明,並無實質的作用,在規則比對單元中也不儲存規則編號的資料。規則表的樣版資料包括欄位PMASK、P_ST、及P_CHRS,其中欄位PMASK存放樣版遮罩資料,欄位P_ST存放現態,欄位P_CHRS存放樣版字元。
樣版遮罩資料PMASK為一三元遮罩(ternary mask),其位元依序對應於現態P_ST及個別的樣版字元(pattern characters)P_CHRS,例如最高位元(Most Significant Bit,MSB),即PMASK的位元3(bit 3),對應於現態P_ST,而次高位元,即PMASK的位元2(bit 2),則對應第一個樣版字元,最低位元(Least Significant Bit,LSB),即PMASK的位元0(bit 0),對應於最後一個樣版字元。然而,在此只是舉出一種三元遮罩的資料表示方式,並不限定於此作法,熟習此技藝者,可以很容易的設計出不同的資料表示方式,能夠達到在此所提到的功能。
當對應的三元遮罩位元為’1’時,表示要比對對應的樣版資料,而當其為’0’時,則表示對應的樣版資料為略過(don’t care),為便於分辨,在P_CHRS中以’?’標示為略過。例如,階層1的轉移規則中的PMASK的第2個位元(bit 2)及第1個位元(bit 1)皆為’0’,且P_CHRS對應的樣版字元"??",表示不論第1及2個輸入字元為何,皆為符合,PMASK只有第3個位元為’1’,故只有第3個輸入字元才要實際的比對。
規則表的欄位P_ST係樣版資料的現態。前面的第1~3個階層單元,其現態P_ST都不比對,只比對輸入字元P_CHRS,但為了讓規則的格式一致,其樣版資料的P_ST皆標示出來,且由轉移規則中的PMASK的第一個位元決定是否要比對現態。
由轉移規則表可以看出各個階層單元所對應的AC-trie的層級,例如第1~3個階層單元的轉移規則的樣版資料的P_ST皆為0,代表其對應於層級0,另外第4個階層單元的轉移規則的樣版資料的P_ST為1及3,這兩個狀態在AC-trie的層級1,代表第4個階層單元對應於層級1。另外,第5個階層單元的轉移規則的樣版資料的P_ST為2、4、6,其在AC-trie的層級2,代表第5個階層單元對應於層級2。同樣可依此類推第6個階層單元對應於AC-trie的層級3。
轉移規則中的P_CHRS為樣版資料的樣版字元,樣版字元的數目對應於平行比對的字元數,例如,在圖5之實施例中,一次比對3個字元,則每一轉移規則有3個樣版字元。在轉移規則中的P_CHRS中標示成’?’的字元表示"略過"(don’t-care)的意思。例如階層單元1的轉移規則只比對平行輸入的字元中的最後一個字元,P_CHRS中前面兩個字元標示成"??”的字元表示"略過"(don’t cared)。在實際的實作中,階層單元1的P_CHRS只要比對第三個字元,而階層單元2的P_CHRS只要比對第二個及第三個字元,然而在此為了讓規則的格式一致且易於了解,階層單元1及2的規則中的P_CHRS的所有字元都標示出來,且略過的字元則標示成’?’。
當轉移規則的樣版字元P_CHRS的後面的字元為略過時,則此規則只決定對應的比對輸出而不決定次態(next state),但我們在此是以轉移規則中的OMASK的第一個位元來做控制該轉移規則是否決定次態。例如,階層單元3的最後一個轉移規則,其樣版字元P_CHRS為"he?",最後一個字元為略過,此規則即不會決定次態。
假如一個轉移規則的樣版資料與輸入的CUR_ST及IN_CHRS符合,則該轉移規則被觸發。被觸發的轉移規則,其輸出資料可能會被用以決定該規則所屬的階層單元的次態NX及比對輸出OP1~OP3。
規則表的欄位OMASK、NX_ST、及OP1~OP3為輸出資料,欄位OMASK存放輸出遮罩資料,欄位NX_ST存放次態,欄位OP1~OP3存放比對輸出。轉移規則中的NX_ST為次態,在每一比對週期中,同一階層單元中被觸發的轉移規則中優先權最高的規則的次態會被送至同一串列的後面的階層單元,例如,在此例中一次比對3個字元,由階層單元3所決定的次態會被送到階層單元6當成現態,而階層單元4所決定的次態則送到階層單元7。假若沒有任何轉移規則被觸發,則該階層單元的輸出的次態為0。轉移規則中的OP1、OP2、及OP3為分別對應於第一個、第二個、及第三個輸入字元的比對輸出。同樣的,在每一比對週期中,同一階層單元中被觸發的轉移規則中優先權最高的比對輸出會被當作該階層單元比對輸出。
輸出遮罩OMASK的最高位元(MSB),即上述規則的OMASK的位元3(bit 3),對應於次態NX_ST。其餘的位元則依序對應於個別的輸出字串(output strings),例如次高位元,即上述規則的OMASK的位元2(bit 2),對應於第一個比對輸出OP1,而最低位元(LSB),即上述規則的OMASK的位元0(bit 0),則對應於最後一個比對輸出OP3。當OMASK的某個位元為’0’時,表示對應的資料不是有效的,例如階層單元3的轉移規則4的OMASK的位元3及位元0(bit 3及bit 0)皆為’0’,表示此規則的NX_ST及OP3皆不是有效的,亦即,當此規則被觸發時,並不會用來決定次態,而且也不決定對應於輸入字元的第3個字元的符合字串輸出。
如前面所提到的,因為輸出字串的長度是不固定的,而規則是儲存在每一比對單元的資料暫存器中,為了方便硬體的設計,在資料暫存器中可以儲存對應的比對輸出的字串的代碼,例如階層單元3的轉移規則3的OP3為"she he",係對應於狀態5的輸出字串,因此可以用狀態的編號’5’來代表"she he"的輸出字串。在上述的規則表中,雖然僅以字串來表示輸出字串,但熟習相關技藝者,可以很容易的達到以代碼來表示輸出字串的作法。
以下將依據以上所述的多階層式平行多字元字串比對裝置的硬體架構及轉移規則,說明字串比對的運作。
首先,我們定義比對週期(matching cycle),從接受輸入的n個字元開始,直到本裝置中的每個階層單元皆決定次態及本裝置輸出n個符合的輸出字串為止,為一個比對週期。以本發明所提出的作法來說,一個比對週期即為時脈信號CLK的一個週期。另外,以一實施例的轉移規則來說,每個比對週期可以處理3個字元的輸入,n即等於3。
運作之前,依據要搜尋的關鍵字建立各個階層單元的轉移規則,並依此建構整個裝置的各個階層單元及比對單元。
在開始進行字串比對之前,藉由初始信號INIT將所有的暫存器的狀態啟始化(initialization),即將各個階層單元110的現態清除為0,而且輸出字串皆為空字串。進行字串比對時,將要比對的字串,由開頭的第1個字元開始,依序的一次n個字元由輸入IN_CHRS配合時脈信號CLK送進字串比對裝置。
在各個階層單元110中,由輸入端IN_CHRS輸入要比對的n個字元以及由輸入端CUR_ST輸入現態(current state)。對於第i個階層單元110而言,由輸入端CUR_ST輸入的現態是由第(i-n)個階層單元110的輸出端NX輸出的次態。假如是最前面的n個階層單元110則輸入端CUR_ST直接輸入狀態0。
在各個階層單元中,由輸入端IN_CHRS輸入的字元和輸入端CUR_ST輸入的現態(current state)會被送至該階層單元110中的每一個規則比對單元111。每個規則比對單元111的比對電路1112會依據其中儲存的樣版資料P_ST及P_CHRS和三元遮罩PMASK,比對輸入的字元IN_CHRS和現態(current state)。假如輸入的字元資料及現態與其內部儲存的樣版資料相符(matching),則比對電路的輸出EQ會致能(enable),例如在此實施例為變成邏輯上的’1’,其將致能相關的控制旗號,NX_FLG及OF1~OFn,藉以控制對應的輸出資料經由優先權多工器10~1n輸出該階層單元110的NX_ST及OP1~OPn,其中NX_ST在時脈信號CLK的控制下,將會被儲存至暫存器REG10,且由輸出端NX輸出至後續的階層單元110,例如對於第i個階層單元110而言,由輸出端NX輸出的次態會被送至第(i+n)個階層單元110的輸入端CUR_ST。而每一階層單元110輸出的OP1~OPn則會經主方塊圖中的優先權多工器120選擇出最終的比對輸出OP1~OPn。
若比對結果為不符合時,則比對電路1112的輸出信EQ為禁能(disable),例如在此實施例為變成邏輯上的’0’,則規則比對單元111輸出的控制信號NX_FLG及OF1~OFn也會變為禁能,故對最後的結果沒有影響。
比對完一組n個字元後,然後接受輸入下一組n個字元,進行下一個比對週期。
為了讓讀者更進一步瞭解本發明的運作,請參照圖7,其所繪示為一比對的實例。輸入的待比對的字串為"ushehe",我們在進行比對時,將字串分成兩段"ush"及"ehe",一次比對三個字元。在比對之前,透過初始信號INIT將所有的暫存器的狀態啟始化(initialization)。在第一個比對週期,依據輸入的字元"ush",將觸發階層單元1的規則1及階層單元2的規則3。階層單元1的規則1將決定次態為1,此結果將被送至階層單元4,在下一比對週期被階層單元4當成現態。階層單元2的規則3將決定次態為4,此結果將被送至階層單元5,在下一比對週期被階層單元5當成現態。依據前述兩個被觸發的規則所決定的比對輸出皆為空字串。
在第二個比對週期,依據輸入的字元"ehe"及前一比對週期所決定的次態,將觸發階層單元2的規則1、階層單元4的規則2、及階層單元5的規則4。階層單元2的規則1將決定次態為2及比對輸出OP3為"he",次態將被送至階層單元5,在下一比對週期被階層單元5當成現態。階層單元4的規則2將決定比對輸出OP1為"he",階層單元5的規則4則決定比對輸出OP1為"she he",因為階層單元5具有較高的優先權,所以比對輸出OP1為"she he"。比對輸出OP2為空字串,比對輸出OP3則為"he"。
在推導轉移規則之前,首先我們要以原來的AC-trie的進行函式(goto function)當作1字元轉移函式(1-character transition function),推導出多字元轉移函式(multi-character transition function),再由所推導出的多字元轉移函式產生所需的轉移規則。
為了說明推導的過程,我們定義NXn
(S1
,T)=S2
來表示n字元轉移函式,其中S1
為現態,T為n字元的字串,S2
為次態。此轉移函式所代表的意義為現態為S1
,接受輸入的n字元的字串T之後,狀態會改變為S2
。例如,NX2
(1,er)=8為2字元轉移函式,現態為1,接受2字元的字串"er”之後,得到的次態為8。
如圖8所示為一字元轉移函式,圖中的一字元轉移函式係直接由前述圖1的AC-trie中的進行函式得到。在圖8中,將同一層級(level)的狀態開始的1字元轉移函式歸類在一起。例如圖8(a)為層級0的1字元轉移函式,在層級0只有啟始狀態0,其中轉移函式NX1(0,?)=0是較為特殊的轉移函式,係有助於處理關鍵字未與輸入的開始字元對齊的對齊問題(alignment problem)。圖8(b)為層級1的1字元轉移函式,層級1包括兩個狀態1及3。圖8(c)為層級2的1字元轉移函式,層級2包括狀態2、4及6。圖8(d)為層級3的1字元轉移函式,層級3包括狀態5、7及8。圖8(e)為層級4的1字元轉移函式,層級4只有狀態9。圖8(f)為額外的1字元輔助轉移函式,由虛擬狀態(pseudo state)轉移到虛擬狀態,輔助轉移函式係用來輔助建構多字元轉移函式。圖示中標示為’-’係虛擬狀態,係用來作為推導過程的輔助之用。其中每個有符合的比對輸出的狀態都會多加一個以虛線表示的輔助轉移函式,用以輔助多字元轉移函式的推導,例如狀態2、5、7、及9。
如圖9所示為用以說明三字元轉移函式(3-character transition function)的推導過程的實例,在圖示中,以符號’+’代表兩個轉移函式的串接。其中圖9(a)~9(f)分別對應於階層單元1至6的三字元轉移函式的推導過程。
圖9(a)及9(b)所推導的三字元轉移函式係為了處理關鍵字未與輸入的開始字元對齊的對齊問題(alignment problem)。圖9(a)所推導的3字元轉移函式為樣版字元只比對輸入的3個字元中的最後一個字元,前面的兩個NX1
(0,?)=0串接後得到二字元轉移函式NX2
(0,??)=0,再將其分別與NX1
(0,h)=1及NX1
(0,s)=3串接後得到兩個三字元轉移函式NX3
(0,??h)=1及NX3
(0,??s)=3。其中前兩個轉移函式為NX1
(0,?)=0,表示狀態持續停在啟始狀態,直到第三個字元符合’h’或’s’時才轉移至層級1的狀態2或3。
圖9(b)所推導的3字元轉移規則為樣版字元只比對輸入的3個字元中的後兩個字元。其中首先將NX1
(0,?)=0與NX1
(0,h)=1及NX1
(0,s)=3串接後得到兩個二字元轉移函式NX2
(0,?h)=1及NX2
(0,?s)=3。再將NX2
(0,?h)=1與狀態1開始的兩個一字元轉移函式NX1
(1,e)=2及NX1
(1,i)=6串接後得到兩個三字元轉移函式NX3
(0,?he)=2及NX3
(0,?hi)=6。將NX2
(0,?s)=3與狀態3開始的一字元轉移函式NX1
(3,h)=4串接後則得到三字元轉移函式NX3
(0,?sh)=4。
依據前述的過程,可以經由串接的方式推導出各層級的三字元轉移函式。而熟習相關技藝者,可以很容易地參照此過程推導出任何字元數的多字元轉移函式。推導出多字元轉移函式後,即可依此推導結果產生所需的多字元轉移規則。
接下來,我們將前述的以串接方式推導出多字元轉移函式的過程整理成演算法。如圖10所示的演算法係以AC-trie的進行函式當作一字元轉移函式來推導出多字元轉移函式。
演算法的輸入參數n為要平行比對的字元數。輸入參數NXSET包含原始的1字元轉移函數,演算法的結果為n字元轉移函數存放於變數TRSET中。傳回的n字元轉移函數用以產生本發明的字串比對裝置所需的多字元轉移規則。
此演算法經由多個層次的疊代迴圈針對原始AC-trie的每一狀態推導對應的n字元轉移函數。
在開始的第2行,將TRSET清空。在第3行至第21行之間的迴圈中,針對AC-trieI的每一狀態Si推導其對應的所有n字元轉移函數。在第5行,將狀態Si的所有的1-字元轉移函數複製到NSET。
重複執行n-1次第7行至第19行之間的迴圈,以疊代的方式串接Si的1字元轉移函數及其後續的n-1個1字元轉移函數,藉以得到Si的n字元轉移函數。重複執行n-1次第7行至第19行之間的迴圈之後,NSET中包含由Si開始的所有的n字元轉移函數。在第20行,將NSET加到TRSET中,然後回到第5行,繼續處理下一個狀態。當所有的狀態都處理好了,在第22行,移除沒有作用的轉移函式,然後結束此演算法。
接著進一步討論第7行至第19行之間的迴圈。在第8行,清空TMPSET。在第10行至第17行之間的迴圈,針對儲存在NSET中的每一轉移函式NXi做展開。在第11行,將NXi的次態指定至NX_ST。在第13行至第16行之間的迴圈,針對NX_ST開始的每一轉移函式NXj,在第14行,將轉移函式NXj與轉移函式NXi串接,得到新的轉移函式NEW_TR。在第15行,將NEW_TR加至TMPSET中。其中,轉移函式NEW_TR的樣版字元的數目會比轉移函式NXi的樣版字元的數目多一個。
前面所提到需移除的沒有作用的轉移函式,是由於額外加入的輔助轉移函式所產生的不會發生實際作用的轉移函式,例如NX3
(0,???)=0。
對於一字元轉移函式,每一個轉移函式的比對輸出可以用其次態來代表。然而對於多字元轉移函式,例如n字元轉移函式,其中n>1,假若每一n字元轉移函式只輸出次態,則關於其中間所經過的狀態的資訊會被隱藏起來。在這樣的情況下,只能知道對應於最後一個輸入字元的比對輸出,對應於前面n-1個輸入字元的比對輸出將會被遺漏掉。因此,在使用前述的演算法來推導多字元轉移函式時,在串接的過程中必須保留對應於每一字元的比對結果。雖然在演算法的說明中並未提及,但此為熟習相關技藝者所能輕易達成的。
然後,根據推導出的多字元轉移函式產生應用於本發明的字串比對裝置的多字元轉移規則。
熟習相關技術者,可以依據本發明之作法針對不同的關鍵字集建立可一次同時比對不同字元數的字串比對裝置。
至此,本發明之內容已詳盡揭露,而依其多階層式平行多字元字串比對之設計確可在一個比對週期內比對多個字元而充份發揮硬體的效能。
本案所揭示者,乃較佳實施例,舉凡局部之變更或修飾而源於本案之技術思想而為熟習該項技藝之人所易於推知者,俱不脫本案之專利權範疇。
綜上所陳,本案無論就目的、手段與功效,在在顯示其迥異於習知之技術特徵,且其首先發明合於實用,亦在在符合發明之專利要件,懇請 貴審查委員明察,並祈早日賜予專利,俾嘉惠社會,實感德便。
110、510...階層單元
111...規則比對單元
1111...資料暫存器
1112...比對電路
1113...遮罩邏輯電路
112...優先權多工器
113...優先權多工器
114...暫存器
120、520...優先權多工器
130、530...暫存器
圖1繪示依關鍵字集{he,she,his,hers}所建立之一AC-trie。
圖2為一示意圖,其繪示本發明多階層式平行多字元字串比對裝置一較佳實施例之方塊圖。
圖3為一示意圖,其繪示圖2之階層單元一較佳實施例之方塊圖。
圖4為一示意圖,其繪示圖3之規則比對單元一較佳實施例之方塊圖。
圖5繪示具有9個階層單元之本發明多階層式平行多字元字串比對裝置其一較佳實施例之方塊圖。
圖6為一示意圖,其繪示本發明與圖1之AC-trie相對應的6階層轉移規則。
圖7為一示意圖,其繪示一字串比對實例。
圖8繪示本發明在圖1 AC-trie各層級所定的1字元轉移規則。
圖9繪示本發明三字元轉移函式的推導過程。
圖10繪示本發明產生多字元轉移規則的演算法。
110...階層單元
120...優先權多工器
130...暫存器
Claims (6)
- 一種多階層式平行多字元字串比對裝置,其具有:第一複數個階層單元,各所述階層單元均具有一現態輸入端、一字串輸入端、一次態輸出端、以及第二複數個比對輸出端,其中該字串輸入端係用以接收一字串,其具有第二複數個輸入字元,而所述的階層單元係分成第二複數個串接組合,其中各所述串接組合係以前一個所述階層單元之所述次態輸出端耦接至後一個所述階層單元之所述現態輸入端之方式形成;以及第二複數個第一優先權多工器,係分別與第二複數個所述輸入字元對應,各所述第一優先權多工器均具有第一複數個第一候選資料輸入端及一個第一選定資料輸出端,其中任一所述第一優先權多工器之第一複數個所述第一候選資料輸入端係分別與第一複數個所述階層單元之一對應的所述第一比對輸出端耦接,且其所述第一選定資料輸出端係用以提供一對應的輸出資料。
- 如申請專利範圍第1項所述之多階層式平行多字元字串比對裝置,其中所述階層單元具有:第三複數個規則比對單元,各所述規則比對單元均具有一第一輸入端、一第二輸入端、一階段性次態輸出端、以及第二複數個階段性比對輸出端,其中該第一輸入端係耦接至所述的現態輸入端,該第二輸入端係耦接至所述的字串輸入端;一第二優先權多工器,具有第三複數個第二候選資料輸入端及一個第二選定資料輸出端,其中第三複數個所述第二候選資料輸入端係分別與第三複數個所述規則比對單元之所述階段性次態輸出端耦接;一狀態暫存器,具有一閂鎖輸入端及一閂鎖輸出端,其中所述的閂鎖輸入端係與所述的第二選定資料輸出端耦接,所述的閂鎖輸出端係耦接至所述的次態輸出端;以及第二複數個第三優先權多工器,各所述第三優先權多工器均具有第三複數個第三候選資料輸入端及一個第三選定資料輸出端,其中任一所述第三優先權多工器之第三複數個所述第三候選資料輸入端係分別與第三複數個所述規則比對單元之一對應的所述階段性比對輸出端耦接,且其所述第三選定資料輸出端係用以耦接至一對應的所述比對輸出端。
- 如申請專利範圍第2項所述之多階層式平行多字元字串比對裝置,其中所述的規則比對單元具有一資料暫存器、一比對電路、以及一遮罩邏輯電路。
- 一種多階層式平行多字元字串比對裝置,其具有:第1至第L個階層單元,各所述階層單元均具有一現態輸入端、一字串輸入端、一次態輸出端、以及第1至第N個比對輸出端,其中該字串輸入端係用以接收一字串,其具有第1至第N個輸入字元,而所述的第1至第L個階層單元係分成N個串接組合,其中各所述串接組合係以前一個所述階層單元之所述次態輸出端耦接至後一個所述階層單元之所述現態輸入端之方式形成;以及第1至第N個第一優先權多工器,係與第1至第N個所述輸入字元對應,各所述第一優先權多工器均具有第1至第L個第一候選資料輸入端及一個第一選定資料輸出端,其中第J個所述第一優先權多工器之第1至第L個所述第一候選資料輸入端係分別與第L個至第1個所述階層單元之第J個所述第一比對輸出端耦接,且其所述第一選定資料輸出端係用以提供第J個輸出資料,其中J=1~N。
- 如申請專利範圍第4項所述之多階層式平行多字元字串比對裝置,其中所述階層單元具有:第1至第M個規則比對單元,各所述規則比對單元均具有一第一輸入端、一第二輸入端、一階段性次態輸出端、以及第1至第N個階段性比對輸出端,其中該第一輸入端係耦接至所述的現態輸入端,該第二輸入端係耦接至所述的字串輸入端;一第二優先權多工器,具有第1至第M個第二候選資料輸入端及一個第二選定資料輸出端,其中第1至第M個所述第二候選資料輸入端係分別與第1個至第M個所述規則比對單元之所述階段性次態輸出端耦接;一狀態暫存器,具有一閂鎖輸入端及一閂鎖輸出端,其中所述的閂鎖輸入端係與所述的第二選定資料輸出端耦接,所述的閂鎖輸出端係耦接至所述的次態輸出端;以及第1至第N個第三優先權多工器,各所述第三優先權多工器均具有第1至第M個第三候選資料輸入端及一個第三選定資料輸出端,其中第J個所述第三優先權多工器之第1至第M個所述第三候選資料輸入端係分別與第1個至第M個所述規則比對單元之第J個所述階段性比對輸出端耦接,且其所述第三選定資料輸出端係用以耦接至第J個所述的比對輸出端,其中J=1~N。
- 如申請專利範圍第5項所述之多階層式平行多字元字串比對裝置,其中所述的規則比對單元具有一資料暫存器、一比對電路、以及一遮罩邏輯電路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW100128652A TWI443538B (zh) | 2011-08-11 | 2011-08-11 | Multi - hierarchical parallel multi - character string alignment device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW100128652A TWI443538B (zh) | 2011-08-11 | 2011-08-11 | Multi - hierarchical parallel multi - character string alignment device |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201308110A TW201308110A (zh) | 2013-02-16 |
TWI443538B true TWI443538B (zh) | 2014-07-01 |
Family
ID=48169818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100128652A TWI443538B (zh) | 2011-08-11 | 2011-08-11 | Multi - hierarchical parallel multi - character string alignment device |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI443538B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI509441B (zh) * | 2014-12-16 | 2015-11-21 | Can flexibly set the data width of the multi-character string alignment device |
-
2011
- 2011-08-11 TW TW100128652A patent/TWI443538B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
TW201308110A (zh) | 2013-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108256164B (zh) | 状态机晶格中的布尔逻辑 | |
US8972450B2 (en) | Multi-stage parallel multi-character string matching device | |
JP5381710B2 (ja) | ε遷移を含まない非決定性有限オートマトン生成システムと方法およびプログラム | |
CN104011736B (zh) | 用于状态机中的检测的方法及系统 | |
CN107609644B (zh) | 用于状态机中的数据分析的方法及系统 | |
CN103988212B (zh) | 用于在状态机中路由的方法及系统 | |
CN104067282B (zh) | 状态机晶格中的计数器操作 | |
Gilman | Formal languages and infinite groups | |
CN104471552B (zh) | 用于处置状态机引擎所接收的数据的方法及系统 | |
US8843508B2 (en) | System and method for regular expression matching with multi-strings and intervals | |
WO2006061899A1 (ja) | 文字列照合装置および文字列照合プログラム | |
Goto | Optimal time and space construction of suffix arrays and LCP arrays for integer alphabets | |
US10691964B2 (en) | Methods and systems for event reporting | |
TWI443538B (zh) | Multi - hierarchical parallel multi - character string alignment device | |
Khomenko et al. | Slimming down Petri boxes: Compact Petri net models of control flows | |
US8463988B2 (en) | System and method for matching patterns | |
US8626688B2 (en) | Pattern matching device and method using non-deterministic finite automaton | |
Stephan | Methods and theory of automata and languages | |
KR101276796B1 (ko) | 패턴 매칭 장치 및 방법 | |
Toms et al. | Efficient synthesis of speed-independent combinational logic circuits | |
Horihan et al. | Improving FSM evolution with progressive fitness functions | |
TWI521364B (zh) | 多階層式平行多字元字串比對裝置 | |
CN112634989A (zh) | 基于片段重叠群的双面基因组片段填充方法及装置 | |
Ivanov et al. | Universality and computational completeness of controlled leftist insertion-deletion systems | |
TWI417784B (zh) | 平行多字元字串比對裝置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |