用于編程狀態(tài)機引擎的方法及裝置制造方法
【專利摘要】本發(fā)明揭示一種狀態(tài)機引擎,其具有程序緩沖器。所述程序緩沖器經(jīng)配置以經(jīng)由總線接口接收用于配置狀態(tài)機點陣的配置數(shù)據(jù)。所述狀態(tài)機引擎還包含修復映射緩沖器,所述修復映射緩沖器經(jīng)配置以經(jīng)由所述總線接口將修復映射數(shù)據(jù)提供到外部裝置。所述狀態(tài)機點陣包含多個可編程元件。每一可編程元件包含經(jīng)配置以分析數(shù)據(jù)并輸出所述分析的結(jié)果的多個存儲器單元。
【專利說明】用于編程狀態(tài)機引擎的方法及裝置
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明的實施例大體上涉及電子裝置,且更具體地說,在某些實施例中涉及具有用于數(shù)據(jù)分析的并行裝置的電子裝置。
【背景技術(shù)】
[0002]對常規(guī)的基于馮?諾伊曼(von Neumann)的計算機執(zhí)行復雜數(shù)據(jù)分析(例如,樣式辨識)可為低效率的。然而,生物大腦(尤其是人類大腦)善于執(zhí)行復雜數(shù)據(jù)分析。當前研宄表明,人類大腦使用大腦新皮質(zhì)中的一系列經(jīng)層次型組織的神經(jīng)元層執(zhí)行數(shù)據(jù)分析。層次的較低層中的神經(jīng)元分析來自(例如)感覺器官的“原始信號”,而較高層中的神經(jīng)元分析來自較低級別中的神經(jīng)元的信號輸出。大腦新皮質(zhì)中的這個層次型系統(tǒng)可能結(jié)合大腦的其它區(qū)域完成復雜數(shù)據(jù)分析,這使人類能夠執(zhí)行例如空間推理、意識思考及復雜語言的高級功能。
[0003]在計算領(lǐng)域中,例如,樣式辨識任務越來越具有挑戰(zhàn)性。計算機之間傳輸?shù)臄?shù)據(jù)量不斷增大,且用戶希望檢測的樣式的數(shù)目日益增加。例如,通常通過在數(shù)據(jù)流中搜索樣式(例如,代碼的特定短語或片段)來檢測垃圾郵件或惡意軟件。樣式的數(shù)目隨著垃圾郵件及惡意軟件的多樣性而增加,這是因為可實施新樣式以搜索新變體。針對這些樣式中的每一者搜索數(shù)據(jù)流可形成計算瓶頸。通常,當接收到數(shù)據(jù)流時,針對每一樣式一次一個地搜索數(shù)據(jù)流。在系統(tǒng)準備搜索數(shù)據(jù)流的下一部分之前的延遲隨著樣式的數(shù)目而增加。因此,樣式辨識可減慢數(shù)據(jù)的接收。
[0004]硬件已經(jīng)設計以針對樣式搜索數(shù)據(jù)流,但是這個硬件通常不能夠在給定的時間量內(nèi)處理足夠量的數(shù)據(jù)。經(jīng)配置以搜索數(shù)據(jù)流的一些裝置通過將數(shù)據(jù)流分布在多個電路之間而在給定的時間量內(nèi)處理足夠量的數(shù)據(jù)。所述電路各自確定數(shù)據(jù)流是否匹配于樣式的部分。通常,大量電路并行地操作,每一電路大體上同時搜索數(shù)據(jù)流。然而,至今仍未存在實際上允許以與生物大腦的方式更相當?shù)姆绞綀?zhí)行復雜數(shù)據(jù)分析的系統(tǒng)??善谕_發(fā)此類系統(tǒng)。
【專利附圖】
【附圖說明】
[0005]圖1說明根據(jù)本發(fā)明的各種實施例的具有狀態(tài)機引擎的系統(tǒng)的實例。
[0006]圖2說明根據(jù)本發(fā)明的各種實施例的圖1的狀態(tài)機引擎的有限狀態(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ā)明的各種實施例的用于使編譯器將源代碼轉(zhuǎn)換為二進制文件以編程圖2的FSM點陣的方法的實例。
[0013]圖9說明根據(jù)本發(fā)明的各種實施例的狀態(tài)機引擎。
[0014]圖10說明展示根據(jù)本發(fā)明的各種實施例的用于編程狀態(tài)機引擎中的FSM點陣的方法的流程圖。
【具體實施方式】
[0015]現(xiàn)在參考諸圖,圖1說明整體上由參考數(shù)字10指定的基于處理器的系統(tǒng)的實施例。系統(tǒng)10(例如,數(shù)據(jù)分析系統(tǒng))可為例如桌上型計算機、膝上型計算機、尋呼機、蜂窩電話、個人備忘記事本、便攜式音頻播放器、控制電路、相機等等的多種類型中的任一者。系統(tǒng)10還可為網(wǎng)絡節(jié)點,例如路由器、服務器或客戶端(例如,先前所描述的計算機類型中的一者)。系統(tǒng)10可為某一其它種類的電子裝置,例如復印機、掃描儀、打印機、游戲控制臺、電視機、機頂盒視頻分布或記錄系統(tǒng)、有線盒、個人數(shù)字媒體播放器、工廠自動化系統(tǒng)、汽車計算機系統(tǒng)或醫(yī)療裝置。(類似于本文中使用的許多其它術(shù)語,用以描述系統(tǒng)的這些各種實例的術(shù)語可共享一些指示物,且因此不應根據(jù)所列出的其它項目加以狹隘地理解)。
[0016]在典型的基于處理器的裝置(例如系統(tǒng)10)中,例如微處理器的處理器12控制系統(tǒng)10中的系統(tǒng)功能及請求的處理。此外,處理器12可包括共享系統(tǒng)控制的多個處理器。處理器12可直接或間接耦合到系統(tǒng)10中的組件中的每一者,使得處理器12通過執(zhí)行可存儲在系統(tǒng)10內(nèi)或系統(tǒng)10外部的指令而控制系統(tǒng)10。
[0017]根據(jù)本文中描述的實施例,系統(tǒng)10包含可在處理器12的控制下操作的狀態(tài)機引擎14。如本文中所使用,狀態(tài)機引擎14是指單一裝置(例如,單芯片)。狀態(tài)機引擎14可采用任何自動機理論。例如,狀態(tài)機引擎14可采用數(shù)個狀態(tài)機體系結(jié)構(gòu)中的一者,包含但不限于Mealy體系結(jié)構(gòu)、Moore體系結(jié)構(gòu)、有限狀態(tài)機(FSM)、確定性FSM(DFSM)、位并行狀態(tài)機(BPSM)等等。雖然可使用多種體系結(jié)構(gòu),但是出于討論目的,本申請案參考FSM。然而,所屬領(lǐng)域技術(shù)人員應了解,可使用多種狀態(tài)機體系結(jié)構(gòu)中的任一者來采用所描述技術(shù)。
[0018]如下文進一步所討論,狀態(tài)機引擎14可包含數(shù)個(例如,一或多個)有限狀態(tài)機(FSM)點陣(例如,芯片的核心)。出于本申請案的目的,術(shù)語“點陣”是指元件(例如,布爾單元、計數(shù)器單元、狀態(tài)機元件、狀態(tài)轉(zhuǎn)變元件)的組織框架(例如,路由矩陣、路由網(wǎng)絡、幀)。此外,“點陣”可具有任何合適的形狀、結(jié)構(gòu)或?qū)哟涡徒M織(例如,網(wǎng)格、立方體、球面、級聯(lián))。每一 FSM點陣可實施各自并行地接收及分析相同數(shù)據(jù)的多個FSM。此外,F(xiàn)SM點陣可布置成組(例如,群集),使得FSM點陣的群集可并行地分析相同輸入數(shù)據(jù)。此外,狀態(tài)機引擎14的FSM點陣的群集可布置在層次型結(jié)構(gòu)中,其中來自層次型結(jié)構(gòu)的較低級別上的狀態(tài)機點陣的輸出可用作到較高級別上的狀態(tài)機點陣的輸入。通過經(jīng)由層次型結(jié)構(gòu)使狀態(tài)機引擎14的并行FSM點陣的群集串聯(lián)地級聯(lián),可分析(例如,評估、搜索等等)日益復雜的樣式。
[0019]此外,基于狀態(tài)機引擎14的層次型并行配置,狀態(tài)機引擎14可用于利用高處理速度的系統(tǒng)中的復雜數(shù)據(jù)分析(例如,樣式辨識)。例如,本文中描述的實施例可合并在具有I千兆字節(jié)/秒的處理速度的系統(tǒng)中。因此,在利用狀態(tài)機引擎14的情況下,可快速地分析來自高速存儲器裝置或其它外部裝置的數(shù)據(jù)。狀態(tài)機引擎14可根據(jù)若干準則(例如,搜索項)大約同時(例如,在單一裝置周期期間)分析數(shù)據(jù)流。狀態(tài)機引擎14的級別上的FSM群集內(nèi)的FSM點陣中的每一者可各自大約同時從數(shù)據(jù)流接收同一搜索項,且并行FSM點陣中的每一者可以處理準則確定所述項是否將狀態(tài)機引擎14推進到下一狀態(tài)。狀態(tài)機引擎14可根據(jù)相對大數(shù)目個準則(例如,大于100個、大于110個或大于10,000個準則)分析諸項。因為FSM點陣并行地操作,所以其可將準則應用于具有相對高帶寬的數(shù)據(jù)流(例如,大于或一般等于I千兆字節(jié)/秒的數(shù)據(jù)流)而不減慢數(shù)據(jù)流。
[0020]在一個實施例中,狀態(tài)機引擎14可經(jīng)配置以辨識(例如,檢測)數(shù)據(jù)流中的大量樣式。例如,狀態(tài)機引擎14可用以檢測用戶或其它實體可能希望分析的多種類型的數(shù)據(jù)流中的一或多者中的樣式。例如,狀態(tài)機引擎14可經(jīng)配置以分析經(jīng)由網(wǎng)絡接收的數(shù)據(jù)流,例如經(jīng)由互聯(lián)網(wǎng)接收的分組,或經(jīng)由蜂窩網(wǎng)絡接收的語音或數(shù)據(jù)。在一個實例中,狀態(tài)機引擎14可經(jīng)配置以分析數(shù)據(jù)流的垃圾郵件或惡意軟件。數(shù)據(jù)流可被接收為串行數(shù)據(jù)流,其中以具有意義的次序(例如以時間、詞匯或語義有效的次序)接收數(shù)據(jù)。替代地,數(shù)據(jù)流可被并行地或無序地接收,且然后通過(例如)對經(jīng)由互聯(lián)網(wǎng)接收的分組進行重新排序而轉(zhuǎn)換為串行數(shù)據(jù)流。在一些實施例中,數(shù)據(jù)流可串行地呈現(xiàn)諸項,但是可并行地接收表達所述項中的每一者的位。數(shù)據(jù)流可從系統(tǒng)10外部的源接收,或可通過詢問例如存儲器16的存儲器裝置且由存儲在存儲器16中的數(shù)據(jù)形成數(shù)據(jù)流而形成。在其它實例中,狀態(tài)機引擎14可經(jīng)配置以辨識拼寫某一字的字符序列、指定基因的基因堿基對序列、形成圖像的部分的圖片或視頻文件中的位序列、形成程序的部分的可執(zhí)行文件中的位序列,或形成歌曲或口語短語的部分的音頻文件中的位序列。待分析的數(shù)據(jù)流可包含呈二進制格式或其它格式(例如,十進制、ASCII等等)的多個數(shù)據(jù)位。所述流可編碼具有單一數(shù)字或多個數(shù)字(例如,若干二進制數(shù)字)的數(shù)據(jù)。
[0021]應了解,系統(tǒng)10可包含存儲器16。存儲器16可包含易失性存儲器,例如動態(tài)隨機存取存儲器(DRAM)、靜態(tài)隨機存取存儲器(SRAM)、同步DRAM (SDRAM)、雙數(shù)據(jù)速率DRAM (DDRSDRAM)、DDR2 SDRAM,DDR3 SDRAM等等。存儲器16還可包含非易失性存儲器,例如只讀存儲器(ROM)、PC-RAM、硅-氧化物-氮化物-氧化物-硅(SONOS)存儲器、金屬-氧化物-氮化物-氧化物-硅(MONOS)存儲器、基于多晶硅浮動門極的存儲器,及/或待結(jié)合易失性存儲器使用的各種體系結(jié)構(gòu)的其它類型的閃存存儲器(例如,NAND存儲器、NOR存儲器等等)。存儲器16可包含可提供待由狀態(tài)機引擎14分析的數(shù)據(jù)的一或多個存儲器裝置,例如DRAM裝置。如本文中所使用,術(shù)語“提供” 一般可指引導、輸入、插入、發(fā)送、傳送、傳輸、產(chǎn)生、給出、輸出、放置、寫入等等。這些裝置可被稱為或包含固態(tài)驅(qū)動器(SSD)、多媒體卡(MMC)、安全數(shù)字(SD)卡、閃存(CF)卡,或任何其它合適的裝置。此外,應了解,這些裝置可經(jīng)由任何合適的接口(例如通用串行總線(USB)、外圍組件互連(PCI)、快速PCI (PC1-E)、小型計算機系統(tǒng)接口(SCSI)、IEEE 1394 (Firewire),或任何其它合適的接口)耦合到系統(tǒng)10。為了促進存儲器16 (例如閃存存儲器裝置)的操作,系統(tǒng)10可包含存儲器控制器(未說明)。應了解,存儲器控制器可為獨立裝置,或其可與處理器12成一體式。另外,系統(tǒng)10可包含外部存儲裝置18,例如磁性存儲裝置。外部存儲器還可將輸入數(shù)據(jù)提供到狀態(tài)機引擎14。
[0022]系統(tǒng)10可包含數(shù)個額外元件。例如,如關(guān)于圖8更詳細地所描述,編譯器20可用以配置(例如,編程)狀態(tài)機引擎14。輸入裝置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)還可包含用于與網(wǎng)絡(例如互聯(lián)網(wǎng))界接的網(wǎng)絡接口裝置26,例如網(wǎng)絡接口卡(NIC)。應了解,取決于系統(tǒng)10的應用,系統(tǒng)10可包含許多其它組件。
[0023]圖2到5說明FSM點陣30的實例。在實例中,F(xiàn)SM點陣30包括塊32的陣列。如將描述,每一塊32可包含對應于FSM中的多個狀態(tài)的多個可選擇性耦合的硬件元件(例如,可配置元件及/或?qū)S迷?。類似于FSM中的狀態(tài),硬件元件可分析輸入流并基于輸入流激活下游硬件元件。
[0024]可配置元件可經(jīng)配置(例如,編程)以實施許多不同功能。例如,可配置元件可包含層次型地組織成行38 (圖3及4所展示)及塊32 (圖2及3所展示)的狀態(tài)機元件(SME) 34,36 (圖5所展示)。SME還可被視為狀態(tài)轉(zhuǎn)變元件(STE)。為了在經(jīng)層次型組織的SME 34,36之間路由信號,可使用可配置交換元件的層次,包含塊間交換元件40(圖2及3所展示)、塊內(nèi)交換元件42(圖3及4所展示)及行內(nèi)交換元件44(圖4所展示)。
[0025]如上文所描述,交換元件可包含路由結(jié)構(gòu)及緩沖器。SME 34、36可對應于由FSM點陣30實施的FSM的狀態(tài)。SME 34、36可通過使用如下文所描述的可配置交換元件而耦合在一起。因此,可通過以下各者而對FSM點陣30實施FSM:配置SME 34、36以對應于狀態(tài)功能,且選擇性地將SME 34,36耦合在一起以對應于FSM中的狀態(tài)之間的轉(zhuǎn)變。
[0026]圖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以配置(例如,經(jīng)由圖像、程序)FSM點陣30。圖像可配置(例如,設置)SME 34、36的狀態(tài)。S卩,圖像可配置SME 34,36以依某一方式而對輸入塊52處的給定輸入作出反應。例如,可設置SME 34、36以在輸入塊52處接收到字符“a”時輸出高信號。
[0027]在實例中,輸入塊52、輸出塊54及/或編程接口 56可被實施為寄存器,使得到寄存器的寫入或從寄存器的讀取將數(shù)據(jù)提供到相應元件或從相應元件提供數(shù)據(jù)。因此,可將來自存儲在對應于編程接口 56的寄存器中的圖像的位加載在SME 34,36上。雖然圖2說明塊32、輸入塊52、輸出塊54與塊間交換元件40之間的某一數(shù)目個導體(例如,導線、跡線),但是應理解,在其它實例中,可使用更少或更多導體。
[0028]圖3說明塊32的實例。塊32可包含可選擇性地與可配置塊內(nèi)交換元件42耦合在一起的多個行38。另外,行38可使用塊間交換元件40選擇性地耦合到另一塊32內(nèi)的另一行38。行38包含組織成在本文中被稱為兩個為一組(GOT) 60的元件對的多個SME 34、36。在實例中,塊32包括十六(16)個行38。
[0029]圖4說明行38的實例。GOT 60可由可配置行內(nèi)交換元件44選擇性地耦合到行38內(nèi)的其它GOT 60及任何其它組件(例如,專用元件58)。GOT 60還可使用塊內(nèi)交換元件42耦合到其它行38中的其它GOT 60,或使用塊間交換元件40耦合到其它塊32中的其它GOT 60。在實例中,GOT 60具有第一輸入62及第二輸入64以及輸出66。如將參考圖5進一步所說明,第一輸入62耦合到GOT 60的第一 SME 34,且第二輸入64耦合到GOT 60的第二 SME 36。
[0030]在實例中,行38包含第一多個行互連導體68及第二多個行互連導體70。在實例中,GOT 60的輸入62、64可耦合到一或多個行互連導體68、70,且輸出66可耦合到一或多個行互連導體68、70。在實例中,第一多個行互連導體68可耦合到行38內(nèi)的每一 GOT 60的每一 SME 34,36ο第二多個行互連導體70可只耦合到行38內(nèi)的每一 GOT 60的一個SME34、36,但無法耦合到GOT 60的另一 SME 34、36。在實例中,如將關(guān)于圖5更佳地所說明,第二多個行互連導體70的第一半部分可耦合到行38內(nèi)的SME 34、36的第一半部分(來自每一 GOT 60的一個SME 34),且第二多個行互連導體70的第二半部分可耦合到行38內(nèi)的SME 34,36的第二半部分(來自每一 GOT 60的另一 SME 34,36)。第二多個行互連導體70與SME 34、36之間的有限連接性在本文中被稱為“奇偶校驗”。在實例中,行38還可包含專用元件58,例如計數(shù)器、可配置布爾邏輯元件、查找表、RAM、現(xiàn)場可配置門陣列(FPGA)、專用集成電路(ASIC)、可配置處理器(例如,微處理器),或用于執(zhí)行專用功能的其它元件。
[0031]在實例中,專用元件58包括計數(shù)器(在本文中還被稱為計數(shù)器58)。在實例中,計數(shù)器58包括12位可配置遞減計數(shù)器。12位可配置計數(shù)器58具有計數(shù)輸入、復位輸入及零計數(shù)輸出。計數(shù)輸入在經(jīng)斷言時使計數(shù)器58的值遞減I。復位輸入在經(jīng)斷言時致使計數(shù)器58從關(guān)聯(lián)寄存器加載初始值。對于12位計數(shù)器58,可加載高達12位數(shù)字作為初始值。當計數(shù)器58的值遞減到零(O)時,零計數(shù)輸出被斷言。計數(shù)器58還具有至少兩個模式:脈沖及保持。當將計數(shù)器58設置為脈沖模式時,零計數(shù)輸出在計數(shù)器58達到零及時鐘周期時被斷言。零計數(shù)輸出在計數(shù)器58的下一時鐘周期期間被斷言。引起計數(shù)器58在時間上偏離時鐘周期。在下一時鐘周期時,零計數(shù)輸出不再被斷言。當將計數(shù)器58設置為保持模式時,零計數(shù)輸出在計數(shù)器58遞減到零的時鐘周期期間被斷言,且保持斷言直到通過正被斷言的復位輸入來復位計數(shù)器58為止。
[0032]在另一實例中,專用元件58包括布爾邏輯。例如,布爾邏輯可用以執(zhí)行邏輯函數(shù),例如AND、OR、NAND, N0R、積和(SoP)、否定輸出積和(NSoP)、否定輸出和積(NPoS)及和積(PoS)函數(shù)。這個布爾邏輯可用以從FSM點陣30中的終端狀態(tài)SME(如本文隨后所討論,對應于FSM的終端節(jié)點)提取數(shù)據(jù)。所提取的數(shù)據(jù)可用以將狀態(tài)數(shù)據(jù)提供到其它FSM點陣30及/或提供用以重配置FSM點陣30或重配置另一 FSM點陣30的配置數(shù)據(jù)。
[0033]圖5說明GOT 60的實例。GOT 60包含第一 SME 34及第二 SME 36,其具有輸入62、64以及其耦合到OR門76及3對I多路復用器78的輸出72、74。3對I多路復用器78可經(jīng)設置以將GOT 60的輸出66耦合到第一 SME 34、第二 SME 36或OR門76。OR門76可用以將兩個輸出72、74耦合在一起以形成GOT 60的共同輸出66。在實例中,如上文所討論,第一 SME 34及第二 SME 36展現(xiàn)奇偶校驗,在第一 SME 34的輸入62可耦合到一些行互連導體68且第二 SME 36的輸入64可耦合到其它行互連導體70的情況下,可產(chǎn)生可克服奇偶校驗問題的共同輸出66。在實例中,GOT 60內(nèi)的兩個SME 34、36可通過設置交換元件79中的任一者或兩者而級聯(lián)及/或循環(huán)回到其自身。SME 34、36可通過將SME 34、36的輸出72,74耦合到另一 SME 34,36的輸入62、64而級聯(lián)。SME 34,36可通過將輸出72、74耦合到其自己的輸入62、64而循環(huán)回到其自身。因此,第一 SME 34的輸出72可不耦合到第一SME 34的輸入62及第二 SME 36的輸入64、耦合到第一 SME 34的輸入62及第二 SME 36的輸入64中的一者,或耦合到第一 SME 34的輸入62及第二 SME 36的輸入64中的兩者。
[0034]在實例中,狀態(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ù)接收信號。在實例中,解碼輸入塊52處的輸入以選擇存儲器單元80中的一或多者。選定存儲器單元80將其所存儲的數(shù)據(jù)狀態(tài)作為輸出提供到檢測線82上。例如,可將輸入塊52處接收的數(shù)據(jù)提供到解碼器(未展示),且解碼器可選擇數(shù)據(jù)流線84中的一或多者。在實例中,解碼器可將8位ACSII字符轉(zhuǎn)換到256個數(shù)據(jù)流線84中的對應I數(shù)據(jù)流線。
[0035]因此,當將存儲器單元80設置為高值且數(shù)據(jù)流線84上的數(shù)據(jù)選擇存儲器單元80時,存儲器單元80將高信號輸出到檢測線82。當數(shù)據(jù)流線84上的數(shù)據(jù)選擇存儲器單元80且將存儲器單元80設置為低值時,存儲器單元80將低信號輸出到檢測線82。檢測線82上來自存儲器單元80的輸出是由檢測單元86感測。
[0036]在實例中,輸入線62、64上的信號將相應檢測單元86設置為活動狀態(tài)或非活動狀態(tài)。當設置為非活動狀態(tài)時,不管相應檢測線82上的信號如何,檢測單元86在相應輸出72、74上輸出低信號。當設置為活動狀態(tài)時,檢測單元86在從相應SME 34、36的存儲器單元82中的一者檢測到高信號時在相應輸出線72、74上輸出高信號。當處于活動狀態(tài)時,檢測單元86在來自相應SME 34,36的所有存儲器單元82的信號為低時在相應輸出線72、74上輸出低信號。
[0037]在實例中,SME 34,36包含256個存儲器單元80,且每一存儲器單元80耦合到不同數(shù)據(jù)流線84。因此,SME 34、36可經(jīng)編程以在數(shù)據(jù)流線84中選定的一或多者上具有高信號時輸出高信號。例如,SME 34可具有設置為高的第一存儲器單元80 (例如,位O),及設置為低的所有其它存儲器單元80 (例如,位I到255)。當相應檢測單元86處于活動狀態(tài)時,SME 34在對應于位O的數(shù)據(jù)流線84上具有高信號時在輸出72上輸出高信號。在其它實例中,SME 34可經(jīng)設置以在多個數(shù)據(jù)流線84中的一者上具有高信號時通過將適當?shù)拇鎯ζ鲉卧?0設置為高值而輸出高信號。
[0038]在實例中,可通過從關(guān)聯(lián)寄存器讀取位而將存儲器單元80設置為高值或低值。因此,可通過將由編譯器20創(chuàng)建的圖像存儲到寄存器中且將寄存器中的位加載到關(guān)聯(lián)存儲器單元80中來配置SME 34。在實例中,由編譯器20創(chuàng)建的圖像包含高及低(例如,I及O)位的二進制圖像。圖像可配置FSM點陣30以通過使SME 34、36級聯(lián)而實施FSM。例如,可通過將檢測單元86設置為活動狀態(tài)而將第一 SME 34設置為活動狀態(tài)。第一 SME 34可經(jīng)設置以在對應于位O的數(shù)據(jù)流線84上具有高信號時輸出高信號。第二 SME 36最初可被設置為非活動狀態(tài),但是在活動時可經(jīng)設置以在對應于位I的數(shù)據(jù)流線84上具有高信號時輸出高信號??赏ㄟ^設置第一 SME 34的輸出72以耦合到第二 SME 36的輸入64而使第一SME 34及第二 SME 36級聯(lián)。因此,當在對應于位O的數(shù)據(jù)流線84上感測到高信號時,第一SME 34在輸出72上輸出高信號且將第二 SME 36的檢測單元86設置為活動狀態(tài)。當在對應于位I的數(shù)據(jù)流線84上感測到高信號時,第二 SME 36在輸出74上輸出高信號以激活另一 SME 36或從FSM點陣30輸出。
[0039]在實例中,在單一物理裝置上實施單一 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ù)。
[0040]在實例中,用于加載到FSM點陣30上的圖像包括用于配置FSM點陣30內(nèi)的可配置元件、可配置交換元件及專用元件的多個數(shù)據(jù)位。在實例中,可將圖像加載到FSM點陣30上以配置FSM點陣30以基于某些輸入提供所要輸出。輸出塊54可基于可配置元件對數(shù)據(jù)輸入塊52處的數(shù)據(jù)的反應而自FSM點陣30提供輸出。來自輸出塊54的輸出可包含指示給定樣式的匹配的單一位、包括指示與多個樣式的匹配及非匹配的多個位的字,及對應于所有或某些可配置元件在給定時刻的狀態(tài)的狀態(tài)矢量。如所描述,狀態(tài)機引擎(例如狀態(tài)機引擎14)中可包含數(shù)個FSM點陣30以執(zhí)行數(shù)據(jù)分析,例如樣式辨識(例如,語音辨識、圖像辨識等等)、信號處理、成像、計算機視覺、加密及其它。
[0041]圖6說明可由FSM點陣30實施的有限狀態(tài)機(FSM)的實例模型。FSM點陣30可經(jīng)配置(例如,編程)為FSM的物理實施方案。可將FSM表示為圖表90 (例如,有向圖、無向圖、偽圖),其含有一或多個根節(jié)點92。除了根節(jié)點92以外,F(xiàn)SM還可由通過一或多個邊緣98連接到根節(jié)點92及其它標準節(jié)點94的若干標準節(jié)點94及終端節(jié)點96構(gòu)成。節(jié)點92、94、96對應于FSM中的狀態(tài)。邊緣98對應于狀態(tài)之間的轉(zhuǎn)變。
[0042]節(jié)點92、94、96中的每一者可處于活動狀態(tài)或非活動狀態(tài)。當處于非活動狀態(tài)時,節(jié)點92、94、96不對輸入數(shù)據(jù)作出反應(例如,響應)。當處于活動狀態(tài)時,節(jié)點92、94、96可對輸入數(shù)據(jù)作出反應。當輸入數(shù)據(jù)匹配于由上游節(jié)點92、94與所述節(jié)點下游的節(jié)點94、96之間的邊緣98指定的準則時,上游節(jié)點92、94可通過激活下游節(jié)點94、96而對輸入數(shù)據(jù)作出反應。例如,當指定字符“b”的第一節(jié)點94活動且接收字符“b”作為輸入數(shù)據(jù)時,第一節(jié)點94將激活由邊緣98連接到第一節(jié)點94的第二節(jié)點94。如本文中所使用,“上游”是指一或多個節(jié)點之間的關(guān)系,其中在一或多個其它節(jié)點上游(或在循環(huán)或反饋配置的情況中,在其自身上游)的第一節(jié)點是指其中第一節(jié)點可激活所述一或多個其它節(jié)點(或在循環(huán)的情況中,可激活其自身)的情形。類似地,“下游”是指其中在一或多個其它節(jié)點下游(或在循環(huán)的情況中,在其自身下游)的第一節(jié)點可由所述一或多個其它節(jié)點激活(或在循環(huán)的情況中,可由其自身激活)的關(guān)系。因此,術(shù)語“上游”及“下游”在本文中用以是指一或多個節(jié)點之間的關(guān)系,但是這些術(shù)語并不排除使用循環(huán)或節(jié)點之間的其它非線性路徑。
[0043]在圖表90中,根節(jié)點92可最初被激活,且可在輸入數(shù)據(jù)匹配于來自根節(jié)點92的邊緣98時激活下游節(jié)點94。當輸入數(shù)據(jù)匹配于來自節(jié)點94的邊緣98時,節(jié)點94可激活節(jié)點96。在接收到輸入數(shù)據(jù)時,可以此方式激活貫穿圖表90的節(jié)點94、96。終端節(jié)點96對應于輸入數(shù)據(jù)的所關(guān)注序列的匹配。因此,激活終端節(jié)點96指示已接收所關(guān)注序列作為輸入數(shù)據(jù)。在FSM點陣30實施樣式辨識功能的上下文中,到達終端節(jié)點96可指示已在輸入數(shù)據(jù)中檢測到所關(guān)注特定樣式。
[0044]在實例中,每一根節(jié)點92、標準節(jié)點94及終端節(jié)點96可對應于FSM點陣30中的可配置元件。每一邊緣98可對應于可配置元件之間的連接。因此,轉(zhuǎn)變到另一標準節(jié)點94或終端節(jié)點96 (例如,具有連接到另一標準節(jié)點94或終端節(jié)點96的邊緣98)的標準節(jié)點94對應于轉(zhuǎn)變到(例如,將輸出提供到)另一可配置元件的可配置元件。在一些實例中,根節(jié)點92并不具有對應可配置元件。
[0045]應了解,雖然節(jié)點92被描述為根節(jié)點且節(jié)點96被描述為終端節(jié)點,但是可未必存在特定“開始”或根節(jié)點,且可未必存在特定“結(jié)束”或輸出節(jié)點。換句話來說,任何節(jié)點均可為開始點且任何節(jié)點可提供輸出。
[0046]當編程FSM點陣30時,可配置元件中的每一者還可處于活動狀態(tài)或非活動狀態(tài)。給定可配置元件在非活動時不對對應數(shù)據(jù)輸入塊52處的輸入數(shù)據(jù)作出反應?;顒涌膳渲迷蓪?shù)據(jù)輸入塊52處的輸入數(shù)據(jù)作出反應,且可在輸入數(shù)據(jù)匹配于可配置元件的設置時激活下游可配置元件。當可配置元件對應于終端節(jié)點96時,可配置元件可耦合到輸出塊54以將匹配的指示提供到外部裝置。
[0047]經(jīng)由編程接口 56加載到FSM點陣30上的圖像可配置所述可配置元件及專用元件以及所述可配置元件與專用元件之間的連接,使得基于對數(shù)據(jù)輸入塊52處的數(shù)據(jù)的反應而通過節(jié)點的順序激活來實施所要FSM。在實例中,可配置元件保持活動達單一數(shù)據(jù)周期(例如,單一字符、字符集合、單一時鐘周期)且然后變得非活動,除非由上游可配置元件重新激活。
[0048]可認為終端節(jié)點96存儲經(jīng)壓縮的過去事件歷史。例如,到達終端節(jié)點96所需要的輸入數(shù)據(jù)的一或多個樣式可通過那個終端節(jié)點96的激活而表示。在實例中,由終端節(jié)點96提供的輸出為二進制,S卩,輸出指示所關(guān)注樣式是否已被匹配。在圖表90中的終端節(jié)點96對標準節(jié)點94的比率可相當小。換句話來說,雖然在FSM中存在高復雜度,但是比較而言,F(xiàn)SM的輸出可小。
[0049]在實例中,F(xiàn)SM點陣30的輸出可包括狀態(tài)矢量。狀態(tài)矢量包括FSM點陣30的可配置元件的狀態(tài)(例如,激活或未激活)。在另一實例中,狀態(tài)矢量可包含可配置元件的全部或子集的狀態(tài),而無論可配置元件是否對應于終端節(jié)點96。在實例中,狀態(tài)矢量包含對應于終端節(jié)點96的可配置元件的狀態(tài)。因此,輸出可包含由圖表90的全部終端節(jié)點96提供的指示的集合。可將狀態(tài)矢量表示為字,其中由每一終端節(jié)點96提供的二進制指示包括所述字的一個位。終端節(jié)點96的這種編碼可針對FSM點陣30提供檢測狀態(tài)的有效指示(例如,是否已檢測到所關(guān)注序列及已檢測到哪些所關(guān)注序列)。
[0050]如上文所提及,F(xiàn)SM點陣30可經(jīng)編程以實施樣式辨識功能。例如,F(xiàn)SM點陣30可經(jīng)配置以辨識輸入數(shù)據(jù)中的一或多個數(shù)據(jù)序列(例如,簽名、樣式)。當由FSM點陣30辨識所關(guān)注數(shù)據(jù)序列時,可在輸出塊54處提供所述辨識的指示。在實例中,樣式辨識可辨識一串符號(例如,ASCII字符)以(例如)識別網(wǎng)絡數(shù)據(jù)中的惡意軟件或其它數(shù)據(jù)。
[0051]圖7說明層次型結(jié)構(gòu)100的實例,其中FSM點陣30的兩個級別串聯(lián)地耦合且用以分析數(shù)據(jù)。具體地說,在所說明的實施例中,層次型結(jié)構(gòu)100包含串聯(lián)地布置的第一 FSM點陣30A及第二 FSM點陣30B。每一 FSM點陣30包含用以接收數(shù)據(jù)輸入的相應數(shù)據(jù)輸入塊52、用以接收配置信號的編程接口塊56,及輸出塊54。
[0052]第一 FSM點陣30A經(jīng)配置以在數(shù)據(jù)輸入塊處接收輸入數(shù)據(jù),例如原始數(shù)據(jù)。第一FSM點陣30A對如上文所描述的輸入數(shù)據(jù)作出反應,并在輸出塊處提供輸出。將來自第一FSM點陣30A的輸出發(fā)送到第二 FSM點陣30B的數(shù)據(jù)輸入塊。然后,第二 FSM點陣30B可基于由第一 FSM點陣30A提供的輸出作出反應,并提供層次型結(jié)構(gòu)100的對應輸出信號102。兩個FSM點陣30A及30B的此串聯(lián)層次型耦合提供用以將關(guān)于經(jīng)壓縮字中的過去事件的數(shù)據(jù)從第一 FSM點陣30A提供到第二 FSM點陣30B的方式。所提供的數(shù)據(jù)實際上可為已由第一 FSM點陣30A記錄的復雜事件(例如,所關(guān)注序列)的摘要。
[0053]圖7所展示的FSM點陣30A、30B的雙級別層次100允許兩個獨立程序基于同一數(shù)據(jù)流而操作。所述雙級層次可類似于模型化為不同區(qū)域的生物大腦中的視覺辨識。在這個模型下,所述區(qū)域?qū)嶋H上為不同樣式辨識引擎,其各自執(zhí)行類似計算功能(樣式匹配),但使用不同程序(簽名)。通過將多個FSM點陣30A、30B連接在一起,可獲得關(guān)于數(shù)據(jù)流輸入的增加知識。
[0054]層次的第一級別(由第一 FSM點陣30A實施)可(例如)直接對原始數(shù)據(jù)流執(zhí)行處理。g卩,可在第一 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ù)流匹配的所關(guān)注樣式的指示。第二FSM點陣30B可實施辨識來自第一 FSM點陣30A的輸出數(shù)據(jù)流中的樣式的FSM。應了解,除了從FSM點陣30A接收輸出以外,第二 FSM點陣30B還可從多個其它FSM點陣接收輸入。同樣地,第二 FSM點陣30B可從其它裝置接收輸入。第二 FSM點陣30B可組合這多個輸入以產(chǎn)生輸出。
[0055]圖8說明用于使編譯器將源代碼轉(zhuǎn)換為經(jīng)配置以配置FSM點陣(例如點陣30)以實施FSM的圖像的方法110的實例。方法110包含:將源代碼剖析為語法樹(方框112);將語法樹轉(zhuǎn)換為自動機(方框114);優(yōu)化自動機(方框116);將自動機轉(zhuǎn)換為連線表(方框118);將連線表放置于硬件上(方框120);路由連線表(方框122);及發(fā)布所得圖像(方框 124)ο
[0056]在實例中,編譯器20包含允許軟件開發(fā)者創(chuàng)建圖像以實施FSM點陣30上的FSM的應用程序編程接口(API)。編譯器20提供用以將源代碼中的正則表達式的輸入集合轉(zhuǎn)換為經(jīng)配置以配置FSM點陣30的圖像的方法。編譯器20可通過用于具有馮?諾伊曼體系結(jié)構(gòu)的計算機的指令加以實施。這些指令可致使計算機上的處理器12實施編譯器20的功能。例如,所述指令在由處理器12執(zhí)行時可致使處理器12對可由處理器12存取的源代碼執(zhí)行如方框112、114、116、118、120、122及124中描述的動作。
[0057]在實例中,源代碼描述用于識別符號組內(nèi)的符號樣式的搜索字符串。為了描述搜索字符串,源代碼可包含多個正則表達式(regex)。regex可為用于描述符號搜索樣式的字符串。regex廣泛地用于各種計算機域中,例如編程語言、文本編輯器、網(wǎng)絡安全性及其它。在實例中,由編譯器支持的正則表達式包含用于分析未結(jié)構(gòu)化數(shù)據(jù)的準則。未結(jié)構(gòu)化數(shù)據(jù)可包含自由格式的數(shù)據(jù),且不具有應用于數(shù)據(jù)內(nèi)的字的索引。字可包含數(shù)據(jù)內(nèi)可打印及不可打印的字節(jié)的任何組合。在實例中,編譯器可支持多種不同源代碼語言以用于實施包含Perl (例如,Perl兼容正則表達式(PCRE))、PHR、Jave及NET語言的regex。
[0058]在方框112處,編譯器20可剖析源代碼以形成相關(guān)連接的運算符的布置,其中不同類型的運算符對應于由源代碼實施的不同函數(shù)(例如,由源代碼中的regex實施的不同函數(shù))。剖析源代碼可創(chuàng)建源代碼的通用表示。在實例中,通用表示包括呈稱作語法樹的樹形圖的形式的源代碼中的regex的經(jīng)編碼表示。本文中描述的實例參考作為語法樹(亦稱作“抽象語法樹”)的布置,然而,在其它實例中,可使用具體語法樹或其它布置。
[0059]如上文所提及,因為編譯器20可支持源代碼的多種語言,所以剖析將源代碼轉(zhuǎn)換為非語言特定表示(例如語法樹),而不管語言如何。因此,由編譯器20進行的進一步處理(方框114、116、118、120)可從共同輸入結(jié)構(gòu)發(fā)揮作用,而不管源代碼的語言如何。
[0060]如上文所提到,語法樹包含相關(guān)地連接的多個運算符。語法樹可包含多種不同類型的運算符。即,不同運算符可對應于源代碼中由regex實施的不同函數(shù)。
[0061]在方框114處,將語法樹轉(zhuǎn)換為自動機。自動機包括FSM的軟件模型,且因此可分類為確定性或非確定性。確定性自動機在給定時間具有單一執(zhí)行路徑,而非確定性自動機具有多個并發(fā)執(zhí)行路徑。自動機包括多個狀態(tài)。為了將語法樹轉(zhuǎn)換為自動機,將語法樹中的運算符及運算符之間的關(guān)系轉(zhuǎn)換為狀態(tài),其中在所述狀態(tài)之間具有轉(zhuǎn)變。在實例中,可部分地基于FSM點陣30的硬件而轉(zhuǎn)換自動機。
[0062]在實例中,用于自動機的輸入符號包含字母表的符號、數(shù)字O到9,及其它可打印字符。在實例中,輸入符號是由字節(jié)值O到255 (包含O及255在內(nèi))表示。在實例中,自動機可表示為有向圖,其中所述圖形的節(jié)點對應于狀態(tài)集合。在實例中,輸入符號α上從狀態(tài)P到狀態(tài)q的轉(zhuǎn)變(即,S (ρ,α ))是通過從節(jié)點P到節(jié)點q的有向連接而展示。在實例中,自動機的反轉(zhuǎn)產(chǎn)生新自動機,其中某一符號α上的每一轉(zhuǎn)變P —q在同一符號上反轉(zhuǎn)q —P。在反轉(zhuǎn)中,開始狀態(tài)變?yōu)樽罱K狀態(tài),且最終狀態(tài)變?yōu)殚_始狀態(tài)。在實例中,由自動機辨識(例如,匹配)的語言為在順序地輸入到自動機中時將到達最終狀態(tài)的全部可能字符串的集合。由自動機辨識的語言中的每一字符串跟蹤從開始狀態(tài)到一或多個最后終態(tài)的路徑。
[0063]在方框116處,在構(gòu)造自動機之后,優(yōu)化自動機以尤其減小其復雜度及大小??赏ㄟ^組合冗余狀態(tài)優(yōu)化自動機。
[0064]在方框118處,將經(jīng)優(yōu)化的自動機轉(zhuǎn)換為連線表。將自動機轉(zhuǎn)換為連線表會將自動機的每一狀態(tài)映射到FSM點陣30上的硬件元件(例如,SME 34、36、其它組件),并確定硬件元件之間的連接。
[0065]在方框120處,放置連線表以選擇目標裝置的對應于連線表的每一節(jié)點的特定硬件元件(例如,SME 34、36、專用元件58)。在實例中,放置基于針對FSM點陣30的一般輸入及輸出約束來選擇每一特定硬件元件。
[0066]在方框122處,路由經(jīng)放置的連線表以確定用于可配置交換元件(例如,塊間交換元件40、塊內(nèi)交換元件42及行內(nèi)交換元件44)的設置,以將選定硬件元件親合在一起以實現(xiàn)由連線表描述的連接。在實例中,通過確定FSM點陣30的將用以連接選定硬件元件的特定導體及用于可配置交換元件的設置的特定導體來確定用于可配置交換元件的設置。與方框120處的放置相比,路由可考慮硬件元件之間的連接的更多特定限制。因此,路由可調(diào)整如通過全局放置而確定的一些硬件元件的位置,以鑒于FSM點陣30上的導體的實際限制而作出適當連接。
[0067]—旦放置及路由連線表,便可將經(jīng)放置及路由的連線表轉(zhuǎn)換為用于配置FSM點陣30的多個位。所述多個位在本文中稱為圖像。
[0068]在方框124處,由編譯器20發(fā)布圖像。圖像包括用于配置FSM點陣30的特定硬件元件的多個位。在其中圖像包括多個位(例如,O及I)的實施例中,圖像可稱為二進制圖像。可將位加載到FSM點陣30上以配置SME 34、36、專用元件58及可配置交換元件的狀態(tài),使得經(jīng)編程FSM點陣30實施具有由源代碼描述的功能性的FSM。放置(方框120)及路由(方框122)可將FSM點陣30中的特定位置處的特定硬件元件映射到自動機中的特定狀態(tài)。因此,圖像中的位可配置特定硬件元件以實施(多個)所要功能。在實例中,可通過將機器碼保存到計算機可讀媒體來發(fā)布圖像。在另一實例中,可通過在顯示裝置上顯示圖像來發(fā)布圖像。在又一實例中,可通過將圖像發(fā)送到另一裝置(例如用于將圖像加載到FSM點陣30上的配置裝置)來發(fā)布圖像。在又一實例中,可通過將圖像加載到FSM點陣(例如,F(xiàn)SM點陣30)上來發(fā)布圖像。
[0069]在實例中,可通過將來自圖像的位值直接加載到SME 34、36及其它硬件元件或通過將圖像加載到一或多個寄存器中且然后將來自寄存器的位值寫入到SME 34、36及其它硬件元件而將圖像加載到FSM點陣30上。在實例中,F(xiàn)SM點陣30的硬件元件(例如,SME34、36、專用元件58、可配置交換元件40、42、44)被存儲器映射,使得配置裝置及/或計算機可通過將圖像寫入到一或多個存儲器地址而將圖像加載到FSM點陣30上。
[0070]可至少部分地機器或計算機實施本文中描述的方法實例。一些實例可包含使用指令而編碼的計算機可讀媒體或機器可讀媒體,所述指令可操作以配置電子裝置以執(zhí)行如上文實例中描述的方法。這些方法的實施方案可包含代碼,例如微碼、匯編語言代碼、較高級語言代碼等等。此類代碼可包含用于執(zhí)行各種方法的計算機可讀指令。代碼可形成計算機程序產(chǎn)品的部分。此外,代碼可在執(zhí)行期間或在其它時間有形地存儲在一或多個易失性或非易失性計算機可讀媒體上。這些計算機可讀媒體可包含但不限于硬盤、可移動磁盤、可移動光盤(例如,壓縮光盤及數(shù)字視頻光盤)、卡盒式磁帶、存儲器卡或棒、隨機存取存儲器(RAM)、只讀存儲器(ROM)等等。
[0071]現(xiàn)在參考圖9,說明狀態(tài)機引擎14的實施例(例如,單芯片上的單一裝置)。如先前所描述,狀態(tài)機引擎14經(jīng)配置以經(jīng)由數(shù)據(jù)總線從源(例如存儲器16)接收數(shù)據(jù)。在所說明的實施例中,數(shù)據(jù)可通過總線接口(例如第三代雙數(shù)據(jù)速率(DDR3)總線接口 130)發(fā)送到狀態(tài)機引擎14。DDR3總線接口 130可能夠以大于或等于I千兆字節(jié)/秒的速率交換(例如,提供及接收)數(shù)據(jù)。此類數(shù)據(jù)交換速率可大于由狀態(tài)機引擎14分析數(shù)據(jù)的速率。應了解,取決于待分析的數(shù)據(jù)的源,總線接口 130可為用于將數(shù)據(jù)交換到狀態(tài)機引擎14及從數(shù)據(jù)源交換到狀態(tài)機引擎14的任何合適的總線接口,例如NAND閃存接口、外圍組件互連(PCI)接口、千兆位媒體獨立接口(GMMI)等等。如先前所描述,狀態(tài)機引擎14包含經(jīng)配置以分析數(shù)據(jù)的一或多個FSM點陣30。每一 FSM點陣30可被分為兩個半點陣。在所說明的實施例中,每一半點陣可包含24K個SME (例如,SME 34、36),使得點陣30包含48K個SME。點陣30可包括如先前關(guān)于圖2到5所描述而布置的任何理想數(shù)目個SME。此外,雖然只說明一個FSM點陣30,但是狀態(tài)機引擎14可包含多個FSM點陣30,如先前所描述。
[0072]可在總線接口 130處接收待分析的數(shù)據(jù),并通過數(shù)個緩沖器及緩沖器接口將數(shù)據(jù)提供到FSM點陣30。在所說明的實施例中,數(shù)據(jù)路徑包含數(shù)據(jù)緩沖器132、指令緩沖器133、進程緩沖器134,及排間(IR)總線與進程緩沖器接口 136。數(shù)據(jù)緩沖器132經(jīng)配置以接收并暫時存儲待分析的數(shù)據(jù)。在一個實施例中,存在兩個數(shù)據(jù)緩沖器132 (數(shù)據(jù)緩沖器A及數(shù)據(jù)緩沖器B)。可將數(shù)據(jù)存儲在兩個數(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ù)為止)。在所說明的實施例中,數(shù)據(jù)緩沖器132可各自為32千字節(jié)。指令緩沖器133經(jīng)配置以經(jīng)由總線接口 130從處理器12接收指令,例如對應于待分析的數(shù)據(jù)的指令及對應于配置狀態(tài)機引擎14的指令。IR總線與進程緩沖器接口 136可促進將數(shù)據(jù)提供到進程緩沖器134。IR總線與進程緩沖器接口 136可用以確保由FSM點陣30按次序處理數(shù)據(jù)。IR總線與進程緩沖器接口 136可協(xié)調(diào)數(shù)據(jù)、計時數(shù)據(jù)、包裝指令等等的交換,使得正確地接收及分析數(shù)據(jù)。一般來說,IR總線與進程緩沖器接口 136允許通過FSM點陣30的邏輯排并行地分析多個數(shù)據(jù)集合。例如,多個物理裝置(例如,狀態(tài)機引擎14、芯片、單獨裝置)可以布置成排,且可經(jīng)由IR總線與進程緩沖器接口 136相互提供數(shù)據(jù)。出于本申請案的目的,術(shù)語“排”是指連接到同一芯片選擇的狀態(tài)機引擎14的集合。在所說明的實施例中,IR總線與進程緩沖器接口 136可包含32位數(shù)據(jù)總線。在其它實施例中,IR總線與進程緩沖器接口 136可包含任何合適的數(shù)據(jù)總線,例如128位數(shù)據(jù)總線。
[0073]在所說明的實施例中,狀態(tài)機引擎14還包含解壓縮器138及壓縮器140以幫助通過狀態(tài)機引擎14提供狀態(tài)矢量數(shù)據(jù)。壓縮器140連同解壓縮器138 —起工作,使得可壓縮狀態(tài)矢量數(shù)據(jù)以最小化數(shù)據(jù)提供次數(shù)。通過壓縮狀態(tài)矢量數(shù)據(jù),可最小化總線利用時間。壓縮器140及解壓縮器138還可經(jīng)配置以處置突發(fā)長度變化的狀態(tài)矢量數(shù)據(jù)。通過填補經(jīng)壓縮的狀態(tài)矢量數(shù)據(jù)且包含關(guān)于每一經(jīng)壓縮區(qū)域何時結(jié)束的指示符,壓縮器140可通過狀態(tài)機引擎14改善整體處理速度。壓縮器140可用以在由FSM點陣30分析之后壓縮匹配結(jié)果數(shù)據(jù)。壓縮器140及解壓縮器138還可用以壓縮及解壓縮配置數(shù)據(jù)。在一個實施例中,可停用(例如,關(guān)閉)壓縮器140及解壓縮器138,使得流動到壓縮器140及解壓縮器138及/或從壓縮器140及解壓縮器138流動的數(shù)據(jù)未被修改。
[0074]如先前所描述,F(xiàn)SM點陣30的輸出可包括狀態(tài)矢量。狀態(tài)矢量包括FSM點陣30的SME 34,36的狀態(tài)(例如,激活或未激活),及計數(shù)器58的動態(tài)(例如,當前)計數(shù)。狀態(tài)機引擎14包含狀態(tài)矢量系統(tǒng)141,狀態(tài)矢量系統(tǒng)141具有狀態(tài)矢量高速緩沖存儲器142、狀態(tài)矢量存儲器緩沖器144、狀態(tài)矢量中間輸入緩沖器146及狀態(tài)矢量中間輸出緩沖器148。狀態(tài)矢量系統(tǒng)141可用以存儲FSM點陣30的多個狀態(tài)矢量,且將狀態(tài)矢量提供到FSM點陣30以使FSM點陣30恢復到對應于所提供的狀態(tài)矢量的狀態(tài)。例如,每一狀態(tài)矢量可暫時存儲在狀態(tài)矢量高速緩沖存儲器142中。S卩,可存儲每一 SME 34、36的狀態(tài),使得狀態(tài)可經(jīng)恢復且隨后用于進一步分析,同時釋放SME 34,36以進一步分析新數(shù)據(jù)集合(例如,搜索項)。例如,類似于典型高速緩沖存儲器,狀態(tài)矢量高速緩沖存儲器142允許存儲狀態(tài)矢量以供快速檢索及使用,這里是由FSM點陣30快速檢索及使用。在所說明的實施例中,狀態(tài)矢量高速緩沖存儲器142可存儲高達512個狀態(tài)矢量。
[0075]應了解,可在排中的不同狀態(tài)機引擎14(例如,芯片)之間交換狀態(tài)矢量數(shù)據(jù)??稍诓煌瑺顟B(tài)機引擎14之間交換狀態(tài)矢量數(shù)據(jù)以用于以下各種目的,例如:使狀態(tài)機引擎14的FSM點陣30的SME 34,36的狀態(tài)同步、跨多個狀態(tài)機引擎14執(zhí)行相同功能、跨多個狀態(tài)機引擎14重現(xiàn)結(jié)果、跨多個狀態(tài)機引擎14使結(jié)果級聯(lián)、存儲用以分析通過多個狀態(tài)機引擎14級聯(lián)的數(shù)據(jù)的SME 34、36的狀態(tài)歷史,等等。此外,應注意,在狀態(tài)機引擎14內(nèi),狀態(tài)矢量數(shù)據(jù)可用以快速地配置FSM點陣30的SME 34,36ο例如,狀態(tài)矢量數(shù)據(jù)可用以:使SME34,36的狀態(tài)恢復到初始化狀態(tài)(例如,搜索新搜索項);使SME 34,36的狀態(tài)恢復到先前狀態(tài)(例如,搜索先前所搜索的搜索項);及將SME 34、36的狀態(tài)改變?yōu)榻?jīng)配置用于級聯(lián)配置(例如,以級聯(lián)搜索來搜索一搜索項)。在某些實施例中,可將狀態(tài)矢量數(shù)據(jù)提供到總線接口 130,使得可將狀態(tài)矢量數(shù)據(jù)提供到處理器12(例如,用于分析狀態(tài)矢量數(shù)據(jù)、重配置狀態(tài)矢量數(shù)據(jù)以應用修改、重配置狀態(tài)矢量數(shù)據(jù)以改善SME 34,36的效率,等等)。
[0076]例如,在某些實施例中,狀態(tài)機引擎14可將經(jīng)高速緩沖存儲的狀態(tài)矢量數(shù)據(jù)(例如,由狀態(tài)矢量系統(tǒng)141存儲的數(shù)據(jù))從FSM點陣30提供到外部裝置。外部裝置可接收狀態(tài)矢量數(shù)據(jù),修改狀態(tài)矢量數(shù)據(jù),并將經(jīng)修改的狀態(tài)矢量數(shù)據(jù)提供到狀態(tài)機引擎14以配置FSM點陣30。因此,外部裝置可修改狀態(tài)矢量數(shù)據(jù),使得狀態(tài)機引擎14可按需要而跳過狀態(tài)(例如,四處跳轉(zhuǎn))。
[0077]狀態(tài)矢量高速緩沖存儲器142可從任何合適的裝置接收狀態(tài)矢量數(shù)據(jù)。例如,狀態(tài)矢量高速緩沖存儲器142可從FSM點陣30、另一 FSM點陣30 (例如,經(jīng)由IR總線與進程緩沖器接口 136)、解壓縮器138等等接收狀態(tài)矢量。在所說明的實施例中,狀態(tài)矢量高速緩沖存儲器142可經(jīng)由狀態(tài)矢量存儲器緩沖器144從其它裝置接收狀態(tài)矢量。此外,狀態(tài)矢量高速緩沖存儲器142可將狀態(tài)矢量數(shù)據(jù)提供到任何合適的裝置。例如,狀態(tài)矢量高速緩沖存儲器142可將狀態(tài)矢量數(shù)據(jù)提供到狀態(tài)矢量存儲器緩沖器144、狀態(tài)矢量中間輸入緩沖器146及狀態(tài)矢量中間輸出緩沖器148。
[0078]例如狀態(tài)矢量存儲器緩沖器144、狀態(tài)矢量中間輸入緩沖器146及狀態(tài)矢量中間輸出緩沖器148的額外緩沖器可結(jié)合狀態(tài)矢量高速緩沖存儲器142而利用以適應狀態(tài)矢量的快速檢索及存儲,同時通過狀態(tài)機引擎14處理具有交錯分組的單獨數(shù)據(jù)集合。在所說明的實施例中,狀態(tài)矢量存儲器緩沖器144、狀態(tài)矢量中間輸入緩沖器146及狀態(tài)矢量中間輸出緩沖器148中的每一者可經(jīng)配置以暫時存儲一個狀態(tài)矢量。狀態(tài)矢量存儲器緩沖器144可用以從任何合適的裝置接收狀態(tài)矢量數(shù)據(jù),并將狀態(tài)矢量數(shù)據(jù)提供到任何合適的裝置。例如,狀態(tài)矢量存儲器緩沖器144可用以從FSM點陣30、另一 FSM點陣30 (例如,經(jīng)由IR總線與進程緩沖器接口 136)、解壓縮器138及狀態(tài)矢量高速緩沖存儲器142接收狀態(tài)矢量。作為另一實例,狀態(tài)矢量存儲器緩沖器144可用以將狀態(tài)矢量數(shù)據(jù)提供到IR總線與進程緩沖器接口 136 (例如,用于其它FSM點陣30)、壓縮器140及狀態(tài)矢量高速緩沖存儲器142。
[0079]同樣地,狀態(tài)矢量中間輸入緩沖器146可用以從任何合適的裝置接收狀態(tài)矢量數(shù)據(jù),并將狀態(tài)矢量數(shù)據(jù)提供到任何合適的裝置。例如,狀態(tài)矢量中間輸入緩沖器146可用以從FSM點陣30 (例如,經(jīng)由IR總線與進程緩沖器接口 136)、解壓縮器138及狀態(tài)矢量高速緩沖存儲器142接收狀態(tài)矢量。作為另一實例,狀態(tài)矢量中間輸入緩沖器146可用以將狀態(tài)矢量提供到FSM點陣30。此外,狀態(tài)矢量中間輸出緩沖器148可用以從任何合適的裝置接收狀態(tài)矢量,并將狀態(tài)矢量提供到任何合適的裝置。例如,狀態(tài)矢量中間輸出緩沖器148可用以從FSM點陣30及狀態(tài)矢量高速緩沖存儲器142接收狀態(tài)矢量。作為另一實例,狀態(tài)矢量中間輸出緩沖器148可用以將狀態(tài)矢量提供到FSM點陣30 (例如,經(jīng)由IR總線與進程緩沖器接口 136)及壓縮器140。
[0080]一旦由FSM點陣30產(chǎn)生所關(guān)注結(jié)果,便可將匹配結(jié)果存儲在匹配結(jié)果存儲器150中。即,可將指示匹配(例如,所關(guān)注樣式的檢測)的“匹配矢量”存儲在匹配結(jié)果存儲器150中。例如,然后可將匹配結(jié)果發(fā)送到匹配緩沖器152以經(jīng)由總線接口 130傳輸?shù)教幚砥?2。如先前所描述,可壓縮匹配結(jié)果。
[0081]還可在狀態(tài)機引擎14中提供額外寄存器及緩沖器。例如,狀態(tài)機引擎14可包含控制與狀態(tài)寄存器154。此外,可提供程序緩沖器系統(tǒng)(例如,修復映射與程序緩沖器156)以最初用于編程FSM點陣30。例如,可將初始(例如,開始)狀態(tài)矢量數(shù)據(jù)從程序緩沖器系統(tǒng)提供到FSM點陣30 (例如,經(jīng)由解壓縮器138)。解壓縮器138可用以解壓縮經(jīng)提供以編程FSM點陣30的配置數(shù)據(jù)(例如,狀態(tài)矢量數(shù)據(jù)、路由交換機數(shù)據(jù)、SME 34,36狀態(tài)、布爾函數(shù)數(shù)據(jù)、計數(shù)器數(shù)據(jù)、匹配MUX數(shù)據(jù))。
[0082]類似地,還可提供修復映射緩沖器系統(tǒng)(例如,保存與修復映射緩沖器158)以存儲數(shù)據(jù)(例如,保存與修復映射)以供設置及使用。由修復映射緩沖器系統(tǒng)存儲的數(shù)據(jù)可包含對應于經(jīng)修復的硬件元件的數(shù)據(jù),例如識別哪些SME 34,36被修復的數(shù)據(jù)。修復映射緩沖器系統(tǒng)可經(jīng)由任何合適的方式接收數(shù)據(jù)。例如,可將數(shù)據(jù)從“熔絲映射”存儲器(其提供在最終制造測試期間對裝置進行的修復的映射)提供到修復映射緩沖器158。作為另一實例,修復映射緩沖器系統(tǒng)可包含用以修改(例如,定制)標準編程文件使得所述標準編程文件可在具有經(jīng)修復體系結(jié)構(gòu)的FSM點陣30中操作(例如,可繞過FSM點陣30中的不良SME 34、36,使得其未被使用)的數(shù)據(jù)。壓縮器140可用以壓縮從熔絲映射存儲器提供到修復映射緩沖器158的數(shù)據(jù)。如所說明,總線接口 130可用以將數(shù)據(jù)提供到程序緩沖器156,且從修復映射緩沖器158提供數(shù)據(jù)。應了解,可壓縮提供到程序緩沖器156及/或從修復映射緩沖器158提供的數(shù)據(jù)。在一些實施例中,經(jīng)由狀態(tài)機引擎14外部的裝置(例如,處理器12、存儲器16、編譯器20等等)將數(shù)據(jù)提供到總線接口 130及/或從總線接口 130接收數(shù)據(jù)。狀態(tài)機引擎14外部的裝置可經(jīng)配置以接收從修復映射緩沖器158提供的數(shù)據(jù)、存儲所述數(shù)據(jù)、分析所述數(shù)據(jù)、修改所述數(shù)據(jù),及/或?qū)⑿禄蚪?jīng)修改數(shù)據(jù)提供到程序緩沖器156。
[0083]狀態(tài)機引擎14包含用以編程FSM點陣30的點陣編程系統(tǒng)159。如所說明,點陣編程系統(tǒng)159可從指令隊列133接收數(shù)據(jù)(例如,配置指令)。此外,點陣編程系統(tǒng)159可從程序緩沖器156接收數(shù)據(jù)(例如,配置數(shù)據(jù))。點陣編程系統(tǒng)159可使用配置指令及配置數(shù)據(jù)以配置FSM點陣30 (例如,配置路由交換機、SME 34、36、布爾單元、計數(shù)器、匹配MUX)。點陣編程系統(tǒng)159可使用解壓縮器138以壓縮數(shù)據(jù),且使用壓縮器140以壓縮數(shù)據(jù)(例如,用于與程序緩沖器156及修復映射緩沖器158交換的數(shù)據(jù))。
[0084]現(xiàn)在參考圖10,說明展示用于編程狀態(tài)機引擎14中的FSM點陣30的方法160的流程圖。方法160可包含:將配置數(shù)據(jù)提供到程序緩沖器156 (方框162);將配置指令提供到指令緩沖器133 (方框164);起始配置更新(方框166);從指令緩沖器133讀取指令(方框168);確定指令是否為配置指令(方框170);從程序緩沖器156讀取配置數(shù)據(jù)且在配置數(shù)據(jù)被壓縮的情況下解壓縮配置數(shù)據(jù)(方框172);及將配置數(shù)據(jù)提供到FSM點陣30 (方框174) ο
[0085]在一個實施例中,在方框162處,處理器12可經(jīng)由總線接口 130將配置數(shù)據(jù)提供到程序緩沖器系統(tǒng)(例如,恢復映射與程序緩沖器156)。此外,處理器12可經(jīng)由總線接口130將配置指令提供到指令緩沖器133 (方框164)。在方框166處,可起始配置更新(例如,經(jīng)由處理器12、點陣編程系統(tǒng)159或狀態(tài)機引擎14)。然后,在方框168處,點陣編程系統(tǒng)159可讀取存儲在指令緩沖器133中的指令。緊接著,在方框170處,點陣編程系統(tǒng)159可確定從指令緩沖器133讀取的指令是否為配置指令。如果指令不為配置指令,那么在方框168處,點陣編程系統(tǒng)159讀取存儲在指令緩沖器133中的額外指令。然而,如果指令為配置指令,那么點陣編程系統(tǒng)159讀取存儲在程序緩沖器系統(tǒng)中的配置數(shù)據(jù)(方框172)。在一些實施例中,可壓縮配置數(shù)據(jù)。因此,還在方框172處,點陣編程系統(tǒng)159可解壓縮配置數(shù)據(jù)(例如,經(jīng)由解壓縮器138)。然后,點陣編程系統(tǒng)159將配置數(shù)據(jù)提供到FSM點陣30 (方框 174)ο
[0086]雖然本發(fā)明可容許各種修改及替代形式,但是已在圖式中作為實例而展示且在本文中詳細地描述特定實施例。然而,應理解,本發(fā)明并不希望限于所披露的特定形式。實情是,本發(fā)明將涵蓋屬于如由所附權(quán)利要求書定義的本發(fā)明的精神及范圍的所有修改、等效者及替代。
【權(quán)利要求】
1.一種狀態(tài)機引擎,其包括: 程序緩沖器,其經(jīng)配置以經(jīng)由總線接口接收用于配置狀態(tài)機點陣的配置數(shù)據(jù);及 修復映射緩沖器,其經(jīng)配置以經(jīng)由所述總線接口將修復映射數(shù)據(jù)提供到外部裝置; 其中所述狀態(tài)機點陣包括多個可編程元件,且每一可編程元件包括經(jīng)配置以分析數(shù)據(jù)并輸出所述分析的結(jié)果的多個存儲器單元。
2.根據(jù)權(quán)利要求1所述的狀態(tài)機引擎,其中所述程序緩沖器經(jīng)配置以接收經(jīng)壓縮的配置數(shù)據(jù)。
3.根據(jù)權(quán)利要求1所述的狀態(tài)機引擎,其中所述程序緩沖器經(jīng)配置以接收非壓縮的配置數(shù)據(jù)。
4.根據(jù)權(quán)利要求1所述的狀態(tài)機引擎,其中所述修復映射緩沖器經(jīng)配置以提供經(jīng)壓縮的修復映射數(shù)據(jù)。
5.根據(jù)權(quán)利要求1所述的狀態(tài)機引擎,其中所述修復映射緩沖器經(jīng)配置以提供非壓縮的修復映射數(shù)據(jù)。
6.根據(jù)權(quán)利要求1所述的狀態(tài)機引擎,其中所述外部裝置經(jīng)配置以:接收從所述修復映射緩沖器提供的修復映射數(shù)據(jù);分析所述修復映射數(shù)據(jù);構(gòu)造配置數(shù)據(jù)的經(jīng)修改版本;及將配置數(shù)據(jù)的所述經(jīng)修改版本提供到所述程序緩沖器。
7.根據(jù)權(quán)利要求1所述的狀態(tài)機引擎,其中所述程序緩沖器經(jīng)配置以將配置數(shù)據(jù)提供到點陣編程系統(tǒng)以配置所述狀態(tài)機點陣。
8.一種狀態(tài)機引擎,其包括經(jīng)配置以經(jīng)由總線接口接收用于配置狀態(tài)機點陣的配置數(shù)據(jù)的程序緩沖器,其中所述狀態(tài)機點陣包括多個可編程元件,且每一可編程元件包括經(jīng)配置以分析數(shù)據(jù)流的至少一部分并輸出所述分析的結(jié)果的多個存儲器單元。
9.根據(jù)權(quán)利要求8所述的狀態(tài)機引擎,其中所述程序緩沖器經(jīng)配置以將配置數(shù)據(jù)提供到點陣編程系統(tǒng)。
10.根據(jù)權(quán)利要求9所述的狀態(tài)機引擎,其中所述點陣編程系統(tǒng)經(jīng)配置以將配置數(shù)據(jù)提供到所述狀態(tài)機點陣以配置所述狀態(tài)機點陣。
11.根據(jù)權(quán)利要求8所述的狀態(tài)機引擎,其中所述程序緩沖器經(jīng)配置以將經(jīng)壓縮的配置數(shù)據(jù)提供到點陣編程系統(tǒng)。
12.根據(jù)權(quán)利要求11所述的狀態(tài)機引擎,其中所述點陣編程系統(tǒng)經(jīng)配置以在接收到所述經(jīng)壓縮的配置數(shù)據(jù)之后解壓縮所述配置數(shù)據(jù)。
13.—種狀態(tài)機引擎,其包括經(jīng)配置以經(jīng)由總線接口將修復映射數(shù)據(jù)從狀態(tài)機點陣提供到外部裝置的修復映射緩沖器,其中所述狀態(tài)機點陣包括多個可編程元件,且每一可編程元件包括經(jīng)配置以分析數(shù)據(jù)流的至少一部分并輸出所述分析的結(jié)果的多個存儲器單元。
14.根據(jù)權(quán)利要求13所述的狀態(tài)機引擎,其中所述修復緩沖器經(jīng)配置以從點陣編程系統(tǒng)接收配置數(shù)據(jù)。
15.根據(jù)權(quán)利要求13所述的狀態(tài)機引擎,其中所述修復緩沖器經(jīng)配置以從點陣編程系統(tǒng)接收經(jīng)壓縮的修復映射數(shù)據(jù)。
16.根據(jù)權(quán)利要求15所述的狀態(tài)機引擎,其中所述點陣編程系統(tǒng)經(jīng)配置以在將所述修復映射數(shù)據(jù)提供到所述修復緩沖器之前壓縮所述修復映射數(shù)據(jù)。
17.根據(jù)權(quán)利要求13所述的狀態(tài)機引擎,其中所述外部裝置經(jīng)配置以存儲所述修復映射數(shù)據(jù)。
18.根據(jù)權(quán)利要求13所述的狀態(tài)機引擎,其中所述外部裝置經(jīng)配置以分析所述修復映射數(shù)據(jù)并將經(jīng)修改的配置數(shù)據(jù)提供到所述狀態(tài)機引擎。
19.根據(jù)權(quán)利要求13所述的狀態(tài)機引擎,其中所述修復映射數(shù)據(jù)包括對應于所述狀態(tài)機點陣的經(jīng)修復部分的數(shù)據(jù)。
20.根據(jù)權(quán)利要求13所述的狀態(tài)機引擎,其中所述修復映射數(shù)據(jù)包括識別所述狀態(tài)機點陣的哪些部分被修復的指示,及識別所述狀態(tài)機點陣如何被修復的指示。
21.一種用于配置狀態(tài)機引擎的狀態(tài)機點陣的方法,其包括: 在所述狀態(tài)機引擎的程序緩沖器處接收配置數(shù)據(jù); 將所述配置數(shù)據(jù)從所述程序緩沖器提供到點陣編程系統(tǒng);及 使用所述點陣編程系統(tǒng)配置所述狀態(tài)機點陣,其中所述狀態(tài)機點陣包括多個可編程元件,且每一可編程元件包括經(jīng)配置以分析數(shù)據(jù)流的至少一部分并輸出所述分析的結(jié)果的多個存儲器單元。
22.根據(jù)權(quán)利要求21所述的方法,其包括在配置所述狀態(tài)機點陣之前解壓縮配置數(shù)據(jù)。
23.根據(jù)權(quán)利要求21所述的方法,其包括在所述狀態(tài)機引擎的指令緩沖器處接收指令。
24.根據(jù)權(quán)利要求23所述的方法,其包括將所述指令提供到所述點陣編程系統(tǒng)。
25.根據(jù)權(quán)利要求24所述的方法,其中使用所述點陣編程系統(tǒng)配置所述狀態(tài)機點陣包括確定所述指令是否為配置指令,及在所述指令為配置指令的情況下配置所述狀態(tài)機點陣。
【文檔編號】G06F9/00GK104487957SQ201380038508
【公開日】2015年4月1日 申請日期:2013年7月9日 優(yōu)先權(quán)日:2012年7月18日
【發(fā)明者】哈羅德·B·諾伊斯, 戴維·R·布朗 申請人:美光科技公司