TW201331856A - 用於一狀態機中偵測之方法及系統 - Google Patents
用於一狀態機中偵測之方法及系統 Download PDFInfo
- Publication number
- TW201331856A TW201331856A TW101147677A TW101147677A TW201331856A TW 201331856 A TW201331856 A TW 201331856A TW 101147677 A TW101147677 A TW 101147677A TW 101147677 A TW101147677 A TW 101147677A TW 201331856 A TW201331856 A TW 201331856A
- Authority
- TW
- Taiwan
- Prior art keywords
- output
- input
- data
- gate
- enable signal
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/94—Hardware or software architectures specially adapted for image or video understanding
- G06V10/955—Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4498—Finite state machines
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Logic Circuits (AREA)
- Advance Control (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本發明揭示一種包含具有複數個記憶體單元(80)之一資料分析元件(171、173)之裝置。該等記憶體單元(80)分析一資料串流之至少一部分且輸出該分析之一結果。該裝置亦包含一偵測單元(86)。該偵測單元(86)包含一「及」閘(170)。該「及」閘(170)接收該分析之結果作為一第一輸入(82)。該偵測單元(86)亦包含一D正反器(160),該D正反器(160)包含耦合至該「及」閘(170)之一第二輸入之一輸出(164)。
Description
本發明之實施例一般而言係關於電子裝置,且在特定實施例中更具體而言係關於具有用於型樣辨識之平行有限狀態機之電子裝置。
在一習用基於馮.諾伊曼(von Neumann)之電腦上執行複雜型樣辨識可係低效的。然而,一生物大腦(特定而言,一人腦)擅長執行型樣辨識。當前研究表明,一人腦使用新皮質中之一系列以階層方式組織之神經元層執行型樣辨識。階層之較低層中之神經元分析來自(舉例而言)感覺器官之「原始信號」,而較高層中之神經元分析來自較低層中之神經元之信號輸出。新皮質中之此階層式系統(可能與大腦之其他區一起)實現複雜型樣辨識,此使得人類能夠執行高階功能,諸如空間推理、意識思考及複雜語言。
在計算領域中,型樣辨識任務日益具挑戰性。在電腦之間傳輸之資料量越來越大,且使用者希望識別之型樣之數目日益增加。舉例而言,通常藉由搜尋一資料串流中之型樣(例如,特定片語或程式碼片段)來偵測垃圾郵件或惡意軟體。型樣之數目隨垃圾郵件及惡意軟體之多樣化而增加,此乃因新型樣可經實施以搜尋新變化形式。針對此等型樣中之每一者搜尋一資料串流可形成一計算瓶頸。通常,在接收資料串流時,針對每一型樣一次搜尋一個資料串流。在系統準備好
搜尋資料串流之下一部分之前的延遲隨型樣之數目而增加。因此,型樣辨識可減慢資料接收。
硬體已經設計以針對若干型樣搜尋一資料串流,但此硬體通常不能在一給定時間量內處理充足資料量。經組態以搜尋一資料串流之某些裝置藉由在複數個電路當中散佈資料串流而如此進行。該等電路各自判定資料串流是否匹配一型樣之一部分。通常,大量電路平行操作,從而各自大體同時搜尋資料串流。然而,尚未存在一種實際上允許以與一生物大腦之彼方式更相當之一方式執行型樣辨識之系統。此一系統之開發係期望的。
10‧‧‧基於處理器之系統/系統
12‧‧‧處理器
14‧‧‧狀態機引擎
16‧‧‧記憶體
18‧‧‧外部儲存器
20‧‧‧編譯器
22‧‧‧輸入裝置
24‧‧‧輸出裝置/顯示器
26‧‧‧網路介面裝置
30‧‧‧有限狀態機晶格/晶格/第一有限狀態機晶格/第二有限狀態機晶格
30A‧‧‧第一有限狀態機晶格/有限狀態機晶格
30B‧‧‧第二有限狀態機晶格/有限狀態機晶格
32‧‧‧區塊
34‧‧‧狀態機元件/第一狀態機元件
36‧‧‧狀態機元件/第二狀態機元件
38‧‧‧列
40‧‧‧可程式化區塊間交換元件/區塊間交換元件/可程式化交換元件
42‧‧‧可程式化區塊內交換元件/區塊內交換元件/可程式化交換元件
44‧‧‧可程式化列內交換元件/列內交換元件/可程式化交換元件
46‧‧‧導體
48‧‧‧緩衝器
50‧‧‧緩衝器
52‧‧‧輸入區塊/資料輸入區塊/第一資料輸入區塊/第二資料輸入區塊
54‧‧‧輸出區塊
56‧‧‧程式化介面/程式化介面區塊
58‧‧‧特殊用途元件/計數器/12位元可程式化計數器/12位元計數器
60‧‧‧兩者之群組
62‧‧‧第一輸入/輸入/輸入線/統一啟用輸入
64‧‧‧第二輸入/輸入/輸入線/統一啟用輸入
66‧‧‧輸出/共同輸出
68‧‧‧列互連導體/第一複數個列互連導體/列互連件導體
70‧‧‧列互連導體/第二複數個列互連導體/列互連件導體
72‧‧‧輸出/輸出線
74‧‧‧輸出/輸出線
76‧‧‧「或」閘
78‧‧‧3對1多工器
79‧‧‧交換元件
80‧‧‧記憶體單元/第一記憶體單元
82‧‧‧偵測線/輸入/第一輸入/第二輸入
84‧‧‧資料串流線
86‧‧‧偵測單元/偵測單元元件
92‧‧‧根節點/節點/上游節點
94‧‧‧標準節點/節點/上游節點/下游節點/第一節點/第二節點
96‧‧‧終端節點/節點/下游節點
98‧‧‧邊緣
100‧‧‧階層式結構
102‧‧‧輸出信號
130‧‧‧DDR3匯流排介面/匯流排介面
132‧‧‧資料緩衝器
134‧‧‧處理程序緩衝器
136‧‧‧等級間匯流排與處理程序緩衝介面/等級間匯流排與處理程序緩衝器
138‧‧‧解壓縮器
140‧‧‧壓縮器
142‧‧‧狀態向量快取記憶體
146‧‧‧狀態向量中間輸入緩衝器
148‧‧‧狀態向量中間輸出緩衝器
150‧‧‧匹配結果記憶體
152‧‧‧匹配緩衝器
154‧‧‧控制與狀態暫存器
156‧‧‧還原與程式化緩衝器
158‧‧‧保存與修復映射緩衝器
160‧‧‧D正反器
162‧‧‧輸入
164‧‧‧輸出/Q輸出
166‧‧‧設定輸入
168‧‧‧重設輸入
170‧‧‧「及」閘
171‧‧‧資料分析元件
172‧‧‧區域路由矩陣
173‧‧‧資料分析元件
174‧‧‧列路由線
176‧‧‧列路由線
178‧‧‧列路由線
180‧‧‧列路由線
182‧‧‧列路由線
184‧‧‧列路由線
186‧‧‧列路由線
188‧‧‧列路由線
190‧‧‧列路由線
192‧‧‧列路由線
194‧‧‧列路由線
196‧‧‧列路由線
198‧‧‧列路由線
200‧‧‧列路由線
202‧‧‧列路由線
204‧‧‧列路由線
206‧‧‧群組內電路
208‧‧‧第一輸出選擇輸入/輸出選擇輸入
210‧‧‧第二輸出選擇輸入/輸出選擇輸入
212‧‧‧真值表
圖1圖解說明根據本發明之各項實施例之具有一狀態機引擎之系統之一實例。
圖2圖解說明根據本發明之各項實施例之圖1之狀態機引擎之一FSM晶格之一實例。
圖3圖解說明根據本發明之各項實施例之圖2之FSM晶格之一區塊之一實例。
圖4圖解說明根據本發明之各項實施例之圖3之區塊之一列之一實例。
圖5圖解說明根據本發明之各項實施例之圖4之列中之兩者之一群組的一實例。
圖6圖解說明根據本發明之各項實施例之一有限狀態機圖之一實例。
圖7圖解說明根據本發明之各項實施例之藉助FSM晶格實施之兩層級階層之一實例。
圖8圖解說明根據本發明之各項實施例之用於一編譯器將原始程式碼轉換成一個二進制檔案以用於程式化圖2之FSM晶格之一方法之
一實例。
圖9圖解說明根據本發明之各項實施例之一狀態機引擎。
圖10圖解說明根據本發明之各項實施例之圖4之偵測單元之一實例。
圖11圖解說明根據本發明之各項實施例之耦合至圖10之偵測單元之路由之一實例。
圖12圖解說明根據本發明之各項實施例之圖11之群組內電路。
圖13圖解說明根據本發明之各項實施例之圖12之多工器之一真值表。
現在轉至各圖,圖1圖解說明通常由元件符號10指定之一基於處理器之系統之一實施例。系統10可係多種類型中之任一者,諸如一桌上型電腦、膝上型電腦、傳呼機、蜂巢式電話、個人記事簿、可攜式音訊播放器、控制電路、相機等。系統10亦可係一網路節點,諸如一路由器、一伺服器或一用戶端(例如,先前所描述之類型之電腦中之一者)。系統10可係某一其他種類之電子裝置,諸如一影印機、一掃描機、一印表機、一遊戲控制台、一電視機、一機上盒視訊散佈或記錄系統、一電纜盒、一個人數位媒體播放器、一工廠自動化系統、一汽車電腦系統或一醫學裝置。(用以描述系統之此各項實例之術語(如本文中所使用之諸多其他術語)可共用某些指示物,且如此不應狹義地按照所列示之其他物項來理解。)
在一典型基於處理器之裝置(諸如系統10)中,一處理器12(諸如一微處理器)控制系統10中之系統功能及請求之處理。此外,處理器12可包括共用系統控制之複數個處理器。處理器12可直接或間接耦合至系統10中之元件中之每一者以使得處理器12藉由執行可儲存於系統10內或在系統10外部之指令來控制系統10。
根據本文中所描述之實施例,系統10包含可在處理器12之控制下操作之一狀態機引擎14。狀態機引擎14可採用若干個狀態機架構中之任一者,包含(但不限於)Mealy架構、Moore架構、有限狀態機(FSM)、確定性FSM(DFSM)、位元平行狀態機(BPSM)等。雖然可使用多種架構,但出於論述目的,本申請案係指FSM。然而,熟習此項技術者將瞭解可使用多種狀態機架構中之任一者採用所描述技術。
如下文所進一步論述,狀態機引擎14可包含若干個(例如,一或多個)有限狀態機(FSM)晶格。每一FSM晶格可包含各自並列接收及分析同一資料之多個FSM。此外,FSM晶格可配置成若干群組(例如,叢集),以使得FSM晶格之叢集可平行分析同一輸入資料。此外,狀態機引擎14之FSM晶格之叢集可配置成一階層式結構,其中來自該階層式結構之一較低層級上之狀態機晶格之輸出可用作至一較高層級上之狀態機晶格之輸入。藉由透過階層式結構串列級聯狀態機引擎14之平行FSM晶格之叢集,可分析(例如,評估、搜尋等)日益複雜之型樣。
此外,基於狀態機引擎14之階層式並聯組態,狀態機引擎14可用於利用高處理速度之系統中之型樣辨識。例如,本文中所描述之實施例可併入於具有1千兆位元組/秒之處理速度之系統中。因此,利用狀態機引擎14,可針對各種型樣迅速地分析來自高速記憶體裝置或其他外部裝置之資料。狀態機引擎14可根據數種準則約同時(例如,在一單個裝置循環期間)分析一資料串流及其各別搜尋項。狀態機引擎14之一層級上之一FSM叢集內之FSM晶格中之每一者可各自約同時接收來自資料串流之同一搜尋項,且平行FSM晶格中之每一者可判定該項是否將狀態機引擎14推進至處理準則中之下一狀態。狀態機引擎14可根據相對大量準則(例如,100個以上、110個以上或10,000個以上)分析項。由於其平行操作,因此其可將準則應用於具有一相對高頻寬
之一資料串流(例如,大於或通常等於1千兆位元組/秒之一資料串流)而不減慢該資料串流。
在一項實施例中,狀態機引擎14可經組態以辨識(例如,偵測)一資料串流中之大量型樣。例如,狀態機引擎14可用以偵測一使用者或其他實體可希望分析之多種類型之資料串流中之一或多者中之一型樣。舉例而言,狀態機引擎14可經組態以分析經由一網路接收之一資料串流,諸如經由網際網路接收之封包或者經由一蜂巢式網路接收之聲音或資料。在一項實例中,狀態機引擎14可經組態以分析垃圾郵件或惡意軟體之一資料串流。資料串流可作為一串列資料串流接收,其中以具有意義之一次序(諸如以一時間、詞彙或語義重要性次序)接收資料。另一選擇係,資料串流可經並列或無序地接收且然後(例如)藉由將經由網際網路接收之封包重新排序而轉換成一串列資料串流。在某些實施例中,資料串流可串列地呈現項,但表達該等項中之每一者之位元可被並列接收。資料串流可自系統10外部之一源接收或可藉由詢問一記憶體裝置(諸如記憶體16)且由儲存於記憶體16中之資料形成資料串流而形成。在其他實例中,狀態機引擎14可經組態以辨識拼寫一特定字之一字元序列、規定一基因之一遺傳鹼基對序列、形成一影像之一部分的一圖像或視訊檔案中之一位元序列、形成一程式之一部分的一可執行檔案中之一位元序列或者形成一歌曲或一口語片語之一部分的一音訊檔案中之一位元序列。待分析之資料串流可包含呈一個二進制格式或其他格式(例如,十進制、ASCII等)之多個資料位元。該串流可編碼具有一單個數字或多個數字(例如,數個二進制數字)之資料。
如將瞭解,系統10可包含記憶體16。記憶體16可包含揮發性記憶體,諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、同步DRAM(SDRAM)、雙倍資料速率DRAM(DDR
SDRAM)、DDR2 SDRAM、DDR3 SDRAM等。記憶體16亦可包含用以連同揮發性記憶體一起使用之非揮發性記憶體,諸如唯讀記憶體(ROM)、PC-RAM、矽-氧化物-氮化物-氧化物-矽(SONOS)記憶體、金屬-氧化物-氮化物-氧化物-矽(MONOS)記憶體、基於多晶矽浮動閘極之記憶體及/或各種架構之其他類型之快閃記憶體(例如,「非及(NAND)」記憶體、「非或(NOR)」記憶體等)。記憶體16可包含可提供將由狀態機引擎14分析之資料之一或多個記憶體裝置,諸如DRAM裝置。此等裝置可稱為或包含固態磁碟機(SSD)、MultimediaCard(MMC)、SecureDigital(SD)卡、CompactFlash(CF)卡或任何其他適合裝置。此外,應瞭解,此等裝置可經由任何適合介面(諸如通用串列匯流排(USB)、周邊組件互連(PCI)、PCI Express(PCI-E)、小型電腦系統介面(SCSI)、IEEE 1394(Firewire)或任何其他適合介面)耦合至系統10。為促進記憶體16(諸如快閃記憶體裝置)之操作,系統10可包含一記憶體控制器(未圖解說明)。如將瞭解,該記憶體控制器可係一獨立裝置或者其可與處理器12成整體。另外,系統10可包含一外部儲存器18,諸如一磁性儲存裝置。該外部儲存器亦可將輸入資料提供至狀態機引擎14。
系統10可包含若干個額外元件。例如,一編譯器20可用以程式化狀態機引擎14,如關於圖8所更詳細描述。一輸入裝置22亦可耦合至處理器12以允許一使用者將資料輸入至系統10中。例如,一輸入裝置22可用以將資料輸入至記憶體16中以供稍後由狀態機引擎14分析。輸入裝置22可包含(例如)按鈕、交換元件、一鍵盤、一光筆、一手寫筆、一滑鼠及/或一聲音辨識系統。一輸出裝置24(諸如一顯示器)亦可耦合至處理器12。顯示器24可包含(舉例而言)一LCD、一CRT、LED及/或一音訊顯示器。該系統亦可包含用於與一網路(諸如網際網路)介接之一網路介面裝置26,諸如一網路介面卡(NIC)。如將瞭解,
系統10可取決於系統10之應用而包含諸多其他組件。
圖2至圖5圖解說明一FSM晶格30之一實例。在一實例中,FSM晶格30包括區塊32之一陣列。如將描述,每一區塊32可包含對應於一FSM中之複數個狀態之複數個可選擇性耦合硬體元件(例如,可程式化元件及/或特殊用途元件)。類似於一FSM中之一狀態,一硬體元件可分析一輸入串流且基於該輸入串流啟動一下游硬體元件。
可程式化元件可經程式化以實施諸多不同功能。例如,可程式化元件可包含以階層方式組織成若干列38(展示於圖3及圖4中)及若干區塊32(展示於圖2及圖3中)之狀態機元件(SME)34、36(展示於圖5中)。為了在以階層方式組織之SME 34、36之間路由信號,可使用可程式化交換元件之一階層,其包含區塊間交換元件40(展示於圖2及圖3中)、區塊內交換元件42(展示於圖3及圖4中)及列內交換元件44(展示於圖4中)。
如下文所描述,交換元件可包含路由結構及緩衝器。一SME 34、36可對應於由FSM晶格30實施之一FSM之一狀態。可藉由使用如下文所描述之可程式化交換元件而將SME 34、36耦合在一起。因此,可藉由程式化SME 34、36以對應於狀態之功能且藉由將SME 34、36選擇性地耦合在一起以對應於FSM中之狀態之間的轉變而在FSM晶格30上實施一FSM。
圖2圖解說明一FSM晶格30之一實例之一總體視圖。FSM晶格30包含可與可程式化區塊間交換元件40選擇性地耦合在一起之複數個區塊32。區塊間交換元件40可包含導體46(例如,導線、跡線等)以及緩衝器48及50。在一實例中,包含緩衝器48及50以控制至/來自區塊間交換元件40之信號之連接及時序。如下文所進一步描述,緩衝器48可經提供以緩衝在區塊32之間發送之資料,而緩衝器50可經提供以緩衝在區塊間交換元件40之間發送之資料。另外,區塊32可選擇性地耦合
至用於接收信號(例如,資料)且將資料提供至區塊32之一輸入區塊52(例如,一資料輸入埠)。區塊32亦可選擇性地耦合至用於將信號自區塊32提供至一外部裝置(例如,另一FSM晶格30)之一輸出區塊54(例如,一輸出埠)。FSM晶格30亦可包含一程式化介面56以將一程式(例如,一影像)載入至FSM晶格30上。該影像可程式化(例如,設定)SME 34、36之狀態。亦即,該影像可組態SME 34、36以便以一特定方式對輸入區塊52處之一給定輸入做出反應。舉例而言,一SME 34、36可經設定以在於輸入區塊52處接收到字元「a」時輸出一高信號。
在一實例中,可將輸入區塊52、輸出區塊54及/或程式化介面56實施為暫存器以使得至該等暫存器之寫入將資料提供至各別元件或自該等暫存器之讀取自該等各別元件提供資料。因此,來自儲存於對應於程式化介面56之暫存器中之影像之位元可載入於SME 34、36上。雖然圖2圖解說明一區塊32、輸入區塊52、輸出區塊54與一區塊間交換元件40之間的特定數目個導體(例如,導線、跡線),但應理解在其他實例中可使用更少或更多導體。
圖3圖解說明一區塊32之一實例。一區塊32可包含可與可程式化區塊內交換元件42選擇性地耦合在一起之複數個列38。另外,一列38可藉助區塊間交換元件40選擇性地耦合至另一區塊32內之另一列38。一列38包含組織成本文中稱為兩者之群組(GOT)60之若干對元件之複數個SME 34、36。在一實例中,一區塊32包括十六(16)個列38。
圖4圖解說明一列38之一實例。一GOT 60可藉由可程式化列內交換元件44選擇性地耦合至其他GOT 60及列38內之任何其他元件(例如,一特殊用途元件58)。一GOT 60亦可藉助區塊內交換元件42耦合至其他列38中之其他GOT 60,或者藉助一區塊間交換元件40耦合至其他區塊32中之其他GOT 60。在一實例中,一GOT 60具有一第一輸
入62及第二輸入64以及一輸出66。第一輸入62耦合至GOT 60之一第一SME 34且第二輸入64耦合至GOT 60之一第二SME 36,如將參考圖5進一步圖解說明。
在一實例中,列38包含第一複數個列互連導體68及第二複數個列互連導體70。在一實例中,一GOT 60之一輸入62、64可耦合至一或多個列互連導體68、70,且一輸出66可耦合至一個列互連導體68、70。在一實例中,第一複數個列互連導體68可耦合至列38內之每一GOT 60之每一SME 34、36。第二複數個列互連導體70可耦合至列38內之每一GOT 60之僅一個SME 34、36,但無法耦合至GOT 60之其他SME 34、36。在一實例中,第二複數個列互連導體70之一前半部可耦合至一列38內之SME 34、36之前半部(來自每一GOT 60之一個SME 34),且第二複數個列互連導體70之一後半部可耦合至一列38內之SME 34、36之一後半部(來自每一GOT 60之其他SME 34、36),如將關於圖5更佳地圖解說明。第二複數個列互連導體70與SME 34、36之間的有限連接性在本文中稱為「同位」。在一實例中,列38亦可包含一特殊用途元件58,諸如一計數器、一可程式化布林邏輯元件、查找表、RAM、一場可程式化閘陣列(FPGA)、一特殊應用積體電路(ASIC)、一可程式化處理器(例如,一微處理器)或用於執行一特殊用途功能之其他元件。
在一實例中,特殊用途元件58包括一計數器(在本文中亦稱為計數器58)。在一實例中,計數器58包括一12位元可程式化遞減計數器。12位元可程式化計數器58具有一計數輸入、一重設輸入及零計數輸出。計數輸入在被確證時使計數器58之值遞減1。重設輸入在被確證時致使計數器58自一相關聯暫存器載入一初始值。對於12位元計數器58而言,可載入多達12位元之一數目作為該初始值。當計數器58之值遞減至零(0)時,確證零計數輸出。計數器58亦具有至少兩種模
式,脈衝及保持。當計數器58經設定至脈衝模式時,在計數器58遞減至零時於時脈循環期間確證零計數輸出,且在下一時脈循環處不再確證零計數輸出。當計數器58經設定至保持模式時,在計數器58遞減至零時於時脈循環期間確證零計數輸出,且停留在經確證直至計數器58由被確證之重設輸入重設為止。
在另一實例中,特殊用途元件58包括布林邏輯。在某些實例中,此布林邏輯可用以自FSM晶格30中之終端狀態SME(對應於如本文中稍後所論述的一FSM之終端節點)提取資訊。所提取之資訊可用以將狀態資訊傳送至其他FSM晶格30及/或傳送用以重新程式化FSM晶格30或重新程式化另一FSM晶格30之程式化資訊。
圖5圖解說明一GOT 60之一實例。GOT 60包含具有輸入62、64且使其輸出72、74耦合至一「或(OR)」閘76及一3對1多工器78之一第一SME 34及一第二SME 36。3對1多工器78可經設定以將GOT 60之輸出66耦合至第一SME 34、第二SME 36或者「或」閘76。「或」閘76可用以將輸出72、74兩者耦合在一起以形成GOT 60之共同輸出66。在一實例中,如上文所論述,第一SME 34及第二SME 36展現同位,其中第一SME 34之輸入62可耦合至列互連件導體68中之某些列互連導體且第二SME 36之輸入64可耦合至其他列互連件導體70。在一實例中,可藉由設定交換元件79中之任一者或兩者而使一GOT 60內之兩個SME 34、36級聯及/或迴圈回至其自身。可藉由將SME 34、36之輸出72、74耦合至其他SME 34、36之輸入62、64而將SME 34、36級聯。可藉由將輸出72、74耦合至其自己的輸入62、64而使SME 34、36迴圈回至其自身。因此,第一SME 34之輸出72可不耦合至第一SME 34之輸入62及第二SME 36之輸入64中之任一者、耦合至其中之一者或其中之兩者。
在一實例中,一狀態機元件34、36包括並聯耦合至一偵測線82
之複數個記憶體單元80,諸如通常用於動態隨機存取記憶體(DRAM)中之彼等記憶體單元。一種此類記憶體單元80包括可設定至一資料狀態(諸如對應於一高值或一低值(例如,一個1或0)中之任一者之一個資料狀態)之一記憶體單元。記憶體單元80之輸出耦合至偵測線82,且至記憶體單元80之輸入基於資料串流線84上之資料而接收信號。在一實例中,資料串流線84上之一輸入經解碼以選擇記憶體單元80中之一者。選定記憶體單元80將其所儲存資料狀態作為一輸出提供至偵測線82上。舉例而言,在輸入區塊52處所接收之資料可提供至一解碼器(未展示)且該解碼器可選擇資料串流線84中之一者。在一實例中,該解碼器可將一個8位元ACSII字元轉換成256個資料串流線84中之對應1。
因此,一記憶體單元80在記憶體單元80設定至一高值且資料串流線84上之資料對應於記憶體單元80時將一高信號輸出至偵測線82。當資料串流線84上之資料對應於記憶體單元80且記憶體單元80設定至一低值時,記憶體單元80將一低信號輸出至偵測線82。偵測線82上之來自記憶體單元80之輸出由一偵測單元86感測。
在一實例中,一輸入線62、64上之信號將各別偵測單元86設定至一作用或非作用狀態。當設定至非作用狀態時,偵測單元86在各別輸出72、74上輸出一低信號,而不管各別偵測線82上之信號如何。當設定至一作用狀態時,偵測單元86在自各別SME 34、36之記憶體單元80中之一者偵測到一高信號時在各別輸出線72、74上輸出一高信號。當處於作用狀態中時,偵測單元86在來自各別SME 34、36之所有記憶體單元80之信號係低時在各別輸出線72、74上輸出一低信號。
在一實例中,一SME 34、36包含256個記憶體單元80且每一記憶體單元80耦合至一不同資料串流線84。因此,一SME 34、36可經程式化以在資料串流線84中之選定一或多者在其上具有一高信號時輸出
一高信號。舉例而言,SME 34可將一第一記憶體單元80(例如,位元0)設定為高且將所有其他記憶體單元80(例如,位元1至255)設定為低。當各別偵測單元86處於作用狀態中時,SME 34在對應於位元0之資料串流線84在其上具有一高信號時在輸出72上輸出一高信號。在其他實例中,可藉由將適當記憶體單元80設定至一高值來設定SME 34以在多個資料串流線84中之一者在其上具有一高信號時輸出一高信號。
在一實例中,可藉由自一相關聯暫存器讀取位元而將一記憶體單元80設定至一高值或低值。因此,可藉由將編譯器20所創建之一影像儲存至暫存器中且將該等暫存器中之位元載入至相關聯記憶體單元80中來程式化SME 34。在一實例中,編譯器20所創建之影像包含高及低(例如,1及0)位元之一個二進制影像。該影像可程式化FSM晶格30以藉由級聯SME 34、36而操作為一FSM。舉例而言,可藉由將偵測單元86設定至作用狀態而將一第一SME 34設定至一作用狀態。第一SME 34可經設定以在對應於位元0之資料串流線84在其上具有一高信號時輸出一高信號。第二SME 36可最初設定至一非作用狀態,但可在作用時經設定以在對應於位元1之資料串流線84在其上具有一高信號時輸出一高信號。可藉由設定第一SME 34之輸出72以耦合至第二SME 36之輸入64來級聯第一SME 34與第二SME 36。因此,當在對應於位元0之資料串流線84上感測到一高信號時,第一SME 34在輸出72上輸出一高信號且將第二SME 36之偵測單元86設定至一作用狀態。當在對應於位元1之資料串流線84上感測到一高信號時,第二SME 36在輸出74上輸出一高信號以啟動另一SME 36或供自FSM晶格30輸出。
在一實例中,在一單個實體裝置上實施一單個FSM晶格30,然而在其他實例中可在一單個實體裝置(例如,實體晶片)上實施兩個或兩
個以上FSM晶格30。在一實例中,每一FSM晶格30可包含一相異資料輸入區塊52、一相異輸出區塊54、一相異程式化介面56及一相異組的可程式化元件。此外,每一組可程式化元件可對其對應資料輸入區塊52處之資料做出反應(例如,輸出一高信號或低信號)。舉例而言,對應於一第一FSM晶格30之一第一組可程式化元件可對對應於第一FSM晶格30之一第一資料輸入區塊52處之資料做出反應。對應於一第二FSM晶格30之一第二組可程式化元件可對對應於第二FSM晶格30之一第二資料輸入區塊52做出反應。因此,每一FSM晶格30包含一組可程式化元件,其中不同組的可程式化元件可對不同輸入資料做出反應。類似地,每一FSM晶格30及每一對應組的可程式化元件可提供一相異輸出。在某些實例中,來自一第一FSM晶格30之一輸出區塊54可耦合至一第二FSM晶格30之一輸入區塊52以使得第二FSM晶格30之輸入資料可包含來自呈一系列FSM晶格30之一階層式配置之第一FSM晶格30之輸出資料。
在一實例中,用於載入至FSM晶格30上之一影像包括用於組態FSM晶格30內之可程式化元件、可程式化交換元件及特殊用途元件之複數個資訊位元。在一實例中,該影像可載入至FSM晶格30上以程式化FSM晶格30以基於特定輸入而提供一所期望輸出。輸出區塊54可基於可程式化元件對資料輸入區塊52處之資料之反應而提供來自FSM晶格30之輸出。來自輸出區塊54之一輸出可包含指示一給定型樣之一匹配之一單個位元、包括指示匹配及不匹配於複數個型樣之複數個位元之一字組(word)及對應於所有或特定可程式化元件在一給定時刻之狀態之一狀態向量。如所描述,若干個FSM晶格30可包含於一狀態機引擎(諸如狀態機引擎14)中以執行資料分析,諸如型樣辨識(例如,語音辨識、影像辨識等)、信號處理、成像、電腦視覺、密碼編譯及其他。
圖6圖解說明可由FSM晶格30實施之一有限狀態機(FSM)之一實例性模型。FSM晶格30可組態(例如,程式化)為一FSM之一實體實施方案。一FSM可表示為含有一或多個根節點92之一圖式90(例如,有向圖、無向圖、偽圖)。除了根節點92之外,該FSM可由透過一或多個邊緣98連接至根節點92及其他標準節點94之數個標準節點94及終端節點96構成。一節點92、94、96對應於該FSM中之一狀態。邊緣98對應於該等狀態之間的轉變。
節點92、94、96中之每一者可處於一作用或一非作用狀態中。當處於非作用狀態中時,一節點92、94、96不對輸入資料做出反應(例如,回應)。當處於一作用狀態中時,一節點92、94、96可對輸入資料做出反應。一上游節點92、94可在輸入資料匹配由上游節點92、94與下游節點94、96之間的一邊緣98規定之準則時藉由啟動自該節點下游之一節點94、96而對該輸入資料做出反應。舉例而言,規定字元「b」之一第一節點94將在第一節點94係作用的且字元「b」被接收為輸入資料時啟動藉由一邊緣98連接至第一節點94之一第二節點94。如本文所使用,「上游」係指一或多個節點之間的一關係,其中一第一節點在一或多個其他節點上游(或在一迴圈或回饋組態之情形中,在其自身上游)係指其中該第一節點可啟動該一或多個其他節點(或在一迴圈之情形中,可啟動其自身)之情形。類似地,「下游」係指其中在一或多個其他節點下游(或在一迴圈之情形中,在其自身下游)之一第一節點可由該一或多個其他節點啟動(或在一迴圈之情形中,可由其自身啟動)的一關係。因此,本文中使用術語「上游」及「下游」來指一或多個節點之間的關係,但此等術語不排除迴圈或節點當中之其他非線性路徑之使用。
在圖式90中,可最初啟動根節點92且根節點92可在輸入資料匹配來自根節點92之一邊緣98時啟動下游節點94。節點94可在輸入資料
匹配來自節點94之一邊緣98時啟動節點96。可在接收到輸入資料時以此方式啟動貫穿圖式90之節點94、96。一終端節點96對應於輸入資料之一所關注序列之一匹配。因此,啟動一終端節點96指示已接收到一所關注序列作為輸入資料。在實施一型樣辨識功能之FSM晶格30之上下文中,到達一終端節點96可指示已在輸入資料中偵測到一所關注特定型樣。
在一實例中,每一根節點92、標準節點94及終端節點96可對應於FSM晶格30中之一可程式化元件。每一邊緣98可對應於該等可程式化元件之間的連接。因此,轉變至另一標準節點94或一終端節點96(例如,具有連接至另一標準節點94或一終端節點96之一邊緣98)之一標準節點94對應於轉變至另一可程式化元件(例如,將一輸出提供至另一可程式化元件)之一可程式化元件。在某些實例中,根節點92不具有一對應可程式化元件。
當程式化FSM晶格30時,可程式化元件中之每一者亦可處於一作用或非作用狀態中。一給定可程式化元件在非作用時不對一對應資料輸入區塊52處之輸入資料做出反應。一作用可程式化元件可對資料輸入區塊52處之輸入資料做出反應且可在該輸入資料匹配該可程式化元件之設定時啟動一下游可程式化元件。當一可程式化元件對應於一終端節點96時,該可程式化元件可耦合至輸出區塊54以將一匹配之一指示提供至一外部裝置。
經由程式化介面56載入至FSM晶格30上之一影像可組態可程式化元件及特殊用途元件以及可程式化元件與特殊用途元件之間的連接,以使得基於對資料輸入區塊52處之資料之反應而透過節點之順序啟動來實施一所期望FSM。在一實例中,一可程式化元件保持作用達一單個資料循環(例如,一單個字元、一字元集、一單個時脈循環)且然後變得非作用,除非被一上游可程式化元件重新啟動。
可認為一終端節點96儲存一經壓縮過去事件歷史。舉例而言,到達一終端節點96所需之輸入資料之一或多個型樣可由彼終端節點96之啟動表示。在一實例中,一終端節點96所提供之輸出係二進制的,亦即該輸出指示是否已匹配所關注型樣。一圖式90中終端節點96對標準節點94之比率可相當小。換言之,雖然在FSM中可存在一高複雜度,但比較而言FSM之輸出可係小的。
在一實例中,FSM晶格30之輸出可包括一狀態向量。該狀態向量包括FSM晶格30之可程式化元件之狀態(例如,經啟動或未經啟動)。在一實例中,該狀態向量包含對應於終端節點96之可程式化元件之狀態。因此,該輸出可包含一圖式90之所有終端節點96所提供之指示之一集合。該狀態向量可表示為一字組,其中每一終端節點96所提供之二進制指示包括該字組之一個位元。終端節點96之此編碼可提供FSM晶格30之偵測狀態(例如,是否已偵測到所關注序列及已偵測到何種所關注序列)之一有效指示。在另一實例中,狀態向量可包含所有或一子組的可程式化元件之狀態,而不管該等可程式化元件是否對應於一終端節點96。
如上文所提及,FSM晶格30可經程式化以實施一型樣辨識功能。舉例而言,FSM晶格30可經組態以辨識輸入資料中之一或多個資料序列(例如,簽章、型樣)。當FSM晶格30辨識出一所關注資料序列時,可在輸出區塊54處提供彼辨識之一指示。在一實例中,型樣辨識可辨識一串符號(例如,ASCII字元)以(舉例而言)識別網路資料中之惡意軟體或其他資訊。
圖7圖解說明階層式結構100之一實例,其中FSM晶格30之兩個層級串列地耦合且用以分析資料。具體而言,在所圖解說明實施例中,階層式結構100包含串列配置之一第一FSM晶格30A及一第二FSM晶格30B。每一FSM晶格30包含用以接收資料輸入之一各別資料輸入區塊
52、用以接收程式化信號之一程式化介面區塊56及一輸出區塊54。
第一FSM晶格30A經組態以在一資料輸入區塊處接收輸入資料(舉例而言,原始資料)。第一FSM晶格30A對如上文所描述之輸入資料做出反應且在一輸出區塊處提供一輸出。來自第一FSM晶格30A之輸出發送至第二FSM晶格30B之一資料輸入區塊。第二FSM晶格30B可然後基於由第一FSM晶格30A提供之輸出而做出反應且提供階層式結構100之一對應輸出信號102。兩個FSM晶格30A與30B之此串列階層式耦合提供用以將關於一經壓縮字組中之過去事件之資訊自一第一FSM晶格30A傳送至一第二FSM晶格30B之一方式。所傳送之資訊可實際上係由第一FSM晶格30A記錄之複雜事件(例如,所關注序列)之一總和。
圖7中所展示之FSM晶格30A、30B之兩層級階層100允許兩個獨立程式基於同一資料串流而操作。兩級階層可類似於模型化為不同區域之一生物大腦中之視覺辨識。在此模型下,該等區域實際上係不同型樣辨識引擎,每一型樣辨識引擎執行一類似計算功能(型樣匹配)但使用不同程式(簽章)。藉由將多個FSM晶格30A、30B連接在一起,可獲得關於資料串流輸入之增加之知識。
該階層之第一層級(由第一FSM晶格30A實施)可(舉例而言)直接對一原始資料串流執行處理。亦即,可在第一FSM晶格30A之一輸入區塊52處接收一原始資料串流且第一FSM晶格30A之可程式化元件可對該原始資料串流做出反應。該階層之第二層級(由第二FSM晶格30B實施)可處理來自該第一層級之輸出。亦即,第二FSM晶格30B在第二FSM晶格30B之一輸入區塊52處接收來自第一FSM晶格30A之一輸出區塊54之輸出且第二FSM晶格30B之可程式化元件可對第一FSM晶格30A之輸出做出反應。因此,在此實例中,第二FSM晶格30B不將原始資料串流接收為一輸入,而是接收由如藉由第一FSM晶格30A判定
之原始資料串流匹配之所關注型樣之指示。第二FSM晶格30B可實施辨識來自第一FSM晶格30A之輸出資料串流中之型樣之一FSM。
圖8圖解說明用於一編譯器將原始程式碼轉換成經組態以程式化一FSM晶格(諸如晶格30)之一影像以實施一FSM之一方法110之一實例。方法110包含將原始程式碼剖析成一語法樹(方塊112),將該語法樹轉換成一自動機(automaton)(方塊114),最佳化該自動機(方塊116),將該自動機轉換成一網路連線表(方塊118),將該網路連線表放置於硬體上(方塊120),路由該網路連線表(方塊122)及發佈所得影像(方塊124)。
在一實例中,編譯器20包含允許軟體開發者創建影像以用於實施FSM晶格30上之FSM之一應用程式化介面(API)。編譯器20提供用以將原始程式碼中之一輸入規則運算式集轉換成經組態以程式化FSM晶格30之一影像之方法。可藉由用於具有一馮.諾伊曼架構之一電腦之指令來實施編譯器20。此等指令可致使電腦上之一處理器12實施編譯器20之功能。舉例而言,該等指令在由處理器12執行時可致使處理器12對可由處理器12存取之原始程式碼執行如方塊112、114、116、118、120、122及124中所描述之動作。
在一實例中,原始程式碼描述搜尋字串以用於識別一符號群組內之符號之型樣。為了描述搜尋字串,原始程式碼可包含複數個規則運算式(regex)。一規則運算式可係用於描述一符號搜尋型樣之一字串。規則運算式廣泛地用於各種電腦領域中,諸如程式設計語言、文書編輯器、網路安全及其他領域。在一實例中,編譯器所支援之規則運算式包含用於分析未結構化資料之準則。未結構化資料可包含自由形式之資料且不具有應用於該資料內之字組之索引。字組可包含該資料內之位元組(可列印及不可列印)之任何組合。在一實例中,編譯器可支援多種不同原始程式碼語言以用於實施包含Perl(例如,Perl相容
規則運算式(PCRE))、PHP、Java及.NET語言之規則運算式。
在方塊112處,編譯器20可剖析原始程式碼以形成關係連接之運算子之一配置,其中不同類型之運算子對應於原始程式碼所實施之不同函式(例如,原始程式碼中之規則運算式所實施之不同函式)。剖析原始程式碼可創建原始程式碼之一泛用表示。在一實例中,該泛用表示包括呈稱作一語法樹之一樹形圖之形式之原始程式碼中之規則運算式的一經編碼表示。本文中所描述之實例係指作為一語法樹(亦稱作一「抽象語法樹」)之配置,然而在其他實例中可使用一具體語法樹或其他配置。
如上文所提及,由於編譯器20可支援原始程式碼之多種語言,因此剖析將原始程式碼轉換成一非語言特定表示(例如,一語法樹)而不管語言如何。因此,編譯器20所進行之進一步處理(方塊114、116、118、120)可自一共同輸入結構起作用而不管原始程式碼之語言如何。
如上文所述,語法樹包含關係連接之複數個運算子。一語法樹可包含多種不同類型之運算子。亦即,不同運算子可對應於原始程式碼中之規則運算式所實施之不同函式。
在方塊114處,將語法樹轉換成一自動機。一自動機包括一FSM之一軟體模型且可因此分類為確定性的及非確定性的。一確定性自動機在一給定時間具有一單個執行路徑,而一非確定性自動機具有多個同時執行路徑。該自動機包括複數個狀態。為了將語法樹轉換成一自動機,將語法樹中之運算子及運算子之間的關係轉換成狀態,其中該等狀態之間具有轉變。在一實例中,可部分地基於FSM晶格30之硬體而轉換該自動機。
在一實例中,用於自動機之輸入符號包含字母、數字0至9及其他可列印字元之符號。在一實例中,輸入符號係由位元組值0至255
(包含0及255)表示。在一實例中,一自動機可表示為一有向圖,其中該圖之節點對應於該組狀態。在一實例中,一輸入符號α(亦即δ(p,α))上自狀態p至狀態q之一轉變係由自節點p至節點q之一有向連接展示。在一實例中,一自動機之一倒轉產生一新自動機,其中某一符號α上之每一轉變p→q在同一符號上倒轉q→p。在一倒轉中,開始狀態變成一最終狀態且最終狀態變成開始狀態。在一實例中,一自動機所辨識(例如,匹配)之語言係在順序地輸入至該自動機中時將達到一最終狀態之所有可能字元字串集。該自動機所辨識之語言中之每一字串追蹤自開始狀態至一或多個最終狀態之一路徑。
在方塊116處,在建構自動機之後,最佳化該自動機以除其他之外亦減小其複雜度及大小。可藉由組合冗餘狀態來最佳化該自動機。
在方塊118處,將經最佳化之自動機轉換成一網路連線表。將該自動機轉換成一網路連線表將該自動機之每一狀態映射至FSM晶格30上之一硬體元件(例如,SME 34、36,其他元件)並判定該等硬體元件之間的連接。
在方塊120處,放置網路連線表以選擇對應於該網路連線表之每一節點的目標裝置之一特定硬體元件(例如,SME 34、36,特殊用途元件58)。在一實例中,放置基於FSM晶格30之一般輸入及輸出約束而選擇每一特定硬體元件。
在方塊122處,路由所放置之網路連線表以判定用於可程式化交換元件(例如,區塊間交換元件40、區塊內交換元件42及列內交換元件44)之設定,以便將選定硬體元件耦合在一起以達成網路連線表所描述之連接。在一實例中,藉由判定將用以連接選定硬體元件及用於可程式化交換元件之設定的FSM晶格30之特定導體來判定用於可程式化交換元件之設定。路由可比方塊120處之放置計及硬體元件之間的連接之更多特定限制。因此,路由可調整如藉由全域放置所判定之該
等硬體元件中之某些硬體元件之位置以便鑒於FSM晶格30上之導體之實際限制而做出適當連接。
一旦放置及路由了網路連線表,便可將該經放置及經路由之網路連線表轉換成用於程式化一FSM晶格30之複數個位元。該複數個位元在本文中稱為一影像。
在方塊124處,由編譯器20發佈一影像。該影像包括用於程式化FSM晶格30之特定硬體元件之複數個位元。在其中該影像包括複數個位元(例如,0及1)之實施例中,該影像可稱為一個二進制影像。可將該等位元載入至FSM晶格30上以程式化SME 34、36,特殊用途元件58及可程式化交換元件之狀態,以使得經程式化FSM晶格30實施具有原始程式碼所描述之功能性之一FSM。放置(方塊120)及路由(方塊122)可將FSM晶格30中之特定位置處之特定硬體元件映射至自動機中之特定狀態。因此,該影像中之位元可程式化特定硬體元件以實施所期望功能。在一實例中,可藉由將機器碼保存至一電腦可讀媒體來發佈該影像。在另一實例中,可藉由將該影像顯示於一顯示裝置上來發佈該影像。在又一實例中,可藉由將該影像發送至另一裝置(諸如用於將該影像載入至FSM晶格30上之一程式化裝置)來發佈該影像。在再一實例中,可藉由將該影像載入至一FSM晶格(例如,FSM晶格30)上來發佈該影像。
在一實例中,可藉由將位元值自一影像直接載入至SME 34、36及其他硬體元件或藉由將該影像載入至一或多個暫存器中且然後將該等位元值自該等暫存器寫入至SME 34、36及其他硬體元件來將該影像載入至FSM晶格30上。在一實例中,FSM晶格30之硬體元件(例如,SME 34、36,特殊用途元件58,可程式化交換元件40、42、44)經記憶體映射以使得一程式化裝置及/或電腦可藉由將該影像寫入至一或多個記憶體位址而將該影像載入至FSM晶格30上。
本文中所描述之方法實例可係至少部分地機器或電腦實施的。某些實例可包含藉助指令編碼之一電腦可讀媒體或機器可讀媒體,該等指令可操作以組態一電子裝置以執行如上文實例中所描述之方法。此等方法之一實施方案可包含程式碼,諸如微碼、組合語言碼、一較高階語言碼或諸如此類。此程式碼可包含用於執行各種方法之電腦可讀指令。該程式碼可形成電腦程式產品之部分。此外,該程式碼可在執行期間或在其他時間有形地儲存於一或多個揮發性或非揮發性電腦可讀媒體上。此等電腦可讀媒體可包含(但不限於)硬碟、可抽換式磁碟、可抽換式光碟(例如,光碟片及數位視訊光碟)、磁盒、記憶體卡或棒、隨機存取記憶體(RAM)、唯讀記憶體(ROM)及諸如此類。
現在參考圖9,其圖解說明狀態機引擎14之一實施例。如先前所描述,狀態機引擎14經組態以經由一資料匯流排自一源(諸如記憶體16)接收資料。在所圖解說明實施例中,資料可透過一匯流排介面(諸如一DDR3匯流排介面130)發送至狀態機引擎14。DDR3匯流排介面130可能夠以大於或等於1千兆位元組/秒之一速率交換資料。如將瞭解,取決於待分析之資料源,匯流排介面130可係用於將資料交換至一資料源及將資料自一資料源交換至狀態機引擎14之任何適合匯流排介面,諸如一「非及」快閃介面、PCI介面等。如先前所描述,狀態機引擎14包含經組態以分析資料之一或多個FSM晶格30。每一FSM晶格30可劃分成兩半晶格。在所圖解說明實施例中,每一半晶格可包含24K SME(例如,SME 34、36)以使得晶格30包含48K SME。晶格30可包括如先前關於圖2至圖5所描述地配置之任何期望數目個SME。此外,儘管僅圖解說明一個FSM晶格30,但狀態機引擎14可包含多個FSM晶格30,如先前所描述。
待分析之資料可在匯流排介面130處接收且透過若干個緩衝器及緩衝介面傳輸至FSM晶格30。在所圖解說明實施例中,資料路徑包含
資料緩衝器132、處理程序緩衝器134及一等級間(inter-rank;IR)匯流排與處理程序緩衝介面136。資料緩衝器132經組態以接收且暫時儲存待分析之資料。在一項實施例中,存在兩個資料緩衝器132(資料緩衝器A及資料緩衝器B)。可將資料儲存於兩個資料緩衝器132中之一者中,而自另一資料緩衝器132清空資料以供由FSM晶格30分析。在所圖解說明實施例中,資料緩衝器132可各自係32千位元組。IR匯流排與處理程序緩衝介面136可促進至處理程序緩衝器134之資料傳送。IR匯流排與處理程序緩衝器136確保資料由FSM晶格30按次序處理。IR匯流排與處理程序緩衝器136可協調資料交換、時序資訊、包裝(packing)指令等以使得按正確次序接收及分析資料。通常,IR匯流排與處理程序緩衝器136允許透過FSM晶格30之邏輯等級(logical rank)平行分析多個資料集。
在所圖解說明實施例中,狀態機引擎14亦包含一解壓縮器138及一壓縮器140以幫助透過狀態機引擎14傳送大量資料。壓縮器140連同解壓縮器138一起工作以使得可將資料壓縮以最小化資料傳送時間。藉由壓縮待分析之資料,可最小化匯流排利用時間。基於由編譯器20提供之資訊,可將一遮罩提供至狀態機引擎14以提供可能不對其使用狀態機之資訊。壓縮器140及解壓縮器138亦可經組態以處置變化之叢發長度之資料。藉由填補經壓縮資料及包含關於每一經壓縮區域何時結束之一指示符,壓縮器140可透過狀態機引擎14改良總體處理速度。壓縮器140及解壓縮器138亦可用以在由FSM晶格30分析之後壓縮及解壓縮匹配結果資料。
如先前所描述,FSM晶格30之輸出可包括一狀態向量。該狀態向量包括FSM晶格30之可程式化元件之狀態(例如,經啟動或未經啟動)。每一狀態向量可暫時儲存於狀態向量快取記憶體142中以供進一步階層式處理及分析。亦即,可儲存每一狀態機之狀態以使得最終狀
態可用於進一步分析,同時釋放用於重新程式化及/或進一步分析一新資料集之狀態機。如一典型快取記憶體,狀態向量快取記憶體允許儲存資訊(此處,狀態向量)以供快速擷取及使用(此處,(例如)由FSM晶格30擷取及使用)。額外緩衝器(諸如狀態向量記憶體緩衝器144、狀態向量中間輸入緩衝器146及狀態向量中間輸出緩衝器148)可連同狀態向量快取記憶體142一起利用以適應狀態向量之迅速分析及儲存,同時遵守透過狀態機引擎14之封包傳輸協定。
一旦由FSM晶格30產生一所關注結果,便可將匹配結果儲存於一匹配結果記憶體150中。亦即,可將指示一匹配(例如,偵測到一所關注型樣)之一「匹配向量」儲存於匹配結果記憶體150中。舉例而言,然後可將匹配結果發送至一匹配緩衝器152以供經由匯流排介面130傳輸至處理器12。如先前所描述,可壓縮匹配結果。
亦可在狀態機引擎14中提供額外暫存器及緩衝器。例如,狀態機引擎14可包含控制與狀態暫存器154。另外,可提供還原與程式化緩衝器156以便最初用於程式化FSM晶格30或在分析期間還原FSM晶格30中之機器之狀態。類似地,亦可提供保存與修復映射緩衝器158以用於儲存保存與修復映射以用於設置及使用。
圖10更詳細地圖解說明圖5之一偵測單元86。如先前所述,此偵測單元86可接收一第一輸入62及一第二輸入82。在一項實施例中,第一輸入62可係一統一啟用輸入以操作為偵測單元86之一啟用信號。如先前所論述,此輸入62可包含自耦合至一列38中之一GOT 60之每一SME 34的路由接收之一信號。另外,應注意,一列38中之一GOT 60之一SME 36中之一完全相同偵測單元86亦可接收與輸入62相同之一輸入64作為一統一啟用輸入以操作為偵測單元86之一啟用信號。因此,輸入64可包含自耦合至一列38中之一GOT 60之每一SME 36的路由接收之一信號。因此,儘管下文將更詳細地論述SME 34之偵測單
元86,但應注意一SME 36之偵測單元86將以一實質上類似方式操作。
如圖10中所圖解說明,偵測單元可包含一D正反器160。此D正反器可操作以接收統一啟用輸入62以及輸入162上之一時脈信號。因此,D正反器160可在於輸入162(時脈輸入)處接收到一正邊緣時驅動可係統一啟用輸入62(D輸入)之狀態之一Q輸出164上之一結果。以此方式,D正反器160允許偵測單元86成為可僅在一所規定時間輸出使用彼SME之記憶體單元80執行之一分析之一結果的一時脈啟用之電路,如下文將論述。亦應注意,偵測單元86可包含可用以將Q輸出164設定至一高態有效信號之一設定輸入166及可用以將Q輸出164設定至一低態有效信號之一重設輸入168,而不管統一啟用輸入62或輸入162上之時脈信號中之任一者之值如何。
圖10中之偵測單元86亦可接收一第二輸入82。如先前所論述,此輸入82可對應於一偵測線82。此偵測線82可攜載來自對應於偵測單元86之SME 34之一或多個記憶體單元80之一分析結果(例如,一匹配結果)。因此,一選定記憶體單元80提供其所儲存資料狀態作為至偵測線82上之一輸出,該輸出然後作為一分析結果傳輸至偵測單元86。偵測線82上之此結果可傳輸至偵測單元86中之一「及」閘170。另外,Q輸出164可傳輸至「及」閘170。舉例而言,當偵測線82上之一合格匹配發生且經由統一啟用輸入62啟動偵測單元86(例如,在作用狀態中)時,將在輸出72(或SME 36中之偵測單元86之輸出74)上自偵測單元86輸出一匹配結果輸出。此合格匹配可表示(舉例而言)來自一單個SME 34之一經分析資料串流中之一匹配,該匹配可連同其他SME 34、36中之其他匹配一起用於搜尋(舉例而言)一資料串流中之一型樣。透過使用偵測單元86中之D正反器160,可在預定時間基於時脈信號而執行搜尋及自其產生之結果。另外,可(例如,透過統一啟
用輸入62之選定使用)實現對將在何時自SME 34、36輸出(例如,在輸出72、74上)結果及輸出何種結果之控制。此外,經由統一啟用輸入62(及統一啟用輸入64)的SME 34、36之此選擇性啟動允許將在SME 34、36中之每一者中找到之結果利用為一資料串流之一總體較寬廣分析之部分。
圖11圖解說明可耦合至一列38之GOT 60之一區域路由矩陣172之一實例。如所圖解說明,SME 34包含一偵測單元86以及可包含SME 34之記憶體單元80之一資料分析元件171。資料分析元件171可耦合至SME 34之一偵測線82。類似地,SME 36包含一偵測單元86以及可包含記憶體單元80之一資料分析元件173。另外,資料分析元件173可耦合至SME 36之一偵測線82。此外,除耦合至圖11中之所圖解說明SME 34、36之外,區域路由矩陣172亦可耦合至一特定列38中之GOT 60之SME 34、36中之所有對SME 34、36。因此,區域路由矩陣172可包含可程式化列內交換元件44及列互連/互連件導體68、70(其亦可稱為「列路由線」,如下文所描述)。
在一項實施例中,區域路由矩陣172可包含複數個列路由線174、176、178、180、182、184、186、188、190、192、194、196、198、200、202及204(下文中統稱為「列路由線174至204」)。以此方式,列路由線174至204之數目可對應於一給定列中之GOT之數目。因此,在所圖解說明實施例中,存在16個列路由線174至204。然而,應瞭解,可在區域路由矩陣172中利用較少或較多列路由線。
列路由線174至204中之每一者可用以給一或多個GOT 60之SME 34、36中之任一者提供啟用信號。因此,透過使用此等列路由線174至204,可啟動任何特定SME(例如,SME 34)之任何特定偵測單元86。此可藉由將列路由線174至204選擇性地耦合(例如,經由程式化)至SME 34、36之統一啟用輸入62、64而實現。此外,為了提供將啟
用信號提供至SME 34、36中之進一步靈活性,可在兩個SME 34、36當中劃分列路由線174至204。舉例而言,可利用列路由線174、176、178、180、182、184、186及188來啟動列38中之SME 34、36中之每一者。另外,可使用列路由線190、194、198及202來將統一啟用輸入62傳輸至列38中之SME 34,而可使用列路由線192、196、200及204來將統一啟用輸入64傳輸至列38中之SME 36。因此,舉例而言,可直接定址一列中之SME 34之總共16個偵測單元86中的SME 34之多達12個偵測單元86,而可透過使用(舉例而言)上文關於圖5所描述之交換元件79定址剩餘偵測單元86。以此方式,可減小列路由線174至204之總體數目,同時仍允許啟動一列38中之SME 34、36中之任一者之任何偵測單元86之總體靈活性及能力。
另外,應注意圖11包含群組內電路206。此群組內電路206之一輸出可係可傳輸一各別GOT 60之一輸出之輸出66。在一項實施例中,此輸出66可耦合至用於傳輸GOT 60之輸出66之列路由線174、176、178、180、182、184、186及188中之任一者,從而反映在所用SME 34、36中產生之任何結果。透過用於傳輸GOT之輸出66之列路由線174、176、178、180、182、184、186及188(其係區域路由矩陣172與SME 34、36之統一啟用輸入62、64共同的)之使用,可減小列路由線174至204之總體數目,同時仍允許總體系統靈活性。
應注意,圖11之群組內電路206可包含先前關於圖5所論述之GOT 60之元件。將關於圖12更詳細地論述群組內電路206中之此等元件之特定功能性及互連。
圖12中之群組內電路206包含先前已展示為耦合至SME 34、36之輸入62、64及輸出72、74。應注意,輸入62、64及輸出72、74係關於其與SME 34、36之各別關係且不必關於其在群組內電路206中之功能而提及。另外,群組內電路206包含一「或」閘76、一3對1多工器78
及分別耦合至輸出72、74之交換元件79。如所圖解說明,耦合至輸出72之交換元件79可允許SME 34之輸出72傳輸至SME 36之統一啟用輸入64(舉例而言)以允許級聯搜尋發生。另外或另一選擇係,耦合至輸出72之交換元件79可允許SME 34之統一啟用輸入62傳輸至SME 36之統一啟用輸入64及/或允許SME 34之輸出72傳輸至「或」閘76。如前線所論述,允許SME 34之統一啟用輸入62傳輸至SME 36之統一啟用輸入64可允許一給定列38之SME 36中之所有偵測單元元件86經由共用列路由線174至204而全定址。
類似地,耦合至輸出74之交換元件79可允許SME 36之輸出74傳輸至SME 34之統一啟用輸入62(舉例而言)以允許級聯搜尋發生。另外或另一選擇係,耦合至輸出74之交換元件79可允許SME 36之統一啟用輸入64傳輸至SME 34之統一啟用輸入62及/或允許SME 36之輸出74傳輸至「或」閘76。同樣,允許SME 36之統一啟用輸入64傳輸至SME 34之統一啟用輸入62可允許一給定列38之SME 34中之所有偵測單元元件86經由共用列路由線174至204而全定址。另外,儘管未圖解說明,但應注意輸出72、74可藉由經由一個交換元件79將輸出72耦合至輸入62且經由其他交換元件79將輸出74耦合至輸入64而迴圈回至產生輸出72、74之SME 34、36。
群組內電路206之3對1多工器78可經設定以將GOT 60之輸出66耦合至一第一SME 34、一第二SME 36或者可用以將SME 34、36之兩個輸出72、74耦合在一起以形成GOT 60之共同輸出66的「或」閘76。因此,3對1多工器78可包含一第一輸出選擇輸入208及一第二輸出選擇輸入210。因此,此等輸出選擇輸入208、210可以可程式化方式選擇在輸出66上傳輸何種輸出。此程式化可(舉例而言)基於在FSM晶格30之一初始程式化階段期間執行之一經載入影像而實現。圖13圖解說明陳述輸出選擇輸入208、210可如何以可程式化方式選擇GOT 60之
輸出66之一實例之一真值表212。
如圖13中所展示,當兩個輸出選擇輸入208、210皆係低(亦即,0)時,GOT 60之輸出66將係一高阻抗信號,因此有效地防止在輸出66上傳輸任何值。當輸出選擇輸入208係高(亦即,1)且輸出選擇輸入210係低時,GOT 60之輸出66將係第一SME 34之輸出(亦即,輸出72)。當輸出選擇輸入208係低且輸出選擇輸入210係高時,GOT 60之輸出66將係第二SME 346之輸出(亦即,輸出74)。最終,當輸出選擇輸入208、210係高時,GOT 60之輸出66將係「或」閘76之輸出(亦即,與輸出74成邏輯「或」之輸出72)。以此方式,3對1多工器78不以可程式化方式選擇任何輸出(輸出74或與輸出74成邏輯「或」之輸出72)作為GOT 60之輸出66。此外,應注意,3對1多工器可以不限於圖12中所圖解說明之特定實施例之其他可程式化組態操作。
儘管可易於對本發明做出各種修改及替代形式,但已在圖式中藉由舉例方式展示且在本文中詳細描述了特定實施例。然而,應理解,本發明並不意欲限於所揭示之特定形式。而是,本發明意欲涵蓋如由以下隨附申請專利範圍定義之本發明之精神及範疇內之所有修改形式、等效形式及替代方案。
34‧‧‧狀態機元件
36‧‧‧狀態機元件
62‧‧‧統一啟用輸入
64‧‧‧統一啟用輸入
66‧‧‧輸出
72‧‧‧輸出/輸出線
74‧‧‧輸出/輸出線
82‧‧‧偵測線
86‧‧‧偵測單元
171‧‧‧資料分析元件
172‧‧‧區域路由矩陣
173‧‧‧資料分析元件
174‧‧‧列路由線
176‧‧‧列路由線
178‧‧‧列路由線
180‧‧‧列路由線
182‧‧‧列路由線
184‧‧‧列路由線
186‧‧‧列路由線
188‧‧‧列路由線
190‧‧‧列路由線
192‧‧‧列路由線
194‧‧‧列路由線
196‧‧‧列路由線
198‧‧‧列路由線
200‧‧‧列路由線
202‧‧‧列路由線
204‧‧‧列路由線
206‧‧‧群組內電路
Claims (24)
- 一種裝置,其包括:一狀態機,其包括:複數個區塊,該等區塊中之每一者包括複數個列,該等列中之每一者包括複數個可程式化元件,該等可程式化元件中之每一者包括:一資料分析元件,其包括經組態以分析一資料串流之至少一部分且輸出該分析之一結果之複數個記憶體單元;及一偵測單元,其經組態以在處於一作用狀態中時輸出該結果。
- 如請求項1之裝置,其中該偵測單元包括耦合至一「及」閘之一D正反器。
- 如請求項2之裝置,其中該偵測單元包括經組態以自該資料分析元件接收該結果之一第一輸入。
- 如請求項3之裝置,其中該偵測單元包括經組態以接收一啟用信號作為至該D正反器之一資料輸入之一第二輸入。
- 如請求項4之裝置,其中該偵測單元包括經組態以接收一時脈信號作為至該D正反器之一時脈輸入之一第三輸入。
- 如請求項5之裝置,其中該偵測單元經組態以提供該D正反器之一輸出作為至該「及」閘之一輸入且提供來自該資料分析元件之該結果作為至該「及」閘之一第二輸入。
- 如請求項5之裝置,其中該偵測單元回應於該啟用信號及該時脈信號而處於一作用狀態中。
- 如請求項1之裝置,其中該資料分析元件包括一第一資料分析元件,其中該偵測單元包括一第一偵測單元,且其中該等可程式 化元件中之每一者進一步包括一第二資料分析元件及一第二偵測單元。
- 如請求項1之裝置,其中該等列中之每一者進一步包括耦合至該各別列之該等可程式化元件之一區域路由矩陣。
- 如請求項1之裝置,其包括一伺服器、一個人電腦、一工作站、一路由器、一網路交換器、晶片測試設備、一膝上型電腦、一行動電話、一媒體播放器、一遊戲控制台或包括該狀態機之一大型主機電腦。
- 一種裝置,其包括:一資料分析元件,其包括經組態以分析一資料串流之至少一部分且輸出該分析之一結果之複數個記憶體單元;及一偵測單元,其包括:一「及」閘,其經組態以接收該結果作為一第一輸入;及一D正反器,其包括耦合至該「及」閘之一第二輸入之一輸出。
- 如請求項11之裝置,其中該D正反器包括經組態以接收一啟用信號之一資料輸入。
- 如請求項12之裝置,其中該D正反器包括經組態以接收一時脈信號之一時脈輸入。
- 如請求項13之裝置,其中該D正反器經組態以回應於該時脈信號而將該啟用信號鎖存為來自該D正反器之該輸出之一經鎖存啟用信號。
- 如請求項14之裝置,其中該「及」閘經組態以回應於自該D正反器接收到該經鎖存啟用信號而輸出該結果。
- 如請求項11之裝置,其中該資料分析元件包括一第一資料分析元件,其中該偵測單元包括一第一偵測單元,其中該「及」閘包 括一第一「及」閘,該裝置進一步包括:一第二資料分析元件,其包括經組態以分析一資料串流之至少一部分且輸出該分析之一結果之第二複數個記憶體單元;及一第二偵測單元,其包括:一第二「及」閘,其經組態以接收由該第二資料分析元件執行之一分析之該結果作為一第一輸入;及一第二D正反器,其包括耦合至該第二「及」閘之一第二輸入之一輸出。
- 如請求項16之裝置,其中該啟用信號包括一第一啟用信號且該第二D正反器包括經組態以接收一第二啟用信號之一第二資料輸入。
- 如請求項17之裝置,其包括經組態以選擇性地提供該第一啟用信號及該第二啟用信號之一區域路由矩陣。
- 如請求項16之裝置,其進一步包括耦合至該第一偵測單元及該第二偵測單元之群組內電路。
- 如請求項19之裝置,其中該群組內電路包括耦合至該第一「及」閘及該第二「及」閘之輸出之一多工器。
- 如請求項20之裝置,其中該群組內電路進一步包括耦合至該多工器之一「或」閘,其中該「或」閘藉由交換元件耦合至該第一「及」閘及該第二「及」閘之該等輸出。
- 一種方法,其包括:自一資料分析元件輸出一資料串流之至少一部分之一分析之一結果;在一偵測單元之一「及」閘處接收該結果作為一第一輸入;在該偵測單元之一D正反器處接收一啟用信號及一時脈信號;在該D正反器處回應於該時脈信號而將該啟用信號鎖存為一經 鎖存信號;及在該「及」閘處接收該經鎖存啟用信號。
- 如請求項22之方法,其包括:回應於接收到該經鎖存啟用信號而自該「及」閘輸出該結果。
- 如請求項22之方法,其包括:自耦合至該D正反器之一區域路由矩陣接收該啟用信號。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/327,580 US8782624B2 (en) | 2011-12-15 | 2011-12-15 | Methods and systems for detection in a state machine |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201331856A true TW201331856A (zh) | 2013-08-01 |
TWI515668B TWI515668B (zh) | 2016-01-01 |
Family
ID=47557465
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101147677A TWI515668B (zh) | 2011-12-15 | 2012-12-14 | 用於一狀態機中偵測之方法及系統 |
Country Status (7)
Country | Link |
---|---|
US (3) | US8782624B2 (zh) |
EP (1) | EP2791862B1 (zh) |
JP (1) | JP6181074B2 (zh) |
KR (1) | KR101920956B1 (zh) |
CN (2) | CN104011736B (zh) |
TW (1) | TWI515668B (zh) |
WO (1) | WO2013090093A1 (zh) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100138575A1 (en) | 2008-12-01 | 2010-06-03 | Micron Technology, Inc. | Devices, systems, and methods to synchronize simultaneous dma parallel processing of a single data stream by multiple devices |
US20100174887A1 (en) | 2009-01-07 | 2010-07-08 | Micron Technology Inc. | Buses for Pattern-Recognition Processors |
US9323994B2 (en) | 2009-12-15 | 2016-04-26 | Micron Technology, Inc. | Multi-level hierarchical routing matrices for pattern-recognition processors |
US8489534B2 (en) * | 2009-12-15 | 2013-07-16 | Paul D. Dlugosch | Adaptive content inspection |
US8782624B2 (en) * | 2011-12-15 | 2014-07-15 | Micron Technology, Inc. | Methods and systems for detection in a state machine |
US8680888B2 (en) | 2011-12-15 | 2014-03-25 | Micron Technologies, Inc. | Methods and systems for routing in a state machine |
US8648621B2 (en) | 2011-12-15 | 2014-02-11 | Micron Technology, Inc. | Counter operation in a state machine lattice |
US8593175B2 (en) | 2011-12-15 | 2013-11-26 | Micron Technology, Inc. | Boolean logic in a state machine lattice |
US9443156B2 (en) | 2011-12-15 | 2016-09-13 | Micron Technology, Inc. | Methods and systems for data analysis in a state machine |
US20130275709A1 (en) | 2012-04-12 | 2013-10-17 | Micron Technology, Inc. | Methods for reading data from a storage buffer including delaying activation of a column select |
US9389841B2 (en) | 2012-07-18 | 2016-07-12 | Micron Technology, Inc. | Methods and systems for using state vector data in a state machine engine |
US9235798B2 (en) | 2012-07-18 | 2016-01-12 | Micron Technology, Inc. | Methods and systems for handling data received by a state machine engine |
US9524248B2 (en) | 2012-07-18 | 2016-12-20 | Micron Technology, Inc. | Memory management for a hierarchical memory system |
US9501131B2 (en) | 2012-08-31 | 2016-11-22 | Micron Technology, Inc. | Methods and systems for power management in a pattern recognition processing system |
US9075428B2 (en) | 2012-08-31 | 2015-07-07 | Micron Technology, Inc. | Results generation for state machine engines |
US9063532B2 (en) * | 2012-08-31 | 2015-06-23 | Micron Technology, Inc. | Instruction insertion in state machine engines |
US9703574B2 (en) | 2013-03-15 | 2017-07-11 | Micron Technology, Inc. | Overflow detection and correction in state machine engines |
US9448965B2 (en) | 2013-03-15 | 2016-09-20 | Micron Technology, Inc. | Receiving data streams in parallel and providing a first portion of data to a first state machine engine and a second portion to a second state machine |
US9158720B2 (en) * | 2013-08-11 | 2015-10-13 | Qualcomm Incorporated | System and method for scalable trace unit timestamping |
US11366675B2 (en) | 2014-12-30 | 2022-06-21 | Micron Technology, Inc. | Systems and devices for accessing a state machine |
US10430210B2 (en) | 2014-12-30 | 2019-10-01 | Micron Technology, Inc. | Systems and devices for accessing a state machine |
US10769099B2 (en) | 2014-12-30 | 2020-09-08 | Micron Technology, Inc. | Devices for time division multiplexing of state machine engine signals |
CN106547274B (zh) * | 2015-09-16 | 2019-11-15 | 中国航空工业第六一八研究所 | 一种基于场景矩阵的状态机测试方法 |
US10846103B2 (en) | 2015-10-06 | 2020-11-24 | Micron Technology, Inc. | Methods and systems for representing processing resources |
US10691964B2 (en) | 2015-10-06 | 2020-06-23 | Micron Technology, Inc. | Methods and systems for event reporting |
US10977309B2 (en) | 2015-10-06 | 2021-04-13 | Micron Technology, Inc. | Methods and systems for creating networks |
US10146555B2 (en) | 2016-07-21 | 2018-12-04 | Micron Technology, Inc. | Adaptive routing to avoid non-repairable memory and logic defects on automata processor |
US10019311B2 (en) | 2016-09-29 | 2018-07-10 | Micron Technology, Inc. | Validation of a symbol response memory |
US10268602B2 (en) | 2016-09-29 | 2019-04-23 | Micron Technology, Inc. | System and method for individual addressing |
US10929764B2 (en) | 2016-10-20 | 2021-02-23 | Micron Technology, Inc. | Boolean satisfiability |
US10592450B2 (en) | 2016-10-20 | 2020-03-17 | Micron Technology, Inc. | Custom compute cores in integrated circuit devices |
US10481881B2 (en) * | 2017-06-22 | 2019-11-19 | Archeo Futurus, Inc. | Mapping a computer code to wires and gates |
US9996328B1 (en) * | 2017-06-22 | 2018-06-12 | Archeo Futurus, Inc. | Compiling and optimizing a computer code by minimizing a number of states in a finite machine corresponding to the computer code |
CN109471637B (zh) * | 2018-11-08 | 2021-07-06 | 西安电子科技大学 | 电路图的审查脚本调试方法 |
DE102020103941A1 (de) * | 2020-02-14 | 2021-08-19 | Grimme Landmaschinenfabrik Gmbh & Co. Kg | Verfahren zum Betrieb einer Maschine zum Ernten und/oder Trennen von Hackfrüchten, zugehörige Maschine und zugehöriges Computerprogrammprodukt |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5295229A (en) * | 1992-06-17 | 1994-03-15 | Motorola, Inc. | Circuit and method for determining membership in a set during a fuzzy logic operation |
US20060117274A1 (en) * | 1998-08-31 | 2006-06-01 | Tseng Ping-Sheng | Behavior processor system and method |
US9195784B2 (en) * | 1998-08-31 | 2015-11-24 | Cadence Design Systems, Inc. | Common shared memory in a verification system |
US6691207B2 (en) * | 2001-12-28 | 2004-02-10 | Hewlett-Packard Development Company, L.P. | Method and apparatus for implementing loop compression in a program counter trace |
CA2526467C (en) * | 2003-05-20 | 2015-03-03 | Kagutech Ltd. | Digital backplane recursive feedback control |
US7487542B2 (en) | 2004-01-14 | 2009-02-03 | International Business Machines Corporation | Intrusion detection using a network processor and a parallel pattern detection engine |
CN100347992C (zh) * | 2004-07-09 | 2007-11-07 | 清华大学 | 实现线速对数据流按规则库近似匹配的可配置的硬件结构 |
US7392229B2 (en) | 2005-02-12 | 2008-06-24 | Curtis L. Harris | General purpose set theoretic processor |
US8065249B1 (en) | 2006-10-13 | 2011-11-22 | Harris Curtis L | GPSTP with enhanced aggregation functionality |
US7774286B1 (en) | 2006-10-24 | 2010-08-10 | Harris Curtis L | GPSTP with multiple thread functionality |
FR2924873B1 (fr) * | 2007-12-07 | 2011-11-25 | Valeo Sys Controle Moteur Sas | Circuit de controle du courant dans un organe electrique de commande ou de la tension aux bornes dudit organe electrique de commande |
US7881100B2 (en) * | 2008-04-08 | 2011-02-01 | Micron Technology, Inc. | State machine sensing of memory cells |
US8209521B2 (en) | 2008-10-18 | 2012-06-26 | Micron Technology, Inc. | Methods of indirect register access including automatic modification of a directly accessible address register |
US8938590B2 (en) | 2008-10-18 | 2015-01-20 | Micron Technology, Inc. | Indirect register access method and system |
US9639493B2 (en) | 2008-11-05 | 2017-05-02 | Micron Technology, Inc. | Pattern-recognition processor with results buffer |
US7917684B2 (en) | 2008-11-05 | 2011-03-29 | Micron Technology, Inc. | Bus translator |
US7970964B2 (en) | 2008-11-05 | 2011-06-28 | Micron Technology, Inc. | Methods and systems to accomplish variable width data input |
US20100118425A1 (en) | 2008-11-11 | 2010-05-13 | Menachem Rafaelof | Disturbance rejection in a servo control loop using pressure-based disc mode sensor |
US10007486B2 (en) | 2008-12-01 | 2018-06-26 | Micron Technology, Inc. | Systems and methods to enable identification of different data sets |
US20100138575A1 (en) | 2008-12-01 | 2010-06-03 | Micron Technology, Inc. | Devices, systems, and methods to synchronize simultaneous dma parallel processing of a single data stream by multiple devices |
US9348784B2 (en) | 2008-12-01 | 2016-05-24 | Micron Technology, Inc. | Systems and methods for managing endian mode of a device |
US9164945B2 (en) | 2008-12-01 | 2015-10-20 | Micron Technology, Inc. | Devices, systems, and methods to synchronize parallel processing of a single data stream |
US8140780B2 (en) | 2008-12-31 | 2012-03-20 | Micron Technology, Inc. | Systems, methods, and devices for configuring a device |
US8281395B2 (en) | 2009-01-07 | 2012-10-02 | Micron Technology, Inc. | Pattern-recognition processor with matching-data reporting module |
US8214672B2 (en) | 2009-01-07 | 2012-07-03 | Micron Technology, Inc. | Method and systems for power consumption management of a pattern-recognition processor |
US20100174887A1 (en) | 2009-01-07 | 2010-07-08 | Micron Technology Inc. | Buses for Pattern-Recognition Processors |
US8843523B2 (en) | 2009-01-12 | 2014-09-23 | Micron Technology, Inc. | Devices, systems, and methods for communicating pattern matching results of a parallel pattern search engine |
US9836555B2 (en) | 2009-06-26 | 2017-12-05 | Micron Technology, Inc. | Methods and devices for saving and/or restoring a state of a pattern-recognition processor |
US9323994B2 (en) | 2009-12-15 | 2016-04-26 | Micron Technology, Inc. | Multi-level hierarchical routing matrices for pattern-recognition processors |
US9501705B2 (en) | 2009-12-15 | 2016-11-22 | Micron Technology, Inc. | Methods and apparatuses for reducing power consumption in a pattern recognition processor |
US8489534B2 (en) | 2009-12-15 | 2013-07-16 | Paul D. Dlugosch | Adaptive content inspection |
US8601013B2 (en) * | 2010-06-10 | 2013-12-03 | Micron Technology, Inc. | Analyzing data using a hierarchical structure |
US8766666B2 (en) | 2010-06-10 | 2014-07-01 | Micron Technology, Inc. | Programmable device, hierarchical parallel machines, and methods for providing state information |
JP5857072B2 (ja) * | 2011-01-25 | 2016-02-10 | マイクロン テクノロジー, インク. | オートマトンの入次数および/または出次数を制御するための量化子の展開 |
CN103430148B (zh) * | 2011-01-25 | 2016-09-28 | 美光科技公司 | 用于元件利用的状态分组 |
EP2668574B1 (en) | 2011-01-25 | 2021-11-24 | Micron Technology, INC. | Utilizing special purpose elements to implement a fsm |
US8726253B2 (en) | 2011-01-25 | 2014-05-13 | Micron Technology, Inc. | Method and apparatus for compiling regular expressions |
US9443156B2 (en) | 2011-12-15 | 2016-09-13 | Micron Technology, Inc. | Methods and systems for data analysis in a state machine |
US8782624B2 (en) * | 2011-12-15 | 2014-07-15 | Micron Technology, Inc. | Methods and systems for detection in a state machine |
US8593175B2 (en) | 2011-12-15 | 2013-11-26 | Micron Technology, Inc. | Boolean logic in a state machine lattice |
US8680888B2 (en) | 2011-12-15 | 2014-03-25 | Micron Technologies, Inc. | Methods and systems for routing in a state machine |
US8648621B2 (en) | 2011-12-15 | 2014-02-11 | Micron Technology, Inc. | Counter operation in a state machine lattice |
-
2011
- 2011-12-15 US US13/327,580 patent/US8782624B2/en active Active
-
2012
- 2012-12-05 WO PCT/US2012/067995 patent/WO2013090093A1/en active Application Filing
- 2012-12-05 EP EP12814032.4A patent/EP2791862B1/en active Active
- 2012-12-05 KR KR1020147019140A patent/KR101920956B1/ko active IP Right Grant
- 2012-12-05 CN CN201280062249.4A patent/CN104011736B/zh active Active
- 2012-12-05 JP JP2014547289A patent/JP6181074B2/ja active Active
- 2012-12-05 CN CN201710417660.3A patent/CN107256156B/zh active Active
- 2012-12-14 TW TW101147677A patent/TWI515668B/zh active
-
2014
- 2014-07-11 US US14/329,586 patent/US9280329B2/en active Active
-
2016
- 2016-03-07 US US15/063,230 patent/US9817678B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US9280329B2 (en) | 2016-03-08 |
US20130159671A1 (en) | 2013-06-20 |
JP2015509228A (ja) | 2015-03-26 |
US20160188346A1 (en) | 2016-06-30 |
CN107256156A (zh) | 2017-10-17 |
WO2013090093A1 (en) | 2013-06-20 |
CN107256156B (zh) | 2020-11-03 |
US9817678B2 (en) | 2017-11-14 |
EP2791862B1 (en) | 2022-10-19 |
CN104011736B (zh) | 2017-06-20 |
EP2791862A1 (en) | 2014-10-22 |
JP6181074B2 (ja) | 2017-08-16 |
US8782624B2 (en) | 2014-07-15 |
TWI515668B (zh) | 2016-01-01 |
KR20140102290A (ko) | 2014-08-21 |
CN104011736A (zh) | 2014-08-27 |
US20140325494A1 (en) | 2014-10-30 |
KR101920956B1 (ko) | 2018-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI515668B (zh) | 用於一狀態機中偵測之方法及系統 | |
US20230196065A1 (en) | Methods and devices for programming a state machine engine | |
TWI515669B (zh) | 用於狀態機中資料分析之系統與方法 | |
US9866218B2 (en) | Boolean logic in a state machine lattice | |
TWI600295B (zh) | 用於在狀態機中路由之方法及系統 | |
TWI486810B (zh) | 在狀態機晶格中之計數器操作 | |
TWI569206B (zh) | 用於狀態機引擎之結果產生 | |
US9389841B2 (en) | Methods and systems for using state vector data in a state machine engine | |
US10430210B2 (en) | Systems and devices for accessing a state machine | |
US11947979B2 (en) | Systems and devices for accessing a state machine |