用于處置狀態(tài)機(jī)引擎所接收的數(shù)據(jù)的方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明揭示一種用以分析數(shù)據(jù)的數(shù)據(jù)分析系統(tǒng)(10)。所述數(shù)據(jù)分析系統(tǒng)(10)包含經(jīng)配置以接收待分析的數(shù)據(jù)的數(shù)據(jù)緩沖器(132)。所述數(shù)據(jù)分析系統(tǒng)(10)還包含狀態(tài)機(jī)品格(30)。所述狀態(tài)機(jī)品格(30)包含多個(gè)數(shù)據(jù)分析元件,且每一數(shù)據(jù)分析元件(34、36)包含經(jīng)配置以分析所述數(shù)據(jù)的至少一部分且輸出所述分析的結(jié)果的多個(gè)存儲(chǔ)器單元(80)。所述數(shù)據(jù)分析系統(tǒng)(10)包含經(jīng)配置以從所述數(shù)據(jù)緩沖器(132)接收所述數(shù)據(jù)且將所述數(shù)據(jù)提供到所述狀態(tài)機(jī)品格(30)的緩沖器接口(136)。
【專利說明】用于處置狀態(tài)機(jī)引擎所接收的數(shù)據(jù)的方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明的實(shí)施例大體上涉及電子裝置,且更具體來說,在某些實(shí)施例中涉及具有用于數(shù)據(jù)分析的并行裝置的電子裝置。
【背景技術(shù)】
[0002]對(duì)常規(guī)基于馮?諾伊曼(von Neumann)的計(jì)算機(jī)執(zhí)行復(fù)雜數(shù)據(jù)分析(例如,模式識(shí)另IJ)的效率可能較低。然而,生物大腦(尤其人類大腦)善于執(zhí)行復(fù)雜的數(shù)據(jù)分析。當(dāng)前研究表明,人類大腦使用大腦新皮質(zhì)中的一系列經(jīng)階層式組織的神經(jīng)元層執(zhí)行數(shù)據(jù)分析。階層的較低層中的神經(jīng)元分析來自(例如)感覺器官的“原始信號(hào)”,而較高層中的神經(jīng)元分析來自較低層級(jí)中的神經(jīng)元的信號(hào)輸出。大腦新皮質(zhì)中的此階層式系統(tǒng)可能結(jié)合大腦的其它區(qū)域完成復(fù)雜數(shù)據(jù)分析,此使人類能夠執(zhí)行例如空間推理、意識(shí)思考及復(fù)雜語言等高級(jí)功能。
[0003]在計(jì)算領(lǐng)域中,舉例來說,模式識(shí)別任務(wù)越來越具有挑戰(zhàn)性。計(jì)算機(jī)之間發(fā)射的數(shù)據(jù)量不斷增大且用戶希望檢測(cè)的模式數(shù)目日益增加。例如,通常通過在數(shù)據(jù)流中搜索模式(例如,特定詞組或代碼片段)來檢測(cè)垃圾郵件或惡意軟件。模式數(shù)目隨著垃圾郵件及惡意軟件的多樣化而增加,這是因?yàn)榭蓪?shí)施新模式以搜索新變型。針對(duì)這些模式中的每一者搜索數(shù)據(jù)流可形成計(jì)算瓶頸。通常,當(dāng)接收到數(shù)據(jù)流時(shí),針對(duì)每一模式一次一個(gè)地搜索數(shù)據(jù)流。在系統(tǒng)準(zhǔn)備搜索數(shù)據(jù)流的下一部分之前的延遲隨模式數(shù)目增加。因此,模式識(shí)別可使數(shù)據(jù)的接收減慢。
[0004]硬件已經(jīng)設(shè)計(jì)以針對(duì)模式搜索數(shù)據(jù)流,但是此硬件通常不能在給定的時(shí)間量期間處理足夠的數(shù)據(jù)量。經(jīng)配置以搜索數(shù)據(jù)流的一些裝置通過將數(shù)據(jù)流散布在多個(gè)電路之間來進(jìn)行此操作。所述電路各自確定數(shù)據(jù)流是否與模式的一部分匹配。通常,大量電路并行操作,其中每一者大體上同時(shí)搜索數(shù)據(jù)流。然而,至今仍未存在實(shí)際上允許以與生物大腦的方式更相當(dāng)?shù)姆绞綀?zhí)行復(fù)雜數(shù)據(jù)分析的系統(tǒng)。開發(fā)此系統(tǒng)是合乎需要的。
【專利附圖】
【附圖說明】
[0005]圖1說明根據(jù)本發(fā)明的各種實(shí)施例的具有狀態(tài)機(jī)引擎的系統(tǒng)的實(shí)例。
[0006]圖2說明根據(jù)本發(fā)明的各種實(shí)施例的圖1的狀態(tài)機(jī)引擎的有限狀態(tài)機(jī)(FSM)品格的實(shí)例。
[0007]圖3說明根據(jù)本發(fā)明的各種實(shí)施例的圖2的FSM品格的塊的實(shí)例。
[0008]圖4說明根據(jù)本發(fā)明的各種實(shí)施例的圖3的塊的一行的實(shí)例。
[0009]圖5說明根據(jù)本發(fā)明的各種實(shí)施例的圖4的行的含兩個(gè)元件的群組的實(shí)例。
[0010]圖6說明根據(jù)本發(fā)明的各種實(shí)施例的有限狀態(tài)機(jī)圖表的實(shí)例。
[0011]圖7說明根據(jù)本發(fā)明的各種實(shí)施例的使用FSM品格實(shí)施的二層級(jí)階層的實(shí)例。
[0012]圖8說明根據(jù)本發(fā)明的各種實(shí)施例的編譯器將源代碼轉(zhuǎn)換為二進(jìn)制文件以編程圖2的FSM品格的方法的實(shí)例。
[0013]圖9說明根據(jù)本發(fā)明的各種實(shí)施例的狀態(tài)機(jī)引擎。
[0014]圖10說明根據(jù)本發(fā)明的各種實(shí)施例的布置成一排裝置的多個(gè)物理狀態(tài)機(jī)引擎的實(shí)例。
[0015]圖11說明根據(jù)本發(fā)明的各種實(shí)施例的分組成待提供到狀態(tài)機(jī)引擎的數(shù)據(jù)塊的數(shù)據(jù)分段的實(shí)例。
[0016]圖12說明根據(jù)本發(fā)明的各種實(shí)施例的插入于圖11的數(shù)據(jù)塊的數(shù)據(jù)分段之間的數(shù)據(jù)填補(bǔ)的實(shí)例。
[0017]圖13說明根據(jù)本發(fā)明的各種實(shí)施例的插入于圖12的數(shù)據(jù)塊的數(shù)據(jù)分段之后的數(shù)據(jù)填補(bǔ)的實(shí)例。
[0018]圖14說明根據(jù)本發(fā)明的各種實(shí)施例的經(jīng)組織以發(fā)射到狀態(tài)機(jī)引擎的數(shù)據(jù)緩沖器系統(tǒng)的圖13的數(shù)據(jù)塊的實(shí)例。
[0019]圖15說明根據(jù)本發(fā)明的各種實(shí)施例的由狀態(tài)機(jī)引擎接收的數(shù)據(jù)塊的實(shí)例。
[0020]圖16說明根據(jù)本發(fā)明的各種實(shí)施例的存儲(chǔ)于狀態(tài)機(jī)引擎的數(shù)據(jù)緩沖器系統(tǒng)中的圖15的數(shù)據(jù)塊的實(shí)例。
[0021]圖17說明根據(jù)本發(fā)明的各種實(shí)施例的正從數(shù)據(jù)緩沖器系統(tǒng)提供到多個(gè)FSM品格的數(shù)據(jù)的實(shí)例。
[0022]圖18說明根據(jù)本發(fā)明的各種實(shí)施例的正提供到多個(gè)邏輯群組中的數(shù)據(jù)的實(shí)例。
【具體實(shí)施方式】
[0023]現(xiàn)轉(zhuǎn)向圖式,圖1說明整體上由參考數(shù)字10指定的基于處理器的系統(tǒng)的實(shí)施例。系統(tǒng)10(例如,數(shù)據(jù)分析系統(tǒng))可為例如桌上型計(jì)算機(jī)、膝上型計(jì)算機(jī)、尋呼器、蜂窩式電話、個(gè)人記事簿、便攜式音頻播放器、控制電路、相機(jī)等多種類型中的任一者。系統(tǒng)10還可為網(wǎng)絡(luò)節(jié)點(diǎn),例如路由器、服務(wù)器或客戶端(例如,先前描述的計(jì)算機(jī)類型中的一者)。系統(tǒng)10可為某個(gè)其它種類的電子裝置,例如復(fù)印機(jī)、掃描儀、打印機(jī)、游戲控制臺(tái)、電視機(jī)、機(jī)頂式視頻分布(video distribut1n)或記錄系統(tǒng)、電纜箱、個(gè)人數(shù)字媒體播放器、工廠自動(dòng)化系統(tǒng)、汽車計(jì)算機(jī)系統(tǒng)或醫(yī)療裝置。(用以描述系統(tǒng)的這些各種實(shí)例的術(shù)語(如本文中使用的許多其它術(shù)語)可共享一些參照物,且因此不應(yīng)通過所列出的其它項(xiàng)狹隘地理解)。
[0024]在典型的基于處理器的裝置(例如系統(tǒng)10)中,例如微處理器等處理器12控制系統(tǒng)10中的系統(tǒng)功能及請(qǐng)求的處理。此外,處理器12可包括共享系統(tǒng)控制的多個(gè)處理器。處理器12可直接或間接耦合到系統(tǒng)10中的元件中的每一者,使得處理器12通過執(zhí)行可存儲(chǔ)于系統(tǒng)10內(nèi)或系統(tǒng)10外部的指令而控制系統(tǒng)10。
[0025]根據(jù)本文中描述的實(shí)施例,系統(tǒng)10包含可在處理器12的控制下操作的狀態(tài)機(jī)引擎14。如本文中所使用,狀態(tài)機(jī)引擎14是指單個(gè)裝置(例如,單芯片)。狀態(tài)機(jī)引擎14可采用任何自動(dòng)機(jī)理論。例如,狀態(tài)機(jī)引擎14可采用數(shù)個(gè)狀態(tài)機(jī)架構(gòu)中的一者,包含(但不限于)Mealy架構(gòu)、Moore架構(gòu)、有限狀態(tài)機(jī)(FSM)、確定性FSM(DFSM)、位并行狀態(tài)機(jī)(BPSM)等等。雖然可使用多種架構(gòu),但是出于論述目的,本申請(qǐng)案引用FSM。然而,所屬領(lǐng)域的技術(shù)人員將了解,可使用多種狀態(tài)機(jī)架構(gòu)中的任一者來采用所描述的技術(shù)。
[0026]如下文進(jìn)一步論述,狀態(tài)機(jī)引擎14可包含數(shù)個(gè)(例如,一或多個(gè))有限狀態(tài)機(jī)(FSM)品格(例如,芯片的核心)。出于本申請(qǐng)案的目的,術(shù)語“品格”是指元件(例如,布爾單元、計(jì)數(shù)器單元、狀態(tài)機(jī)元件、狀態(tài)轉(zhuǎn)變?cè)?的組織框架(例如,路由矩陣、路由網(wǎng)絡(luò)、幀)。此外,“品格”可具有任何合適的形狀、結(jié)構(gòu)或階層式組織(例如,柵格、立方形、球形、級(jí)聯(lián))。每一 FSM品格可實(shí)施各自并行接收及分析相同數(shù)據(jù)的多個(gè)FSM。此外,F(xiàn)SM品格可布置成群組(例如,群集),使得FSM品格的群集可并行分析相同輸入數(shù)據(jù)。此外,狀態(tài)機(jī)引擎14的FSM品格的群集可布置在階層式結(jié)構(gòu)中,其中來自階層式結(jié)構(gòu)的較低層級(jí)上的狀態(tài)機(jī)品格的輸出可用作到較高層級(jí)上的狀態(tài)機(jī)品格的輸入。通過經(jīng)由階層式結(jié)構(gòu)使?fàn)顟B(tài)機(jī)引擎14的并行FSM品格的群集串聯(lián)地級(jí)聯(lián),可分析(例如,評(píng)估、搜索等)日益復(fù)雜的模式。
[0027]此外,基于狀態(tài)機(jī)引擎14的階層式并行配置,狀態(tài)機(jī)引擎14可用于利用高處理速度的系統(tǒng)中的復(fù)雜數(shù)據(jù)分析(例如,模式識(shí)別)。例如,本文中描述的實(shí)施例可并入在具有l(wèi)GByte/sec的處理速度的系統(tǒng)中。因此,利用狀態(tài)機(jī)引擎14,可迅速分析來自高速存儲(chǔ)器裝置或其它外部裝置的數(shù)據(jù)。狀態(tài)機(jī)引擎14可根據(jù)若干準(zhǔn)則(例如,搜索項(xiàng))大約同時(shí)(例如,在單個(gè)裝置循環(huán)期間)分析數(shù)據(jù)流。狀態(tài)機(jī)引擎14的一層級(jí)上的FSM群集內(nèi)的FSM品格中的每一者可各自大約同時(shí)從數(shù)據(jù)流接收相同搜索項(xiàng),且并行FSM品格中的每一者可以處理準(zhǔn)則確定所述項(xiàng)是否將狀態(tài)機(jī)引擎14推進(jìn)到下一狀態(tài)。狀態(tài)機(jī)引擎14可根據(jù)相對(duì)較大數(shù)目個(gè)準(zhǔn)則(例如,大于100個(gè)、大于110個(gè)或大于10,000個(gè)準(zhǔn)則)分析若干項(xiàng)。因?yàn)镕SM品格并行操作,所以其可將準(zhǔn)則應(yīng)用于具有相對(duì)高帶寬的數(shù)據(jù)流(例如,大于或大體上等于lGByte/sec的數(shù)據(jù)流)而不使數(shù)據(jù)流減慢。
[0028]在一個(gè)實(shí)施例中,狀態(tài)機(jī)引擎14可經(jīng)配置以識(shí)別(例如,檢測(cè))數(shù)據(jù)流中的大量模式。例如,狀態(tài)機(jī)引擎14可用以檢測(cè)用戶或其它實(shí)體可能希望分析的多種類型的數(shù)據(jù)流中的一或多者中的模式。例如,狀態(tài)機(jī)引擎14可經(jīng)配置以分析經(jīng)由網(wǎng)絡(luò)接收的數(shù)據(jù)流,例如經(jīng)由因特網(wǎng)接收的包或經(jīng)由蜂窩式網(wǎng)絡(luò)接收的語音或數(shù)據(jù)。在一個(gè)實(shí)例中,狀態(tài)機(jī)弓I擎14可經(jīng)配置以分析垃圾郵件或惡意軟件的數(shù)據(jù)流。數(shù)據(jù)流可被接收為串行數(shù)據(jù)流,其中以具有意義的次序(例如以時(shí)間、詞匯或語義顯著的次序)接收數(shù)據(jù)?;蛘?,數(shù)據(jù)流可經(jīng)并行或無序接收,且接著通過(例如)對(duì)經(jīng)由因特網(wǎng)接收的包進(jìn)行重新排序而轉(zhuǎn)換為串行數(shù)據(jù)流。在一些實(shí)施例中,數(shù)據(jù)流可串行地呈現(xiàn)項(xiàng),但是可并行接收表達(dá)所述項(xiàng)中的每一者的位。數(shù)據(jù)流可從系統(tǒng)10外部的源接收,或可通過詢問例如存儲(chǔ)器16等存儲(chǔ)器裝置及由存儲(chǔ)于存儲(chǔ)器16中的數(shù)據(jù)形成數(shù)據(jù)流而形成。在其它實(shí)例中,狀態(tài)機(jī)引擎14可經(jīng)配置以識(shí)別拼寫某一字的字符序列、指定基因的基因堿基對(duì)序列、形成圖像的一部分的圖片或視頻文件中的位序列、形成程序的一部分的可執(zhí)行文件中的位序列或形成歌曲或口語詞組的一部分的音頻文件中的位序列。待分析的數(shù)據(jù)流可包含呈二進(jìn)制格式或其它格式(例如,十進(jìn)制、ASCII等)的多個(gè)數(shù)據(jù)位。所述流可編碼具有單個(gè)數(shù)字或多個(gè)數(shù)字(例如,若干二進(jìn)制數(shù)字)的數(shù)據(jù)。
[0029]如將了解,系統(tǒng)10可包含存儲(chǔ)器16。存儲(chǔ)器16可包含易失性存儲(chǔ)器,例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、同步DRAM(SDRAM)、雙倍數(shù)據(jù)速率DRAM (DDR SDRAM)、DDR2 SDRAM,DDR3 SDRAM等。存儲(chǔ)器16還可包含非易失性存儲(chǔ)器,例如只讀存儲(chǔ)器(ROM)、PC-RAM、硅-氧化物-氮化物-氧化物-硅(SONOS)存儲(chǔ)器、金屬-氧化物-氮化物-氧化物-硅(MONOS)存儲(chǔ)器、基于多晶硅浮動(dòng)?xùn)艠O的存儲(chǔ)器及/或結(jié)合易失性存儲(chǔ)器使用的各種架構(gòu)的其它類型的快閃存儲(chǔ)器(例如,NAND存儲(chǔ)器、NOR存儲(chǔ)器等)。存儲(chǔ)器16可包含可提供待由狀態(tài)機(jī)引擎14分析的數(shù)據(jù)的一或多個(gè)存儲(chǔ)器裝置,例如DRAM裝置。如本文中所使用,術(shù)語“提供”一股可指代引導(dǎo)、輸入、插入、發(fā)送、傳送、發(fā)射、產(chǎn)生、給定、輸出、放置、寫入等。此類裝置可稱為或包含固態(tài)驅(qū)動(dòng)器(SSD)、多媒體卡(MMC)、安全數(shù)字(SD)卡、緊湊式閃存(CF)卡或任何其它合適的裝置。此外,應(yīng)了解,此類裝置可經(jīng)由任何合適的接口(例如通用串行總線(USB)、外圍組件互連(PCI)、PCI Express (PC1-E)、小型計(jì)算機(jī)系統(tǒng)接口(SCSI)、IEEE 1394(Firewire)或任何其它合適的接口)耦合到系統(tǒng)10。為促進(jìn)存儲(chǔ)器16 (例如快閃存儲(chǔ)器裝置)的操作,系統(tǒng)10可包含存儲(chǔ)器控制器(未說明)。如將了解,存儲(chǔ)器控制器可為獨(dú)立裝置或其可與處理器12成一體。此外,系統(tǒng)10可包含外部存儲(chǔ)裝置18,例如磁性存儲(chǔ)裝置。外部存儲(chǔ)裝置也可將輸入數(shù)據(jù)提供到狀態(tài)機(jī)引擎14。
[0030]系統(tǒng)10可包含數(shù)個(gè)額外元件。例如,如關(guān)于圖8更詳細(xì)地描述,編譯器20可用以配置(例如,編程)狀態(tài)機(jī)引擎14。輸入裝置22也可耦合到處理器12以允許用戶將數(shù)據(jù)輸入到系統(tǒng)10中。例如,輸入裝置22可用以將數(shù)據(jù)輸入到存儲(chǔ)器16中以供狀態(tài)機(jī)引擎14隨后分析。例如,輸入裝置22可包含按鈕、交換元件、鍵盤、光筆、尖筆、鼠標(biāo)及/或語音識(shí)別系統(tǒng)。例如顯示器等輸出裝置24也可耦合到處理器12。例如,顯示器24可包含IXD、CRT、LED及/或音頻顯示器。其系統(tǒng)還可包含用于與網(wǎng)絡(luò)(例如因特網(wǎng))介接(interface)的網(wǎng)絡(luò)接口裝置26,例如網(wǎng)絡(luò)接口卡(NIC)。如將了解,取決于系統(tǒng)10的應(yīng)用,系統(tǒng)10可包含許多其它組件。
[0031 ] 圖2到5說明FSM品格30的實(shí)例。在一實(shí)例中,F(xiàn)SM品格30包括塊32的陣列。如將描述,每一塊32可包含對(duì)應(yīng)于FSM中的多個(gè)狀態(tài)的多個(gè)可選擇性地耦合的硬件元件(例如,可配置元件及/或?qū)S迷?。類似于FSM中的狀態(tài),硬件元件可分析輸入流并基于輸入流激活下游硬件元件。
[0032]可配置元件可經(jīng)配置(例如,編程)以實(shí)施許多不同功能。例如,可配置元件可包含階層式地組織成行38(圖3及4中所示)及塊32(圖2及3中所示)的狀態(tài)機(jī)元件(SME)34、36(圖5中所示)。SME還可被視為狀態(tài)轉(zhuǎn)變?cè)?STE)。為了在經(jīng)階層式組織的SME 34,36之間路由信號(hào),可使用可配置交換元件的階層,包含塊間交換元件40(圖2及3中所示)、塊內(nèi)交換元件42(圖3及4中所示)及行內(nèi)交換元件44(圖4中所示)。
[0033]如上所述,交換元件可包含路由結(jié)構(gòu)及緩沖器。SME 34、36可對(duì)應(yīng)于由FSM品格30實(shí)施的FSM的狀態(tài)。SME 34、36可通過使用如下文描述的可配置交換元件而耦合在一起。因此,可通過以下每一者對(duì)FSM品格30實(shí)施FSM:配置SME 34,36以對(duì)應(yīng)于狀態(tài)功能且選擇性地將SME 34,36耦合在一起以對(duì)應(yīng)于FSM中的狀態(tài)之間的轉(zhuǎn)變。
[0034]圖2說明FSM品格30的實(shí)例的整體視圖。FSM品格30包含可選擇性地與可配置塊間交換元件40耦合在一起的多個(gè)塊32。塊間交換元件40可包含導(dǎo)體46 (例如,導(dǎo)線、跡線等等)及緩沖器48以及50。在一實(shí)例中,包含緩沖器48及50以控制信號(hào)往返于塊間交換元件40的連接及時(shí)序。如下文進(jìn)一步描述,緩沖器48可經(jīng)提供以緩沖在塊32之間發(fā)送的數(shù)據(jù),而緩沖器50可經(jīng)提供以緩沖在塊間交換元件40之間發(fā)送的數(shù)據(jù)。此外,塊32可選擇性地耦合到用于接收信號(hào)(例如,數(shù)據(jù))且將數(shù)據(jù)提供到塊32的輸入塊52 (例如,數(shù)據(jù)輸入端口)。塊32還可選擇性地耦合到用于將信號(hào)從塊32提供到外部裝置(例如,另一FSM品格30)的輸出塊54 (例如,輸出端口)。FSM品格30還可包含編程接口 56以(例如,經(jīng)由圖像、程序)配置FSM品格30。圖像可配置(例如,設(shè)定)SME 34、36的狀態(tài)。S卩,圖像可配置SME 34,36以依某一方式對(duì)輸入塊52處的給定輸入做出反應(yīng)。例如,可設(shè)定SME34、36以在輸入塊52處接收到字符“a”時(shí)輸出高信號(hào)。
[0035]在一實(shí)例中,輸入塊52、輸出塊54及/或編程接口 56可被實(shí)施為寄存器,使得到寄存器的寫入或從寄存器的讀取提供數(shù)據(jù)到相應(yīng)元件或從相應(yīng)元件提供數(shù)據(jù)。因此,可將來自存儲(chǔ)于對(duì)應(yīng)于編程接口 56的寄存器中的圖像的位加載于SME 34,36上。雖然圖2說明塊32、輸入塊52、輸出塊54及塊間交換元件40之間的特定數(shù)目個(gè)導(dǎo)體(例如,導(dǎo)線、跡線),但是應(yīng)理解在其它實(shí)例中,可使用更少或更多個(gè)導(dǎo)體。
[0036]圖3說明塊32的實(shí)例。塊32可包含可選擇性地與可配置塊內(nèi)交換元件42耦合在一起的多個(gè)行38。此外,行38可使用塊間交換元件40選擇性地耦合到另一塊32內(nèi)的另一行38。行38包含組織成在本文中稱為含兩個(gè)元件的群組(GOT) 60的元件對(duì)的多個(gè)SME34、36。在一實(shí)例中,塊32包括十六(16)行38。
[0037]圖4說明行38的實(shí)例。GOT 60可通過可配置行內(nèi)交換元件44選擇性地耦合到行38內(nèi)的其它GOT 60及任何其它組件(例如,專用元件58)。GOT 60還可使用塊內(nèi)交換元件42耦合到其它行38中的其它GOT 60,或使用塊間交換元件40耦合到其它塊32中的其它GOT 60。在一實(shí)例中,GOT 60具有第一輸入62及第二輸入64以及輸出66。如將參考圖5進(jìn)一步說明,第一輸入62耦合到GOT 60的第一 SME 34,且第二輸入64耦合到GOT
60的第二 SME 36。
[0038]在一實(shí)例中,行38包含第一多個(gè)行互連導(dǎo)體68及第二多個(gè)行互連導(dǎo)體70。在一實(shí)例中,GOT 60的輸入62、64可耦合到一或多個(gè)行互連導(dǎo)體68、70,且輸出66可耦合到一或多個(gè)行互連導(dǎo)體68、70。在一實(shí)例中,第一多個(gè)行互連導(dǎo)體68可耦合到行38內(nèi)的每一GOT 60的每一 SME 34、36。第二多個(gè)行互連導(dǎo)體70可耦合到行38內(nèi)的每一 GOT 60的僅一個(gè)SME 34、36,但無法耦合到GOT 60的另一 SME 34、36。在一實(shí)例中,如將關(guān)于圖5更好地說明,第二多個(gè)行互連導(dǎo)體70的第一半部分可耦合到行38內(nèi)的SME 34,36的第一半部分(來自每一 GOT 60的一個(gè)SME 34),且第二多個(gè)行互連導(dǎo)體70的第二半部分可耦合到行38內(nèi)的SME 34、36的第二半部分(來自每一 GOT 60的另一 SME 34、36)。第二多個(gè)行互連導(dǎo)體70與SME 34、36之間的有限連接性在本文中被稱為“奇偶性(parity)”。在一實(shí)例中,行38還可包含專用元件58,例如計(jì)數(shù)器、可配置布爾邏輯元件、查找表、RAM、現(xiàn)場(chǎng)可配置門陣列(FPGA)、專用集成電路(ASIC)、可配置處理器(例如,微處理器)或用于執(zhí)行專用功能的其它元件。
[0039]在一實(shí)例中,專用元件58包括計(jì)數(shù)器(在本文中也被稱為計(jì)數(shù)器58)。在一實(shí)例中,計(jì)數(shù)器58包括12位可配置遞減計(jì)數(shù)器。12位可配置計(jì)數(shù)器58具有計(jì)數(shù)輸入、復(fù)位輸入及零計(jì)數(shù)輸出。計(jì)數(shù)輸入在經(jīng)確立時(shí)使計(jì)數(shù)器58的值累減I。復(fù)位輸入在經(jīng)確立時(shí)使計(jì)數(shù)器58從相關(guān)聯(lián)寄存器加載初始值。對(duì)于12位計(jì)數(shù)器58,可加載最多12位數(shù)字作為初始值。當(dāng)計(jì)數(shù)器58的值累減到零(O)時(shí),確立零計(jì)數(shù)輸出。計(jì)數(shù)器58還具有至少兩個(gè)模式:脈沖及保持。當(dāng)將計(jì)數(shù)器58設(shè)定為脈沖模式時(shí),零計(jì)數(shù)輸出在計(jì)數(shù)器58達(dá)到零及時(shí)鐘周期時(shí)被確立。零計(jì)數(shù)輸出在計(jì)數(shù)器58的下一時(shí)鐘周期期間被確立。導(dǎo)致計(jì)數(shù)器58在時(shí)間上偏離時(shí)鐘周期。在下一時(shí)鐘周期處,不再確立零計(jì)數(shù)輸出。當(dāng)將計(jì)數(shù)器58設(shè)定為保持模式時(shí),零計(jì)數(shù)輸出在計(jì)數(shù)器58累減到零的時(shí)鐘周期期間經(jīng)確立,且保持確立直到通過正經(jīng)確立的復(fù)位輸入復(fù)位計(jì)數(shù)器58為止。
[0040]在另一實(shí)例中,專用元件58包括布爾邏輯。例如,布爾邏輯可用以執(zhí)行邏輯函數(shù),例如AND、OR、NAND, NOR、積項(xiàng)的和(SoP)、否定輸出積項(xiàng)的和(NSoP)、否定輸出和項(xiàng)的積(NPoS)及和項(xiàng)的積(PoS)函數(shù)。此布爾邏輯可用以從FSM品格30中的終端狀態(tài)SME (如本文隨后論述,對(duì)應(yīng)于FSM的終端節(jié)點(diǎn))提取數(shù)據(jù)。所提取的數(shù)據(jù)可用以將狀態(tài)數(shù)據(jù)提供到其它FSM品格30及/或提供用以重配置FSM品格30或重配置另一 FSM品格30的配置數(shù)據(jù)。
[0041]圖5說明GOT 60的實(shí)例。GOT 60包含第一 SME 34及第二 SME 36,其具有輸入62,64且使其輸出72、74耦合到OR門76及3對(duì)I多路復(fù)用器78。3對(duì)I多路復(fù)用器78可經(jīng)設(shè)定以將GOT 60的輸出66耦合到第一 SME 34、第二 SME 36或OR門76。OR門76可用以將兩個(gè)輸出72、74耦合在一起以形成GOT 60的共同輸出66。在一實(shí)例中,如上文論述,第一 SME 34及第二 SME 36展現(xiàn)奇偶性,在第一 SME 34的輸入62可耦合到一些行互連導(dǎo)體68且第二 SME 36的輸入64可耦合到其它行互連導(dǎo)體70的情況下,可產(chǎn)生可克服奇偶性問題的共同輸出66。在一實(shí)例中,GOT 60內(nèi)的兩個(gè)SME 34、36可通過設(shè)定交換元件79中的任一者或二者而級(jí)聯(lián)及/或回環(huán)回到其自身。SME 34、36可通過將SME 34、36的輸出72、74耦合到另一 SME 34、36的輸入62、64而級(jí)聯(lián)。SME 34、36可通過將輸出72、74耦合到其自身輸入62、64而回環(huán)回到其自身。因此,第一 SME 34的輸出72可不耦合到第一 SME34的輸入62及第二 SME 36的輸入64、耦合到第一 SME 34的輸入62及第二 SME 36的輸Λ 64中的一者或二者。
[0042]在一實(shí)例中,狀態(tài)機(jī)元件34、36包括并聯(lián)耦合到檢測(cè)線82的多個(gè)存儲(chǔ)器單元80,例如通常用于動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)中的存儲(chǔ)器單元。一個(gè)此存儲(chǔ)器單元80包括可設(shè)定為數(shù)據(jù)狀態(tài)(例如對(duì)應(yīng)于高值或低值(例如,I或O)的數(shù)據(jù)狀態(tài))的存儲(chǔ)器單元。存儲(chǔ)器單元80的輸出耦合到檢測(cè)線82且到存儲(chǔ)器單元80的輸入基于數(shù)據(jù)流線84上的數(shù)據(jù)接收信號(hào)。在一實(shí)例中,解碼輸入塊52處的輸入以選擇存儲(chǔ)器單兀80中的一或多者。選定存儲(chǔ)器單元80將其所存儲(chǔ)的數(shù)據(jù)狀態(tài)作為輸出提供到檢測(cè)線82上。例如,可將輸入塊52處接收的數(shù)據(jù)提供到解碼器(未展示)且解碼器可選擇數(shù)據(jù)流線84中的一或多者。在一實(shí)例中,解碼器可將8位ACSII字符轉(zhuǎn)換到256個(gè)數(shù)據(jù)流線84的對(duì)應(yīng)I數(shù)據(jù)流線。
[0043]因此,存儲(chǔ)器單元80在其被設(shè)定為高值且數(shù)據(jù)流線84上的數(shù)據(jù)選擇所述存儲(chǔ)器單元80時(shí)將高信號(hào)輸出到檢測(cè)線82。當(dāng)數(shù)據(jù)流線84上的數(shù)據(jù)選擇存儲(chǔ)器單元80且存儲(chǔ)器單元80被設(shè)定為低值時(shí),存儲(chǔ)器單元80將低信號(hào)輸出到檢測(cè)線82。檢測(cè)線82上來自存儲(chǔ)器單元80的輸出通過檢測(cè)單元86感測(cè)。
[0044]在一實(shí)例中,輸入線62、64上的信號(hào)將相應(yīng)檢測(cè)單元86設(shè)定為有源狀態(tài)或非有源狀態(tài)。當(dāng)設(shè)定為非有源狀態(tài)時(shí),不管相應(yīng)檢測(cè)線82上的信號(hào)如何,檢測(cè)單元86在相應(yīng)輸出72、74上輸出低信號(hào)。當(dāng)設(shè)定為有源狀態(tài)時(shí),檢測(cè)單元86在從相應(yīng)SME 34、36的存儲(chǔ)器單元82中的一者檢測(cè)到高信號(hào)時(shí)在相應(yīng)輸出72、74上輸出高信號(hào)。當(dāng)處于有源狀態(tài)時(shí),檢測(cè)單元86在來自相應(yīng)SME 34,36的所有存儲(chǔ)器單元82的信號(hào)為低時(shí)在相應(yīng)輸出72、74上輸出低信號(hào)。
[0045]在一實(shí)例中,SME 34、36包含256個(gè)存儲(chǔ)器單元80且每一存儲(chǔ)器單元80耦合到不同數(shù)據(jù)流線84。因此,SME 34、36可經(jīng)編程以在數(shù)據(jù)流線84中的選定一者或多者上具有高信號(hào)時(shí)輸出高信號(hào)。例如,SME 34可具有設(shè)定為高的第一存儲(chǔ)器單元80 (例如,位O)及設(shè)定為低的所有其它存儲(chǔ)器單元80(例如,位I到255)。當(dāng)相應(yīng)檢測(cè)單元86處于有源狀態(tài)時(shí),SME 34在對(duì)應(yīng)于位O的數(shù)據(jù)流線84上具有高信號(hào)時(shí)在輸出72上輸出高信號(hào)。在其它實(shí)例中,SME 34可經(jīng)設(shè)定以在多個(gè)數(shù)據(jù)流線84中的一者上具有高信號(hào)時(shí)通過將適當(dāng)?shù)拇鎯?chǔ)器單元80設(shè)定為高值而輸出高信號(hào)。
[0046]在一實(shí)例中,可通過從相關(guān)聯(lián)寄存器讀取位而將存儲(chǔ)器單元80設(shè)定為高值或低值。因此,可通過將由編譯器20產(chǎn)生的圖像存儲(chǔ)到寄存器中且將寄存器中的位加載到相關(guān)聯(lián)存儲(chǔ)器單元80中來配置SME 34。在一實(shí)例中,由編譯器20產(chǎn)生的圖像包含高及低(例如,I及O)位的二進(jìn)制圖像。圖像可配置FSM品格30以通過使SME 34、36級(jí)聯(lián)而實(shí)施FSM。例如,可通過將檢測(cè)單元86設(shè)定為有源狀態(tài)而將第一 SME 34設(shè)定為有源狀態(tài)。第一 SME34可經(jīng)設(shè)定以在對(duì)應(yīng)于位O的數(shù)據(jù)流線84上具有高信號(hào)時(shí)輸出高信號(hào)。第二 SME 36最初可被設(shè)定為非有源狀態(tài),但是在有源時(shí)可經(jīng)設(shè)定以在對(duì)應(yīng)于位I的數(shù)據(jù)流線84上具有高信號(hào)時(shí)輸出高信號(hào)??赏ㄟ^設(shè)定第一 SME 34的輸出72以I禹合到第二 SME 36的輸入64而使第一 SME 34及第二 SME 36級(jí)聯(lián)。因此,當(dāng)在對(duì)應(yīng)于位O的數(shù)據(jù)流線84上感測(cè)到高信號(hào)時(shí),第一 SME 34在輸出72上輸出高信號(hào)且將第二 SME 36的檢測(cè)單元86設(shè)定為有源狀態(tài)。當(dāng)在對(duì)應(yīng)于位I的數(shù)據(jù)流線84上感測(cè)到高信號(hào)時(shí),第二 SME 36在輸出74上輸出高信號(hào)以激活另一 SME 36或從FSM品格30輸出。
[0047]在一實(shí)例中,在單個(gè)物理裝置上實(shí)施單個(gè)FSM品格30,然而在其它實(shí)例中,可在單個(gè)物理裝置(例如,物理芯片)上實(shí)施兩個(gè)或兩個(gè)以上FSM品格30。在一實(shí)例中,每一 FSM品格30可包含相異數(shù)據(jù)輸入塊52、相異輸出塊54、相異編程接口 56及相異可配置兀件集合。此外,每一可配置元件集合可對(duì)其對(duì)應(yīng)數(shù)據(jù)輸入塊52處的數(shù)據(jù)做出反應(yīng)(例如,輸出高或低信號(hào))。例如,對(duì)應(yīng)于第一 FSM品格30的第一可配置元件集合可對(duì)對(duì)應(yīng)于第一 FSM品格30的第一數(shù)據(jù)輸入塊52處的數(shù)據(jù)做出反應(yīng)。對(duì)應(yīng)于第二 FSM品格30的第二可配置元件集合可對(duì)對(duì)應(yīng)于第二 FSM品格30的第二數(shù)據(jù)輸入塊52做出反應(yīng)。因此,每一 FSM品格30包含可配置元件集合,其中不同可配置元件集合可對(duì)不同輸入數(shù)據(jù)做出反應(yīng)。類似地,每一 FSM品格30及每一對(duì)應(yīng)可配置元件集合可提供相異輸出。在一些實(shí)例中,來自第一 FSM品格30的輸出塊54可耦合到第二 FSM品格30的輸入塊52,使得用于第二 FSM品格30的輸入數(shù)據(jù)可包含來自一系列FSM品格30的階層式布置中的第一 FSM品格30的輸出數(shù)據(jù)。
[0048]在一實(shí)例中,用于加載到FSM品格30上的圖像包括用于配置FSM品格30內(nèi)的可配置元件、可配置交換元件及專用元件的多個(gè)數(shù)據(jù)位。在一實(shí)例中,可將圖像加載到FSM品格30上以配置FSM品格30以基于某些輸入提供所要輸出。輸出塊54可基于可配置元件對(duì)數(shù)據(jù)輸入塊52處的數(shù)據(jù)的反應(yīng)而提供來自FSM品格30的輸出。來自輸出塊54的輸出可包含指示給定模式的匹配的單個(gè)位、包括指示與多個(gè)模式匹配及不匹配的多個(gè)位的字(word)及對(duì)應(yīng)于所有或某些可配置元件在給定時(shí)刻的狀態(tài)的狀態(tài)向量。如所描述,狀態(tài)機(jī)引擎(例如狀態(tài)機(jī)引擎14)中可包含數(shù)個(gè)FSM品格30以執(zhí)行數(shù)據(jù)分析,例如模式識(shí)別(例如,話音識(shí)別、圖像識(shí)別等)、信號(hào)處理、成像、計(jì)算機(jī)視覺、密碼編譯及其它。
[0049]圖6說明可通過FSM品格30實(shí)施的有限狀態(tài)機(jī)(FSM)的實(shí)例模型。FSM品格30可配置(例如,編程)為FSM的物理實(shí)施方案。可將FSM表示為圖90(例如,有向圖、無向圖、偽圖),其含有一或多個(gè)根節(jié)點(diǎn)92。除根節(jié)點(diǎn)92之外,F(xiàn)SM還可由通過一或多個(gè)邊緣98連接到根節(jié)點(diǎn)92及其它標(biāo)準(zhǔn)節(jié)點(diǎn)94的若干標(biāo)準(zhǔn)節(jié)點(diǎn)94及終端節(jié)點(diǎn)96構(gòu)成。節(jié)點(diǎn)92、94、96對(duì)應(yīng)于FSM中的狀態(tài)。邊緣98對(duì)應(yīng)于狀態(tài)之間的轉(zhuǎn)變。
[0050]節(jié)點(diǎn)92、94、96中的每一者可處于有源或非有源狀態(tài)。當(dāng)處于非有源狀態(tài)時(shí),節(jié)點(diǎn)92、94、96不對(duì)輸入數(shù)據(jù)做出反應(yīng)(例如,響應(yīng))。當(dāng)處于有源狀態(tài)時(shí),節(jié)點(diǎn)92、94、96可對(duì)輸入數(shù)據(jù)做出反應(yīng)。當(dāng)輸入數(shù)據(jù)與由上游節(jié)點(diǎn)92、94與所述節(jié)點(diǎn)下游的節(jié)點(diǎn)94、96之間的邊緣98指定的準(zhǔn)則匹配時(shí),上游節(jié)點(diǎn)92、94可通過激活下游節(jié)點(diǎn)94、96而對(duì)輸入數(shù)據(jù)做出反應(yīng)。例如,當(dāng)指定字符“b”的第一節(jié)點(diǎn)94處于有源且接收字符“b”作為輸入數(shù)據(jù)時(shí),第一節(jié)點(diǎn)94將激活通過邊緣98連接到第一節(jié)點(diǎn)94的第二節(jié)點(diǎn)94。如本文中使用,“上游”指代一或多個(gè)節(jié)點(diǎn)之間的關(guān)系,其中在一或多個(gè)其它節(jié)點(diǎn)上游(或在回環(huán)或反饋配置的情況中,在其自身上游)的第一節(jié)點(diǎn)指代其中第一節(jié)點(diǎn)可激活所述一或多個(gè)其它節(jié)點(diǎn)(或在回環(huán)的情況中,可激活其自身)的情境。類似地,“下游”指代其中在一或多個(gè)其它節(jié)點(diǎn)下游(或在回環(huán)的情況中,在其自身下游)的第一節(jié)點(diǎn)可通過所述一或多個(gè)其它節(jié)點(diǎn)激活(或在回環(huán)的情況中,可通過其自身激活)的關(guān)系。因此,術(shù)語“上游”及“下游”在本文中用以指代一或多個(gè)節(jié)點(diǎn)之間的關(guān)系,但是這些術(shù)語并不排除使用回環(huán)或節(jié)點(diǎn)之間的其它非線性路徑。
[0051]在圖90中,根節(jié)點(diǎn)92可最初經(jīng)激活且在輸入數(shù)據(jù)與來自根節(jié)點(diǎn)92的邊緣98匹配時(shí)可激活下游節(jié)點(diǎn)94。當(dāng)輸入數(shù)據(jù)與來自節(jié)點(diǎn)94的邊緣98匹配時(shí),節(jié)點(diǎn)94可激活節(jié)點(diǎn)96。在接收輸入數(shù)據(jù)時(shí),可以此方式激活貫穿圖90的節(jié)點(diǎn)94、96。終端節(jié)點(diǎn)96對(duì)應(yīng)于輸入數(shù)據(jù)中所關(guān)注序列的匹配。因此,激活終端節(jié)點(diǎn)96指示已接收所關(guān)注序列作為輸入數(shù)據(jù)。在FSM品格30實(shí)施模式識(shí)別功能的背景下,到達(dá)終端節(jié)點(diǎn)96可指示已在輸入數(shù)據(jù)中檢測(cè)到所關(guān)注特定模式。
[0052]在一實(shí)例中,每一根節(jié)點(diǎn)92、標(biāo)準(zhǔn)節(jié)點(diǎn)94及終端節(jié)點(diǎn)96可對(duì)應(yīng)于FSM品格30中的可配置元件。每一邊緣98可對(duì)應(yīng)于可配置元件之間的連接。因此,轉(zhuǎn)變到另一標(biāo)準(zhǔn)節(jié)點(diǎn)94或終端節(jié)點(diǎn)96 (例如,具有連接到另一標(biāo)準(zhǔn)節(jié)點(diǎn)94或終端節(jié)點(diǎn)96的邊緣98)的標(biāo)準(zhǔn)節(jié)點(diǎn)94對(duì)應(yīng)于轉(zhuǎn)變到(例如,將輸出提供到)另一可配置元件的可配置元件。在一些實(shí)例中,根節(jié)點(diǎn)92并不具有對(duì)應(yīng)可配置元件。
[0053]如將了解,雖然節(jié)點(diǎn)92被描述為根節(jié)點(diǎn)且節(jié)點(diǎn)96被描述為終端節(jié)點(diǎn),但是無須存在特定“開始”或根節(jié)點(diǎn),且無須存在特定“結(jié)束”或輸出節(jié)點(diǎn)。換句話說,任何節(jié)點(diǎn)皆可為起始點(diǎn)且任何節(jié)點(diǎn)可提供輸出。
[0054]當(dāng)編程FSM品格30時(shí),可配置元件中的每一者還可處于有源或非有源狀態(tài)。給定可配置元件在非有源時(shí)不對(duì)對(duì)應(yīng)數(shù)據(jù)輸入塊52處的輸入數(shù)據(jù)做出反應(yīng)。有源可配置元件可對(duì)數(shù)據(jù)輸入塊52處的輸入數(shù)據(jù)做出反應(yīng),且當(dāng)輸入數(shù)據(jù)與可配置元件的設(shè)定匹配時(shí)可激活下游可配置元件。當(dāng)可配置元件對(duì)應(yīng)于終端節(jié)點(diǎn)96時(shí),可配置元件可耦合到輸出塊54以將匹配的指示提供到外部裝置。
[0055]經(jīng)由編程接口 56加載到FSM品格30上的圖像可配置所述可配置元件及專用元件以及所述可配置元件與專用元件之間的連接,使得基于對(duì)數(shù)據(jù)輸入塊52處的數(shù)據(jù)做出的反應(yīng)通過節(jié)點(diǎn)的循序激活實(shí)施所要FSM。在一實(shí)例中,可配置元件保持有源達(dá)單個(gè)數(shù)據(jù)循環(huán)(例如,單個(gè)字符、字符集合、單個(gè)時(shí)鐘周期)且接著變?yōu)榉怯性?,除非通過上游可配置元件重新激活。
[0056]可認(rèn)為終端節(jié)點(diǎn)96存儲(chǔ)經(jīng)壓縮的過去事件歷史。例如,需要到達(dá)終端節(jié)點(diǎn)96的輸入數(shù)據(jù)的一或多個(gè)模式可由所述終端節(jié)點(diǎn)96的激活表示。在一實(shí)例中,由終端節(jié)點(diǎn)96提供的輸出是二進(jìn)制的,即,輸出指示所關(guān)注模式是否已匹配。在圖90中終端節(jié)點(diǎn)96對(duì)標(biāo)準(zhǔn)節(jié)點(diǎn)94的比率可相當(dāng)小。換句話說,雖然在FSM中存在高復(fù)雜度,但是比較而言FSM的輸出可較小。
[0057]在一實(shí)例中,F(xiàn)SM品格30的輸出可包括狀態(tài)向量。狀態(tài)向量包括FSM品格30的可配置元件的狀態(tài)(例如,激活或未經(jīng)激活)。在另一實(shí)例中,狀態(tài)向量可包含可配置元件的全部或子集的狀態(tài)(無論可配置元件是否對(duì)應(yīng)于終端節(jié)點(diǎn)96)。在一實(shí)例中,狀態(tài)向量包含對(duì)應(yīng)于終端節(jié)點(diǎn)96的可配置元件的狀態(tài)。因此,輸出可包含由圖90的全部終端節(jié)點(diǎn)96提供的指示的集合。可將狀態(tài)向量表示為字,其中由每一終端節(jié)點(diǎn)96提供的二進(jìn)制指示包括所述字的一個(gè)位。終端節(jié)點(diǎn)96的此編碼可對(duì)FSM品格30提供檢測(cè)狀態(tài)(是否已檢測(cè)到所關(guān)注序列及已檢測(cè)到何種所關(guān)注序列)的有效指示。
[0058]如上文提及,F(xiàn)SM品格30可經(jīng)編程以實(shí)施模式識(shí)別功能。例如,F(xiàn)SM品格30可經(jīng)配置以識(shí)別輸入數(shù)據(jù)中的一或多個(gè)數(shù)據(jù)序列(例如,簽名、模式)。當(dāng)通過FSM品格30識(shí)別所關(guān)注數(shù)據(jù)序列時(shí),可在輸出塊54處提供所述識(shí)別的指示。在一實(shí)例中,模式識(shí)別可識(shí)別一串符號(hào)(例如,ASCII字符)以(例如)識(shí)別網(wǎng)絡(luò)數(shù)據(jù)中的惡意軟件或其它數(shù)據(jù)。
[0059]圖7說明階層式結(jié)構(gòu)100的實(shí)例,其中FSM品格30的兩個(gè)層級(jí)為串聯(lián)耦合且用以分析數(shù)據(jù)。具體來說,在經(jīng)說明的實(shí)施例中,階層式結(jié)構(gòu)100包含串聯(lián)布置的第一 FSM品格30A及第二 FSM品格30B。每一 FSM品格30包含接收數(shù)據(jù)輸入的相應(yīng)數(shù)據(jù)輸入塊52、接收配置信號(hào)的編程接口塊56及輸出塊54。
[0060]第一 FSM品格30A經(jīng)配置以在數(shù)據(jù)輸入塊處接收輸入數(shù)據(jù),例如原始數(shù)據(jù)。第一FSM品格30A對(duì)如上所述的輸入數(shù)據(jù)做出反應(yīng)并在輸出塊處提供輸出。將來自第一 FSM品格30A的輸出發(fā)送到第二 FSM品格30B的數(shù)據(jù)輸入塊。接著,第二 FSM品格30B可基于由第一 FSM品格30A提供的輸出做出反應(yīng)并提供階層式結(jié)構(gòu)100的對(duì)應(yīng)輸出信號(hào)102。兩個(gè)FSM品格30A及30B的此階層式串聯(lián)耦合提供將關(guān)于壓縮字中的過去事件的數(shù)據(jù)從第一 FSM品格30A提供到第二 FSM品格30B的構(gòu)件。所提供的數(shù)據(jù)實(shí)際上可為已由第一 FSM品格30A記錄的復(fù)雜事件(例如,所關(guān)注序列)的概要。
[0061]圖7中所示的FSM品格30A、30B的兩層級(jí)階層100允許兩個(gè)獨(dú)立程序基于相同數(shù)據(jù)流而操作。所述兩層級(jí)階層可類似于模型化為不同區(qū)域的生物大腦中的視覺識(shí)別。在此模型下,所述區(qū)域?qū)嶋H上為不同模式識(shí)別引擎,其各自執(zhí)行類似計(jì)算功能(模式匹配)但使用不同程序(簽名)。通過將多個(gè)FSM品格30A、30B連接在一起,可獲得關(guān)于數(shù)據(jù)流輸入的增加知識(shí)。
[0062]階層的第一層級(jí)(通過第一 FSM品格30A實(shí)施)可(例如)對(duì)原始數(shù)據(jù)流直接執(zhí)行處理。即,可在第一 FSM品格30A的輸入塊52處接收原始數(shù)據(jù)流且第一 FSM品格30A的可配置元件可對(duì)所述原始數(shù)據(jù)流做出反應(yīng)。階層的第二層級(jí)(通過第二 FSM品格30B實(shí)施)可處理來自第一層級(jí)的輸出。即,第二 FSM品格30B在第二 FSM品格30B的輸入塊52處接收來自第一 FSM品格30A的輸出塊54的輸出,且第二 FSM品格30B的可配置元件可對(duì)第一 FSM品格30A的輸出做出反應(yīng)。因此,在此實(shí)例中,第二 FSM品格30B不接收原始數(shù)據(jù)流作為輸入,而是接收通過如通過第一 FSM品格30A確定的原始數(shù)據(jù)流匹配的所關(guān)注模式的指示。第二 FSM品格30B可實(shí)施識(shí)別來自第一 FSM品格30A的輸出數(shù)據(jù)流中的模式的FSM。應(yīng)了解,除接收來自FSM品格30A的輸出以外,第二 FSM品格30B還可接收來自多個(gè)其它FSM品格的輸入。同樣地,第二 FSM品格30B可接收來自其它裝置的輸入。第二 FSM品格30B可組合這些多個(gè)輸入以產(chǎn)生輸出。
[0063]圖8說明編譯器將源代碼轉(zhuǎn)換為用于配置FSM品格(例如品格30)以實(shí)施FSM的圖像的方法110的實(shí)例。方法110包含:將源代碼解析為語法樹(框112);將語法樹轉(zhuǎn)換為自動(dòng)機(jī)(框114);優(yōu)化所述自動(dòng)機(jī)(框116);將所述自動(dòng)機(jī)轉(zhuǎn)換為網(wǎng)表(netlist)(框118);將所述網(wǎng)表放置于硬件上(框120);路由所述網(wǎng)表(框122)及發(fā)布所得圖像(框124)。
[0064]在一實(shí)例中,編譯器20包含允許軟件開發(fā)者產(chǎn)生圖像以實(shí)施FSM品格30上的FSM的應(yīng)用編程接口(API)。編譯器20提供將源代碼中的正規(guī)表達(dá)式的輸入集合轉(zhuǎn)換為經(jīng)配置以配置FSM品格30的圖像的方法。編譯器20可通過用于具有馮?諾伊曼架構(gòu)的計(jì)算機(jī)的指令實(shí)施。這些指令可使計(jì)算機(jī)上的處理器12實(shí)施編譯器20的功能。例如,所述指令在通過處理器12執(zhí)行時(shí)可使處理器12對(duì)可由處理器12存取的源代碼執(zhí)行如框112、114、116、118、120、122及124中描述的動(dòng)作。
[0065]在一實(shí)例中,源代碼描述用于識(shí)別符號(hào)群組內(nèi)的符號(hào)模式的搜索字符串。為描述搜索字符串,源代碼可包含多個(gè)正規(guī)表達(dá)式。正規(guī)表達(dá)式可為用于描述符號(hào)搜索模式的字符串。正規(guī)表達(dá)式廣泛用于各種計(jì)算機(jī)領(lǐng)域中,例如編程語言、文本編輯器、網(wǎng)絡(luò)安全及其它領(lǐng)域。在一實(shí)例中,由編譯器支持的正規(guī)表達(dá)式包含用于分析未經(jīng)結(jié)構(gòu)化數(shù)據(jù)的準(zhǔn)則。未經(jīng)結(jié)構(gòu)化數(shù)據(jù)可包含自由形式的數(shù)據(jù)且不具有應(yīng)用于數(shù)據(jù)內(nèi)的字的索引。字可包含數(shù)據(jù)內(nèi)可打印及不可打印的字節(jié)的任何組合。在一實(shí)例中,編譯器可支持多種不同源代碼語言以用于實(shí)施包含Perl (例如,Perl可兼容正規(guī)表達(dá)式(PCRE))、PHR、Jave及.NET語言的正規(guī)表達(dá)式。
[0066]在框112處,編譯器20可解析源代碼以形成相關(guān)連接的運(yùn)算符的布置,其中不同類型的運(yùn)算符對(duì)應(yīng)于通過源代碼實(shí)施的不同函數(shù)(例如,通過源代碼中的正規(guī)表達(dá)式實(shí)施的不同函數(shù))。解析源代碼可產(chǎn)生源代碼的通用表示。在一實(shí)例中,通用表示包括呈稱作語法樹的樹形圖的形式的源代碼中的正規(guī)表達(dá)式的經(jīng)編碼表示。本文中描述的實(shí)例引用作為語法樹(也稱作“抽象語法樹”)的布置,然而在其它實(shí)例中可使用具體語法樹或其它布置。
[0067]如上文提及,因?yàn)榫幾g器20可支持源代碼的多種語言,所以解析將源代碼轉(zhuǎn)換為非語言特定表示(例如語法樹)而不管語言如何。因此,通過編譯器20進(jìn)行的進(jìn)一步處理(框114、116、118、120)可從共同輸入結(jié)構(gòu)發(fā)揮作用,而不管源代碼的語言如何。
[0068]如上所述,語法樹包含相關(guān)連接的多個(gè)運(yùn)算符。語法樹可包含多種不同類型的運(yùn)算符。即,不同運(yùn)算符可對(duì)應(yīng)于源代碼中通過正規(guī)表達(dá)式實(shí)施的不同函數(shù)。
[0069]在框114處,將語法樹轉(zhuǎn)換為自動(dòng)機(jī)。自動(dòng)機(jī)包括FSM的軟件模型且因此可分類為確定性或非確定性。確定性自動(dòng)機(jī)在給定時(shí)間具有單個(gè)執(zhí)行路徑,而非確定性自動(dòng)機(jī)具有多個(gè)并行執(zhí)行路徑。自動(dòng)機(jī)包括多個(gè)狀態(tài)。為將語法樹轉(zhuǎn)換為自動(dòng)機(jī),語法樹中的運(yùn)算符及運(yùn)算符之間的關(guān)系轉(zhuǎn)換為狀態(tài),其中所述狀態(tài)之間具有轉(zhuǎn)變。在一實(shí)例中,可部分基于FSM品格30的硬件而轉(zhuǎn)換自動(dòng)機(jī)。
[0070]在一實(shí)例中,用于自動(dòng)機(jī)的輸入符號(hào)包含字母表的符號(hào)、數(shù)字O到9及其它可打印字符。在一實(shí)例中,輸入符號(hào)為由字節(jié)值O到255(包含O及255)表示。在一實(shí)例中,自動(dòng)機(jī)可表示為有向圖,其中所述圖的節(jié)點(diǎn)對(duì)應(yīng)于狀態(tài)集合。在一實(shí)例中,輸入符號(hào)α上從狀態(tài)P到狀態(tài)q的轉(zhuǎn)變(即,S (ρ,α))由從節(jié)點(diǎn)P到節(jié)點(diǎn)q的有向連接展示。在一實(shí)例中,自動(dòng)機(jī)的反轉(zhuǎn)產(chǎn)生新自動(dòng)機(jī),其中某個(gè)符號(hào)α上的每一轉(zhuǎn)變P —q在相同符號(hào)上反轉(zhuǎn)q —P。在一反轉(zhuǎn)中,開始狀態(tài)變?yōu)樽罱K狀態(tài)且最終狀態(tài)變?yōu)殚_始狀態(tài)。在一實(shí)例中,由自動(dòng)機(jī)識(shí)別(例如,匹配)的語言為在循序地輸入到自動(dòng)機(jī)中時(shí)將達(dá)到最終狀態(tài)的全部可能字符串的集合。由自動(dòng)機(jī)識(shí)別的語目中的每一字符串追蹤從開始狀態(tài)到一或多個(gè)最后終態(tài)的路徑。
[0071]在框116處,在構(gòu)造自動(dòng)機(jī)之后,所述自動(dòng)機(jī)經(jīng)優(yōu)化以減小其復(fù)雜度及大小等等。可通過組合冗余狀態(tài)優(yōu)化所述自動(dòng)機(jī)。
[0072]在框118處,將經(jīng)優(yōu)化的自動(dòng)機(jī)轉(zhuǎn)換為網(wǎng)表。將所述自動(dòng)機(jī)轉(zhuǎn)換為網(wǎng)表將所述自動(dòng)機(jī)的每一狀態(tài)映射到FSM品格30上的硬件元件(例如,SME 34,SME 36、其它元件)并確定硬件元件之間的連接。
[0073]在框120處,放置網(wǎng)表以選擇目標(biāo)裝置的對(duì)應(yīng)于網(wǎng)表的每一節(jié)點(diǎn)的特定硬件元件(例如,SME 34,SME 36、專用元件58)。在一實(shí)例中,放置基于FSM品格30的一股輸入及輸出約束來選擇每一特定硬件元件。
[0074]在框122處,路由所放置的網(wǎng)表以確定用于可配置交換元件(例如,塊間交換元件40、塊內(nèi)交換元件42及行內(nèi)交換元件44)的設(shè)定,以將選定硬件元件耦合在一起以實(shí)現(xiàn)通過網(wǎng)表描述的連接。在一實(shí)例中,通過確定FSM品格30的將用以連接選定硬件元件的特定導(dǎo)體及用于可配置交換元件的設(shè)定的特定導(dǎo)體來確定用于可配置交換元件的設(shè)定。與框120處的放置相比,路由可考慮到硬件元件之間的連接的更多特定限制。因此,路由可調(diào)整如通過全局放置確定的一些硬件元件的位置以鑒于FSM品格30上的導(dǎo)體的實(shí)際限制而做出適當(dāng)連接。
[0075]一旦放置及路由網(wǎng)表,便可將所述經(jīng)放置及路由的網(wǎng)表轉(zhuǎn)換為用于配置FSM品格30的多個(gè)位。所述多個(gè)位在本文中稱為圖像(例如,二進(jìn)制圖像)。
[0076]在框124處,通過編譯器20發(fā)布圖像。圖像包括用于配置FSM品格30的特定硬件元件的多個(gè)位??蓪⑽患虞d到FSM品格30上以配置SME 34、36、專用元件58及可配置交換元件的狀態(tài),使得經(jīng)編程FSM品格30實(shí)施具有由源代碼描述的功能性的FSM。放置(框120)及路由(框122)可將FSM品格30中的特定位置處的特定硬件元件映射到自動(dòng)機(jī)中的特定狀態(tài)。因此,圖像中的位可配置特定硬件元件以實(shí)施(若干)所要功能。在一實(shí)例中,可通過將機(jī)器碼保存到計(jì)算機(jī)可讀媒體來發(fā)布所述圖像。在另一實(shí)例中,可通過在顯示裝置上顯示所述圖像來發(fā)布所述圖像。在又一實(shí)例中,可通過將所述圖像發(fā)送到另一裝置(例如用于將所述圖像加載到FSM品格30上的配置裝置)來發(fā)布所述圖像。在又一實(shí)例中,可通過將所述圖像加載到FSM品格(例如,F(xiàn)SM品格30)上來發(fā)布所述圖像。
[0077]在一實(shí)例中,可通過將來自圖像的位值直接加載到SME 34、36及其它硬件元件或通過將所述圖像加載到一或多個(gè)寄存器中且接著將來自寄存器的位值寫入到SME 34,36及其它硬件元件而將所述圖像加載到FSM品格30上。在一實(shí)例中,F(xiàn)SM品格30的硬件元件(例如,SME 34、36、專用元件58、可配置交換元件40、42、44)經(jīng)存儲(chǔ)器映射,使得配置裝置及/或計(jì)算機(jī)可通過將圖像寫入到一或多個(gè)存儲(chǔ)器地址而將圖像加載到FSM品格30上。
[0078]可至少部分由機(jī)器或計(jì)算機(jī)實(shí)施本文中描述的方法實(shí)例。一些實(shí)例可包含使用指令編碼的計(jì)算機(jī)可讀媒體或機(jī)器可讀媒體,所述指令可操作以配置電子裝置以執(zhí)行如上文實(shí)例中描述的方法。此類方法的實(shí)施方案可包含代碼,例如微碼、匯編語言碼、較高級(jí)語言碼或類似物。此代碼可包含用于執(zhí)行各種方法的計(jì)算機(jī)可讀指令。代碼可形成計(jì)算機(jī)程序產(chǎn)品的部分。此外,代碼可在執(zhí)行期間或在其它時(shí)間有形地存儲(chǔ)在一或多個(gè)易失性或非易失性計(jì)算機(jī)可讀媒體上。這些計(jì)算機(jī)可讀媒體可包含(但不限于)硬盤、可裝卸式磁盤、可裝卸式光盤(例如,壓縮光盤及數(shù)字視頻光盤)、磁盒、存儲(chǔ)器卡或棒、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)等。
[0079]現(xiàn)在參考圖9,說明狀態(tài)機(jī)引擎14的實(shí)施例(例如,單芯片上的單個(gè)裝置)。如先前描述,狀態(tài)機(jī)引擎14經(jīng)配置以經(jīng)由數(shù)據(jù)總線從源(例如存儲(chǔ)器16)接收數(shù)據(jù)。在經(jīng)說明的實(shí)施例中,數(shù)據(jù)可通過總線接口(例如第三代雙倍數(shù)據(jù)速率(DDR3)總線接口 130)發(fā)送到狀態(tài)機(jī)引擎14。DDR3總線接口 130可能夠以大于或等于lGByte/sec的速率交換(例如,提供及接收)數(shù)據(jù)。此數(shù)據(jù)交換速率可大于狀態(tài)機(jī)引擎14分析數(shù)據(jù)的速率。如將了解,取決于待分析的數(shù)據(jù)源,總線接口 130可為用于將往返于數(shù)據(jù)源的數(shù)據(jù)交換到狀態(tài)機(jī)引擎14的任何合適的總線接口,例如NAND快閃接口、外圍組件互連(PCI)接口、千兆位媒體獨(dú)立接口(GMMI)等。如先前描述,狀態(tài)機(jī)引擎14包含經(jīng)配置以分析數(shù)據(jù)的一或多個(gè)FSM品格30。每一 FSM品格30可被分為兩個(gè)半品格。在經(jīng)說明的實(shí)施例中,每一半品格可包含24K個(gè)SME (例如,SME 34,36),使得品格30包含48K個(gè)SME。品格30可包括如先前關(guān)于圖2到5描述股布置的任何所要數(shù)目個(gè)SME。此外,雖然僅說明一個(gè)FSM品格30,但是狀態(tài)機(jī)引擎14可包含多個(gè)FSM品格30,如先前描述。
[0080]可在總線接口 130處接收待分析的數(shù)據(jù)并通過數(shù)個(gè)緩沖器及緩沖器接口將數(shù)據(jù)提供到FSM品格30。在經(jīng)說明的實(shí)施例中,數(shù)據(jù)路徑包含數(shù)據(jù)緩沖器132、指令緩沖器133、過程緩沖器134及排間(IR)總線及過程緩沖器接口 136。數(shù)據(jù)緩沖器132經(jīng)配置以接收并暫時(shí)存儲(chǔ)待分析的數(shù)據(jù)。在一個(gè)實(shí)施例中,存在兩個(gè)數(shù)據(jù)緩沖器132(數(shù)據(jù)緩沖器A及數(shù)據(jù)緩沖器B)??蓪?shù)據(jù)存儲(chǔ)在所述兩個(gè)數(shù)據(jù)緩沖器132中的一者中,而從另一數(shù)據(jù)緩沖器132清空數(shù)據(jù)以供FSM品格30分析??偩€接口 130可經(jīng)配置以將待分析的數(shù)據(jù)提供到數(shù)據(jù)緩沖器132直到數(shù)據(jù)緩沖器132已滿為止。在數(shù)據(jù)緩沖器132已滿之后,總線接口 130可經(jīng)配置以自由地用于其它目的(例如,提供來自數(shù)據(jù)流的其它數(shù)據(jù)直到數(shù)據(jù)緩沖器132可用于接收待分析的額外數(shù)據(jù)為止)。在經(jīng)說明的實(shí)施例中,數(shù)據(jù)緩沖器132可各自為32千字節(jié)。指令緩沖器133經(jīng)配置以經(jīng)由總線接口 130從處理器12接收指令,例如對(duì)應(yīng)于待分析的數(shù)據(jù)的指令及對(duì)應(yīng)于配置狀態(tài)機(jī)引擎14的指令。IR總線及過程緩沖器接口 136可促進(jìn)將數(shù)據(jù)提供到過程緩沖器134。IR總線及過程緩沖器接口 136可用以確保FSM品格30按此序處理數(shù)據(jù)。IR總線及過程緩沖器接口 136可協(xié)調(diào)數(shù)據(jù)、時(shí)序數(shù)據(jù)、包裝指令等的交換,使得正確地接收并分析數(shù)據(jù)。一股來說,IR總線及過程緩沖器接口 136允許使用一排裝置中的多個(gè)裝置。所述排裝置中的多個(gè)裝置共享數(shù)據(jù)使得所有所述多個(gè)裝置依正確的次序接收全部共享數(shù)據(jù)。例如,多個(gè)物理裝置(例如,狀態(tài)機(jī)引擎14、芯片、分離裝置)可布置成一排且可經(jīng)由IR總線及過程緩沖器接口 136彼此提供數(shù)據(jù)。出于本申請(qǐng)案的目的,術(shù)語“排”指代連接到相同芯片選擇的狀態(tài)機(jī)引擎14的集合。在經(jīng)說明的實(shí)施例中,IR總線及過程緩沖器接口 136可包含8位數(shù)據(jù)總線。
[0081]在經(jīng)說明的實(shí)施例中,狀態(tài)機(jī)引擎14還包含解壓縮器138及壓縮器140以幫助提供數(shù)據(jù)到狀態(tài)機(jī)引擎14且從狀態(tài)機(jī)引擎14提供數(shù)據(jù)。如可了解,壓縮器140及解壓縮器138可使用相同的壓縮算法以簡化軟件及/或硬件設(shè)計(jì);然而,壓縮器140及解壓縮器138還可使用不同的算法。通過壓縮數(shù)據(jù),可最小化總線接口 130(例如,DDR3總線接口)利用時(shí)間。在本實(shí)施例中,壓縮器140可用以壓縮狀態(tài)向量數(shù)據(jù)、配置數(shù)據(jù)(例如,編程數(shù)據(jù))及由FSM品格30分析之后獲得的匹配結(jié)果數(shù)據(jù)。在一個(gè)實(shí)施例中,可停用(例如,關(guān)閉)壓縮器140及解壓縮器138使得流動(dòng)到壓縮器140及解壓縮器138及/或從壓縮器140及解壓縮器138流動(dòng)的數(shù)據(jù)并未被修改(例如,未經(jīng)壓縮也未經(jīng)解壓縮)。
[0082]壓縮器140及解壓縮器138還可經(jīng)配置以處置多個(gè)數(shù)據(jù)集合且每一數(shù)據(jù)集合可具有變化長度。通過“填補(bǔ)”壓縮數(shù)據(jù)且包含關(guān)于每一壓縮區(qū)域何時(shí)結(jié)束的指示符,壓縮器140可通過狀態(tài)機(jī)引擎14提高總體處理速度。
[0083]狀態(tài)機(jī)引擎14包含狀態(tài)向量系統(tǒng)141,狀態(tài)向量系統(tǒng)141具有狀態(tài)向量高速緩沖存儲(chǔ)器142、狀態(tài)向量存儲(chǔ)器緩沖器144、狀態(tài)向量中間輸入緩沖器146及狀態(tài)向量中間輸出緩沖器148。狀態(tài)向量系統(tǒng)141可用以存儲(chǔ)FSM品格30的多個(gè)狀態(tài)向量,將狀態(tài)向量移動(dòng)到狀態(tài)機(jī)引擎14上或從狀態(tài)機(jī)引擎14移動(dòng)離開且將狀態(tài)向量提供到FSM品格30以使FSM品格30還原到對(duì)應(yīng)于所提供的狀態(tài)向量的狀態(tài)。例如,每一狀態(tài)向量可暫時(shí)存儲(chǔ)在狀態(tài)向量高速緩沖存儲(chǔ)器142中。S卩,可存儲(chǔ)每一 SME 34、36的狀態(tài),使得所述狀態(tài)可經(jīng)還原且隨后用于進(jìn)一步分析,同時(shí)釋放SME 34,36以分析新數(shù)據(jù)集合(例如,搜索項(xiàng))。例如,如同典型高速緩沖存儲(chǔ)器,狀態(tài)向量高速緩沖存儲(chǔ)器142允許存儲(chǔ)狀態(tài)向量以供(此處)由FSM品格30快速檢索及使用。在經(jīng)說明的實(shí)施例中,狀態(tài)向量高速緩沖存儲(chǔ)器142可存儲(chǔ)最多512個(gè)狀態(tài)向量。每一狀態(tài)向量包括FSM品格30的SME 34,36的狀態(tài)(例如,激活或未經(jīng)激活)及計(jì)數(shù)器58的動(dòng)態(tài)(例如,當(dāng)前)計(jì)數(shù)。
[0084]如將了解,可在一排中的不同狀態(tài)機(jī)引擎14 (例如,芯片)之間交換狀態(tài)向量數(shù)據(jù)??稍诓煌瑺顟B(tài)機(jī)引擎14之間交換狀態(tài)向量數(shù)據(jù)以用于以下各種目的,例如:同步化FSM品格30的SME 34,36的狀態(tài)及計(jì)數(shù)器58的動(dòng)態(tài)計(jì)數(shù);跨多個(gè)狀態(tài)機(jī)引擎14執(zhí)行相同功能;跨多個(gè)狀態(tài)機(jī)引擎14重現(xiàn)結(jié)果;跨多個(gè)狀態(tài)機(jī)引擎14級(jí)聯(lián)結(jié)果;存儲(chǔ)用以分析通過多個(gè)狀態(tài)機(jī)引擎14級(jí)聯(lián)的數(shù)據(jù)的SME 34、36的狀態(tài)的歷史及計(jì)數(shù)器58的動(dòng)態(tài)計(jì)數(shù)等等。此夕卜,應(yīng)注意,在狀態(tài)機(jī)引擎14內(nèi),狀態(tài)向量數(shù)據(jù)可用以快速地還原狀態(tài)向量。例如,狀態(tài)向量數(shù)據(jù)可用以:將SME 34,36的狀態(tài)及計(jì)數(shù)器58的動(dòng)態(tài)計(jì)數(shù)還原到初始化狀態(tài)(例如,搜索新搜索項(xiàng));將SME 34,36的狀態(tài)及計(jì)數(shù)器58的動(dòng)態(tài)計(jì)數(shù)還原到先前狀態(tài)(例如,搜索先前搜索的搜索項(xiàng));及將SME 34、36的狀態(tài)及計(jì)數(shù)器58的動(dòng)態(tài)計(jì)數(shù)改變?yōu)榻?jīng)配置用于級(jí)聯(lián)配置(例如,以級(jí)聯(lián)搜索來搜索一搜索項(xiàng))。在某些實(shí)施例中,可將狀態(tài)向量數(shù)據(jù)提供到總線接口 130使得可將狀態(tài)向量數(shù)據(jù)提供到處理器12 (例如,用于分析狀態(tài)向量數(shù)據(jù)、重配置狀態(tài)向量數(shù)據(jù)以適用修改、重配置狀態(tài)向量數(shù)據(jù)以提高效率等等)。
[0085]例如,在某些實(shí)施例中,狀態(tài)機(jī)引擎14可將經(jīng)高速緩沖存儲(chǔ)的狀態(tài)向量數(shù)據(jù)(例如,由狀態(tài)向量系統(tǒng)141存儲(chǔ)的數(shù)據(jù))從FSM品格30提供到外部裝置。外部裝置可接收狀態(tài)向量數(shù)據(jù),修改狀態(tài)向量數(shù)據(jù)并將經(jīng)修改的狀態(tài)向量數(shù)據(jù)提供到狀態(tài)機(jī)引擎14以使FSM品格30還原(例如,復(fù)位、初始化)。因此,外部裝置可修改狀態(tài)向量數(shù)據(jù)使得狀態(tài)機(jī)引擎14可按需要略過(例如,跳過)狀態(tài)。
[0086]狀態(tài)向量高速緩沖存儲(chǔ)器142可從任何合適的裝置接收狀態(tài)向量數(shù)據(jù)。例如,狀態(tài)向量高速緩沖存儲(chǔ)器142可從FSM品格30、另一 FSM品格30 (例如,經(jīng)由IR總線及過程緩沖器接口 136)、解壓縮器138等接收狀態(tài)向量。在經(jīng)說明的實(shí)施例中,狀態(tài)向量高速緩沖存儲(chǔ)器142可經(jīng)由狀態(tài)向量存儲(chǔ)器緩沖器144從其它裝置接收狀態(tài)向量。此外,狀態(tài)向量高速緩沖存儲(chǔ)器142可將狀態(tài)向量數(shù)據(jù)提供到任何合適的裝置。例如,狀態(tài)向量高速緩沖存儲(chǔ)器142可將狀態(tài)向量數(shù)據(jù)提供到狀態(tài)向量存儲(chǔ)器緩沖器144、狀態(tài)向量中間輸入緩沖器146及狀態(tài)向量中間輸出緩沖器148。
[0087]例如狀態(tài)向量存儲(chǔ)器緩沖器144、狀態(tài)向量中間輸入緩沖器146及狀態(tài)向量中間輸出緩沖器148等額外緩沖器可結(jié)合狀態(tài)向量高速緩沖存儲(chǔ)器142利用以適應(yīng)狀態(tài)向量的快速檢索及存儲(chǔ),同時(shí)通過狀態(tài)機(jī)引擎14處理具有交錯(cuò)包的分離數(shù)據(jù)集合。在經(jīng)說明的實(shí)施例中,狀態(tài)向量存儲(chǔ)器緩沖器144、狀態(tài)向量中間輸入緩沖器146及狀態(tài)向量中間輸出緩沖器148中的每一者可經(jīng)配置以暫時(shí)存儲(chǔ)一個(gè)狀態(tài)向量。狀態(tài)向量存儲(chǔ)器緩沖器144可用以從任何合適的裝置接收狀態(tài)向量數(shù)據(jù)并將狀態(tài)向量數(shù)據(jù)提供到任何合適的裝置。例如,狀態(tài)向量存儲(chǔ)器緩沖器144可用以從FSM品格30、另一 FSM品格30 (例如,經(jīng)由IR總線及過程緩沖器接口 136)、解壓縮器138及狀態(tài)向量高速緩沖存儲(chǔ)器142接收狀態(tài)向量。作為另一實(shí)例,狀態(tài)向量存儲(chǔ)器緩沖器144可用以將狀態(tài)向量數(shù)據(jù)提供到(例如,其它FSM品格30的)IR總線及過程緩沖器接口 136、壓縮器140及狀態(tài)向量高速緩沖存儲(chǔ)器142。
[0088]同樣地,狀態(tài)向量中間輸入緩沖器146可用以從任何合適的裝置接收狀態(tài)向量數(shù)據(jù)并將狀態(tài)向量數(shù)據(jù)提供到任何合適的裝置。例如,狀態(tài)向量中間輸入緩沖器146可用以從FSM品格30 (例如,經(jīng)由IR總線及過程緩沖器接口 136)、解壓縮器138及狀態(tài)向量高速緩沖存儲(chǔ)器142接收狀態(tài)向量。作為另一實(shí)例,狀態(tài)向量中間輸入緩沖器146可用以將狀態(tài)向量提供到FSM品格30。此外,狀態(tài)向量中間輸出緩沖器148可用以從任何合適的裝置接收狀態(tài)向量并將狀態(tài)向量提供到任何合適的裝置。例如,狀態(tài)向量中間輸出緩沖器148可用以從FSM品格30及狀態(tài)向量高速緩沖存儲(chǔ)器142接收狀態(tài)向量。作為另一實(shí)例,狀態(tài)向量中間輸出緩沖器148可用以將狀態(tài)向量提供到FSM品格30 (例如,經(jīng)由IR總線及過程緩沖器接口 136)及壓縮器140。
[0089]一旦由FSM品格30產(chǎn)生所關(guān)注結(jié)果,便可將匹配結(jié)果存儲(chǔ)在匹配結(jié)果存儲(chǔ)器150中。即,可將指示匹配(例如,檢測(cè)到所關(guān)注模式)的“匹配向量”存儲(chǔ)在匹配結(jié)果存儲(chǔ)器150中。例如,接著可將匹配結(jié)果發(fā)送到匹配緩沖器152以經(jīng)由總線接口 130發(fā)射到處理器12。如先前描述,可壓縮匹配結(jié)果。
[0090]還可在狀態(tài)機(jī)引擎14中提供額外寄存器及緩沖器。例如,狀態(tài)機(jī)引擎14可包含控制及狀態(tài)寄存器154。此外,可提供還原及程序緩沖器156以最初用于配置FSM品格30的SME 34,36或在分析期間還原FSM品格30中的SME 34,36的狀態(tài)。類似地,還可提供保存及修復(fù)映射緩沖器158以存儲(chǔ)保存及修復(fù)映射以供設(shè)定及使用。
[0091]圖10說明布置成一排裝置的實(shí)例多個(gè)物理狀態(tài)機(jī)引擎14。如先前描述,在總線接口 130處接收待分析的數(shù)據(jù)??偩€接口 130將數(shù)據(jù)引導(dǎo)到包含每一狀態(tài)機(jī)引擎14(例如,R)、F1、F2、F3、F4、F5、F6、F7)的數(shù)據(jù)緩沖器132及指令緩沖器133的數(shù)據(jù)緩沖器系統(tǒng)159。數(shù)據(jù)緩沖器132經(jīng)配置以接收并暫時(shí)存儲(chǔ)待分析的數(shù)據(jù)。在經(jīng)說明的實(shí)施例中,每一狀態(tài)機(jī)引擎14中存在兩個(gè)數(shù)據(jù)緩沖器132 (例如,數(shù)據(jù)緩沖器A及數(shù)據(jù)緩沖器B)。可將數(shù)據(jù)存儲(chǔ)在兩個(gè)數(shù)據(jù)緩沖器132中的一者中,同時(shí)從另一數(shù)據(jù)緩沖器132清空數(shù)據(jù)以供FSM品格30分析。如先前論述,指令緩沖器133經(jīng)配置以經(jīng)由總線接口 130從處理器12接收指令,例如對(duì)應(yīng)于待分析的數(shù)據(jù)的指令。待分析的數(shù)據(jù)及對(duì)應(yīng)于數(shù)據(jù)的指令經(jīng)由IR總線及過程緩沖器接口 136從數(shù)據(jù)緩沖器系統(tǒng)159提供到FSM品格30中的一或多者(例如,F(xiàn)a、Fb、Fc、Fd、Fe、Ff、Fg、Fh)。在本實(shí)施例中,將物理FSM品格30布置成邏輯群組。具體來說,將Fg及Fh布置成邏輯群組A 162,將Fe及Ff布置成邏輯群組B 164,將Fe及Fd布置成邏輯群組C 166且將Fa及Fb布置成邏輯群組D 168。此外,如將了解,可經(jīng)由IR總線及過程緩沖器接口 136在FSM品格30與另一裝置(例如,F(xiàn)SM品格30)之間交換數(shù)據(jù)。例如,IR總線及過程緩沖器接口 136可用以在FSM品格30中的任一者之間交換數(shù)據(jù)。雖然說明8個(gè)狀態(tài)機(jī)引擎14,但是所述排裝置可具有任何合適數(shù)目個(gè)狀態(tài)機(jī)引擎14(例如,I個(gè)、2個(gè)、4個(gè)、8個(gè)等)。如將了解,IR總線及過程緩沖器接口 136可包含用于(例如,從數(shù)據(jù)緩沖器系統(tǒng)159及FSM品格30)接收數(shù)據(jù)的輸入。同樣地,IR總線及過程緩沖器接口 136可包含用于發(fā)送數(shù)據(jù)(例如,到FSM品格30)的輸出。
[0092]總線接口 130可以經(jīng)定制以有效率地使用待分析的數(shù)據(jù)的格式接收數(shù)據(jù)。具體來說,圖11到14說明如何可通過處理器12將數(shù)據(jù)指派(例如,分組)為經(jīng)由總線接口 130提供到狀態(tài)機(jī)引擎14的數(shù)據(jù)塊的實(shí)例。此外,圖15到17說明如何可經(jīng)由狀態(tài)機(jī)引擎14的數(shù)據(jù)緩沖器系統(tǒng)159接收、存儲(chǔ)及提供數(shù)據(jù)塊的實(shí)例。圖18說明如何可通過邏輯群組162、164、166及168接收數(shù)據(jù)塊。
[0093]現(xiàn)在參考圖11,說明將通過處理器12指派為數(shù)據(jù)塊以提供到狀態(tài)機(jī)引擎14的數(shù)據(jù)分段(例如,數(shù)據(jù)集合、搜索項(xiàng))的實(shí)例。在本實(shí)施例中,將多個(gè)數(shù)據(jù)分段指派為單個(gè)數(shù)據(jù)塊。每一數(shù)據(jù)塊經(jīng)指派以通過(例如,一排狀態(tài)機(jī)引擎14中的一或多個(gè)狀態(tài)機(jī)引擎14上的)FSM品格30的單個(gè)邏輯群組分析。例如,通過處理器12將數(shù)據(jù)流170 (例如,待通過處理器12發(fā)送到狀態(tài)機(jī)引擎14的大量數(shù)據(jù))指派為:對(duì)應(yīng)于希望用于邏輯群組A 162的數(shù)據(jù)的第一數(shù)據(jù)塊172、對(duì)應(yīng)于希望用于邏輯群組B 164的數(shù)據(jù)的第二數(shù)據(jù)塊174、對(duì)應(yīng)于希望用于邏輯群組C 166的數(shù)據(jù)的第三數(shù)據(jù)塊176及對(duì)應(yīng)于希望用于邏輯群組D168的數(shù)據(jù)的第四數(shù)據(jù)塊178。具體來說,通過處理器12將數(shù)據(jù)流170分為數(shù)據(jù)分段180、182、184、186、188、190、192、194、196、198 及 200。如將了解,數(shù)據(jù)分段 180、182、184、186、188、190、192、194、196、198及200中的每一者可表示待由FSM品格30分析的數(shù)據(jù)集合。如將了解,為任何合適理由,處理器12可將數(shù)據(jù)分段180、182、184、186、188、190、192、194、196、198及200指派到數(shù)據(jù)塊172、174、176及178。例如,處理器12可基于每一數(shù)據(jù)集合的長度及/或?qū)⒎治鰯?shù)據(jù)集合的次序?qū)?shù)據(jù)分段指派到特定數(shù)據(jù)塊,以有效率地處理數(shù)據(jù)集合。
[0094]可使用任何合適的方式將數(shù)據(jù)分段180、182、184、186、188、190、192、194、196、198及200指派為數(shù)據(jù)塊172、174、176及178。例如,可將數(shù)據(jù)分段180、182、184、186、188、190、192、194、196、198及200指派為數(shù)據(jù)塊172、174、176及178,使得最小化數(shù)據(jù)塊172、174、176及178中字節(jié)的數(shù)目。作為另一實(shí)例,可將數(shù)據(jù)分段180、182、184、186、188、190、192、194、196、198及200指派為數(shù)據(jù)塊172、174、176及178使得將特定數(shù)據(jù)分段分組在一起。
[0095]如所說明,第一數(shù)據(jù)塊172包含數(shù)據(jù)分段A 180、數(shù)據(jù)分段F 190及數(shù)據(jù)分段I196。第二數(shù)據(jù)塊174包含數(shù)據(jù)分段B 182及數(shù)據(jù)分段K 200。此外,第三數(shù)據(jù)塊176包含數(shù)據(jù)分段C 184、數(shù)據(jù)分段E 188及數(shù)據(jù)分段G 192。第四數(shù)據(jù)塊178包含數(shù)據(jù)分段D 186、數(shù)據(jù)分段H 194及數(shù)據(jù)分段J 198。
[0096]如將了解,為有效率地處理數(shù)據(jù)塊,數(shù)據(jù)塊可全部具有相等數(shù)據(jù)量。此外,數(shù)據(jù)塊內(nèi)的數(shù)據(jù)分段可以數(shù)據(jù)塊內(nèi)的預(yù)定間隔(例如,字節(jié)、字)開始及/或停止,使得處理裝置可確定數(shù)據(jù)分段何時(shí)開始及停止。然而,數(shù)據(jù)分段不一定具有正確數(shù)據(jù)量以依預(yù)定間隔開始及/或停止。因此,可在特定數(shù)據(jù)分段之間插入數(shù)據(jù)填補(bǔ)使得在數(shù)據(jù)塊內(nèi)數(shù)據(jù)依預(yù)定間隔開始及/或停止。此外,可對(duì)數(shù)據(jù)塊的末端添加數(shù)據(jù)填補(bǔ)使得所有數(shù)據(jù)塊具有相等數(shù)據(jù)量。
[0097]現(xiàn)在參考圖12,說明插入于圖11的數(shù)據(jù)塊172、174、176及178的數(shù)據(jù)分段之間的數(shù)據(jù)填補(bǔ)的實(shí)例。例如,在第一數(shù)據(jù)塊172中,數(shù)據(jù)填補(bǔ)202可插入在數(shù)據(jù)分段A 180與數(shù)據(jù)分段F 190之間。此外,數(shù)據(jù)填補(bǔ)204可插入在數(shù)據(jù)分段F 190與數(shù)據(jù)分段I 196之間。作為另一實(shí)例,在第二數(shù)據(jù)塊174中,數(shù)據(jù)填補(bǔ)206可插入在數(shù)據(jù)分段B 182與數(shù)據(jù)分段K 200之間。在第三數(shù)據(jù)塊176中,數(shù)據(jù)填補(bǔ)208可插入在數(shù)據(jù)分段C 184與數(shù)據(jù)分段E 188之間。同樣地,數(shù)據(jù)填補(bǔ)210可插入在數(shù)據(jù)分段E 188與數(shù)據(jù)分段G 192之間。作為另一實(shí)例,在第四數(shù)據(jù)塊178中,數(shù)據(jù)填補(bǔ)212可插入在數(shù)據(jù)分段D 186與數(shù)據(jù)分段H 194之間。此外,數(shù)據(jù)填補(bǔ)214可插入在數(shù)據(jù)分段H 194與數(shù)據(jù)分段J 198之間。
[0098]數(shù)據(jù)填補(bǔ)202、204、206、208、210、212及214可包含未經(jīng)分析的任何合適數(shù)目個(gè)字節(jié)的數(shù)據(jù)(例如,無效數(shù)據(jù)、垃圾數(shù)據(jù)、填隙數(shù)據(jù)、廢棄項(xiàng)目數(shù)據(jù)等)。在一個(gè)實(shí)施例中,被用作數(shù)據(jù)填補(bǔ)的字節(jié)數(shù)目可為在加到先前數(shù)據(jù)分段的字節(jié)的數(shù)目時(shí)達(dá)到全字邊界的字節(jié)數(shù)目(即,先前數(shù)據(jù)分段的字節(jié)數(shù)目加上被用作數(shù)據(jù)填補(bǔ)的字節(jié)數(shù)目可被全字邊界均等地除盡)。例如,數(shù)據(jù)填補(bǔ)202的字節(jié)數(shù)目可使得數(shù)據(jù)填補(bǔ)202與數(shù)據(jù)分段A180(即,先前數(shù)據(jù)分段)的組合字節(jié)數(shù)目可被全字邊界均等地除盡(例如,無余數(shù))。在經(jīng)說明的實(shí)施例中,全字邊界可為8個(gè)字節(jié)。在其它實(shí)施例中,全字邊界可為任何數(shù)目個(gè)字節(jié)或位。因此,在經(jīng)說明的實(shí)施例中,如果數(shù)據(jù)分段A 180包含63個(gè)數(shù)據(jù)字節(jié),那么數(shù)據(jù)填補(bǔ)202將包含I個(gè)數(shù)據(jù)字節(jié)(例如,使數(shù)據(jù)分段A 180與數(shù)據(jù)填補(bǔ)202之間的組合數(shù)據(jù)字節(jié)為64個(gè),其中64可被8個(gè)字節(jié)均等地除盡)。作為另一實(shí)例,如果數(shù)據(jù)分段A 180包含60個(gè)數(shù)據(jù)字節(jié)(例如,其不可被8均等地除盡),那么數(shù)據(jù)填補(bǔ)202將包含4個(gè)數(shù)據(jù)字節(jié)。作為進(jìn)一步實(shí)例,如果數(shù)據(jù)分段A 180包含64個(gè)數(shù)據(jù)字節(jié),那么數(shù)據(jù)填補(bǔ)202將包含O個(gè)數(shù)據(jù)字節(jié),或換句話說,數(shù)據(jù)分段A 180與數(shù)據(jù)分段F 190之間將無需數(shù)據(jù)填補(bǔ)202。如將了解,每一數(shù)據(jù)填補(bǔ)202、204、206、208、210、212及214可以類似方式操作。
[0099]現(xiàn)在參考圖13,說明插入在圖12的數(shù)據(jù)塊172、174、176及178的數(shù)據(jù)分段之后的數(shù)據(jù)的實(shí)例。具體來說,可視需要在每一數(shù)據(jù)塊172、174、176及178的末端處插入數(shù)據(jù)填補(bǔ)以使每一數(shù)據(jù)塊172、174、176及178中的字節(jié)數(shù)目相等。此外,可使用每一數(shù)據(jù)塊172、174、176及178的末端處的數(shù)據(jù)填補(bǔ),使得每一數(shù)據(jù)塊172、174、176及178到達(dá)如先前描述的全字邊界。在經(jīng)說明的實(shí)施例中,在數(shù)據(jù)分段I 196之后插入數(shù)據(jù)填補(bǔ)216,在數(shù)據(jù)分段G 192之后插入數(shù)據(jù)填補(bǔ)218且在數(shù)據(jù)分段J 198之后插入數(shù)據(jù)填補(bǔ)220。因此,數(shù)據(jù)塊172、174、176及178中的每一者包含相等數(shù)目個(gè)字節(jié),且數(shù)據(jù)塊172、174、176及178中的每一者到達(dá)全字邊界。
[0100]FSM品格30可能難以區(qū)分?jǐn)?shù)據(jù)填補(bǔ)與有效數(shù)據(jù)。因此,指令可伴隨數(shù)據(jù)塊172、174、176及178使得在分析有效數(shù)據(jù)期間FSM品格30可識(shí)別并忽略數(shù)據(jù)填補(bǔ)。此類指令可通過處理器12經(jīng)由總線接口 130發(fā)送到狀態(tài)機(jī)引擎14,且可通過狀態(tài)機(jī)引擎14的指令緩沖器160接收、存儲(chǔ)及提供。為產(chǎn)生指令,處理器12可在邏輯上將數(shù)據(jù)流170分為區(qū)域222、224、226、228、230、232、234 及 236??尚纬蓞^(qū)域 222、224、226、228、230、232、234 及 236 的結(jié)束邊界,使得每一區(qū)域在任何數(shù)據(jù)填補(bǔ)結(jié)束時(shí)結(jié)束。例如,第一區(qū)域222在數(shù)據(jù)填補(bǔ)208結(jié)束時(shí)結(jié)束。作為另一實(shí)例,第五區(qū)域230在數(shù)據(jù)填補(bǔ)204結(jié)束時(shí)結(jié)束。
[0101]伴隨數(shù)據(jù)塊172、174、176及178的指令可包含每一區(qū)域222、224、226、228、230、232、234及236的字節(jié)數(shù)目及每一區(qū)域內(nèi)每一數(shù)據(jù)塊172、174、176及178的有效字節(jié)數(shù)目(例如,排除字節(jié)填補(bǔ)的字節(jié)數(shù)目)。例如,指令可包含:對(duì)應(yīng)于第一區(qū)域222的字節(jié)數(shù)目238、對(duì)應(yīng)于第一區(qū)域222內(nèi)第一數(shù)據(jù)塊172的有效字節(jié)的字節(jié)數(shù)目240、對(duì)應(yīng)于第一區(qū)域222內(nèi)第二數(shù)據(jù)塊174的有效字節(jié)的字節(jié)數(shù)目242、對(duì)應(yīng)于第一區(qū)域222內(nèi)第三數(shù)據(jù)塊176的有效字節(jié)的字節(jié)數(shù)目244及對(duì)應(yīng)于第一區(qū)域222內(nèi)第四數(shù)據(jù)塊178的有效字節(jié)的字節(jié)數(shù)目 246。
[0102]同樣地,指令可包含:對(duì)應(yīng)于第二區(qū)域224的字節(jié)數(shù)目248、250、252、254及256 ;對(duì)應(yīng)于第三區(qū)域226的字節(jié)數(shù)目258、260、262、264及266 ;對(duì)應(yīng)于第四區(qū)域228的字節(jié)數(shù)目268、270、272、274及276 ;對(duì)應(yīng)于第五區(qū)域230的字節(jié)數(shù)目278、280、282、284及286 ;對(duì)應(yīng)于第六區(qū)域232的字節(jié)數(shù)目288、290、292、294及296 ;對(duì)應(yīng)于第七區(qū)域234的字節(jié)數(shù)目298,302,304及306 ;及對(duì)應(yīng)于第八區(qū)域236的字節(jié)數(shù)目308、312、314及316。因此,使用指令,F(xiàn)SM品格30可識(shí)別插入數(shù)據(jù)分段的數(shù)據(jù)填補(bǔ)。雖然本文中已呈現(xiàn)一種特定類型的指令,但是應(yīng)注意,包含于數(shù)據(jù)塊172、174、176及178的群組內(nèi)的指令可為允許FSM品格30區(qū)分有效數(shù)據(jù)與數(shù)據(jù)填補(bǔ)(即,無效數(shù)據(jù))的指令的任何合適的群組。
[0103]現(xiàn)在參考圖14,說明通過處理器12組織以發(fā)射到狀態(tài)機(jī)引擎14的數(shù)據(jù)緩沖器系統(tǒng)159的圖13的數(shù)據(jù)塊172、174、176及178的實(shí)例。數(shù)據(jù)塊172、174、176及178中的每一者經(jīng)布置具有具備等效于全字長度的字節(jié)數(shù)目318的多行數(shù)據(jù)。在經(jīng)說明的實(shí)施例中,全字長度為8個(gè)字節(jié),針對(duì)狀態(tài)機(jī)引擎14中的每一者(例如,F(xiàn)0、F1、F2、F3、F4、F5、F6及F7)由一字節(jié)表示。來自數(shù)據(jù)分段中的每一者的第一字節(jié)開始于每一數(shù)據(jù)塊172、174、176及178的右側(cè)且朝每一數(shù)據(jù)塊的左側(cè)增加,使得數(shù)據(jù)分段A 180的第一字節(jié)在列H)中且數(shù)據(jù)分段A 180的第八個(gè)字節(jié)在列F7中。如將了解,列H)表示最初將存儲(chǔ)在H)狀態(tài)機(jī)引擎14的數(shù)據(jù)緩沖器132中的數(shù)據(jù),列Fl表示最初將存儲(chǔ)在Fl狀態(tài)機(jī)引擎14的數(shù)據(jù)緩沖器132中的數(shù)據(jù),以此類推。此外,將數(shù)據(jù)分段從上而下放置在行中。如所說明,數(shù)據(jù)分段及數(shù)據(jù)填補(bǔ)的每一組合結(jié)束于列F7中(即,其各自延伸達(dá)全字長度)。此外,每一數(shù)據(jù)塊172、174、176及178大小相等。如將了解,在操作期間,可將數(shù)據(jù)塊172、174、176及178從處理器12循序提供到狀態(tài)機(jī)引擎14。
[0104]來自數(shù)據(jù)塊172、174、176及178的數(shù)據(jù)經(jīng)布置使得希望用于邏輯群組162、164、166及168的數(shù)據(jù)混合在數(shù)據(jù)緩沖器系統(tǒng)159中,使得希望用于每一邏輯群組162、164、166及168的數(shù)據(jù)的一部分混合在每一狀態(tài)機(jī)引擎14 (例如,F(xiàn)0、FU F2、F3、F4、F5、F6及F7)內(nèi)??梢源朔绞浇邮詹⒋鎯?chǔ)數(shù)據(jù)以使數(shù)據(jù)能夠經(jīng)由總線接口 130快速地提供到數(shù)據(jù)緩沖器系統(tǒng)159。在某些實(shí)施例中,數(shù)據(jù)緩沖器系統(tǒng)159的數(shù)據(jù)緩沖器132可經(jīng)配置以(例如,依預(yù)定間隔)鎖存來自總線接口 130的數(shù)據(jù)。在其它實(shí)施例中,數(shù)據(jù)緩沖器系統(tǒng)159的數(shù)據(jù)緩沖器132可基于數(shù)據(jù)緩沖器132與總線接口 130之間的連接而接收數(shù)據(jù)的有限部分。如下文詳細(xì)地解釋,當(dāng)經(jīng)由IR總線及過程緩沖器接口 136從數(shù)據(jù)緩沖器系統(tǒng)159提供數(shù)據(jù)到過程緩沖器134時(shí),清理(sort out)經(jīng)混合數(shù)據(jù)。
[0105]現(xiàn)在參考圖15,說明正通過狀態(tài)機(jī)引擎14接收的數(shù)據(jù)塊172、174、176及178的實(shí)例。具體來說,數(shù)據(jù)緩沖器系統(tǒng)159接收第一數(shù)據(jù)塊172,接著接收第二數(shù)據(jù)塊174、第三數(shù)據(jù)塊176及第四數(shù)據(jù)塊178。如上文論述,數(shù)據(jù)塊172、174、176及178中的每一者可通過處理器12指派以通過特定邏輯群組162、164、166及168分析。當(dāng)數(shù)據(jù)緩沖器系統(tǒng)159接收數(shù)據(jù)塊172、174、176及178時(shí),數(shù)據(jù)緩沖器系統(tǒng)159以系統(tǒng)方式將來自數(shù)據(jù)塊172、174、176及178的數(shù)據(jù)存儲(chǔ)到緩沖器中,使得數(shù)據(jù)將從數(shù)據(jù)緩沖器系統(tǒng)159正確地提供到FSM品格162、164、166 及 168。
[0106]因此,圖16說明如何將圖15的數(shù)據(jù)塊172、174、176及178存儲(chǔ)在狀態(tài)機(jī)引擎14的數(shù)據(jù)緩沖器系統(tǒng)159中的實(shí)例。特定來說,將來自第一數(shù)據(jù)塊172的數(shù)據(jù)存儲(chǔ)在緩沖器的第一行及其后每隔第四行(例如,行5、9、13、17等)中。類似地,將來自第二數(shù)據(jù)塊174的數(shù)據(jù)存儲(chǔ)在緩沖器的第二行及其后每隔第四行(例如,行6、10、14、18等)中。此外,將來自第三數(shù)據(jù)塊176的數(shù)據(jù)存儲(chǔ)在緩沖器的第三行及其后每隔第四行(例如,行7、11、15、19等)中。此外,來自第四數(shù)據(jù)塊178的數(shù)據(jù)存儲(chǔ)在緩沖器的第四行及其后每隔第四行(例如,行8、12、16、20等)中。應(yīng)注意,一些狀態(tài)機(jī)引擎14可包含少于或多于四個(gè)FSM品格162、164、166及168。因此,在其它實(shí)施例中,數(shù)據(jù)緩沖器系統(tǒng)159可經(jīng)配置以依另一方式存儲(chǔ)來自數(shù)據(jù)塊的數(shù)據(jù)。例如,在具有8個(gè)FSM品格的狀態(tài)機(jī)引擎14中,每一 FSM品格的數(shù)據(jù)塊可使數(shù)據(jù)存儲(chǔ)在緩沖器的一行及其后每隔第8行中。
[0107]現(xiàn)在參考圖17,說明從數(shù)據(jù)緩沖器系統(tǒng)159提供到多個(gè)FSM品格的數(shù)據(jù)的實(shí)例。具體來說,數(shù)據(jù)以數(shù)據(jù)突發(fā)從數(shù)據(jù)緩沖器系統(tǒng)159中提供到IR總線及過程緩沖器接口 136。在一個(gè)實(shí)施例中(例如,其中全字中的字節(jié)數(shù)目318為8個(gè)字節(jié)),使用8個(gè)數(shù)據(jù)突發(fā)以完成一個(gè)IR總線循環(huán)。具體來說,在第一數(shù)據(jù)突發(fā)320中,將來自列H)的4個(gè)字節(jié)(例如,來自每一數(shù)據(jù)塊172、174、176及178的字節(jié))提供到IR總線及過程緩沖器接口 136。類似地,在第二數(shù)據(jù)突發(fā)322中,將來自列Fl的4個(gè)字節(jié)(例如,來自每一數(shù)據(jù)塊172、174、176及178的字節(jié))提供到IR總線及過程緩沖器接口 136。在第三數(shù)據(jù)突發(fā)324中,將來自列F2的4個(gè)字節(jié)(例如,來自每一數(shù)據(jù)塊172、174、176及178的字節(jié))提供到IR總線及過程緩沖器接口 136。此外,在第四數(shù)據(jù)突發(fā)326中,將來自列F3的4個(gè)字節(jié)(例如,來自每一數(shù)據(jù)塊172、174、176及178的字節(jié))提供到IR總線及過程緩沖器接口 136。在第五數(shù)據(jù)突發(fā)328中,將來自列F4的4個(gè)字節(jié)(例如,來自每一數(shù)據(jù)塊172、174、176及178的字節(jié))提供到IR總線及過程緩沖器接口 136。類似地,在第六數(shù)據(jù)突發(fā)330中,將來自列F5的4個(gè)字節(jié)(例如,來自每一數(shù)據(jù)塊172、174、176及178的字節(jié))提供到IR總線及過程緩沖器接口 136。在第七數(shù)據(jù)突發(fā)332中,將來自列F6的4個(gè)字節(jié)(例如,來自每一數(shù)據(jù)塊172、174、176及178的字節(jié))提供到IR總線及過程緩沖器接口 136。此外,在第八數(shù)據(jù)突發(fā)334中,將來自列F7的4個(gè)字節(jié)(例如,來自每一數(shù)據(jù)塊172、174、176及178的字節(jié))提供到IR總線及過程緩沖器接口 136。因此,使用數(shù)據(jù)突發(fā)將數(shù)據(jù)以系統(tǒng)方式從數(shù)據(jù)緩沖器系統(tǒng)159提供到IR總線及過程緩沖器接口 136。
[0108]現(xiàn)在參考圖18,說明數(shù)據(jù)突發(fā)320、322、324、326、328、330、332及334到多個(gè)邏輯群組162、164、166及168中的數(shù)據(jù)提供的實(shí)例。具體來說,在經(jīng)說明的實(shí)施例中,邏輯群組A 162(例如,F(xiàn)g、Fh)的過程緩沖器134可經(jīng)配置以鎖存提供到IR總線及過程緩沖器接口136上的每一數(shù)據(jù)突發(fā)320、322、324、326、328、330、332及334的第一字節(jié)。類似地,邏輯群組B 164(例如,F(xiàn)e、Ff)的過程緩沖器134可經(jīng)配置以鎖存提供到IR總線及過程緩沖器接口 136上的每一數(shù)據(jù)突發(fā)320、322、324、326、328、330、332及334的第二字節(jié)。此外,邏輯群組C 166(例如,F(xiàn)c、Fd)的過程緩沖器134可經(jīng)配置以鎖存提供到IR總線及過程緩沖器接口 136上的每一數(shù)據(jù)突發(fā)320、322、324、326、328、330、332及334的第三字節(jié)。邏輯群組D 168(例如,F(xiàn)a、Fb)的過程緩沖器134可經(jīng)配置以鎖存提供到IR總線及過程緩沖器接口136上的每一數(shù)據(jù)突發(fā)320、322、324、326、328、330、332及334的第四字節(jié)。
[0109]如將了解,邏輯群組162、164、166及168的過程緩沖器134可經(jīng)配置以鎖存已提供到IR總線及過程緩沖器接口 136上的任何字節(jié)或字節(jié)的組合。此外,過程緩沖器A及過程緩沖器B可經(jīng)配置以鎖存相同或不同字節(jié)。在一個(gè)實(shí)施例中,狀態(tài)機(jī)引擎14可包含少于或多于兩個(gè)過程緩沖器134。在此實(shí)施例中,每一過程緩沖器134可經(jīng)配置以鎖存提供(例如,突發(fā))到IR總線及過程緩沖器接口 136上的特定字節(jié)。邏輯群組162、164、166及168的過程緩沖器134還可經(jīng)配置以從數(shù)據(jù)緩沖器系統(tǒng)159接收伴隨數(shù)據(jù)突發(fā)的指令。通過使用指令,邏輯群組162、164、166及168的過程緩沖器134可忽略對(duì)應(yīng)于數(shù)據(jù)區(qū)域中的字節(jié)總數(shù)與所述數(shù)據(jù)區(qū)域中的有效字節(jié)總數(shù)之間的差的數(shù)據(jù)。
[0110]雖然本發(fā)明可容許各種修改及替代形式,但是已在圖式中通過實(shí)例展示且在本文中詳細(xì)描述特定實(shí)施例。然而,應(yīng)了解,本發(fā)明并不希望限于所揭示的特定形式。實(shí)際上,本發(fā)明將涵蓋落在如所附權(quán)利要求書界定的本發(fā)明的精神及范圍內(nèi)的所有修改、等效物及替代。
【權(quán)利要求】
1.一種數(shù)據(jù)分析系統(tǒng),其包括: 數(shù)據(jù)緩沖器,其經(jīng)配置以接收待分析的數(shù)據(jù); 狀態(tài)機(jī)品格,其包括多個(gè)可配置元件且每一可配置元件包括經(jīng)配置以分析所述數(shù)據(jù)的至少一部分并輸出所述分析的結(jié)果的多個(gè)存儲(chǔ)器單元;及 緩沖器接口,其經(jīng)配置以從所述數(shù)據(jù)緩沖器接收所述數(shù)據(jù)并將所述數(shù)據(jù)提供到所述狀態(tài)機(jī)品格。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述數(shù)據(jù)緩沖器包括第一數(shù)據(jù)緩沖器及第二數(shù)據(jù)緩沖器,其中所述第一數(shù)據(jù)緩沖器及所述第二數(shù)據(jù)緩沖器中的每一者經(jīng)配置以接收數(shù)據(jù)并將數(shù)據(jù)提供到所述緩沖器接口。
3.根據(jù)權(quán)利要求2所述的系統(tǒng),其中所述第一數(shù)據(jù)緩沖器經(jīng)配置以在所述第二數(shù)據(jù)緩沖器將數(shù)據(jù)提供到所述緩沖器接口的同時(shí)接收數(shù)據(jù),且其中所述第二數(shù)據(jù)緩沖器經(jīng)配置以在所述第一數(shù)據(jù)緩沖器將數(shù)據(jù)提供到所述緩沖器接口的同時(shí)接收數(shù)據(jù)。
4.根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述數(shù)據(jù)緩沖器經(jīng)配置以接收所述數(shù)據(jù)作為數(shù)據(jù)塊且每一數(shù)據(jù)塊對(duì)應(yīng)于多個(gè)狀態(tài)機(jī)品格中的一者。
5.根據(jù)權(quán)利要求4所述的系統(tǒng),其中所述數(shù)據(jù)緩沖器經(jīng)配置以接收一個(gè)、兩個(gè)、四個(gè)或八個(gè)數(shù)據(jù)塊。
6.根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述數(shù)據(jù)緩沖器經(jīng)配置以接收所述數(shù)據(jù)作為數(shù)據(jù)塊的群組,且數(shù)據(jù)塊的每一群組包括用于所述多個(gè)狀態(tài)機(jī)品格中的每一者的數(shù)據(jù)塊。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其中所述數(shù)據(jù)緩沖器經(jīng)配置以依交替模式存儲(chǔ)數(shù)據(jù)塊的群組的每一數(shù)據(jù)塊的預(yù)定部分直到存儲(chǔ)數(shù)據(jù)塊的所述群組的每一數(shù)據(jù)塊為止,其中所述交替模式在每一數(shù)據(jù)塊之間交替。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其中每一數(shù)據(jù)塊的所述預(yù)定部分包括八個(gè)、十六個(gè)、三十二個(gè)或六十四個(gè)數(shù)據(jù)字節(jié)。
9.根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述數(shù)據(jù)緩沖器經(jīng)配置以經(jīng)由數(shù)據(jù)突發(fā)將數(shù)據(jù)提供到所述緩沖器接口,且每一數(shù)據(jù)突發(fā)包括用于多個(gè)狀態(tài)機(jī)品格中的每一者的預(yù)定部分。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其中數(shù)據(jù)的所述預(yù)定部分包括一個(gè)、兩個(gè)、四個(gè)或八個(gè)數(shù)據(jù)字節(jié)。
11.根據(jù)權(quán)利要求9所述的系統(tǒng),其包括耦合到所述多個(gè)狀態(tài)機(jī)品格中的每一者的一或多個(gè)過程緩沖器,其中每一過程緩沖器經(jīng)配置以從對(duì)應(yīng)于其相應(yīng)狀態(tài)機(jī)品格的每一數(shù)據(jù)突發(fā)確定數(shù)據(jù)的所述預(yù)定部分。
12.根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述數(shù)據(jù)緩沖器包括經(jīng)配置以接收對(duì)應(yīng)于待分析的所述數(shù)據(jù)的指令的指令緩沖器。
13.一種數(shù)據(jù)分析系統(tǒng),其包括: 多個(gè)狀態(tài)機(jī)引擎,每一狀態(tài)機(jī)引擎包括具有多個(gè)數(shù)據(jù)分析元件的狀態(tài)機(jī)品格,每一數(shù)據(jù)分析元件包括經(jīng)配置以分析數(shù)據(jù)的至少一部分并輸出所述分析的結(jié)果的多個(gè)存儲(chǔ)器單元;及 緩沖器接口,其耦合到所述多個(gè)狀態(tài)機(jī)引擎中的每一者且經(jīng)配置以接收所述數(shù)據(jù)并將所述數(shù)據(jù)提供到所述多個(gè)狀態(tài)機(jī)引擎。
14.根據(jù)權(quán)利要求13所述的系統(tǒng),其包括經(jīng)配置以接收待分析的數(shù)據(jù)并將所述數(shù)據(jù)提供到所述緩沖器接口的數(shù)據(jù)緩沖器,其中所述數(shù)據(jù)緩沖器經(jīng)配置以接收所述數(shù)據(jù)作為數(shù)據(jù)塊的群組,數(shù)據(jù)塊的每一群組包括用于所述多個(gè)狀態(tài)機(jī)引擎中的每一者的一數(shù)據(jù)塊。
15.根據(jù)權(quán)利要求14所述的系統(tǒng),其中所述數(shù)據(jù)塊中的至少一者包括與字節(jié)填補(bǔ)組合的有效數(shù)據(jù)。
16.根據(jù)權(quán)利要求15所述的系統(tǒng),其中所述數(shù)據(jù)緩沖器包括指令緩沖器,且其中所述指令緩沖器經(jīng)配置以接收識(shí)別包含字節(jié)填補(bǔ)的數(shù)據(jù)塊的部分的指令。
17.根據(jù)權(quán)利要求14所述的系統(tǒng),其中所述數(shù)據(jù)緩沖器經(jīng)配置以接收多個(gè)指令群組,且每一指令群組包括與數(shù)據(jù)塊的群組有關(guān)的數(shù)據(jù)。
18.根據(jù)權(quán)利要求17所述的系統(tǒng),其中數(shù)據(jù)塊的每一群組包括多個(gè)區(qū)域且每一指令群組包括與所述多個(gè)區(qū)域中的每一者有關(guān)的數(shù)據(jù)。
19.根據(jù)權(quán)利要求18所述的系統(tǒng),其中與所述多個(gè)區(qū)域中的每一者有關(guān)的所述數(shù)據(jù)包括所述相應(yīng)區(qū)域中的字節(jié)總數(shù)及所述相應(yīng)區(qū)域中的所述數(shù)據(jù)塊中的每一者的有效數(shù)據(jù)字節(jié)總數(shù)。
20.根據(jù)權(quán)利要求19所述的系統(tǒng),其中所述多個(gè)狀態(tài)機(jī)引擎中的每一者經(jīng)配置以忽略對(duì)應(yīng)于所述字節(jié)總數(shù)與所述有效字節(jié)總數(shù)之間的差的數(shù)據(jù)。
21.根據(jù)權(quán)利要求13所述的系統(tǒng),其中所述多個(gè)狀態(tài)機(jī)引擎包括一個(gè)、兩個(gè)、四個(gè)或八個(gè)狀態(tài)機(jī)引擎。
22.一種用于在數(shù)據(jù)分析系統(tǒng)中的裝置之間提供數(shù)據(jù)的方法,其包括: 在緩沖器接口的輸入處從第一裝置接收數(shù)據(jù);及 在所述緩沖器接口的輸出處將所述數(shù)據(jù)提供到第二裝置; 其中所述緩沖器接口實(shí)現(xiàn)數(shù)據(jù)緩沖器系統(tǒng)與多個(gè)狀態(tài)機(jī)引擎之間的通信。
23.根據(jù)權(quán)利要求22所述的方法,其中所述第一裝置包括所述數(shù)據(jù)緩沖器且所述第二裝置包括所述多個(gè)狀態(tài)機(jī)引擎。
24.根據(jù)權(quán)利要求22所述的方法,其中所述第一裝置包括所述多個(gè)狀態(tài)機(jī)引擎的第一狀態(tài)機(jī)引擎且所述第二裝置包括所述多個(gè)狀態(tài)機(jī)引擎的第二狀態(tài)機(jī)引擎。
25.一種用于準(zhǔn)備待發(fā)送到數(shù)據(jù)分析系統(tǒng)的數(shù)據(jù)的方法,其包括: 將數(shù)據(jù)流的數(shù)據(jù)分段指派到多個(gè)數(shù)據(jù)塊,其中每一數(shù)據(jù)分段包括待分析的數(shù)據(jù)集合且每一數(shù)據(jù)塊經(jīng)配置以被提供到多個(gè)狀態(tài)機(jī)引擎的對(duì)應(yīng)狀態(tài)機(jī)引擎; 在所述數(shù)據(jù)分段的至少一部分之間提供數(shù)據(jù)填補(bǔ); 在所述多個(gè)數(shù)據(jù)塊的所述數(shù)據(jù)分段的末端處提供數(shù)據(jù)填補(bǔ)以產(chǎn)生長度相同的每一數(shù)據(jù)塊;及 將所述多個(gè)數(shù)據(jù)塊提供到所述數(shù)據(jù)分析系統(tǒng)。
26.根據(jù)權(quán)利要求25所述的方法,其中提供在所述數(shù)據(jù)分段的至少一部分之間的所述數(shù)據(jù)填補(bǔ)包括至少一個(gè)字節(jié)。
27.根據(jù)權(quán)利要求25所述的方法,其中在所述數(shù)據(jù)分段的至少所述部分之間提供數(shù)據(jù)填補(bǔ)包括:在先前數(shù)據(jù)分段的字節(jié)數(shù)目不可被預(yù)定字節(jié)數(shù)目均等地除盡時(shí)在數(shù)據(jù)分段之間提供數(shù)據(jù)填補(bǔ)。
28.根據(jù)權(quán)利要求27所述的方法,其中所述預(yù)定字節(jié)數(shù)目包括八個(gè)字節(jié)。
29.根據(jù)權(quán)利要求25所述的方法,其中在先前數(shù)據(jù)分段之后經(jīng)提供作為數(shù)據(jù)填補(bǔ)的字節(jié)數(shù)目與所述先前數(shù)據(jù)分段的字節(jié)數(shù)目組合導(dǎo)致可被預(yù)定字節(jié)數(shù)目均等地除盡的組合字節(jié)數(shù)目。
30.根據(jù)權(quán)利要求25所述的方法,其中每一數(shù)據(jù)塊包括可被預(yù)定字節(jié)數(shù)目均等地除盡的字節(jié)數(shù)目。
31.根據(jù)權(quán)利要求25所述的方法,其包括將指令集合提供給所述多個(gè)數(shù)據(jù)塊,所述指令集合經(jīng)配置以區(qū)分有效數(shù)據(jù)與數(shù)據(jù)填補(bǔ)。
32.一種狀態(tài)機(jī)引擎,其包括: 總線接口,其經(jīng)配置以接收待分析的數(shù)據(jù);及 數(shù)據(jù)緩沖器系統(tǒng),其經(jīng)配置以從所述總線接口接收待分析的所述數(shù)據(jù)并將待分析的所述數(shù)據(jù)提供到狀態(tài)機(jī)品格; 其中所述總線接口經(jīng)配置以將待分析的所述數(shù)據(jù)提供到所述數(shù)據(jù)緩沖器系統(tǒng)直到所述數(shù)據(jù)緩沖器系統(tǒng)已滿為止且在所述數(shù)據(jù)緩沖器系統(tǒng)已滿之后,所述總線接口經(jīng)配置以用于其它目的。
33.根據(jù)權(quán)利要求32所述的狀態(tài)機(jī)引擎,其中所述總線接口包括第三代雙倍數(shù)據(jù)速率DDR3總線接口。
34.根據(jù)權(quán)利要求32所述的狀態(tài)機(jī)引擎,其中所述總線接口包括NAND快閃接口、外圍組件互連PCI接口或千兆位媒體獨(dú)立接口 GMMI。
35.根據(jù)權(quán)利要求32所述的狀態(tài)機(jī)引擎,其中所述總線接口經(jīng)配置以依大于所述狀態(tài)機(jī)引擎分析數(shù)據(jù)的速率的數(shù)據(jù)速率接收所述數(shù)據(jù)。
【文檔編號(hào)】G06F7/00GK104471552SQ201380038242
【公開日】2015年3月25日 申請(qǐng)日期:2013年7月9日 優(yōu)先權(quán)日:2012年7月18日
【發(fā)明者】戴維·R·布朗, 哈羅德·B·諾伊斯, 因德吉特·S·貝恩斯 申請(qǐng)人:美光科技公司