專利名稱:精確有限自動機(dfa)處理的制作方法
相關申請本專利要求保護2004年9月10日提交的第60/609,211號臨時申請,和2005年4月8日提交的第60/669,672號臨時申請的權益。上述申請的全部教導通過認證在此并入本文。
背景技術:
開放式通信系統互聯參考模型(OSI)定義了用來在傳輸媒體上進行通信的七個網絡協議層(L1-L7)。上層(L4-L7)負責端到端的通信,下層(L1-L3)負責本地通信。
網絡應用認知系統需要處理、過濾、交換L3到L7網絡協議層,例如,L7網絡協議層,諸如超文本傳輸協議(HTTP)和簡單郵件傳輸協議(SMTP),以及L4網絡協議層,比如傳輸控制協議(TCP)。除處理網絡協議層外,網絡應用認知系統要同時以線速保證這些協議的訪問和內容的安全性通過L4-L7網絡協議層包括防火墻,虛擬專用網(VPN),安全套接字協議層(SSL),入侵檢測系統(IDS),互聯網協議安全性(IPSec),反病毒(AV)和反垃圾郵件功能。
網絡處理器對于高處理能力的L2和L3網絡協處理是有必要的,也就是說,執行處理以線速轉寄數據包的數據包。通常,通用處理器被用來處理需要較高智能處理的L4-L7網絡協議。例如,L4網絡協議的傳輸控制協議(TCP)需要多計算精度任務,包括數據包中的整個有效載荷的檢查和、TCP片段緩沖器的管理、保留每一次連接的所有次數的多次計數。雖然通用處理器可以執行計算精度任務,但是它不能提供足夠的性能來處理數據,以致數據不能夠以線速被轉寄。
而且,檢查數據包內容的內容認知應用需要在數據流中搜索包含混合字符串和多次重復的特征類的表達式。可以在軟件中使用幾種搜索算法來運行這種任務。一種算法是精確有限自動機(DFA)。使用DFA搜索算法時有許多局限性,例如,在重復模式的數據流中以指數形式增長的圖像大小和錯誤的匹配。
由于這些局限性,內容處理應用需要對模式搜索產生的結果進行足夠量的后處理。后處理需要用其他連接狀態信息限定匹配模式,例如連接類型、數據包中協議頭中的某些值。還需要其他類型的計算精度限定,例如,模式匹配只有在數據流中的某種位置范圍內時才有效,或被另一種模式所跟隨而且與前面的模式在某種排列中或在前面模式特定分支之中或之后。例如,規則表達式匹配把不同的操作符和允許將被結構化的復雜表達式的單個字符合并。
發明內容
本發明用于提高處理器運行內容處理應用的速度。處理器包括至少一個處理器內核和精確有限自動機模塊(DFA),該精確有限自動機模塊異步操作至少一個處理器內核,來越過存儲在具有存儲在第二存儲器中的分組數據的第一存儲器內的至少一個DFA圖像轉換。
DFA模塊可以包括第一存儲控制器、至少一個DFA線程引擎和指令輸入邏輯。處理器內核可以通過指令輸入邏輯生成的指令隊列提交DFA指令到DFA模塊。DFA指令可以指示存儲在第二存儲器中的分組數據用以使用和存儲在第一存儲器中的DFA圖像以越過。DFA模塊可以部署DFA指令到DFA線程引擎。DFA線程引擎可以取得存儲在第二存儲器中的分組數據,并且發布與所取得的分組數據相對應的存儲器尋址指令。
例如,第一存儲器可以是非緩沖存儲器,第二存儲器可以是連貫緩沖存儲器。DFA線程引擎順序取得存儲在連貫存儲器中的分組數據,每次一個字節。DFA線程引擎然后每字節的從連貫緩沖存儲器中接收到的分組數據發布非緩沖存儲器加載指令以越過存儲在非緩沖存儲器中DFA圖像的下一個狀態。DFA線程引擎也可以將中間或最終結果寫入連貫緩沖存儲器。
本發明的前述和其它方面、特征和優點,從下面更加具體的描述中可以體現出來,附圖中相同的參考數字指代不同附圖中的相同部件。附圖并不是嚴格按照比例所繪制的,其重點在于示出本發明的原理。
圖1A是根據本發明的原理的包括網絡處理器的網絡服務處理系統框圖;圖1B是圖1A中顯示的網絡服務處理器框圖;圖2A和2B圖示了可仿效的DFA圖像;圖3A是根據本發明原理的精簡指令集計算(RISC)處理器的框圖;圖3B是圖3A中的DFA模塊的框圖;
圖4A示出DFA指令隊列的結構;圖4B示出下一塊緩沖區指針指令格式;圖5A示出典型DFA圖像的另一個實施方案;圖5B示出圖5A中DFA圖像的不同的可能的節點標識;圖6顯示了直接模式結構化將由DTE處理的數據的實施例;圖7A顯示了結構化將由DTE處理的數據的集合模式的實施例;圖7B示出DFA集合指針指令格式;圖8A示出DFA指令格式;以及圖8B示出DFA結果格式;具體實施方式
本發明優選的實施方案的描述如下所述圖1A是根據本發明原理的包括網絡服務處理器110的安全設備100的框圖。安全設備100是獨立的系統,可以將從一個以太網端口(Gig E)上所接收的數據包轉發到另一個以太網端口(Gig E),并且在轉寄數據包之前對收到的數據包執行多種安全功能。例如,安全設備100能夠在將處理過的數據包傳遞到本地網之前對從廣域網接收到的數據包進行安全處理。
網絡服務處理器110包括硬件數據包處理、緩沖、工作分發、排序、同步化和連貫緩存支持以加快所有數據包處理任務。網絡服務處理器110處理壓縮到接收的數據包中的開放式系統互聯網L2-L7層協議。
網絡服務處理器110通過物理接口PHY104a、104b從以太網端口(Gig E)接收數據包,對接收到的數據包運行L7-L2層網絡協議的處理,并通過物理接口104a、104b或PCI總線106轉寄處理過的數據包。網絡協議處理可以包括網絡安全協議的處理,如防火墻,應用防火墻,包括IP安全性(IPSEC)和/或安全套接字層(SSL)的虛擬專用網(VPN),入侵檢測系統(IDS)和反病毒(AV)網絡服務處理器中的動態隨機存儲器(DRAM)控制器133(圖1B)控制對被連接到網絡服務處理器110上的擴展DRAM108的訪問。DRAM108儲存從PHY接口104a,104b或可擴展外部設備組件互聯(PCI-X)接口106接收到的數據包供網絡服務處理器110處理。
網絡服務處理器110中的低延遲存儲控制器360(圖3B)控制低延遲存儲器(LLM)118。LLM118可以被網絡服務或安全設備使用進行快速查詢,包括可能是入侵檢測系統(IDS)或反病毒(AV)設備所需要的規則表達式匹配。
規則表達式是表示字符串匹配模式的通同方法。規則表達式的原子元素是要被匹配的單個字符。這些元素與元字符操作符合并允許用戶表示連接,交替,星號等等。串連被用來創建來自單個字符(或者子字符串)的多個字符匹配模式,而使用交替(|)創建可以匹配兩個或更多子字符串中的任何一個的模式。星號(*)允許模式匹配字符串中的模式的零(0)或更多次的出現。合并不同的操作符和單獨字符允許復雜的將被結構化的表達式。例如,表達式th(is|at)*)會匹配th,this,that,thisis,thisat,thatis,thatat,等等。
圖1B是圖1A中所示網絡服務處理器110的框圖。網絡服務處理器110通過使用結合圖1A所描述的至少一個處理器內核120來執行高應用性能。
數據包被接收用于通過SPI-4.2或RGMII接口,由GMX/SPX單元122a,122b中的任何一個處理。數據包也可以通過PCI接口124而被接收。GMX/SPX單元(122a,122b)通過檢查包括在接收到的數據包中的L2網絡協議頭中的各個區域對接收到的數據包執行預處理,然后將數據包轉寄給數據包輸入單元126。
數據包輸入單元126對包含在接收到的包中的網絡協議頭(L3層和L4層)進行進一步的預處理。這個預處理包括對傳輸控制協議(TCP)/用戶數據包協議(UDP)(L3層網絡協議)的檢查和檢查。
自由池分配器(FPA)128保持二級緩沖存儲器130和DRAM108的自由存儲器的指針池。輸入包處理單元126使用指針池中的一個來存儲接收到的分組數據在二級緩沖存儲器130或DRAM108中,另一個指針池來為處理器內核120分配工作隊列入口。
包輸入單元126將分組數據以一種方便在至少一個處理器內核120中執行的更高層軟件以進一步處理更高級網絡協議的格式寫入二級緩沖存儲器130或DRAM108的緩沖區中。
I/O接口(IOI)136管理總的協議和分配,提供連貫的I/O分割。IOI136包括I/O橋(IOB)138和取和加單元(FAU)140。FAU140中的寄存器用來保持被用于通過包輸出單元126轉寄處理的包的輸出隊列的長度。IOB138包括緩沖隊列,用于存儲將在I/O總線142,連貫存儲器總線144,包輸入單元126和包輸出單元146之間傳遞的信息。
包次序/工作(POW)模塊148為處理器內核120排列和分配工作。通過增加工作隊列入口到隊列中來排列工作。例如,通過包輸入單元126增加工作隊列入口用于每個包的到達。計時器單元150用來為處理器內核分配工作。
處理器內核120從POW模塊148中請求工作。POW模塊148為處理器內核120選擇(即,分配)工作,返回指向描述工作的工作隊列入口的指針到處理器內核120。
處理器內核120包括指令緩沖152,一級(L1)數據緩沖154和加密加速156。在一個實施方案中,網絡服務處理器110包含十六個超級標量RISC(精簡指令集計算機)型處理器內核120。在一個實施方案中,每個超級標量RISC型處理器內核120是MIPS64處理器內核第二版的擴展。
二級(L2)緩沖存儲器130和DRAM108由所有處理器內核120和I/O聯合處理器設備共享使用。每個處理器內核120通過連貫存儲器總線144耦合到二級緩沖存儲器130上。連貫存儲器總線是用于所有存儲器以及在處理器內核120,IOB138和二級緩沖存儲器130和二級緩沖存儲器131之間I/O事務處理的通訊通道。在一個實施方案中,連貫存儲器總線144對16個處理器內核120是可升級的,通過高緩沖和優先列入I/O支持完全連續一級數據緩沖154的寫入。
二級存儲控制器131保持存儲參考一致性。無論塊是存儲在二級緩沖存儲器130,DRAM108或在傳輸中,它都為每個請求返回塊的最新拷貝。在每個處理器內核120中,它還為數據緩沖154存儲標志的副本。它對緩沖塊存儲的請求和數據緩沖標記進行比較,當從另一個處理器內核或一個I/O組件通過IOB138傳來的存儲指令時,將處理器內核120的數據緩沖標志設為無效(所有拷貝)。
DRAM控制器133支持達到16兆的DRAM。DRAM控制器133支持到DRAM108的64比特或128比特的接口。DRAM控制器133支持DDR-I(雙倍數據速率)和DDR-II協議。
在數據包被處理器內核120處理后,包輸出單元(PKO)146從存儲器讀取分組數據,運行L4層網絡協議后處理(例如,產生TCP/UDP檢查和),通過GMX/SPC單元122a,122b將包傳遞,釋放包使用的二級緩沖130/DRAM108。
低延遲存儲控制器360(圖3B)管理傳遞中的事務(加載/存儲)到/從LLM118。低延遲存儲器(LLM)118由所有的處理器內核120共享使用。LLM118可以是動態隨機訪問存儲器(DRAM)、精簡延遲動態隨機訪問存儲器(RLDRAM)、同步隨機訪問存儲器(SRAM)、快周期隨機訪問存儲器(FCRAM)、或者在本領域內已知的任何其它類型的低延遲存儲器。RLDRAM提供30納秒的存儲器延遲或更好,也就是,所消耗的時間用來滿足處理器120發起的存儲請求。每個處理器內核120通過低延遲存儲器總線158直接與LLM控制器360相耦合。低延遲存儲器總線158是用于在處理器內核120和LLM控制器360之間進行內容認知應用處理的通訊通道。LLM控制器30在處理器內核120和LLM118之間被耦合,用來控制對LLM118的訪問。
網絡服務處理器110也包括除去處理器內核120的特殊協同處理器,這樣網絡服務處理器獲得高處理能力。壓縮/解壓縮協同處理器132對接收到的包專門運行壓縮和解壓縮。精確有限自動機(DFA)模塊134包括專門的DFA引擎370(圖3B)來加速為反病毒(AV)、入侵檢測系統(IDS)和達到4Gpps的其它內容處理應用的模式和簽名匹配需要。
內容認知應用處理利用存儲在LLM118里的模式/表達式(數據)。模式/表達式可以是精確有限自動機(DFA)形式。DFA是狀態機器。DFA狀態機的輸入是字節字符串(8位)(即,DFA的字母是字節)。每個輸入字節使狀態機從一個狀態轉變為下一個狀態。如圖2A中所示,狀態和轉變功能可以被圖像200表示,其中每個圖像節點(節點0到3)是狀態,連接不同節點的不同曲線表示不同輸入字節的狀態轉換。狀態可能包含某些跟狀態相關的字母,例如′A...Z,a...z,0...9,′等等。狀態機的現在狀態是選擇特定圖像節點的節點標識。小型圖像,節點的數量可以從幾個到128,000左右。大的圖像可以有1,000,000甚至更多的點數。
在說明性實施例中,DFA圖像200被設計城搜索目標字符串表達式‘abc’。因此,DFA圖像用來對輸入數據進行搜索,查找對字符串‘abc’的精確匹配。這個表達式是固定長度的表達式,也就是說,圖像的節點數量和深度是知道的(例如,固定)。
為了創建DFA圖像,表達式被傳遞,編譯器創建根節點(即,節點0),為目標表達式添加節點1-3到圖像(即,目標字符串中的每個字符的一個附加節點)。繼續這個例子,輸入字符流包含可仿效的串‘12abc3’。通過使用DFA圖像標識目標字符串表達式‘abc’,輸入串被搜索。
DFA圖像的初始狀態是節點‘0’。按順序讀取每個字符或字節,DFA一直保持在節點0,直到讀到目標字符串表達式的第一個字符。例如,在輸入流中檢測目標字符串表達式的第一個字符是‘a’時,從節點0到1的曲線標記為‘a’。讀取輸入流中的下一個字符。如果檢測到的是目標字符串表達式(例如,‘b’)之外的其它字符,從1回到0的曲線標記為‘非b’。然而,在輸入流中檢測到的下一個字符是字符‘b’時,一段標記為‘b’的曲線從節點1到節點2。讀取輸入流中的下一個字符。如果檢測到的是目標字符串表達式(例如,‘c’)之外的其它字符,從2回到0的曲線標記為‘非c’。然而,在輸入流中檢測到的下一個字符是字符‘c’時,一段標記為‘c’的曲線從節點2到節點3。由于目標字符串表達式‘abc’是一個固定長度的表達式,節點3就是終端節點,報告作為搜索的結果,也就是說,在輸入流中找到了表達式‘abc’及位置。
此外,通過編譯器為目標表達式需要的圖像創建合適的節點,分析一個或更多的目標表達式,更復雜的DFA圖像可以被簡單地創建。因此,單個圖像可以用來搜索復合表達式,該符合表達式可以是固定長度、可變長度、或固定長度跟可變長度的合并。
圖3A是根據本發明原理的精簡指令集計算(RISC)處理器的框圖。處理器(處理器內核)120包括集成執行單元302,指令分配單元304,指令獲取單元306,存儲器管理單元(MMU)308,系統接口310,低延遲接口350,加載/保存單元314,寫緩沖316和安全加速器156。處理器內核120還包括EJTAG接口330,允許執行調試操作。系統接口310控制對擴展存儲器的訪問,也就是,處理器120的擴展存儲器,例如,擴展二級緩沖存儲器130或者首/主存儲器108。
集成執行單元302包括乘法器單元326,至少一個寄存器文件(主寄存器文件)328和兩個保持寄存器330a,330b。保持寄存器330a和330b用來保存要寫入LLM118的數據和使用LLM加載/保存指令從LLM118中讀出的數據。通過在停止流水線前允許兩個未解決的負載,保持寄存器330a和330b提高了指令流水線的效率。雖然顯示了兩個保持寄存器,但可能使用一個或多個保持寄存器。乘法器單元326有64位直接寄存乘法器。指令讀取單元306包括指令緩沖(ICache)152。加載/保存單元314包括數據緩存154。在一個實施方案中,指令緩存152是32K字節,數據緩存154是8K字節,寫入緩沖器316是2K字節。存儲器管理單元308包括翻譯后援緩沖器(TLB)340。
在一個實施方案中,處理器120包括加密加速模塊(安全加速器)156,加密加速模塊包括用于三重數據加密標準(3DES),高級加密標準(AES),安全散列算法(SHA-I),信息摘要算法#5(MD5)密碼體系的加速。加密加速器模塊156通過移動到執行單元302中的主寄存器文件328或者從其中移出進行通訊。在乘法器單元326中運行RSA和密鑰交換(DH)算法。
圖3B是圖3A中DFA模塊134的框圖。DFA模塊134包括低延遲DRAM控制器360、至少一個DFA線程引擎(DTE)370(16顯示),和指令輸入邏輯380。指令輸入邏輯380包括DFA指令隊列382和報警器384。DFA指令隊列382排列存儲在L2/DRAM(130/108)中的DFA指令,報警器指示在DFA指令隊列382中存儲了多少DFA指令。內核120軟件可以對每個單獨的DFA指令進行報警器寫操作,也可以累積多個DFA指令到一個報警器寫操作中。每個DFA指令包括DFA模塊134需要的信息,來開始DTE370、讀取輸入數據,轉換保存在LLM118中的DFA圖像以及把結果寫入L2/DRAM(130/108)。DFA指令的格式會在以后結合圖8A進行描述。
DTEs370可以用來運行模式搜索。通常,DTEs370越過具有進入的分組數據(在L2/DRAM(130/108)中)的圖像200(圖2)(在LLM118中)以便在分組數據中查找特定的表達式。例如,網絡服務處理器可能同時跟蹤上到1000個TCP輸入流,其中每個流被發送到不同的DTE來查找特定的表達式。在內核120中的軟件越過之前必須先(I)借助LLM總線158預裝DFA圖像到LLM118中;(II)預裝DFA指令到L2/DRAM(130/108)中;(III)借助IOB142提交DFA指令到DFA模塊134。DFA指令指示DFA圖像200通過進入的分組數據而越過。之后,DFA模塊134取得并排列DFA指令,分配每個DFA指令到16個可用的DTE370中的一個。所有DTE370都是相同的和相當的,因此任何DFA指令都可以被分配給任一個可用的DTE370。DTE370一旦收到指令,它同時(a)通過IOB142從L2/DRAM(130/108)取得分組數據;(b)每字節分組數據發布一個LLM DRAM負載以越到字節的下一個DFA圖像狀態;(c)通過IOB142將中間或最終結果返回給L2/DRAM(130/108)。
通常,DTE370是狀態機,可以使用硬件、軟件或軟硬件混合來實現。在一些實施方案中,DTE370在使用組合邏輯的硬件中被實現。在另一種實施方案中,每個DTE370分別由不同的處理器來實現。還有的其它的實施方案中,DTE370使用普通處理器來實現。例如,每個DTE370可以是運行在適于提供共享的、多任務處理的通用處理器上的單獨的任務(即,指令的次序)。多任務處理是應用在操作系統中以在多個獨立的工作中(即,DTE370)共享單個處理器的一種技術。交替的或附加的,每個DTE370可以是運行在適于提供多線程操作能力的通用處理器中的單獨處理線程。多線程處理操作與多任務處理不同的是線程通常彼此間比任務共享更多的環境。例如,當線程共享一個地址空間和全局變量集時可以被它們的程序計數器和棧指針區分開來。
圖4A圖示了存儲在L2/DRAM(130/108)中的DFA指令隊列400的結構。每個指令隊列是信息塊/緩沖器402的鏈表。每個信息塊402包括至少三個DFA指令404,組成全部信息塊大小406。如果有其它信息塊(例如402)存在,下一個信息塊緩沖器指針408立刻跟隨信息塊402中的最后一個指令404。
向DFA指令隊列400插入數據包,內核120軟件將DFA指令404寫入DFA指令隊列400,如果需要的話會分配信息塊,然后通過把把DFA指令404的數量加入到DFA指令隊列400寫入DFA報警器384。DFA模塊134從DFA指令隊列400(開始于尾部410)讀取,并當到達一個信息塊(例如404/404)的最后一個指令時,DFA模塊134從DFA指令隊列400(從尾410開始)讀取和轉換下一個信息塊緩沖器指針408到下一個塊(例如402/402)。當DFA模塊134跳到塊402,釋放前面的信息塊(例如402/404)給FPA128(圖1B)。
DFA模塊134保持DFA指令隊列的尾指針410,內核120軟件保持DFA指令隊列的頭指針412。尾指針410和頭指針412之間的距離是DFA指令隊列400的長度和未完成的報警器記數。DFA指令隊列400的大小僅僅受可用的存儲器和DFA指令隊列400的20位未完成報警器記數器的限制。
圖4B列舉了下一個信息塊緩沖器指針格式450。下一個信息塊緩沖器指針是64位的單字,包含36位的地址(Addr)段452。在包含下一個DFA指令402的下一個信息塊400中,地址段452選擇有效的L2/DRAM(130/108)字節位置。
圖5A圖示存儲在LLM118中的DFA圖像500的結構。DFA圖像500包括N個節點510a-510n。DFA圖像500中的每個節點510是一個256次節點指針512的簡單排列,每個對應一個唯一的輸入字節值。每個次節點指針512包含次節點標識號514用來對輸入字節直接進行標識。
DFA模塊134支持18位次節點指針存儲格式516或36位次節點指針存儲格式518。對于18位指針,每個節點510需要18X256比特或512字節的LLM118存儲空間。每個次節點指針516是17位次節點標識ID和奇偶校驗位。奇偶校驗是偶校驗(即,P=XOR(或OR)17位次節點ID514的所有位)。對于36位指針,每個節點510需要36X256比特或1KB的LLM118存儲空間。復制可以提高存儲空間需求。每個次節點518是20位次節點標識ID,2位類型值,7位SECDED ECC碼和7個必須置零的未用位。DTE370使用36位指針中的SECDED ECC碼修復所有單位錯誤和檢查所有雙位錯誤。類型值指示下一個節點類型,例如0=正常;1=已標記;2=終端。
DTE370支持三種特殊節點指針條件1.PERR-次節點指針包含錯誤。DTE370生成結果字指示失敗的LLM118位置。DTE370終止圖像500的轉換;2.TERM-下一個節點是終端節點,圖像轉換為停止。DTE370生成結果字指出轉換到終端節點的字節,前一個節點ID,下一個節點ID。DTE370終止圖像500的轉換;3.MARKED-內核120軟件為了以后的分析標記這個臨界點。DTE370生成結果字指出轉換到標記節點的字節,前一個節點ID,后一個節點ID。DTE370繼續圖像500的轉換;對于18位模式,DTE370通過比較下一個節點ID決定特定的TERM和MARKED條件。在這種情況下,所有進入被標記節點的過渡都被標記。對于36為模式,DTE370直接根據下一個節點指針中的類型字段決定特定的TERM和MARKED條件。獨立的過渡,不僅僅獨立的節點,在36位模式下都會被標記。
圖5顯示了所有可能的17位節點標識ID和它們在18位模式下是怎么被分類的。終端節點標識ID502不會被實際LLM118向后存儲。不過,普通節點504和被標記的節點506被實際LLM118向后存儲。DFA指令404(圖8A)包含終端節點的數目,存儲在IW0RD3(圖8A)中的Tsize,被標記節點的數目507,同樣存儲在IW0RD3(圖8A)中的Msize當DTE370轉換圖像500時,它們產生的結果字會作為異常條件出現。下一個節點指針是異常的MARKED,TERM或PERR。兩個異常條件是輸入數據的完成和結果空間的清空。雖然對一個輸入字節的圖像轉換可以產生多種異常條件,但是一個輸入字節只能產生至多一個結果字。例如,最后一個輸入字節會遇到輸入數據條件的完成,會產生結果字。最后一個輸入字節也可能遇到被標記的次節點,但是不會產生第二結果字。當(優先排序)PERR,TERM,輸入數據的完成和結果空間清空的異常條件發生時,圖像轉換停止,DTE370報告最高優先性條件。例如,根據圖2中的圖像,下一個節點是到達節點‘c’的終端節點,DTE370終止圖像轉換。
每個DFA指令可以指定對保存在L2/DRAM中的數據進行怎樣的處理。在任一種情況(直接或一起),DFA模塊134從L2/DRAM(130/108)中讀取字節。
圖6顯示了直接模式600取得將被DTE370處理的數據的實施例。DFA指令404直接指定開始位置和字節數。處理相應DFA指令404的DFA370從L2/DRAM(130/108)中讀取相臨的字節并處理它們。
圖7顯示了集合模式700取得將被DTE370處理的數據的實施例。DFA指令404直接指定開始位置和DFA集合指針710列表的大小。每個DFA集合指針710列表條目指定開始位置和DTE370要處理的字節數目。DTE370的所有輸入字節流是每個集合指針列表條目指定字節的連接。
圖7B顯示64位DFA集合指針710的格式。DFA集合指針710包括長度712(字節)和地址段714(L2/DRAM地址)。DFA集合指針710是在64位邊界自然對準的,但是它指向的L2/DRAM中的字節可以是任何字節對準。在集合模式700下,字節總數是所有DFA集合指針710中的長度字段之和。
再根據圖4A,每個DFA指令404提供DFA模塊134需要的信息用以(i)開始DTE370;(ii)讀取輸入數據;(iii)轉換LLM118中的圖像200;(iv)寫入結果。DFA指令404可以包含多個指令字,例如圖8A中例舉的指令格式。每個DFA指令404包含4個獨立的字455’,455”,455,455””(通常455)。每次字包含64位,代表了二級緩沖存儲器130或DRAM108中全部的32字節。優選的是,每個DFA指令404在32位字節邊界是自然對準的。DFA指令404被分配后由DTE370進行處理。DFA指令404包含標識輸入字節位置和結果位置的字段。
在操作中,當DFA指令隊列382具有有效的DFA指令404時,DFA模塊134從二級緩沖存儲器130或DRAM108中讀取DFA指令404和輸入數據,然后在創建它們的時候(例如,一個一個字節的)寫入結果。DFA模塊134也可以在完成后選擇性地提交將被POW148(圖1B)分配的工作隊列條目,所以DFA指令404可以包含用于工作隊列指針的字段。
更詳細的,第一DFA指令字455’包含開始節點標識ID460指示將被它第一節點使用的特定DFA圖像。第一字404也提供附加信息,例如副本字段462,該副本字段462存儲與被存儲在LLM118中的標識的圖像的副本數量相對應的副本數值。也可以提供類型值464,指示使用地址的類型(18或36位)。典型的64位字也可以包含一個或更多的保留字段。
第二DFA指令字455”包含長度字段470,指示DFA模塊要處理的字節的數量和地址段474,指示二級緩沖存儲器130或DRAM108中需要處理的分組數據的位置。
第三DFA指令字455包含結果地址段482,指示任何結果要寫入的地址(例如,在二級緩沖存儲器130或DRAM中的地址),和一個最大結果字段480,指示保存最大允許的結果數的值。更進一步,DFA模塊134也可以在完成后選擇性的提交工作隊列條目,因此DFA指令404包含工作隊列處理(WQP)段490,用于一個或更多工作隊列指針。
圖8B顯示的是DFA指令404的結果格式800。DFA結果800在L2/DRAM(130/108)中有兩個或更多64位字。每個字在L2/DRAM(130/108)中自然排列。在對DFA指令404的處理中和處理后,DFA模塊134將這些字寫入L2/DRAM(130/108)。這個結構是可變長度以適應等于可變數量的標記節點的DFA指令404,但是結果的長度可以被DFA指令字段的最大結構數限制。
如上所述,通過使用36位指針518提供的類型字段(圖5A),節點類型與DFA圖像的一個或多個節點聯系成為可能。當DTE370轉換圖像時,它們產生結果字異常條件出現。至少一個異常條件是終端節點。當DTE370遇到終端節點時,它記錄DFA圖像已經到達結尾,DTE370運行的轉換會停止。另一個異常條件的例子是標記節點。跟終端節點相比,當DTE370遇到標記節點時圖像的轉換不需要停止。然而,結果會被寫到輸出字中,指出特殊標記的節點為以后分析。因此,當圖像中相應的節點被轉換時,標記的節點可以用來區分。
注意,DFA模塊134可能會不只一次寫操作DFA結果800中的字0。只有最后一次寫入字0會包含有效的DFA結果800。雖然DFA模塊134可以多次寫操作字0,但僅僅最后一次寫操作可以設置位16,位16只有DFA模塊完成DFA指令404后才能被設置。在提交DFA指令404到DFA模塊134之前通過設置結果中字0中的位16為零,軟件可以輪詢字0的位16以確定DFA模塊134何時完成DFA指令。當DFA的字0的位16被設置,整個結果就出現了。
圖2B中圖示的另外一個實施例,圖2A的圖像是要查找兩個不同的字符串‘abed’和‘abce’的一個或多個的出現次數。因此,兩個額外節點,節點4和5,增加到了圖2A中,一個節點分別用于每個字符串的第四個字符(例如,節點4用于d,節點5用于e)。節點4和5都連接到節點3,如圖,每個字符串的前三個字符是相同的。優選的,在輸入字符串中每個字符串的出現都會標注上一個“pass”。
可仿效的輸入字符串,比如字符串‘xwabcd454abceabcdsfk’通過一遍,DFA生成三個“已標記”過渡。標記的過渡發生在輸入字符串結尾段(例如,在‘d’或‘e’出現的每個位置)。因此,三個標記的過渡指出三個字符串發現的位置。第一個和最后一個標記顯示從節點3到節點4的過渡,指出在輸入字符串中字符串‘abed’的存在(例如,DTE byte=5,previous 3,next 4 and DTEByte 17,previous=3,next=4)。中間標記的節點顯示了從節點3到節點5的過渡,指出在輸入字符串中字符串‘′abce′的存在(例如,DTE Byte=13,previous=3,next=5)。使用18位的指針,節點4和5被標記。使用36位的指針,從節點3到4和5的弧線被標記。因此,通過使用DFA標記技術結合DFA線程引擎,在單獨輸入通道中,可以在相同的輸入字符串中查找到多個不同字符串的存在和位置。
本發明相關資料2004年9月10日提交的美國第60/609,211號臨時專利;2004年12月28日提交的美國第11/024,002號臨時專利;2005年4月8日提交,文章名為“Deterministic FiniteAutomata(DFA)Instruction”的美國第60/669,603號臨時專利;2005年4月8日提交,文章名為“Selective Replication of DataStructures”的美國第60/669,655號臨時專利。上述申請的全部教導通過認證在此并入本文。
雖然本發明已經對關于其優選的實施方式進行了具體的描述和介紹,但本領域技術人員應當理解,在不脫離本發明所附權利要求保護的范圍的情況下,本發明在形式和細節上可以進行多種改變。
權利要求
1.一種網絡處理器,包括至少一個處理器內核;以及確定性有限自動機(DFA)模塊,異步操作至少一個處理器內核,該DFA模塊越過存儲在帶有存儲在連貫緩沖存儲器中的分組數據的非緩沖存儲器中的至少一個DFA圖表的多個節點以響應來自至少一個處理器內核中的指令。
2.根據權利要求1所述的網絡處理器,DFA模塊包括適于訪問存儲DFA圖表的存儲器的非緩沖存儲控制器;至少一個DFA線程引擎與非緩沖存儲控制器保持通訊;指令輸入邏輯用來設定從至少一個處理器內核到至少一個DFA線程引擎的指令。
3.根據權利要求2所述的網絡處理器,進一步包括指令隊列,至少一個處理器內核將與DFA模塊相關的DFA指令提交到指令隊列中。
4.根據權利要求3所述的網絡處理器,DFA模塊保持指向指令隊列的指針。
5.根據權利要求3所述的網絡處理器,DFA指令標示要使用的存儲在連貫緩沖存儲器中的分組數據和用于越過的存儲在非緩沖存儲器中的至少一個DFA圖像。
6.根據權利要求3所述的網絡處理器,DFA模塊分配DFA指令給至少一個DFA線程引擎。
7.根據權利要求6所述的網絡處理器,其中至少一個DFA線程引擎取得存儲在連貫緩沖存儲器中的分組數據;每字節從連貫緩沖存儲器中接收的分組數據發布非緩沖存儲器加載指令用以轉換存儲在非緩沖存儲器中的DFA圖像的下一個狀態;以及將中間的和最終結果寫到連貫緩沖存儲器中。
8.根據權利要求7所述的網絡處理器,還包括中間的和最終結果被寫到其中的結果字。
9.根據權利要求8所述的網絡處理器,其中結果字當設置時包括指示DFA指令完成的指令完成字段。
10.根據權利要求1所述的網絡處理器,其中DFA模塊方面包括關聯在具有至少一個處理器內核的共享配置中的多個DFA線程引擎,每個DFA線程適于轉換存儲在非緩沖存儲器中的至少一個DFA圖像。
11.根據權利要求1所述的網絡處理器,進一步包括節點類型標識符用于標識DFA圖像的節點的類型。
12.根據權利要求11所述的網絡處理器,節點類型標識符是標記的節點,圖象的標記節點不受阻礙轉換的轉換。
13.一種轉換具有進入的分組數據轉換的DFA圖像的方法,其包括存儲至少一個DFA圖像到非連貫緩沖存儲器中;存儲DFA指令到連貫緩沖存儲器中,DFA指令指示要使用的存儲在連貫緩沖存儲器中的分組數據和要轉換的存儲在非緩沖存儲器中的至少一個DFA圖像;使用存儲的分組數據轉換DFA圖像并將中間和最終結果寫入連貫緩沖存儲器。
14.根據權利要求13所述的方法,其中至少一個處理器內核提交DFA指令到DFA模塊。
15.根據權利要求13所述的方法,其中DFA模塊分配DFA指令到至少一個DFA線程引擎。
16.根據權利要求15所述的方法,其中至少一個DFA線程引擎取得存儲在連貫緩沖存儲器中的分組數據;每字節的從連貫緩沖存儲器中取得的分組數據分配一個非緩沖存儲器加載指令;越過與取得的每字節分組數據相對應的存儲在非緩沖存儲器中的DFA圖像的下一個狀態;以及將中間和最終結果寫入連貫緩沖存儲器。
17.根據權利要求16所述的方法,進一步包括為標識DFA圖像中每個節點各自的節點類型提供的節點類型標識符,通過節點類型標識符決定中間和最終的結果。
18.網絡處理器,所述的網絡處理器包括用于將至少一個DFA圖象存儲到連貫非緩沖存儲器中的裝置;用于將DFA指令存儲到連貫緩沖存儲器中的裝置,改DFA指令指出存儲在連貫緩沖存儲器中的分組數據用以使用以及用于越過的存儲在非緩沖存儲器中的至少一個DFA圖象;以及使用存儲的分組數據越過DFA圖象的裝置,該裝置將中間和最終結果寫入連貫緩沖存儲器。
全文摘要
一種用于越過實時具有輸入的分組數據的精確自動圖像的處理器。處理器包括至少一個處理器內核和DFA模塊,該DFA模塊對至少一個處理器內核異步操作用于越過存儲在具有存儲在連貫緩沖存儲器中的分組數據的非緩沖存儲器中的至少一個DFA圖像。
文檔編號G06F21/00GK101053234SQ200580034214
公開日2007年10月10日 申請日期2005年9月8日 優先權日2004年9月10日
發明者格雷格·A·鮑查德, 大衛·A·卡爾森, 理查德·E·科斯勒, 穆罕默德·R·休斯塞恩 申請人:卡威姆網絡有限公司