【技術實現步驟摘要】
本專利技術涉及計算機應用
,尤其涉及一種基于GPU (graphic processingunit,圖形處理單兀)的NFA (non-deterministic finite automaton,非確定性有限自動機)的匹配方法及裝置。
技術介紹
在計算機
中,正則表達式是用來描述或者匹配一系列符合某個句法規則的字符串的單個字符串。在很多文本編輯器或其他工具里,正則表達式通常被用來檢索和/或替換那些符合某個模式的文本內容。目前,許多程序設計語言都支持利用正則表達式進行字符串操作。正則表達式在現代計算機應用領域使用十分廣泛,正則表達式因其簡潔、高效、強大的文本處理能力得到普遍認可和采用。 —個正則表達式是一個模式,描述符合一系列句法規則的字符串;在具體匹配操作當中,通常是將正則表達式通過標準的Thompson算法或者Glushkov算法等算法轉換為NFA (non-deterministic finite automaton,非確定性有限自動機)或者DFA(deterministic finite automaton,確定性有限自動機),然后借助有限自動機完成匹配操作。基于有限自動機的正則表達式匹配技術需要解決的兩大難題存儲體積和匹配速度,亦即時間復雜度和空間復雜度;在這兩個衡量指標上DFA和NFA互有優劣。其中,DFA中每個源狀態對于輸入字符轉移到一個唯一的目的狀態,即在DFA運行過程中,有且僅有一個活躍狀態,DFA的匹配特征是確定和簡單的,但是DFA需要存儲狀態的空間可能呈現指數級膨脹,最極端的情況下,具有N個狀態的NFA其等價的DFA可能有多大2N ...
【技術保護點】
一種基于圖形處理單元的非確定有限自動機的匹配方法,其特征在于,包括:計算非確定有限自動機NFA中所有狀態兩兩之間的相容性,并根據所述相容性對所述各個狀態進行編碼形成虛擬NFA,以獲得虛擬NFA對應的虛擬NFA狀態轉換表;其中,所述相容性是指,若NFA中的兩個狀態在NFA匹配過程中不同時處于活躍狀態,則該兩個狀態相容,否則,為不相容;將所述虛擬NFA狀態轉換表存儲在圖形處理單元GPU的全局存儲器中,并基于該虛擬NFA狀態轉換表匹配經過交織處理的待處理數據包中數據。
【技術特征摘要】
2012.03.29 CN 201210089447.11.一種基于圖形處理單元的非確定有限自動機的匹配方法,其特征在于,包括 計算非確定有限自動機NFA中所有狀態兩兩之間的相容性,并根據所述相容性對所述各個狀態進行編碼形成虛擬NFA,以獲得虛擬NFA對應的虛擬NFA狀態轉換表;其中,所述相容性是指,若NFA中的兩個狀態在NFA匹配過程中不同時處于活躍狀態,則該兩個狀態相容,否則,為不相容; 將所述虛擬NFA狀態轉換表存儲在圖形處理單元GPU的全局存儲器中,并基于該虛擬NFA狀態轉換表匹配經過交織處理的待處理數據包中數據。2.根據權利要求I所述的方法,其特征在于,所述計算NFA中所有狀態兩兩之間的相容性的步驟包括 針對NFA狀態建立NXN的二維表,N為NFA的狀態數目,NFA狀態依次為O,1,2,…,N-I ;在該二維表中,第i+Ι行和第j+Ι列的表項由[i,j]表示;如果狀態i和j是相容的,則表項[i,j]內容設置為true,如果狀態i和j是不相容的,則表項[i,j]內容設置為false ;其中,分別將表項, [1,1], [2,2],…,[N_1,N_1]的內容置為 false ; 建立初始為空的第一隊列queue并進行初始化,依次將狀態對(0,0),(1,1),(2,2), ···, (N-1, N-1)壓入第一隊列 queue 中; 彈出第一隊列queue首部的狀態對(i, j),使用狀態i,j遍歷全部可能的輸入字符0-255查詢NFA狀態,其中,以當前輸入字符作為轉換字符,以狀態i為源狀態,查詢該NFA狀態獲得目的狀態集合Di,以狀態j為源狀態,查詢該NFA狀態獲得目的狀態集合Dj ;檢查狀態集合Di和狀態集合Dj的并集Di U Dj,并將該并集當中的任意兩個狀態所組成的狀態對(s,t)對應的所述二維表表項內容置為fal se,若狀態對(s,t)所對應的二維表表項中的內容之前記錄為true,則還需要將狀態對(s, t)壓入第一隊列queue的尾部; 判斷第一隊列queue是否非空,如果是,過程結束,否則,繼續再執行所述彈出第一隊列queue首部的狀態對(i, j)的步驟。3.根據權利要求I或2所述的方法,其特征在于,所述根據所述相容性對所述各個狀態進行編碼形成虛擬NFA的步驟包括 根據所述相容性將NFA中的所有狀態分組,獲得至少一個相容組,所述相容組中的任意兩個狀態之間相容; 將得到的所述相容組合并獲得超級相容組,再對所述超級相容組進行編碼形成虛擬狀態,并獲得虛擬NFA。4.根據權利要求3所述的方法,其特征在于,所述根據所述相容性將NFA中的所有狀態分組,獲得至少一個相容組的步驟包括 獲得空的第二隊列queue,在建立的無向圖中一次或多次選取邊度數最大的一條邊,將該邊對應的兩個頂點對應的狀態壓入所述第二隊列queue,并從該無向圖當中去除這條邊,更新剩余無向圖當中各項頂點度數和邊度數;其中,所述無向圖的頂點為NFA的一個狀態,邊為NFA中兩個不相容的狀態對應的頂點之間的連線,頂點度數為與該頂點相連的邊的總數目,邊度數為該邊所關聯的兩個頂點的頂點度數之和; 在建立的無向圖中一次或多次選取邊度數最大的一條邊的過程中,若當前被選中邊從無向圖當中移除,剩余圖變為空,則這條邊不壓入第二隊列queue,拆分這條邊的兩個關聯頂點,各自構成一個單元素的獨立集,再使用第二隊列queue中收集的邊對應的狀態對構成新的無向圖,并執行所述獲得空的第二隊列queue的步驟,所述的獨立集對應一個相容組;若剩余無向圖中不存在邊并且非空,則將無向圖中剩余頂點構成一個頂點獨立集,將第二隊列queue中與該獨立集中的狀態相容的NFA狀態加入該獨立集中,再使用第二隊列queue中剩余的頂點構成新的無向圖,并執行所述獲得空的第二隊列queue的步驟;若第二隊列queue空,則過程結束。5.根據權利要求3所述的方法,其特征在于,所述將得到的所述相容組合并獲得超級相容組的步驟包括 按照相容組狀態數的大小進行降序排序,得到降序排列的相容組集合; 從所述降序排列的相容組集合中依次順序取出相容組并加入到當前占用比特數最少的超級相容組當中,同時更新該超級相容組占用的比特數,其中,每個超級相容組初始占用的比特數為O。6.一種基于圖形處理單元的非確定有限自動機的匹配裝置,其特征在于,包括 虛擬NFA建立模塊,用于計算非確定有限自動機NFA中所有狀態兩兩之間的相容性,并根據所述相容性對所述各個狀態進行編碼形成虛擬NFA,獲得虛擬...
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。