用于狀態(tài)機中的數(shù)據(jù)分析的方法及系統(tǒng)的制作方法
【專利摘要】一種裝置包含匹配元件(160),所述匹配元件(160)包含經配置以接收第一結果的第一數(shù)據(jù)輸入,其中所述第一結果為狀態(tài)機的元件對數(shù)據(jù)流的至少一部分執(zhí)行的分析的結果。所述匹配元件(160)還包含經配置以接收第二結果的第二數(shù)據(jù)輸入,其中所述第二結果為所述狀態(tài)機的另一元件對所述數(shù)據(jù)流的至少一部分執(zhí)行的分析的結果。所述匹配元件(160)進一步包含經配置以選擇性地提供所述第一結果或所述第二結果的輸出。
【專利說明】用于狀態(tài)機中的數(shù)據(jù)分析的方法及系統(tǒng)
【技術領域】
[0001]本發(fā)明的實施例一股來說涉及電子裝置,且更具體來說,在某些實施例中涉及具有用于型式辨識的并行有限狀態(tài)機的電子裝置。
【背景技術】
[0002]在常規(guī)基于馮?諾伊曼(von Neumann)的計算機上執(zhí)行復雜型式辨識可為低效的。然而,生物大腦(特定來說,人腦)擅長執(zhí)行型式辨識。當前研究表明,人腦使用新皮質中的一系列以層次方式組織的神經元層執(zhí)行型式辨識。層次的較低層中的神經元分析來自(舉例來說)感覺器官的“原始信號”,而較高層中的神經元分析來自較低層中的神經元的信號輸出。新皮質中的此層次 式系統(tǒng)(可能與大腦的其它區(qū)一起)實現(xiàn)復雜型式辨識,此使得人類能夠執(zhí)行高級功能,例如空間推理、意識思考及復雜語言。
[0003]在計算領域中,型式辨識任務日益具挑戰(zhàn)性。在計算機之間傳輸?shù)臄?shù)據(jù)量越來越大,且用戶希望識別的型式的數(shù)目日益增加。舉例來說,通常通過搜索數(shù)據(jù)流中的型式(例如,特定短語或代碼片段)來檢測垃圾郵件或惡意軟件。型式的數(shù)目隨垃圾郵件與惡意軟件的多樣化而增加,因為新型式可經實施以搜索新變化形式。針對這些型式中的每一者搜索數(shù)據(jù)流可形成計算瓶頸。通常,在接收數(shù)據(jù)流時,針對每一型式一次搜索一個數(shù)據(jù)流。在系統(tǒng)準備好搜索數(shù)據(jù)流的下一部分之前的延遲隨型式的數(shù)目而增加。因此,型式辨識可減慢數(shù)據(jù)的接收。
[0004]已設計用以針對若干型式搜索數(shù)據(jù)流的硬件,但此硬件通常不能在給定時間量內處理充足數(shù)據(jù)量。經配置以搜索數(shù)據(jù)流的一些裝置通過將數(shù)據(jù)流分布在多個電路當中而如此進行。所述電路各自確定數(shù)據(jù)流是否匹配型式的一部分。通常,大量電路并行操作,從而各自大體同時搜索數(shù)據(jù)流。然而,尚未存在一種實際上允許以與生物大腦的方式更相當?shù)姆绞綀?zhí)行型式辨識的系統(tǒng)。此系統(tǒng)的開發(fā)是期望的。
【專利附圖】
【附圖說明】
[0005]圖1圖解說明根據(jù)本發(fā)明的各種實施例的具有狀態(tài)機引擎的系統(tǒng)的實例。
[0006]圖2圖解說明根據(jù)本發(fā)明的各種實施例的圖1的狀態(tài)機引擎的FSM晶格的實例。
[0007]圖3圖解說明根據(jù)本發(fā)明的各種實施例的圖2的FSM晶格的塊的實例。
[0008]圖4圖解說明根據(jù)本發(fā)明的各種實施例的圖3的塊的行的實例。
[0009]圖5圖解說明根據(jù)本發(fā)明的各種實施例的圖4的行的兩個一群組的實例。
[0010]圖6圖解說明根據(jù)本發(fā)明的各種實施例的有限狀態(tài)機圖的實例。
[0011]圖7圖解說明根據(jù)本發(fā)明的各種實施例的借助FSM晶格實施的兩層級層次的實例。
[0012]圖8圖解說明根據(jù)本發(fā)明的各種實施例的用于編譯器將源代碼轉換成二進制文件以用于編程圖2的FSM晶格的方法的實例。
[0013]圖9圖解說明根據(jù)本發(fā)明的各種實施例的狀態(tài)機引擎。[0014]圖10圖解說明根據(jù)本發(fā)明的各種實施例的圖3的塊的行的第二實例。
[0015]圖11圖解說明根據(jù)本發(fā)明的各種實施例的圖10的匹配元件的實例。
[0016]圖12圖解說明根據(jù)本發(fā)明的各種實施例的對應于圖11的多路復用器的真值表。
【具體實施方式】
[0017]現(xiàn)在轉到各圖,圖1圖解說明通常由參考編號10指定的基于處理器的系統(tǒng)的實施例。系統(tǒng)10可為多種類型中的任一者,例如桌上型計算機、膝上型計算機、尋呼機、蜂窩式電話、個人記事本、便攜式音頻播放器、控制電路、相機等。系統(tǒng)10也可為網絡節(jié)點,例如路由器、服務器或客戶端(例如,先前所描述的類型的計算機中的一者)。系統(tǒng)10可為某一其它種類的電子裝置,例如復印機、掃描儀、打印機、游戲控制臺、電視機、機頂盒視頻分配或記錄系統(tǒng)、電纜盒、個人數(shù)字媒體播放器、工廠自動化系統(tǒng)、汽車計算機系統(tǒng)或醫(yī)療裝置。(用以描述系統(tǒng)的這各種實例的術語(如本文中所使用的許多其它術語)可共享一些所指物,且如此不應按照所列舉的其它物項來狹義地理解。)
[0018]在典型基于處理器的裝置(例如系統(tǒng)10)中,處理器12(例如微處理器)控制系統(tǒng)10中的系統(tǒng)功能及請求的處理。此外,處理器12可包括共享系統(tǒng)控制的多個處理器。處理器12可直接或間接耦合到系統(tǒng)10中的元件中的每一者以使得處理器12通過執(zhí)行可存儲于系統(tǒng)10內或在系統(tǒng)10外部的指令來控制系統(tǒng)10。
[0019]根據(jù)本文中所描述的實施例,系統(tǒng)10包含可在處理器12的控制下操作的狀態(tài)機引擎14。狀態(tài)機引擎14可采用若干種狀態(tài)機架構中的任一者,包含(但不限于)Mealy架構、Moore架構、有限狀態(tài)機(FSM)、確定性FSM(DFSM)、位并行狀態(tài)機(BPSM)等。雖然可使用多種架構,但出于論述目的,本申請案是指FSM。然而,所屬領域的技術人員將了解可使用多種狀態(tài)機架構中的任一者來米用所描述技術。
[0020]如下文所進一步論述,狀態(tài)機引擎14可包含若干個(例如,一或多個)有限狀態(tài)機(FSM)晶格。每一 FSM晶格可包含各自并行接收及分析同一數(shù)據(jù)的多個FSM。此外,F(xiàn)SM晶格可布置成若干群組(例如,群集),以使得FSM晶格的群集可并行分析同一輸入數(shù)據(jù)。此外,狀態(tài)機引擎14的FSM晶格的群集可布置成層次式結構,其中來自所述層次式結構的較低層級上的狀態(tài)機晶格的輸出可用作到較高層級上的狀態(tài)機晶格的輸入。通過經由層次式結構串行地級聯(lián)狀態(tài)機引擎14的并行FSM晶格的群集,可分析(例如,評估、搜索等)日益復雜的型式。
[0021]此外,基于狀態(tài)機引擎14的層次式并行配置,狀態(tài)機引擎14可用于利用高處理速度的系統(tǒng)中的型式辨識。例如,本文中所描述的實施例可并入于具有I千兆字節(jié)/秒的處理速度的系統(tǒng)中。因此,利用狀態(tài)機引擎14,可針對各種型式快速地分析來自高速存儲器裝置或其它外部裝置的數(shù)據(jù)。狀態(tài)機引擎14可根據(jù)數(shù)種準則約同時(例如,在單個裝置循環(huán)期間)及其相應搜索項分析數(shù)據(jù)流。狀態(tài)機引擎14的層級上的FSM群集內的FSM晶格中的每一者可各自約同時接收來自數(shù)據(jù)流的同一搜索項,且并行FSM晶格中的每一者可確定所述項是否將狀態(tài)機引擎14推進到處理準則中的下一狀態(tài)。狀態(tài)機引擎14可根據(jù)相對大量準則(例如,100個以上、110個以上或10,000個以上)分析項。由于其并行操作,因此其可將準則應用于具有相對高帶寬的數(shù)據(jù)流(例如,大于或通常等于I千兆字節(jié)/秒的數(shù)據(jù)流)而不減慢所述數(shù)據(jù)流。[0022]在一個實施例中,狀態(tài)機引擎14可經配置以辨識(例如,檢測)數(shù)據(jù)流中的大量型式。例如,狀態(tài)機引擎14可用以檢測用戶或其它實體可希望分析的多種類型的數(shù)據(jù)流中的一或多者中的型式。舉例來說,狀態(tài)機引擎14可經配置以分析經由網絡接收的數(shù)據(jù)流,例如經由因特網接收的包或者經由蜂窩式網絡接收的話音或數(shù)據(jù)。在一個實例中,狀態(tài)機引擎14可經配置以針對垃圾郵件或惡意軟件分析數(shù)據(jù)流。數(shù)據(jù)流可作為串行數(shù)據(jù)流接收,其中以具有意義的次序(例如以時間、詞匯或語義重要性次序)接收數(shù)據(jù)。或者,數(shù)據(jù)流可經并行或無序地接收且然后轉換成串行數(shù)據(jù)流,例如,通過將經由因特網接收的包重新排序。在一些實施例中,數(shù)據(jù)流可串行地呈現(xiàn)項,但表達所述項中的每一者的位可被并行接收。數(shù)據(jù)流可從系統(tǒng)10外部的源接收或可通過詢問存儲器裝置(例如存儲器16)且由存儲于存儲器16中的數(shù)據(jù)形成數(shù)據(jù)流而形成。在其它實例中,狀態(tài)機引擎14可經配置以辨識拼寫某一字的字符序列、規(guī)定基因的遺傳堿基對序列、圖片或視頻文件中形成圖像的一部分的位序列、可執(zhí)行文件中形成程序的一部分的位序列或者音頻文件中形成歌曲或口語短語的一部分的位序列。將分析的數(shù)據(jù)流可包含呈二進制格式或其它格式(例如,十進制、ASCII等)的多個數(shù)據(jù)位。所述流可編碼具有單個數(shù)字或多個數(shù)字(例如,數(shù)個二進制數(shù)字)的數(shù)據(jù)。
[0023]如將了解,系統(tǒng)10可包含存儲器16。存儲器16可包含易失性存儲器,例如動態(tài)隨機存取存儲器(DRAM)、靜態(tài)隨機存取存儲器(SRAM)、同步DRAM (SDRAM)、雙倍數(shù)據(jù)速率DRAM (DDR SDRAM)、DDR2SDRAM、DDR3SDRAM等。存儲器16還可包含用以連同易失性存儲器一起使用的非易失性存儲器,例如只讀存儲器(ROM)、PC-RAM、硅-氧化物-氮化物-氧化物-硅(SONOS)存儲器、金屬-氧化物-氮化物-氧化物-硅(MONOS)存儲器、基于多晶硅浮動柵極的存儲器及/或各種架構的其它類型的快閃存儲器(例如,“與非”存儲器、“或非”存儲器等)。存儲器16可包含可提供將由狀態(tài)機引擎14分析的數(shù)據(jù)的一或多個存儲器裝置,例如DRAM裝置。此類裝置可稱為或包含固態(tài)驅動器(SSD)、MultimediaMediaCard(MMC)、SecureDigital (SD)卡、CompactFlash (CF)卡或任何其它適合裝置。此外,應了解,此類裝置可經由任何適合接口(例如通用串行總線(USB)、外圍組件互連(PCI)、高速PCI (PC1-E)、小型計算機系統(tǒng)接口(SCSI)、IEEE1394(火線(Firewire))或任何其它適合接口)耦合到系統(tǒng)10。為促進存儲器16 (例如快閃存儲器裝置)的操作,系統(tǒng)10可包含存儲器控制器(未圖解說明)。如將了解,所述存儲器控制器可為獨立裝置或者其可與處理器12成整體。另外,系統(tǒng)10可包含外部存儲裝置18,例如磁性存儲裝置。所述外部存儲裝置也可將輸入數(shù)據(jù)提供到狀態(tài)機引擎14。
[0024]系統(tǒng)10可包含若干個額外元件。例如,編譯器20可用以編程狀態(tài)機引擎14,如關于圖8所更詳細描述。輸入裝置22也可耦合到處理器12以允許用戶將數(shù)據(jù)輸入到系統(tǒng)10中。例如,輸入裝置22可用以將數(shù)據(jù)輸入到存儲器16中以供稍后由狀態(tài)機引擎14分析。輸入裝置22可包含(例如)按鈕、交換元件、鍵盤、光筆、手寫筆、鼠標及/或話音辨識系統(tǒng)。輸出裝置24(例如顯示器)也可耦合到處理器12。顯示器24可包含(舉例來說)IXD、CRT、LED及/或音頻顯示器。所述系統(tǒng)還可包含用于與網絡(例如因特網)介接的網絡接口裝置26,例如網絡接口卡(NIC)。如將了解,系統(tǒng)10可取決于系統(tǒng)10的應用而包含許多其它組件。
[0025]圖2到5圖解說明FSM晶格30的實例。在一實例中,F(xiàn)SM晶格30包括塊32的陣列。如將描述,每一塊32可包含對應于FSM中的多個狀態(tài)的多個可選擇性耦合硬件元件(例如,可編程元件及/或專用元件)。類似于FSM中的狀態(tài),硬件元件可分析輸入流且基于所述輸入流而激活下游硬件元件。
[0026]可編程元件可經編程以實施許多不同功能。例如,所述可編程元件可包含以層次方式組織成若干行38 (展示于圖3及4中)及若干塊32 (展示于圖2及3中)的狀態(tài)機元件(SME) 34、36 (展示于圖5中)。為了在以層次方式組織的SME34、36之間路由信號,可使用可編程交換元件的層次,其包含塊間交換元件40 (展示于圖2及3中)、塊內交換元件42 (展示于圖3及4中)及行內交換元件44 (展示于圖4中)。
[0027]如下文所描述,交換元件可包含路由結構及緩沖器。SME34、36可對應于由FSM晶格30實施的FSM的狀態(tài)。可通過使用如下文所描述的可編程交換元件而將SME34、36耦合在一起。因此,可通過編程SME34、36以對應于狀態(tài)的功能且通過將SME34、36選擇性地耦合在一起以對應于FSM中的狀態(tài)之間的轉變而在FSM晶格30上實施FSM。
[0028]圖2圖解說明FSM晶格30的實例的總體視圖。FSM晶格30包含可與可編程塊間交換元件40選擇性地耦合在一起的多個塊32。塊間交換元件40可包含導體46 (例如,導線、跡線等)以及緩沖器48及50。在一實例中,包含緩沖器48及50以控制去往/來自塊間交換元件40的信號的連接及時序。如下文所進一步描述,可提供緩沖器48以緩沖在塊32之間發(fā)送的數(shù)據(jù),而可提供緩沖器50以緩沖在塊間交換元件40之間發(fā)送的數(shù)據(jù)。另外,塊32可選擇性地耦合到用于接收信號(例如,數(shù)據(jù))且將數(shù)據(jù)提供到塊32的輸入塊52 (例如,數(shù)據(jù)輸入端口)。塊32還可選擇性地耦合到用于將信號從塊32提供到外部裝置(例如,另一 FSM晶格30)的輸出塊54(例如,輸出端口)。FSM晶格30還可包含編程接口 56以將程序(例如,圖像)加載到FSM晶格30上。所述圖像可編程(例如,設定)SME34、36的狀態(tài)。也就是說,所述圖像可將SME34、36配置為以某一方式對輸入塊52處的給定輸入做出反應。舉例來說,SME34、36可經設定以在于輸入塊52處接收到字符‘a’時輸出高信號。
[0029]在一實例中,可將輸入塊52、輸出塊54及/或編程接口 56實施為寄存器以使得向所述寄存器的寫入將數(shù)據(jù)提供到相應元件或從所述寄存器的讀取從所述相應元件提供數(shù)據(jù)。因此,來自存儲于對應于編程接口 56的寄存器中的圖像的位可加載于SME34、36上。雖然圖2圖解說明塊32、輸入塊52、輸出塊54與塊間交換元件40之間的某一數(shù)目個導體(例如,導線、跡線),但應理解在其它實例中可使用更少或更多導體。
[0030]圖3圖解說明塊32的實例。塊32可包含可與可編程塊內交換元件42選擇性地耦合在一起的多個行38。另外,行38可借助塊間交換元件40選擇性地耦合到另一塊32內的另一行38。行38包含組織成本文中稱為兩個一群組(GOT) 60的若干對元件的多個SME34、
36。在一實例中,塊32包括十六(16)個行38。
[0031 ] 圖4圖解說明行38的實例。G0T60可通過可編程行內交換元件44選擇性地耦合到其它G0T60及行38內的任何其它元件(例如,專用元件58)。G0T60也可借助塊內交換元件42耦合到其它行38中的其它G0T60,或者借助塊間交換元件40耦合到其它塊32中的其它G0T60。在一實例中,G0T60具有第一輸入62及第二輸入64以及輸出66。第一輸入62耦合到G0T60的第一 SME34且第二輸入62耦合到G0T60的第二 SME34,如將參考圖5進一步圖解說明。
[0032]在一實例中,行38包含第一多個行互連導體68及第二多個行互連導體70。在一實例中,G0T60的輸入62、64可耦合到一或多個行互連導體68、70,且輸出66可耦合到一個行互連導體68、70。在一實例中,第一多個行互連導體68可耦合到行38內的每一 G0T60的每一 SME34、36。第二多個行互連導體70可耦合到行38內的每一 G0T60的僅一個SME34、36,但無法耦合到G0T60的另一 SME34、36。在一實例中,第二多個行互連導體70的第一半部可耦合到行38內的SME34、36的第一半部(來自每一 G0T60的一個SME34),且第二多個行互連導體70的第二半部可耦合到行38內的SME34、36的第二半部(來自每一 G0T60的另一 SME34、36),如將關于圖5更佳地圖解說明。第二多個行互連導體70與SME34、36之間的有限連接性在本文中稱為“奇偶”。在一實例中,行38還可包含專用元件58,例如計數(shù)器、可編程布爾邏輯元件、查找表、RAM、現(xiàn)場可編程門陣列(FPGA)、專用集成電路(ASIC)、可編程處理器(例如,微處理器)或用于執(zhí)行專用功能的其它元件。
[0033]在一實例中,專用元件58包括計數(shù)器(在本文中也稱為計數(shù)器58)。在一實例中,計數(shù)器58包括12位可編程遞減計數(shù)器。12位可編程計數(shù)器58具有計數(shù)輸入、復位輸入及零計數(shù)輸出。計數(shù)輸入在被斷言時使計數(shù)器58的值遞減I。復位輸入在被斷言時致使計數(shù)器58從相關聯(lián)寄存器加載初始值。對于12位計數(shù)器58來說,可加載多達12位的數(shù)目作為所述初始值。當計數(shù)器58的值遞減到零(O)時,斷言零計數(shù)輸出。計數(shù)器58也具有至少兩種模式,脈沖及保持。當將計數(shù)器58設定為脈沖模式時,在時鐘循環(huán)期間當計數(shù)器58遞減到零時斷言零計數(shù)輸出,且在下一時鐘循環(huán)處不再斷言零計數(shù)輸出。當將計數(shù)器58設定為保持模式時,在時鐘循環(huán)期間當計數(shù)器58遞減到零時斷言零計數(shù)輸出,且其保持經斷言直到計數(shù)器58通過斷言復位輸入而被復位為止。
[0034]在另一實例中,專用元件58包括布爾邏輯。在一些實例中,此布爾邏輯可用以從FSM晶格30中的終端狀態(tài)SME (對應于FSM的終端節(jié)點,如本文中稍后所論述)提取信息。所提取的信息可用以將狀態(tài)信息傳送到其它FSM晶格30及/或傳送用以重新編程FSM晶格30或重新編程另一 FSM晶格30的編程信息。
[0035]圖5圖解說明G0T60的實例。G0T60包含具有輸入62、64且使其輸出72、74耦合至IJ“或”門76及3對I多路復用器78的第一 SME34及第二 SME36。3對I多路復用器78可經設定以將G0T60的輸出66耦合到第一 SME34、第二 SME36或者“或”門76?!盎颉遍T76可用以將輸出72、74兩者耦合在一起以形成G0T60的共同輸出66。在一實例中,如上文所論述,第一 SME34及第二 SME36展現(xiàn)奇偶,其中第一 SME34的輸入62可耦合到行互連件導體68中的一些行互連導體且第二 SME36的輸入64可耦合到其它行互連件導體70。在一實例中,可通過設定交換元件79中的任一者或兩者而使G0T60內的兩個SME34、36級聯(lián)及/或循環(huán)回到其自身??赏ㄟ^將SME34、36的輸出72、74耦合到另一 SME34、36的輸入62、64而將SME34、36級聯(lián)。可通過將輸出72、74耦合到其自己的輸入62、64而使SME34、36循環(huán)回到其自身。因此,第一 SME34的輸出72可不耦合到第一 SME34的輸入62及第二 SME36的輸入64中的任一者、耦合到其中的一者或其中的兩者。
[0036]在一實例中,狀態(tài)機元件34、36包括并聯(lián)耦合到檢測線82的多個存儲器單元80,例如通常用于動態(tài)隨機存取存儲器(DRAM)中的存儲器單元。一種此類存儲器單元80包括可設定到一數(shù)據(jù)狀態(tài)(例如對應于高值或低值(例如,I或O)的數(shù)據(jù)狀態(tài))的存儲器單元。存儲器單元80的輸出耦合到檢測線82且到存儲器單元80的輸入基于數(shù)據(jù)流線84上的數(shù)據(jù)而接收信號。在一實例中,數(shù)據(jù)流線84上的輸入經解碼以選擇存儲器單元80中的一者。選定存儲器單元80將其所存儲數(shù)據(jù)狀態(tài)作為輸出提供到檢測線82上。舉例來說,在輸入塊52處所接收的數(shù)據(jù)可提供到解碼器(未展示)且所述解碼器可選擇數(shù)據(jù)流線84中的一者。在一實例中,所述解碼器可將8位ACSII字符轉換為256個數(shù)據(jù)流線84中的對應I。
[0037]因此,當存儲器單元80設定到高值且數(shù)據(jù)流線84上的數(shù)據(jù)對應于存儲器單元80時,存儲器單元80將高信號輸出到檢測線82。當數(shù)據(jù)流線84上的數(shù)據(jù)對應于存儲器單元80且存儲器單元80設定到低值時,存儲器單元80將低信號輸出到檢測線82。檢測線82上的來自存儲器單元80的輸出由檢測單元86感測。
[0038]在一實例中,輸入線62、64上的信號將相應檢測單元86設定到作用或非作用狀態(tài)。當設定到非作用狀態(tài)時,檢測單元86在相應輸出72、74上輸出低信號,而不管相應檢測線82上的信號如何。當設定到作用狀態(tài)時,檢測單元86在從相應SME34、36的存儲器單元82中的一者檢測到高信號時在相應輸出線72、74上輸出高信號。當處于作用狀態(tài)中時,檢測單元86在來自相應SME34、36的所有存儲器單元82的信號為低時在相應輸出線72、74上輸出低信號。
[0039]在一實例中,SME34、36包含256個存儲器單元80且每一存儲器單元80耦合到不同數(shù)據(jù)流線84。因此,SME34、36可經編程以在數(shù)據(jù)流線84中的選定一或多者在其上具有高信號時輸出高信號。舉例來說,SME34可將第一存儲器單元80(例如,位O)設定為高且將所有其它存儲器單元80 (例如,位I到255)設定為低。當相應檢測單元86處于作用狀態(tài)中時,SME34在對應于位O的數(shù)據(jù)流線84在其上具有高信號時在輸出72上輸出高信號。在其它實例中,當多個數(shù)據(jù)流線84中的一者在其上具有高信號時,可通過將適當存儲器單元80設定到高值來設定SME34以輸出高信號。
[0040]在一實例中,可通過從相關聯(lián)寄存器讀取位而將存儲器單元80設定到高值或低值。因此,可通過將編譯器20所創(chuàng)建的圖像存儲到寄存器中且將所述寄存器中的位加載到相關聯(lián)存儲器單元80中來編程SME34。在一實例中,編譯器20所創(chuàng)建的圖像包含高及低(例如,I及O)位的二進制圖像。所述圖像可編程FSM晶格30以通過級聯(lián)SME34、36而使其作為FSM操作。舉例來說,可通過將檢測單元86設定到作用狀態(tài)而將第一 SME34設定到作用狀態(tài)。第一 SME34可經設定以在對應于位O的數(shù)據(jù)流線84在其上具有高信號時輸出高信號。第二 SME36可最初設定到非作用狀態(tài),但可在作用時經設定以在對應于位I的數(shù)據(jù)流線84在其上具有高信號時輸出高信號。可通過設定第一 SME34的輸出72以耦合到第二 SME36的輸入64來級聯(lián)第一 SME34與第二 SME36。因此,當在對應于位O的數(shù)據(jù)流線84上感測到高信號時,第一 SME34在輸出72上輸出高信號且將第二 SME36的檢測單元86設定到作用狀態(tài)。當在對應于位I的數(shù)據(jù)流線84上感測到高信號時,第二 SME36在輸出74上輸出高信號以激活另一 SME36或以供從FSM晶格30輸出。
[0041]在一實例中,在單個物理裝置上實施單個FSM晶格30,然而,在其它實例中可在單個物理裝置(例如,物理芯片)上實施兩個或兩個以上FSM晶格30。在一實例中,每一 FSM晶格30可包含相異數(shù)據(jù)輸入塊52、相異輸出塊54、相異編程接口 56及一組相異可編程兀件。此外,每一組可編程元件可對其對應數(shù)據(jù)輸入塊52處的數(shù)據(jù)做出反應(例如,輸出高信號或低信號)。舉例來說,對應于第一 FSM晶格30的第一組可編程元件可對對應于第一FSM晶格30的第一數(shù)據(jù)輸入塊52處的數(shù)據(jù)做出反應。對應于第二 FSM晶格30的第二組可編程元件可對對應于第二 FSM晶格30的第二數(shù)據(jù)輸入塊52做出反應。因此,每一 FSM晶格30包含一組可編程元件,其中不同組的可編程元件可對不同輸入數(shù)據(jù)做出反應。類似地,每一 FSM晶格30及每一對應組的可編程兀件可提供相異輸出。在一些實例中,來自第一 FSM晶格30的輸出塊54可耦合到第二 FSM晶格30的輸入塊52以使得第二 FSM晶格30的輸入數(shù)據(jù)可包含來自一系列FSM晶格30的層次式布置中的第一 FSM晶格30的輸出數(shù)據(jù)。
[0042]在一實例中,用于加載到FSM晶格30上的圖像包括用于配置FSM晶格30內的可編程元件、可編程交換元件及專用元件的多個信息位。在一實例中,所述圖像可加載到FSM晶格30上以編程FSM晶格30以基于某些輸入而提供所要輸出。輸出塊54可基于可編程元件對數(shù)據(jù)輸入塊52處的數(shù)據(jù)的反應而提供來自FSM晶格30的輸出。來自輸出塊54的輸出可包含指示給定型式的匹配的單個位、包括指示與多個型式的匹配及不匹配的多個位的字及對應于所有或某些可編程元件在給定時刻的狀態(tài)的狀態(tài)向量。如所描述,若干個FSM晶格30可包含于狀態(tài)機引擎(例如狀態(tài)機引擎14)中以執(zhí)行數(shù)據(jù)分析,例如型式辨識(例如,語音辨識、圖像辨識等)、信號處理、成像、計算機視覺、密碼編譯及其它。
[0043]圖6圖解說明可由FSM晶格30實施的有限狀態(tài)機(FSM)的實例性模型。FSM晶格30可配置(例如,編程)為FSM的物理實施方案。FSM可表示為含有一或多個根節(jié)點92的圖90(例如,有向圖、無向圖、偽圖)。除了根節(jié)點92之外,所述FSM還可由經由一或多個邊緣98連接到根節(jié)點92及其它標準節(jié)點94的數(shù)個標準節(jié)點94及終端節(jié)點96構成。節(jié)點92、94、96對應于所述FSM中的狀態(tài)。邊緣98對應于所述狀態(tài)之間的轉變。
[0044]節(jié)點92、94、96中的每一者可處于作用或非作用狀態(tài)中。當處于非作用狀態(tài)中時,節(jié)點92、94、96不對輸入數(shù)據(jù)做出反應(例如,響應)。當處于作用狀態(tài)中時,節(jié)點92、94、96可對輸入數(shù)據(jù)做出反應。上游節(jié)點92、94可在輸入數(shù)據(jù)匹配由上游節(jié)點92、94與在所述節(jié)點下游的節(jié)點94、96之間的邊緣98規(guī)定的準則時通過激活下游節(jié)點94、96而對所述輸入數(shù)據(jù)做出反應。舉例來說,規(guī)定字符‘b’的第一節(jié)點94將在第一節(jié)點94為作用的且字符‘b’被接收為輸入數(shù)據(jù)時激活通過邊緣98連接到第一節(jié)點94的第二節(jié)點94。如本文所使用,“上游”是指一或多個節(jié)點之間的關系,其中在一或多個其它節(jié)點上游(或在循環(huán)或反饋配置的情況中,在其自身上游)的第一節(jié)點是指其中所述第一節(jié)點可激活所述一或多個其它節(jié)點(或在循環(huán)的情況中,可激活其自身)的情形。類似地,“下游”是指其中在一或多個其它節(jié)點下游(或在循環(huán)的情況中,在其自身下游)的第一節(jié)點可由所述一或多個其它節(jié)點激活(或在循環(huán)的情況中,可由其自身激活)的關系。因此,本文中使用術語“上游”及“下游”來指一或多個節(jié)點之間的關系,但這些術語不排除循環(huán)或節(jié)點當中的其它非線性路徑的使用。
[0045]在圖90中,可最初激活根節(jié)點92且根節(jié)點92可在輸入數(shù)據(jù)匹配來自根節(jié)點92的邊緣98時激活下游節(jié)點94。節(jié)點94可在輸入數(shù)據(jù)匹配來自節(jié)點94的邊緣98時激活節(jié)點96??稍诮邮盏捷斎霐?shù)據(jù)時以此方式激活貫穿圖90的節(jié)點94、96。終端節(jié)點96對應于輸入數(shù)據(jù)對所關注序列的匹配。因此,終端節(jié)點96的激活指示已接收到所關注序列作為輸入數(shù)據(jù)。在實施型式辨識功能的FSM晶格30的情景中,到達終端節(jié)點96可指示已在輸入數(shù)據(jù)中檢測到特定所關注型式。
[0046]在一實例中,每一根節(jié)點92、標準節(jié)點94及終端節(jié)點96可對應于FSM晶格30中的可編程元件。每一邊緣98可對應于所述可編程元件之間的連接。因此,轉變到另一標準節(jié)點94或終端節(jié)點96 (例如,具有連接到另一標準節(jié)點94或終端節(jié)點96的邊緣98)的標準節(jié)點94對應于轉變到另一可編程元件(例如,將輸出提供到另一可編程元件)的可編程元件。在一些實例中,根節(jié)點92不具有對應可編程元件。
[0047]當編程FSM晶格30時,可編程元件中的每一者也可處于作用或非作用狀態(tài)中。給定可編程元件在非作用時不對對應數(shù)據(jù)輸入塊52處的輸入數(shù)據(jù)做出反應。作用可編程元件可對數(shù)據(jù)輸入塊52處的輸入數(shù)據(jù)做出反應且可在所述輸入數(shù)據(jù)匹配所述可編程元件的設定時激活下游可編程元件。當可編程元件對應于終端節(jié)點96時,所述可編程元件可耦合到輸出塊54以將匹配的指示提供到外部裝置。
[0048]經由編程接口 56加載到FSM晶格30上的圖像可配置可編程元件及專用元件以及可編程元件與專用元件之間的連接,以使得基于對數(shù)據(jù)輸入塊52處的數(shù)據(jù)的反應而經由節(jié)點的循序激活來實施所要FSM。在一實例中,可編程元件保持作用達單個數(shù)據(jù)循環(huán)(例如,單個字符、一組字符、單個時鐘循環(huán))且然后變得非作用,除非被上游可編程元件重新激活。
[0049]可認為終端節(jié)點96存儲經壓縮過去事件歷史。舉例來說,到達終端節(jié)點96所需的輸入數(shù)據(jù)的一或多個型式可由所述終端節(jié)點96的激活表示。在一實例中,終端節(jié)點96所提供的輸出是二進制的,也就是說,所述輸出指示是否已匹配所關注型式。圖90中終端節(jié)點96對標準節(jié)點94的比率可相當小。換句話說,雖然在FSM中可存在高復雜度,但相比之下FSM的輸出可為小的。
[0050]在一實例中,F(xiàn)SM晶格30的輸出可包括狀態(tài)向量。所述狀態(tài)向量包括FSM晶格30的可編程元件的狀態(tài)(例如,經激活或未經激活)。在一實例中,所述狀態(tài)向量包含對應于終端節(jié)點96的可編程元件的狀態(tài)。因此,所述輸出可包含圖90的所有終端節(jié)點96所提供的指示的集合。所述狀態(tài)向量可表示為字,其中每一終端節(jié)點96所提供的二進制指示包括所述字的一個位。終端節(jié)點96的此編碼可提供FSM晶格30的檢測狀態(tài)(例如,是否已檢測到所關注序列及已檢測到何種所關注序列)的有效指示。在另一實例中,狀態(tài)向量可包含所有或一子組的可編程元件的狀態(tài),而不論所述可編程元件是否對應于終端節(jié)點96。
[0051]如上文所提及,F(xiàn)SM晶格30可經編程以實施型式辨識功能。舉例來說,F(xiàn)SM晶格30可經配置以辨識輸入數(shù)據(jù)中的一或多個數(shù)據(jù)序列(例如,簽名、型式)。當FSM晶格30辨識出所關注數(shù)據(jù)序列時,可在輸出塊54處提供所述辨識的指示。在一實例中,型式辨識可辨識符號串(例如,ASCII字符)以;(舉例來說)識別網絡數(shù)據(jù)中的惡意軟件或其它信肩、O
[0052]圖7圖解說明層次式結構100的實例,其中FSM晶格30的兩個層級串行地耦合且用以分析數(shù)據(jù)。具體來說,在所圖解說明的實施例中,層次式結構100包含串行布置的第一FSM晶格30A及第二 FSM晶格30B。每一 FSM晶格30包含用以接收數(shù)據(jù)輸入的相應數(shù)據(jù)輸入塊52、用以接收編程信號的編程接口塊56及輸出塊54。
[0053]第一 FSM晶格30A經配置以在數(shù)據(jù)輸入塊處接收輸入數(shù)據(jù)(舉例來說,原始數(shù)據(jù))。第一 FSM晶格30A如上文所描述對所述輸入數(shù)據(jù)做出反應且在輸出塊處提供輸出。來自第一 FSM晶格30A的輸出發(fā)送到第二 FSM晶格30B的數(shù)據(jù)輸入塊。第二 FSM晶格30B可然后基于由第一 FSM晶格30A提供的輸出而做出反應且提供層次式結構100的對應輸出信號102。兩個FSM晶格30A與30B的此串行層次式耦合提供用以將關于過去事件的信息以經壓縮字從第一 FSM晶格30A傳送到第二 FSM晶格30B的手段。所傳送的信息可實際上是由第一 FSM晶格30A記錄的復雜事件(例如,所關注序列)的概要。
[0054]圖7中所展示的FSM晶格30A、30B的兩層級層次100允許兩個獨立程序基于同一數(shù)據(jù)流而操作。兩級層次可類似于建模為不同區(qū)域的生物大腦中的視覺辨識。在此模型下,所述區(qū)域實際上是不同型式辨識引擎,每一型式辨識引擎執(zhí)行類似計算功能(型式匹配)但使用不同程序(簽名)。通過將多個FSM晶格30A、30B連接在一起,可獲得關于數(shù)據(jù)流輸入的增加的知識。
[0055]所述層次的第一層級(由第一 FSM晶格30A實施)可(舉例來說)直接對原始數(shù)據(jù)流執(zhí)行處理。也就是說,可在第一 FSM晶格30A的輸入塊52處接收原始數(shù)據(jù)流且第一FSM晶格30A的可編程元件可對所述原始數(shù)據(jù)流做出反應。所述層次的第二層級(由第二FSM晶格30B實施)可處理來自所述第一層級的輸出。也就是說,第二 FSM晶格30B在第二FSM晶格30B的輸入塊52處接收來自第一 FSM晶格30A的輸出塊54的輸出且第二 FSM晶格30B的可編程元件可對第一 FSM晶格30A的輸出做出反應。因此,在此實例中,第二 FSM晶格30B不將原始數(shù)據(jù)流接收為輸入,而是接收如第一 FSM晶格30A所確定由原始數(shù)據(jù)流匹配的所關注型式的指示。第二 FSM晶格30B可實施辨識來自第一 FSM晶格30A的輸出數(shù)據(jù)流中的型式的FSM。
[0056]圖8圖解說明用于編譯器將源代碼轉換成經配置以編程FSM晶格(例如晶格30)的圖像以實施FSM的方法110的實例。方法110包含將源代碼剖析成語法樹(框112),將所述語法樹轉換成自動機(框114),優(yōu)化所述自動機(框116),將所述自動機轉換成網表(框118),將所述網表放置于硬件上(框120),路由所述網表(框122)及公布所得圖像(框124)。
[0057]在一實例中,編譯器20包含允許軟件開發(fā)者創(chuàng)建用于在FSM晶格30上實施FSM的圖像的應用編程接口(API)。編譯器20提供用以將源代碼中的輸入正則表達式集轉換成經配置以編程FSM晶格30的圖像的方法??赏ㄟ^用于具有馮.諾伊曼(von Neumann)架構的計算機的指令來實施編譯器20。這些指令可致使計算機上的處理器12實施編譯器20的功能。舉例來說,所述指令在由處理器12執(zhí)行時可致使處理器12對可由處理器12存取的源代碼執(zhí)行如框112、114、116、118、120、122及124中所描述的動作。
[0058]在一實例中,源代碼描述用于識別符號群組內的符號型式的搜索串。為了描述搜索串,源代碼可包含多個正則表達式(regex)。正則表達式可為用于描述符號搜索型式的串。正則表達式廣泛地用于各種計算機領域中,例如編程語言、文本編輯器、網絡安全及其它領域。在一實例中,編譯器所支持的正則表達式包含用于分析未結構化數(shù)據(jù)的準則。未結構化數(shù)據(jù)可包含自由形式的數(shù)據(jù)且不具有應用于所述數(shù)據(jù)內的字的索引。字可包含所述數(shù)據(jù)內的可打印及不可打印的字節(jié)的任一組合。在一實例中,編譯器可支持多種不同源代碼語言以用于實施包含Perl (例如,Perl兼容正則表達式(PCRE) )、PHP、Java及.NET語言的正則表達式。
[0059]在框112處,編譯器20可剖析源代碼以形成相關連接的運算符的布置,其中不同類型的運算符對應于源代碼所實施的不同函數(shù)(例如,源代碼中的正則表達式所實施的不同函數(shù))。剖析源代碼可創(chuàng)建所述源代碼的一股表示。在一實例中,所述一股表示包括源代碼中的正則表達式的呈稱作語法樹的樹形圖的形式的經編碼表示。本文所述的實例涉及作為語法樹(還稱作“抽象語法樹”)的布置,然而在其它實例中可使用具體語法樹或其它布置。
[0060]如上文所提及,由于編譯器20可支持源代碼的多種語言,因此不管語言如何,剖析均將源代碼轉換成非語言特定表示(例如,語法樹)。因此,由編譯器20進行的進一步處理(框114、116、118、120)可從共同輸入結構進行而不管源代碼的語言如何。
[0061]如上所述,語法樹包含關系連接的多個運算符。語法樹可包含多種不同類型的運算符。也就是說,不同運算符可對應于源代碼中的正則表達式所實施的不同函數(shù)。
[0062]在框114處,將語法樹轉換成自動機。自動機包括FSM的軟件模型且可因此分類為確定性或非確定性。確定性自動機在給定時間具有單個執(zhí)行路徑,而非確定性自動機具有多個同時執(zhí)行路徑。所述自動機包括多個狀態(tài)。為了將語法樹轉換成自動機,將語法樹中的運算符及運算符之間的關系轉換成狀態(tài),其中所述狀態(tài)之間具有轉變。在一實例中,可部分地基于FSM晶格30的硬件而轉換所述自動機。
[0063]在一實例中,用于自動機的輸入符號包含字母、數(shù)字O到9及其它可打印字符的符號。在一實例中,輸入符號由字節(jié)值O到255 (包含O及255)表不。在一實例中,自動機可表示為有向圖,其中所述圖的節(jié)點對應于狀態(tài)集。在一實例中,輸入符號a (g卩,δ (ρ, α))上從狀態(tài)P到狀態(tài)q的轉變由從節(jié)點P到節(jié)點q的有向連接展示。在一實例中,自動機的反轉產生新的自動機,其中某一符號α上的每一轉變p —q在同一符號上反轉q —ρ。在反轉中,開始狀態(tài)變?yōu)樽罱K狀態(tài)且最終狀態(tài)變?yōu)殚_始狀態(tài)。在一實例中,自動機所辨識(例如,匹配)的語言是當依序輸入到所述自動機中時將到達最終狀態(tài)的所有可能字符串的集。所述自動機所辨識的語言中的每一串追蹤從開始狀態(tài)到一或多個最終狀態(tài)的路徑。
[0064]在框116處,在構造自動機之后,優(yōu)化所述自動機以除其它之外還減小其復雜度及大小??赏ㄟ^組合冗余狀態(tài)來優(yōu)化所述自動機。
[0065]在框118處,將經優(yōu)化的自動機轉換成網表。將所述自動機轉換成網表將所述自動機的每一狀態(tài)映射到FSM晶格30上的硬件元件(例如,SME34、36,其它元件)并確定所述硬件元件之間的連接。
[0066]在框120處,放置網表以選擇對應于所述網表的每一節(jié)點的目標裝置的特定硬件元件(例如,SME34、36,專用元件58)。在一實例中,放置基于FSM晶格30的一股輸入及輸出約束而選擇每一特定硬件元件。
[0067]在框122處,路由所放置的網表以確定用于可編程交換元件(例如,塊間交換元件
40、塊內交換元件42及行內交換元件44)的設定,以便將選定硬件元件耦合在一起以實現(xiàn)網表描述的連接。在一實例中,通過確定FSM晶格30的將用以連接選定硬件元件及用于可編程交換元件的設定的特定導體來確定用于可編程交換元件的設定。相比于框120處的放置,路由可能考慮硬件元件之間的連接的更特定限制。因此,假定有對FSM晶格30上的導體的實際限制,路由可調整如通過全局放置所確定的所述硬件元件中的一些硬件元件的位置以便做出適當連接。
[0068]一旦網表經放置及路由,便可將所述經放置及路由的網表轉換成用于編程FSM晶格30的多個位。所述多個位在本文中稱作圖像。
[0069]在框124處,由編譯 器20公布圖像。所述圖像包括用于編程FSM晶格30的特定硬件元件的多個位。在其中所述圖像包括多個位(例如,?及I)的實施例中,所述圖像可稱為二進制圖像??蓪⑺鑫患虞d到FSM晶格30上以編程SME34、36、專用元件58及可編程交換元件的狀態(tài),以使得經編程FSM晶格30實施具有源代碼所描述的功能性的FSM。放置(框120)及路由(框122)可將FSM晶格30中的特定位置處的特定硬件元件映射到自動機中的特定狀態(tài)。因此,所述圖像中的位可編程特定硬件元件以實施所要功能。在一實例中,可通過將機器代碼保存到計算機可讀媒體來公布所述圖像。在另一實例中,可通過在顯示裝置上顯示所述圖像來公布所述圖像。在又一實例中,可通過將所述圖像發(fā)送到另一裝置(例如用于將所述圖像加載到FSM晶格30上的編程裝置)來公布所述圖像。在再一實例中,可通過將所述圖像加載到FSM晶格(例如,F(xiàn)SM晶格30)上來公布所述圖像。
[0070]在一實例中,可通過將位值從圖像直接加載到SME34、36及其它硬件元件或通過將圖像加載到一或多個寄存器中且然后將所述位值從所述寄存器寫入到SME34、36及其它硬件元件來將所述圖像加載到FSM晶格30上。在一實例中,F(xiàn)SM晶格30的硬件元件(例如,SME34、36、專用元件58、可編程交換元件40、42、44)經存儲器映射以使得編程裝置及/或計算機可通過將所述圖像寫入到一或多個存儲器地址而將所述圖像加載到FSM晶格30上。
[0071]本文中所描述的方法實例可為至少部分地機器或計算機實施的。一些實例可包含用指令編碼的計算機可讀媒體或機器可讀媒體,所述指令可操作以配置電子裝置以執(zhí)行如在以上實例中所述的方法。此類方法的實施方案可包含代碼,例如微碼、匯編語言代碼、高級語言代碼等。此代碼可包含用于執(zhí)行各種方法的計算機可讀指令。所述代碼可形成計算機程序產品的部分。此外,所述代碼可在執(zhí)行期間或在其它時間有形地存儲于一或多個易失性或非易失性計算機可讀媒體上。這些計算機可讀媒體可包含(但不限于)硬盤、可裝卸磁盤、可裝卸光盤(例如,壓縮光盤及數(shù)字視頻光盤)、盒式磁帶、存儲卡或存儲棒、隨機存取存儲器(RAM)、只讀存儲器(ROM)等。
[0072]現(xiàn)在參考圖9,其圖解說明狀態(tài)機引擎14的實施例。如先前所描述,狀態(tài)機引擎14經配置以經由數(shù)據(jù)總線從源(例如存儲器16)接收數(shù)據(jù)。在所圖解說明的實施例中,數(shù)據(jù)可經由總線接口(例如DDR3總線接口 130)發(fā)送到狀態(tài)機引擎14。DDR3總線接口 130可能夠以大于或等于I千兆字節(jié)/秒的速率交換數(shù)據(jù)。如將了解,取決于將分析的數(shù)據(jù)的源,總線接口 130可為用于將數(shù)據(jù)交換到數(shù)據(jù)源及將數(shù)據(jù)從數(shù)據(jù)源交換到狀態(tài)機引擎14的任何適合總線接口,例如“與非”快閃接口、PCI接口等。如先前所描述,狀態(tài)機引擎14包含經配置以分析數(shù)據(jù)的一或多個FSM晶格30。每一 FSM晶格30可劃分成兩半晶格。在所圖解說明的實施例中,每一半晶格可包含24K SME(例如,SME34、36)以使得晶格30包含48KSME。晶格30可包括如先前關于圖2到5所描述而布置的任何所要數(shù)目個SME。此外,盡管圖解說明了僅一個FSM晶格30,但狀態(tài)機引擎14可包含多個FSM晶格30,如先前所描述。
[0073]將分析的數(shù)據(jù)可在總線接口 130處接收且經由若干個緩沖器及緩沖器接口傳輸?shù)紽SM晶格30。在所圖解說明的實施例中,數(shù)據(jù)路徑包含數(shù)據(jù)緩沖器132、過程緩沖器134及排間(IR)總線與過程緩沖器接口 136。數(shù)據(jù)緩沖器132經配置以接收且暫時存儲將分析的數(shù)據(jù)。在一個實施例中,存在兩個數(shù)據(jù)緩沖器132(數(shù)據(jù)緩沖器A及數(shù)據(jù)緩沖器B)。可將數(shù)據(jù)存儲于兩個數(shù)據(jù)緩沖器132中的一者中,而從另一數(shù)據(jù)緩沖器132清空數(shù)據(jù)以供由FSM晶格30分析。在所圖解說明的實施例中,數(shù)據(jù)緩沖器132可各自為32千字節(jié)。IR總線與過程緩沖器接口 136可促進到過程緩沖器134的數(shù)據(jù)傳送。IR總線與過程緩沖器136確保數(shù)據(jù)由FSM晶格30按次序處理。IR總線與過程緩沖器136可協(xié)調數(shù)據(jù)交換、時序信息、打包指令等以使得按正確次序接收及分析數(shù)據(jù)。通常,IR總線與過程緩沖器136允許經由FSM晶格30的邏輯排并行分析多個數(shù)據(jù)集。
[0074]在所圖解說明的實施例中,狀態(tài)機引擎14還包含解壓縮器138及壓縮器140以幫助經由狀態(tài)機引擎14傳送大量數(shù)據(jù)。壓縮器140與解壓縮器138協(xié)同工作以使得可將數(shù)據(jù)壓縮以最小化數(shù)據(jù)傳送時間。通過壓縮將分析的數(shù)據(jù),可最小化總線利用時間?;谟删幾g器20提供的信息,可將屏蔽提供到狀態(tài)機引擎14以提供可能不對其使用狀態(tài)機的信息。壓縮器140及解壓縮器138還可經配置以處置變化的突發(fā)長度的數(shù)據(jù)。通過填補經壓縮數(shù)據(jù)及包含關于每一經壓縮區(qū)域何時結束的指示符,壓縮器140可經由狀態(tài)機引擎14改進總體處理速度。壓縮器140及解壓縮器138還可用以壓縮及解壓縮在由FSM晶格30分析之后的匹配結果數(shù)據(jù)。
[0075]如先前所描述,F(xiàn)SM晶格30的輸出可包括狀態(tài)向量。所述狀態(tài)向量包括FSM晶格30的可編程元件的狀態(tài)(例如,經激活或未經激活)。每一狀態(tài)向量可暫時存儲于狀態(tài)向量高速緩沖存儲器142中以供進一步層次式處理及分析。也就是說,可存儲每一狀態(tài)機的狀態(tài)以使得最終狀態(tài)可用于進一步分析,同時釋放狀態(tài)機以用于重新編程及/或新數(shù)據(jù)集的進一步分析。如同典型高速緩沖存儲器,狀態(tài)向量高速緩沖存儲器允許存儲信息(此處,狀態(tài)向量)以供快速擷取及使用(此處,(例如)由FSM晶格30擷取及使用)。額外緩沖器(例如狀態(tài)向量存儲器緩沖器、狀態(tài)向量中間輸入緩沖器146及狀態(tài)向量中間輸出緩沖器148)可連同狀態(tài)向量高速緩沖存儲器142 —起利用以適應狀態(tài)向量的快速分析及存儲,同時遵守經由狀態(tài)機引擎14的包傳輸協(xié)議。
[0076]一旦由FSM晶格30產生所關注結果,便可將匹配結果存儲于匹配結果存儲器150中。也就是說,可將指示匹配(例如,檢測到所關注型式)的“匹配向量”存儲于匹配結果存儲器150中。舉例來說,然后可將匹配結果發(fā)送到匹配緩沖器152以供經由總線接口 130傳輸?shù)教幚砥?2。如先前所描述,可壓縮匹配結果。
[0077]也可在狀態(tài)機引擎14中提供額外寄存器及緩沖器。例如,狀態(tài)機引擎14可包含控制與狀態(tài)寄存器154。另外,可提供恢復與編程緩沖器156以便最初用于編程FSM晶格30或在分析期間恢復FSM晶格30中的機器的狀態(tài)。類似地,也可提供保存與修復映射緩沖器158以用于存儲用于設置及使用的保存與修復映射。
[0078]圖10圖解說明類似于上文關于圖4所論述的行的行38的第二實例。行38可包含可編程行內交換元件44及行互連/互連件導體68、70 (其也可稱為“行路由線”,如下文所描述)。
[0079]圖10的行38可包含八個G0T60、專用元件58、輸入62、輸入64、輸出66、匹配元件160、多個行路由線 162、164、166、168、170、172、174、176、178、180、182、184、186、188、190及192 (下文中統(tǒng)稱為“行路由線162到192”)、專用元件路由線194及多個結點196。
[0080]此外,除耦合到圖11中的所圖解說明SME34、36之外,局部路由矩陣172也可耦合到特定行38中的G0T60的所有對的SME34、36。因此,局部路由矩陣172可包含可編程行內交換元件44及行互連/互連件導體68、70 (其也可稱為“行路由線”,如下文所描述)。
[0081]圖10中所圖解說明的G0T60及專用元件58實質上類似于先前關于圖4所論述的G0T60及專用元件58。因此,每一 G0T60接收輸入62,輸入62可為統(tǒng)一啟用輸入以作為用于SME34的檢測單兀86的啟用信號而操作。同樣,每一 G0T60也接收輸入64,輸入64也可為統(tǒng)一啟用輸入以作為用于SME36的檢測單元86的啟用信號而操作。這些統(tǒng)一啟用輸入62,64可激活SME34、36的檢測單元86以輸出由相應SME執(zhí)行的分析的相應結果(舉例來說,來自單個SME34的經分析數(shù)據(jù)流中的匹配),所述結果可連同來自其它SME34、36的結果一起用以(舉例來說)搜索數(shù)據(jù)流中的型式。舉例來說,統(tǒng)一啟用輸入62及統(tǒng)一啟用輸入64允許選擇性激活SME34、36以使得由作用SME34、36中的每一者產生的結果可用作數(shù)據(jù)流的總體較寬廣分析的部分。
[0082]可在輸出66上從G0T60選擇性地提供由所述GOT的SME34、36產生的結果。在一個實施例中,G0T60的可能輸出可不包含任何輸出,可包含第一 SME34的輸出(即,輸出72)、第二 SME36的輸出(S卩,輸出74)或者第一 SME34的輸出或第二 SME36的輸出(S卩,輸出72或輸出74)。因此,G0T60可經編程以從G0T60輸出選定結果。此編程可(舉例來說)基于在FSM晶格30的初始編程階段期間執(zhí)行的經加載圖像而實現(xiàn)。來自G0T60的結果可提供到匹配元件160,匹配元件160可操作以輸出針對給定數(shù)據(jù)流搜索或數(shù)據(jù)流搜索的一部分從行38產生的選定結果。
[0083]另外,行38可包含行路由線162到192 (其也可稱為行互連/互連件導體)。在本發(fā)明實施例中,存在可選擇性地耦合到八個G0T60及專用元件58的十六個行線162到192。然而,應了解,可連同行38 —起利用更少或更多行路由線。
[0084]行路由線162到192中的每一者可用以沿輸入62、64為一或多個G0T60的SME34、36中的任一者提供啟用信號。因此,通過使用這些行路由線162到192,可激活任何特定SME(例如,SME34)的任何特定檢測單元86。此可通過將行路由線162到192選擇性地耦合(例如,根據(jù)經加載圖像)到SME34、36的統(tǒng)一啟用輸入62、64而實現(xiàn)。此外,為了提供在將啟用信號提供到SME34、36中的進一步靈活性,可在給定G0T60的兩個SME34、36當中劃分行路由線162到192。舉例來說,可利用行路由線162、164、166、168、170、172、174及176來激活行38中的SME34、36中的任一者。舉例來說,G0T60可將輸出66傳輸?shù)今詈系狡涞男新酚删€(舉例來說,行路由線162)。此信號可傳輸?shù)狡渲衅淇陕酚?舉例來說,在行路由線164上)到行38中的額外G0T60的塊內交換器中。另外,行路由線178、182、186及190可(舉例來說)通過從塊內交換器42接收信號而激活行38中的SME34,而行路由線180、184、188及192可經由(舉例來說)從塊內交換器42接收的信號而激活行38中的SME36。以此方式,可減小行路由線162到192的總體數(shù)目,同時仍允許激活行38中的SME34、36中的任一者的任何檢測單元86的總體靈活性及能力。
[0085]如圖10中所圖解說明,行路由線162到192中的每一者包含多個結點196。這些結點196可(舉例來說)包含圖3的行內交換元件44,因為結點196可用以將任何G0T60選擇性地耦合到任何其它G0T60或將任何G0T60選擇性地耦合到在行38內(或者,就此來說,在另一行及/或另一塊內)的任何其它元件(例如,專用元件58)。然而,這些連接可受可用結點196限制。舉例來說,行路由線162、164、166、168、170、172、174及176中的每一者可用以激活行38中的SME34、36中的任一者。然而,行路由線162、164、166、168、170、172、174及176中的每一者也可選擇性地耦合到G0T60中的相應不同者的輸出。舉例來說,來自G0T60中的任一者的輸出可僅在行路由線162、164、166、168、170、172、174及176中的可耦合到其的相應者上從所述G0T60提供。因此,在一個實施例中,由于行路由線162、164、166、168、170、172、174 及 176 可耦合到 G0T60 的輸出 66,因此行路由線 162、164、166、168、170、172、174及176可將信號提供(例如,驅逐)到塊內交換器42。相比之下,在一個實施例中,行路由線178、180、182、184、186、188、190及192可從塊內交換器42接收信號(例如,由信號驅動),所述信號可為從(舉例來說)其它行38或塊32接收的。
[0086]除行路由線162到192之外,行38也可包含耦合到專用元件58的專用元件路由線194。類似于行路由線162、164、166、168、170、172、174及176,專用路由線194可將信號提供(例如,驅逐)到塊內交換器42。在一個實施例中,專用元件路由線194也可耦合到匹配元件160。舉例來說,如果專用元件58包括計數(shù)器,那么可沿專用路由線194提供計數(shù)器的輸出。類似地,如果專用元件58包含布爾邏輯元件(例如布爾單元),那么可沿專用路由線194提供布爾邏輯元件的輸出。通過使用這些專用元件,可將重復搜索(例如,找出一元素達十次)或經級聯(lián)搜索(例如,找出元素x、y及z)簡化成可沿專用路由線194提供到塊內交換器42及匹配元件160中的任一者或兩者的單個輸出。
[0087]圖11中呈現(xiàn)匹配元件160的更詳細圖解說明。如所圖解說明,匹配元件160可包含四個數(shù)據(jù)輸入198、200、202及204、兩個輸出以及六個控制輸入210、212、214、216、218及220。此外,所述匹配元件可包含兩個2對I多路復用器222、224。盡管圖解說明2對I多路復用器222、224,但應注意,可在需要時(舉例來說,為允許路由/輸出配置中的靈活性)或在硅空間允許時代替2對I多路復用器224、224而利用其它配置(例如3對I多路復用器、4對I多路復用器或其它元件)。
[0088]在一個實施例中,匹配元件160的數(shù)據(jù)輸入198耦合到行路由線176,數(shù)據(jù)輸入200耦合到行路由線174,數(shù)據(jù)輸入202耦合到專用路由線194且數(shù)據(jù)輸入204耦合到行路由線168。這些特定線的選擇僅為說明性的且已經選擇以證明從行38接收輸出信號中的靈活性。通過將行路由線168及行路由線176選擇為連接到匹配元件160,可建立G0T60之間的奇偶。舉例來說,所有G0T60的第一半部(G0T60零到三)中的一個G0T60對數(shù)據(jù)流的至少一部分執(zhí)行的第一分析的結果可在路由線168上提供到匹配元件160,而所有G0T60的第二半部(G0T60四到七)中的另一 G0T60對數(shù)據(jù)流的至少一部分執(zhí)行的第二分析的結果可在路由線176上提供到匹配元件160。以此方式分裂輸入200、204可允許減少的路徑將結果提供到匹配元件160。另外,通過在匹配元件160處沿專用路由線194從專用元件58接收結果,可將經級聯(lián)搜索的結果一次提供到匹配元件160。最終,行路由線174的選擇給行38的整個系統(tǒng)添加靈活性。然而,如所述,這些選擇僅為說明性的。
[0089]如所圖解說明,匹配元件160的數(shù)據(jù)輸入198、200可提供到2對I多路復用器222,而匹配元件160的數(shù)據(jù)輸入202、204可提供到2對I多路復用器224。2對I多路復用器222、224還可各自從可(舉例來說)基于在FSM晶格30的初始編程階段期間執(zhí)行的經加載圖像而編程的控制輸入210、212、214、216、218及220接收控制信號。在一個實施例中,2對I多路復用器222可接收來自控制輸入210的選擇信號S0、來自控制輸入212的選擇信號SI及來自控制輸入214的輸出啟用信號。類似地,2對I多路復用器224可接收來自控制輸入216的選擇信號S0、來自控制輸入218的選擇信號SI及來自控制輸入220的輸出啟用信號。選擇信號S0、S1可用以選擇將所述數(shù)據(jù)輸入中的哪些數(shù)據(jù)輸入分別提供到輸出206及208以用于將數(shù)據(jù)搜索的結果提供到(舉例來說)輸出塊54。此外,使用多個選擇線載運選擇信號S0、S1可允許在不借助反相器的情況下構建2對I多路復用器222、224中的每一者,因此減少實施2對I多路復用器222、224所需的面積。然而,在一個實施例中,可利用載運單個選擇信號(例如,so)的單個選擇線。
[0090]另外,來自控制輸入214的輸出啟用信號可為允許僅在數(shù)據(jù)輸入198、200、202及204上的信號穩(wěn)定時提供輸出206及208的時鐘信號或其它啟用信號。圖13圖解說明陳述來自控制輸入210的選擇信號S0、來自控制輸入212的選擇信號SI可如何以可編程方式選擇2對I多路復用器224的輸出208的實例的真值表226。
[0091]如圖13中所展示,圖解說明對應于匹配元件160的輸出208的真值表226。應注意,在真值表226中表示的輸出208假定已在2對I多路復用器224處接收到來自控制輸入220的輸出啟用信號。如真值表226中所圖解說明,當來自控制輸入216的選擇信號SO及來自控制輸入218的選擇信號SI兩者均為低(即,O)時,2對I多路復用器224的輸出208將為低的。舉例來說,將不從匹配元件160提供來自行38的結果。當來自控制輸入216的選擇信號SO為高(S卩,I)且來自控制輸入218的選擇信號SI為低時,2對I多路復用器224的輸出208將為行路由線168上的結果。相反地,當來自控制輸入216的選擇信號SO為低且來自控制輸入218的選擇信號SI為高時,2對I多路復用器224的輸出208將為專用路由線194上的結果。最終,借以使來自控制輸入216的選擇信號SO及來自控制輸入218的選擇信號SI兩者均為高的條件被禁止。因此,在匹配元件160的編程期間避免了此狀態(tài)。以此方式,匹配元件160可以可編程方式不選擇任何輸出、選擇來自第一數(shù)據(jù)輸入204的輸出(行路由線168上的結果)或來自第二數(shù)據(jù)輸入202的輸出(專用路由線194上的結果)。此外,應注意,匹配元件可以不限于圖12中所圖解說明的特定實施例的其它可編程配置操作。
[0092]盡管可易于對本發(fā)明做出各種修改及替代形式,但已在圖式中通過舉例方式展示且在本文中詳細描述了特定實施例。然而,應理解,本發(fā)明并不意欲限于所揭示的特定形式。而是,本發(fā)明意欲涵蓋如由以下隨附申請專利范圍定義的本發(fā)明的精神及范疇內的所有修改形式、等效形式及替代方案。
【權利要求】
1.一種裝置,其包括: 匹配元件,其包括: 第一數(shù)據(jù)輸入,其經配置以接收第一結果,其中所述第一結果為狀態(tài)機的元件對數(shù)據(jù)流的至少一部分執(zhí)行的分析的結果; 第二數(shù)據(jù)輸入,其經配置以接收第二結果,其中所述第二結果為所述狀態(tài)機的另一元件對所述數(shù)據(jù)流的至少一部分執(zhí)行的分析的結果;及 輸出,其經配置以選擇性地提供所述第一結果或所述第二結果。
2.根據(jù)權利要求1所述的裝置,其中所述匹配元件包括: 第一控制輸入,其經配置以接收第一控制信號;及 第二控制輸入,其經配置以接收第二控制信號。
3.根據(jù)權利要求2所述的裝置,其中所述輸出經配置以選擇性地提供所述第一結果或所述第二結果包括:所述輸出經配置以基于所述第一控制信號及所述第二控制信號而選擇性地提供所述第一結果或所述第二結果。
4.根據(jù)權利要求3所述的裝置,其中所述匹配元件包括經配置以接收輸出啟用信號的第三控制輸入。
5.根據(jù)權利要求4所述的裝置,其中所述輸出經配置以基于所述第一控制信號及所述第二控制信號而提供所述第一結果或所述第二結果包括:所述匹配元件經配置以基于所述第一控制信號及所述第二控制信號以及所述輸出啟用信號而提供所述第一結果或所述第二結果。
6.根據(jù)權利要求4所述的裝置,其中所述匹配元件包括耦合到所述第一數(shù)據(jù)輸入、所述第二數(shù)據(jù)輸入、所述第一控制輸入、所述第二控制輸入、所述第三控制輸入及所述輸出的2對I多路復用器。
7.根據(jù)權利要求1所述的裝置,其中所述輸出經配置以選擇性地提供所述第一結果或所述第二結果包括:所述輸出經配置以選擇性地不提供任何輸出、提供所述第一結果或所述第二結果。
8.根據(jù)權利要求2所述的裝置,其中所述匹配元件包括: 第三數(shù)據(jù)輸入,其經配置以接收第三結果,其中所述第三結果為所述狀態(tài)機的第三元件對所述數(shù)據(jù)流的至少一部分執(zhí)行的分析的結果; 第四數(shù)據(jù)輸入,其經配置以接收第四結果,其中所述第四結果包括由所述狀態(tài)機的專用元件檢測的結果的組合;及 第二輸出,其經配置以選擇性地提供所述第三結果或所述第四結果。
9.根據(jù)權利要求8所述的裝置,其中所述匹配元件包括: 第三控制輸入,其經配置以接收第三控制信號;及 第四控制輸入,其經配置以接收第四控制信號。
10.根據(jù)權利要求9所述的裝置,其中所述第二輸出經配置以選擇性地提供所述第三結果或所述第四結果包括:所述第二輸出經配置以基于所述第三控制信號及所述第四控制信號而選擇性地提供所述第三結果或所述第四結果。
11.根據(jù)權利要求10所述的裝置,其中所述匹配元件包括經配置以接收輸出啟用信號的第五控制輸入。
12.根據(jù)權利要求11所述的裝置,其中所述匹配元件經配置以基于所述第三控制信號及所述第四控制信號而提供所述第三結果或所述第四結果包括:所述匹配元件經配置以基于所述第三控制信號及所述第四控制信號以及所述輸出啟用信號而提供所述第三結果或所述第四結果。
13.根據(jù)權利要求11所述的裝置,其中所述匹配元件包括耦合到所述第三數(shù)據(jù)輸入、所述第四數(shù)據(jù)輸入、所述第三控制輸入、所述第四控制輸入、所述第五控制輸入及所述第二輸出的2對I多路復用器。
14.一種裝置,其包括: 狀態(tài)機,其包括: 多個塊,其各自包括: 多個行,其各自包括: 第一元件,其經配置以提供對數(shù)據(jù)流的至少一部分執(zhí)行的分析的第一結果; 第二元件,其經配置以提供對所述數(shù)據(jù)流的至少一部分執(zhí)行的分析的第二結果;及 匹配元件,其包括: 第一輸入,其經配置以接收所述第一結果; 第二輸入,其經配置以接收所述第二結果 '及 輸出,其經配置以選擇性地提供所述第一結果或所述第二結果。
15.根據(jù)權利要求1所述的裝置,其中所述輸出經配置以選擇性地提供所述第一結果或所述第二結果包括:所述輸出經配置以選擇性地不提供任何輸出、提供所述第一結果或所述第二結果。
16.根據(jù)權利要求14所述的裝置,其中所述多個行中的每一者包括經配置以選擇性地耦合到所述第一元件及所述第二元件的多個行路由線。
17.根據(jù)權利要求16所述的裝置,其中所述多個行中的每一者包括經配置以將選定行路由線選擇性地耦合到所述第一元件及所述第二元件中的每一者的多個結點。
18.根據(jù)權利要求17所述的裝置,其中所述多個結點中的至少一者經配置以將所述行路由線中的至少一者選擇性地耦合到所述匹配元件。
19.根據(jù)權利要求14所述的裝置,其中所述多個行中的每一者包括經配置以提供專用結果的專用元件,其中所述專用結果是基于來自對所述數(shù)據(jù)流的至少一部分執(zhí)行的分析的結果的組合。
20.根據(jù)權利要求19所述的裝置,其中所述多個行中的每一者包括經配置以提供對所述數(shù)據(jù)流的至少一部分執(zhí)行的分析的第三結果的第三元件。
21.根據(jù)權利要求20所述的裝置,其中所述匹配元件進一步包括: 第三輸入,其經配置以接收所述第三結果; 第四輸入,其經配置以接收所述專用結果 '及 第二輸出,其經配置以選擇性地提供所述第三結果或所述專用結果。
22.—種方法,其包括: 在匹配元件的第一數(shù)據(jù)輸入處接收狀態(tài)機的第一元件對數(shù)據(jù)流的至少一部分執(zhí)行的分析的第一結果; 在所述匹配元件的第二數(shù)據(jù)輸入處接收所述狀態(tài)機的第二元件對所述數(shù)據(jù)流的至少一部分執(zhí)行的分析的第二結果;及 從所述匹配元件選擇性地輸出所述第一結果或所述第二結果。
23.根據(jù)權利要求22所述的方法,其包括: 在所述匹配元件處接收第一控制信號;及 在所述匹配元件處接收第二控制信號。
24.根據(jù)權利要求23所述的方法,其中從所述匹配元件選擇性地輸出所述第一結果或所述第二結果包括:基于所述第一控制信號及所述第二控制信號而從所述匹配元件選擇性地不輸出任何輸出、輸出所述第一結果或所述第二結果。
25.根據(jù)權利要求24所述的方法,其進一步包括在所述匹配元件處接收輸出啟用信號,其中基于所述第一控制信號及所述第二控制信號而從所述匹配元件選擇性地不輸出任何輸出、輸出所述第一結果或所述第二結果包括:基于所述第一控制信號及所述第二控制信號以及所述輸出啟用信號而從所述匹配元件選擇性地不輸出任何輸出、輸出所述第一結果或所述第二結果。
26.根據(jù)權利要求26所述的方法,其包括: 在所述匹配元件處接收所述狀態(tài)機的第三元件對所述數(shù)據(jù)流的至少一部分執(zhí)行的分析的第三結果; 在所述匹配元件處接收第四結果,其中所述第四結果包括由所述狀態(tài)機的專用元件檢測的結果的組合;及 從所述匹配元件選擇性地輸出所述第三結果或所述第四結果。
27.根據(jù)權利要求27所述的方法,其包括: 在所述匹配元件處接收第三控制信號;及 在所述匹配元件處接收第四控制信號; 其中從所述匹配元件選擇性地輸出所述第三結果或所述第四結果包括:基于所述第三控制信號及所述第四控制信號而從所述匹配元件選擇性地輸出所述第三結果或所述第四結果。
28.根據(jù)權利要求28所述的方法,其進一步包括在所述匹配元件處接收輸出啟用信號,其中基于所述第三控制信號及所述第四控制信號而從所述匹配元件選擇性地輸出所述第三結果或所述第四結果包括:基于所述第三控制信號及所述第四控制信號以及所述輸出啟用信號而從所述匹配元件選擇性地輸出所述第三結果或所述第四結果。
29.一種裝置,其包括: 匹配元件,其包括多個數(shù)據(jù)輸入,所述數(shù)據(jù)輸入經配置以接收已在一個以上多種狀態(tài)機元件中檢測到的數(shù)據(jù)流的分析的結果的指示。
【文檔編號】G06K9/00GK103999035SQ201280062293
【公開日】2014年8月20日 申請日期:2012年12月5日 優(yōu)先權日:2011年12月15日
【發(fā)明者】戴維·R·布朗, 哈洛德·B·諾耶思 申請人:美光科技公司