TWI502502B - 用於處理狀態機引擎所接收之資料之方法及系統 - Google Patents
用於處理狀態機引擎所接收之資料之方法及系統 Download PDFInfo
- Publication number
- TWI502502B TWI502502B TW102125814A TW102125814A TWI502502B TW I502502 B TWI502502 B TW I502502B TW 102125814 A TW102125814 A TW 102125814A TW 102125814 A TW102125814 A TW 102125814A TW I502502 B TWI502502 B TW I502502B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- buffer
- state machine
- bytes
- interface
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Human Computer Interaction (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Logic Circuits (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本發明之實施例大體上係關於電子裝置且更具體言之,在某些實施例中係關於具有用於資料分析之平行裝置之電子裝置。
對習知基於馮‧諾伊曼(von Neumann)之電腦執行複雜資料分析(例如,型樣辨識)之效率可為低。然而,生物大腦(尤其人類大腦)善於執行複雜的資料分析。當前研究表明,人類大腦使用大腦新皮質中之一系列經階層式組織之神經元層執行資料分析。階層之較低層中之神經元分析來自(例如)感覺器官之「原始信號」,而較高層中之神經元分析來自較低層級中之神經元之信號輸出。大腦新皮質中之此階層式系統可能結合大腦之其他區域完成複雜資料分析,此使人類能夠執行諸如空間推理、意識思考及複雜語言之高階功能。
在計算領域中,例如型樣辨識任務愈來愈具有挑戰性。電腦之間傳輸的資料量不斷增大且使用者希望偵測之型樣數目日益增加。例如,通常藉由在一資料串流中搜尋型樣(例如,特定片語或程式碼片段)來偵測垃圾郵件或惡意軟體。型樣數目隨著垃圾郵件及惡意軟體之多樣化而增加,這係因為可實施新型樣以搜尋新變體。針對此等型樣之各者搜尋一資料串流可形成一計算瓶頸。通常,當接收到資料串流時,針對各型樣一次一個地搜尋資料串流。在系統準備搜尋資料串
流之下一部分之前的延遲隨型樣數目增加。因此,型樣辨識可使資料之接收減慢。
硬體已經設計以針對型樣搜尋一資料串流,但是此硬體通常不能在給定的時間量期間處理足夠的資料量。經組態以搜尋一資料串流之一些裝置藉由將資料串流散佈在複數個電路之間以在給定的時間量期間處理足夠的資料量。該等電路各自判定資料串流是否匹配一型樣之一部分。通常,大量電路並行操作,其等之各者大體上同時搜尋資料串流。然而,至今仍未存在實際上容許以與生物大腦之方式更相當之一方式執行複雜資料分析之一系統。可期望開發此一系統。
10‧‧‧資料分析系統
12‧‧‧處理器
14‧‧‧狀態機引擎
16‧‧‧記憶體
18‧‧‧外部儲存器
20‧‧‧編譯器
22‧‧‧輸入裝置
24‧‧‧輸出裝置/顯示器
26‧‧‧網路介面裝置
30‧‧‧有限狀態機(FSM)晶格
30A‧‧‧第一有限狀態機(FSM)晶格
30B‧‧‧第二有限狀態機(FSM)晶格
32‧‧‧區塊
34‧‧‧狀態機元件(SME)/資料分析元件
36‧‧‧狀態機元件(SME)/資料分析元件
38‧‧‧列
40‧‧‧區塊間交換元件/可組態交換元件
42‧‧‧區塊內交換元件/可組態交換元件
44‧‧‧列內交換元件/可組態交換元件
46‧‧‧導體
48‧‧‧緩衝器
50‧‧‧緩衝器
52‧‧‧資料輸入區塊
54‧‧‧輸出區塊
56‧‧‧程式化介面/程式化介面區塊
58‧‧‧專用元件/12位元可組態計數器/計數器
60‧‧‧含兩個元件之群組
62‧‧‧第一輸入/輸入線
64‧‧‧第二輸入/輸入線
66‧‧‧輸出
68‧‧‧列互連導體
70‧‧‧列互連導體
72‧‧‧輸出
74‧‧‧輸出
76‧‧‧或閘
78‧‧‧3對1多工器
79‧‧‧交換元件
80‧‧‧記憶體單元
82‧‧‧偵測線
84‧‧‧資料串流線
86‧‧‧偵測單元
90‧‧‧圖
92‧‧‧根節點
94‧‧‧標準節點
96‧‧‧終端節點
98‧‧‧邊緣
100‧‧‧階層式結構
102‧‧‧輸出信號
110‧‧‧方法
112‧‧‧步驟
114‧‧‧步驟
116‧‧‧步驟
118‧‧‧步驟
120‧‧‧步驟
122‧‧‧步驟
124‧‧‧步驟
130‧‧‧第三代雙倍資料速率(DDR3)匯流排介面
132‧‧‧資料緩衝器
133‧‧‧指令緩衝器
134‧‧‧程序緩衝器
136‧‧‧排內(IR)匯流排及程序緩衝器介面
138‧‧‧解壓縮器
140‧‧‧壓縮器
141‧‧‧狀態向量系統
142‧‧‧狀態向量快取記憶體
144‧‧‧狀態向量記憶體緩衝器
146‧‧‧狀態向量中間輸入緩衝器
148‧‧‧狀態向量中間輸出緩衝器
150‧‧‧匹配結果記憶體
152‧‧‧匹配緩衝器
154‧‧‧控制及狀態暫存器
156‧‧‧還原及程式緩衝器
158‧‧‧保存及修復映射緩衝器
159‧‧‧資料緩衝器系統
162‧‧‧邏輯群組A
164‧‧‧邏輯群組B
166‧‧‧邏輯群組C
168‧‧‧邏輯群組D
170‧‧‧資料串流
172‧‧‧第一資料區塊
174‧‧‧第二資料區塊
176‧‧‧第三資料區塊
178‧‧‧第四資料區塊
180‧‧‧資料分段A
182‧‧‧資料分段B
184‧‧‧資料分段C
186‧‧‧資料分段D
188‧‧‧資料分段E
190‧‧‧資料分段F
192‧‧‧資料分段G
194‧‧‧資料分段H
196‧‧‧資料分段I
198‧‧‧資料分段J
200‧‧‧資料分段K
202‧‧‧資料填補
204‧‧‧資料填補
206‧‧‧資料填補
208‧‧‧資料填補
210‧‧‧資料填補
212‧‧‧資料填補
214‧‧‧資料填補
216‧‧‧資料填補
218‧‧‧資料填補
220‧‧‧資料填補
222‧‧‧第一區域
224‧‧‧第二區域
226‧‧‧第三區域
228‧‧‧第四區域
230‧‧‧第五區域
232‧‧‧第六區域
234‧‧‧第七區域
236‧‧‧第八區域
238‧‧‧位元組數目
240‧‧‧位元組數目
242‧‧‧位元組數目
244‧‧‧位元組數目
246‧‧‧位元組數目
248‧‧‧位元組數目
250‧‧‧位元組數目
252‧‧‧位元組數目
254‧‧‧位元組數目
256‧‧‧位元組數目
258‧‧‧位元組數目
260‧‧‧位元組數目
262‧‧‧位元組數目
264‧‧‧位元組數目
266‧‧‧位元組數目
268‧‧‧位元組數目
270‧‧‧位元組數目
272‧‧‧位元組數目
274‧‧‧位元組數目
276‧‧‧位元組數目
278‧‧‧位元組數目
280‧‧‧位元組數目
282‧‧‧位元組數目
284‧‧‧位元組數目
286‧‧‧位元組數目
288‧‧‧位元組數目
290‧‧‧位元組數目
292‧‧‧位元組數目
294‧‧‧位元組數目
296‧‧‧位元組數目
298‧‧‧位元組數目
302‧‧‧位元組數目
304‧‧‧位元組數目
306‧‧‧位元組數目
308‧‧‧位元組數目
312‧‧‧位元組數目
314‧‧‧位元組數目
316‧‧‧位元組數目
318‧‧‧位元組數目
320‧‧‧第一資料叢發
322‧‧‧第二資料叢發
324‧‧‧第三資料叢發
326‧‧‧第四資料叢發
328‧‧‧第五資料叢發
330‧‧‧第六資料叢發
332‧‧‧第七資料叢發
334‧‧‧第八資料叢發
圖1圖解說明根據本發明之各種實施例之具有一狀態機引擎之系統之一實例。
圖2圖解說明根據本發明之各種實施例之圖1之狀態機引擎之一有限狀態機(FSM)晶格之一實例。
圖3圖解說明根據本發明之各種實施例之圖2之FSM晶格之一區塊之一實例。
圖4圖解說明根據本發明之各種實施例之圖3之區塊之一列之一實例。
圖5圖解說明根據本發明之各種實施例之圖4之列之含兩個元件之群組之一實例。
圖6圖解說明根據本發明之各種實施例之一有限狀態機圖表之一實例。
圖7圖解說明根據本發明之各種實施例之使用FSM晶格實施之二層級階層之一實例。
圖8圖解說明根據本發明之各種實施例之一編譯器將原始程式碼轉換為二進制檔案以程式化圖2之FSM晶格之一方法之一實例。
圖9圖解說明根據本發明之各種實施例之一狀態機引擎。
圖10圖解說明根據本發明之各種實施例之配置成一裝置排之多個實體狀態機引擎之一實例。
圖11圖解說明根據本發明之各種實施例之分組成待提供至狀態機引擎之資料區塊之資料分段之一實例。
圖12圖解說明根據本發明之各種實施例之***於圖11之資料區塊之資料分段之間之資料填補之一實例。
圖13圖解說明根據本發明之各種實施例之***於圖12之資料區塊之資料分段之後的資料填補之一實例。
圖14圖解說明根據本發明之各種實施例之經組織以傳輸至狀態機引擎之一資料緩衝器系統之圖13之資料區塊之一實例。
圖15圖解說明根據本發明之各種實施例之由狀態機引擎接收之資料區塊之一實例。
圖16圖解說明根據本發明之各種實施例之儲存於狀態機引擎之一資料緩衝器系統中之圖15之資料區塊之一實例。
圖17圖解說明根據本發明之各種實施例之正自一資料緩衝器系統提供至多個FSM晶格之資料之一實例。
圖18圖解說明根據本發明之各種實施例之正提供至多個邏輯群組中之資料之一實例。
現在將參考該等圖,圖1圖解說明整體上由元件符號10指定之一基於處理器之系統之一實施例。系統10(例如,資料分析系統)可為諸如桌上型電腦、膝上型電腦、傳呼器、蜂巢式電話、個人記事簿、可攜式音訊播放器、控制電路、相機等等之多種類型之任一者。系統10亦可為一網路節點,諸如一路由器、一伺服器或一用戶端(例如,先前描述之電腦類型之一者)。系統10可為某個其他種類的電子裝置,
諸如一影印機、一掃描器、一印表機、一遊戲控制台、一電視機、一機上式視訊散佈或記錄系統、一電纜箱、一個人數位媒體播放器、一工廠自動化系統、一汽車電腦系統或一醫療裝置。(用以描述系統之此等各種實例之術語(如本文中使用之許多其他術語)可共用一些參照物,且因此不應藉由所列出之其他項加以狹隘地理解)。
在典型的基於處理器之裝置(諸如系統10)中,諸如微處理器之一處理器12控制系統10中之系統功能及請求之處理。進一步言之,處理器12可包括共用系統控制之複數個處理器。處理器12可直接或間接耦合至系統10中之元件之各者,使得處理器12藉由執行可儲存於系統10內或系統10外部之指令而控制系統10。
根據本文中描述之實施例,系統10包含可在處理器12之控制下操作之一狀態機引擎14。如本文中所使用,狀態機引擎14指代單個裝置(例如,單晶片)。狀態機引擎14可採用任何自動機理論。例如,狀態機引擎14可採用數個狀態機架構之一者,包含(但不限於)Mealy架構、Moore架構、有限狀態機(FSM)、確定性FSM(DFSM)、位元平行狀態機(BPSM)等等。雖然可使用多種架構,但是為論述目的,本申請案引用FSM。然而,熟習此項技術者應了解,可使用多種狀態機架構之任一者來採用所述技術。
如下文進一步論述,狀態機引擎14可包含數個(例如,一或多個)有限狀態機(FSM)晶格(例如,一晶片之核心)。為本申請案之目的,術語「晶格」指代元件(例如,布林單元、計數器單元、狀態機元件、狀態轉變元件)之一組織框架(例如,路由矩陣、路由網路、訊框)。此外,「晶格」可具有任何合適的形狀、結構或階層式組織(例如,柵格、立方形、球形、級聯)。各FSM晶格可實施各自並行接收及分析相同資料之多個FSM。進一步言之,FSM晶格可配置成群組(例如,叢集),使得FSM晶格之叢集可並行分析相同輸入資料。進一
步言之,狀態機引擎14之FSM晶格之叢集可配置在一階層式結構中,其中來自階層式結構之一較低層級上之狀態機晶格之輸出可用作為至一較高層級上之狀態機晶格之輸入。藉由透過階層式結構使狀態機引擎14之平行FSM晶格之叢集串聯地級聯,可分析(例如,評估、搜尋等等)日益複雜的型樣。
進一步言之,基於狀態機引擎14之階層式平行組態,狀態機引擎14可用於利用高處理速度之系統中之複雜資料分析(例如,型樣辨識)。例如,本文中描述之實施例可併入具有1GByte/sec之處理速度之系統中。因此,利用狀態機引擎14,可迅速分析來自高速記憶體裝置或其他外部裝置之資料。狀態機引擎14可根據若干準則(例如,搜尋項)大約同時(例如,在單個裝置循環期間)分析一資料串流。狀態機引擎14之一層級上之一FSM叢集內之FSM晶格之各者可各自大約同時自資料串流接收相同搜尋項,且平行FSM晶格之各者可以處理準則判定該項是否將狀態機引擎14推進至下一狀態。狀態機引擎14可根據相對較大數目個準則(例如,大於100個、大於110個或大於10,000個準則)分析諸項。因為FSM晶格並行操作,所以其等可將準則應用於具有一相對較高頻寬之一資料串流(例如,大於或大體上等於1GByte/sec之一資料串流)而不使資料串流減慢。
在一實施例中,狀態機引擎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)、多媒體卡(MMC)、安全數位(SD)卡、緊密快閃(CF)卡或任何其他合適的裝置。進一步言之,應了解,此等裝置可經由任何
合適的介面(諸如通用串列匯流排(USB)、周邊組件互連(PCI)、PCI Express(PCI-E)、小型電腦系統介面(SCSI)、IEEE 1394(Firewire)或任何其他合適的介面)耦合至系統10。為促進記憶體16(諸如快閃記憶體裝置)之操作,系統10可包含一記憶體控制器(未圖解說明)。如應了解,記憶體控制器可為一獨立裝置或其可與處理器12成一體。此外,系統10可包含一外部儲存器18,諸如一磁性儲存裝置。外部儲存器亦可將輸入資料提供至狀態機引擎14。
系統10可包含數個額外元件。例如,如關於圖8更詳細地描述,一編譯器20可用以組態(例如,程式化)狀態機引擎14。一輸入裝置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亦可被視為狀態轉變元件(STE)。為了在經階層式組織之SME 34、36
之間路由信號,可使用可組態交換元件之一階層,包含區塊間交換元件40(圖2及圖3中所示)、區塊內交換元件42(圖3及圖4中所示)及列內交換元件44(圖4中所示)。
如上所述,交換元件可包含路由結構及緩衝器。SME 34、36可對應於由FSM晶格30實施之一FSM之一狀態。SME 34、36可藉由使用如下文描述之可組態交換元件而耦合在一起。因此,可藉由以下各者對FSM晶格30實施一FSM:組態SME 34、36以對應於狀態功能且選擇性地將SME 34、36耦合在一起以對應於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選擇性地耦合至列38內之其他GOT 60及任何其他元件(例如,一專用元件58)。一GOT 60亦可使用區塊內交換元件42耦合至其他列38中之其他GOT 60,或使用一區塊間交換元件40耦合至其他區塊32中之其他GOT 60。在一實例中,一GOT 60具有第一輸入62及第二輸入64以及一輸出66。如將參考圖5進一步圖解說明,第一輸入62耦合至GOT 60之一第一SME 34,且第二輸入64耦合至GOT 60之一第二SME 36。
在一實例中,列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。在一實例中,如將關於圖5更佳地圖解說明,第二複數個列互連導體70之一第一半部分可耦合至一列38內之SME 34、36之第一半部分(來自各GOT 60之一SME 34、36),且第二複數個列互連導體70之
一第二半部分可耦合至一列38內之SME 34、36之一第二半部分(來自各GOT 60之另一SME 34、36)。第二複數個列互連導體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累減至零之時脈循環期間經確證,且保持確證直至藉由正經確證的重設輸入重設計數器58。
在另一實例中,專用元件58包括布林邏輯。例如,布林邏輯可用以執行邏輯函數,諸如AND、OR、NAND、NOR、積項之和(SoP)、否定輸出積項之和(NSoP)、否定輸出和項之積(NPoS)及和項之積(PoS)函數。此布林邏輯可用以自FSM晶格30中之終端狀態SME(如本文隨後論述,對應於一FSM之終端節點)提取資料。所提取的資料可用以將狀態資料提供至其他FSM晶格30及/或提供用以重組態FSM晶格30或重組態另一FSM晶格30之組態資料。
圖5圖解說明一GOT 60之一實例。GOT 60包含一第一SME 34及一第二SME 36,其等具有輸入62、64及其等耦合至一OR閘76及一3對1多工器78之輸出72、74。3對1多工器78可經設定以將GOT 60之輸出66耦合至第一SME 34、第二SME 36或OR閘76。OR閘76可用以將兩個輸出72、74耦合在一起以形成GOT 60之共同輸出66。在一實例中,如上文論述,第一SME 34及第二SME 36展現同位,在第一SME 34之輸入62可耦合至一些列互連導體68且第二SME 36之輸入64可耦合至其他列互連導體70之情況下,可產生可克服同位問題之共同輸出66。在一實例中,一GOT 60內之兩個SME 34、36可藉由設定交換元件79之任一者或二者而級聯及/或迴圈回至其等自身。SME 34、36可藉由將SME 34、36之輸出72、74耦合至另一SME 34、36之輸入62、64而級聯。SME 34、36可藉由將輸出72、74耦合至其等自身輸入62、64而迴圈回至其等自身。因此,第一SME 34之輸出72可不耦合至第一SME 34之輸入62及第二SME 36之輸入64、耦合至第一SME 34之輸入62及第二SME 36之輸入64之一者或二者。
在一實例中,一狀態機元件34、36包括並聯耦合至一偵測線82之複數個記憶體單元80,諸如通常用於動態隨機存取記憶體(DRAM)中之記憶體單元。一此記憶體單元80包括可設定為一資料狀態(諸如對應於一高值或一低值(例如,1或0)之一資料狀態)之一記憶體單元。記憶體單元80之輸出耦合至偵測線82且至記憶體單元80之輸入基於資料串流線84上之資料接收信號。在一實例中,解碼輸入區塊52處之一輸入以選擇記憶體單元80之一或多者。選定記憶體單元80將其所儲存的資料狀態作為一輸出提供至偵測線82上。例如,可將輸入區塊52處接收之資料提供至一解碼器(未展示)且解碼器可選擇資料串流線84之一或多者。在一實例中,解碼器可將一8位元ACSII字元轉換至256個資料串流線84之對應1資料串流線。
因此,一記憶體單元80在其被設定為一高值且資料串流線84上之資料選擇該記憶體單元80時將一高信號輸出至偵測線82。當資料串流線84上之資料選擇記憶體單元80且記憶體單元80被設定為一低值時,記憶體單元80將一低信號輸出至偵測線82。偵測線82上來自記憶體單元80之輸出係藉由一偵測單元86加以感測。
在一實例中,一輸入線62、64上之信號將各自偵測單元86設定為一作用中狀態或非作用中狀態。當設定為非作用中狀態時,不顧慮各自偵測線82上之信號,偵測單元86在各自輸出72、74上輸出一低信號。當設定為一作用中狀態時,偵測單元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上輸出一高信號。在其他實例中,SME 34可經設定以在多個資料串流線84之一者上具有一高信號時藉由將適當的記憶體單元80設定為一高值而輸出一高信號。
在一實例中,可藉由自一相關暫存器讀取位元而將一記憶體單元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之一輸出可包含指示一給定型樣之一匹配之單個位元、包括指示匹配及不匹配複數個型樣之複數個位元之一字組及對應於所有或某些可組態元件在給定時刻之狀態之一狀態向量。如所述,一狀態機引擎(諸如狀態機引擎14)中可包含數個FSM晶格30以執行資料分析,諸如型樣辨識(例如,話音辨識、影像辨識等等)、信號處理、成像、電腦視覺、密碼編譯及其他。
圖6圖解說明可藉由FSM晶格30實施之一有限狀態機(FSM)之一例示性模型。FSM晶格30可組態(例如,程式化)為一FSM之一實體實施方案。可將FSM表示為圖90(例如,有向圖、無向圖、偽圖),其含有一或多個根節點92。除根節點92之外,FSM亦可由透過一或多個邊緣98連接至根節點92及其他標準節點94之若干標準節點94及終端節點96構成。一節點92、94、96對應於FSM中之一狀態。邊緣98對應於狀態之間的轉變。
節點92、94、96之各者可處於作用中或非作用中狀態。當處於非作用中狀態時,節點92、94、96並未對輸入資料作出反應(例如,回應)。當處於作用中狀態時,節點92、94、96可對輸入資料作出反應。當輸入資料匹配由一上游節點92、94與該節點下游之一節點94、96之間之一邊緣98指定之準則時,上游節點92、94可藉由啟動下游節點94、96而對輸入資料作出反應。例如,當指定字元「b」之一第一節點94處於作用中且接收字元「b」作為輸入資料時,該第一節點94將啟動藉由一邊緣98連接至該第一節點94之一第二節點94。如本文中
使用,「上游」指代一或多個節點之間之一關係,其中在一或多個其他節點上游(或在迴圈或回饋組態之情況中,在其自身上游)之一第一節點指代其中第一節點可啟動該一或多個其他節點(或在迴圈之情況中,可啟動其自身)之情境。類似地,「下游」指代其中在一或多個其他節點下游(或在迴圈之情況中,在其自身下游)之一第一節點可藉由該一或多個其他節點啟動(或在迴圈之情況中,可藉由其自身啟動)之一關係。因此,術語「上游」及「下游」在本文中係用以指代一或多個節點之間之關係,但是此等術語並不排除使用迴圈或節點之間之其他非線性路徑。
在圖90中,根節點92可最初經啟動且在輸入資料匹配來自根節點92之一邊緣98時可啟動下游節點94。當輸入資料匹配來自節點94之一邊緣98時,節點94可啟動節點96。在接收輸入資料時,可以此方式啟動貫穿圖90之節點94、96。一終端節點96對應於輸入資料中一所關注序列之一匹配。因此,啟動一終端節點96指示已接收一所關注序列作為輸入資料。在FSM晶格30實施一型樣辨識功能之背景下,到達一終端節點96可指示已在輸入資料中偵測到一所關注特定型樣。
在一實例中,各根節點92、標準節點94及終端節點96可對應於FSM晶格30中之一可組態元件。各邊緣98可對應於可組態元件之間之連接。因此,轉變至另一標準節點94或一終端節點96(例如,具有連接至另一標準節點94或一終端節點96之一邊緣98)之一標準節點94對應於轉變至(例如,將一輸出提供至)另一可組態元件之一可組態元件。在一些實例中,根節點92並不具有一對應可組態元件。
如應了解,雖然節點92被描述為一根節點且節點96被描述為終端節點,但是無須存在一特定「開始」或根節點,且無須存在一特定「結束」或輸出節點。換言之,任何節點皆可為一起始點且任何節點可提供輸出。
當程式化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)。在一實例中,狀態向量包含對應於終端節點96之可組態元件之狀態。因此,輸出可包含由圖90之全部終端節點96提供之指示之一集合。可將狀態向量表示為一字組,其中由各終端節點96提供之二進制指示包括該字組之一位元。終端節點
96之此編碼可對FSM晶格30提供偵測狀態(是否已偵測到所關注序列及已偵測到何種所關注序列)之一有效指示。
如上文提及,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。應了解,除接收來自FSM晶格30A之輸出以外,第二FSM晶格30B亦可接收來自多個其他FSM晶格之輸入。同樣地,第二FSM晶格30B可接收來自其他裝置之輸入。第二FSM晶格30B可組合此等多個輸入以產生輸出。
圖8圖解說明一編譯器將原始程式碼轉換為經組態以組態一FSM晶格(諸如晶格30)以實施一FSM之一影像之一方法110之一實例。方法110包含:將原始程式碼剖析為一語法樹(方塊112);將語法樹轉換為一自動機(方塊114);最佳化該自動機(方塊116);將該自動機轉換為一接線對照表(netlist)(方塊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中描述之動作。
在一實例中,原始程式碼描述用於識別一符號群組內之符號型樣之搜尋字串。為描述搜尋字串,原始程式碼可包含複數個正規表達式。一正規表達式可為用於描述一符號搜尋型樣之一字串。正規表達式廣泛用於各種電腦領域中,諸如程式設計語言、文字編輯器、網路安全及其他領域。在一實例中,由編譯器支援之正規表達式包含用於分析未經結構化資料之準則。未經結構化資料可包含自由形式之資料且不具有應用於資料內之字組之索引。字組可包含資料內可列印及不可列印之位元組之任何組合。在一實例中,編譯器可支援多種不同原始程式碼語言以用於實施包含Perl(例如,Perl可相容正規表達式(PCRE))、PHR、Jave及.NET語言之正規表達式。
在方塊112處,編譯器20可剖析原始程式碼以形成相關連接之運算子之一配置,其中不同類型的運算子對應於藉由原始程式碼實施之不同函式(例如,藉由原始程式碼中之正規表達式實施之不同函式)。剖析原始程式碼可產生原始程式碼之一通用表示。在一實例中,通用表示包括呈稱作一語法樹之一樹形圖之形式之原始程式碼中之正規表達式之一經編碼表示。本文中描述之實例引用作為一語法樹(亦稱作一「抽象語法樹」)之配置,然而在其他實例中可使用一具體語法樹或其他配置。
如上所述,因為編譯器20可支援原始程式碼之多種語言,所以剖析將原始程式碼轉換為一非語言特定表示(例如一語法樹)而不顧慮語言。因此,藉由編譯器20進行之進一步處理(方塊114、116、118、
120)可自一共同輸入結構發揮作用,而不顧慮原始程式碼之語言。
如上所述,語法樹包含相關連接之複數個運算子。一語法樹可包含多種不同類型的運算子。即,不同運算子可對應於原始程式碼中藉由正規表達式實施之不同函式。
在方塊114處,將語法樹轉換為一自動機。一自動機包括一FSM之一軟體模型且因此可分類為確定性或非確定性。一確定性自動機在一給定時間具有單個執行路徑,而一非確定性自動機具有多個並行執行路徑。自動機包括複數個狀態。為將語法樹轉換為一自動機,語法樹中之運算子及運算子之間的關係轉換為狀態,其中該等狀態之間具有轉變。在一實例中,可部分基於FSM晶格30之硬體而轉換自動機。
在一實例中,用於自動機之輸入符號包含字母表之符號、數字0至9及其他可列印字元。在一實例中,輸入符號係由位元組值0至255(包含0及255)表示。在一實例中,一自動機可表示為一有向圖,其中該圖之節點對應於狀態集合。在一實例中,一輸入符號α上自狀態p至狀態q之一轉變(即,δ(p,α))係由自節點p至節點q之一有向連接展示。在一實例中,一自動機之一反轉產生一新自動機,其中某個符號α上之各轉變p→q在相同符號上反轉q→p。在一反轉中,開始狀態變為一最終狀態且最終狀態變為開始狀態。在一實例中,由一自動機辨識(例如,匹配)之語言係在循序地輸入至自動機中時將到達一最終狀態之全部可能字元字串組。由自動機辨識之語言中之各字串追蹤自開始狀態至一或多個最後終態之一路徑。
在方塊116處,在建構自動機之後,該自動機經最佳化以減小其複雜度及大小等等。可藉由組合冗餘狀態最佳化該自動機。
在方塊118處,將經最佳化之自動機轉換為一接線對照表。將該自動機轉換為一接線對照表將該自動機之各狀態映射至FSM晶格30上之一硬體元件(例如,SME 34、SME 36、其他元件)並判定硬體元件
之間的連接。
在方塊120處,放置接線對照表以選擇目標裝置之對應於接線對照表之各節點之一特定硬體元件(例如,SME 34、SME 36、專用元件58)。在一實例中,放置基於FSM晶格30之一般輸入及輸出約束來選擇各特定硬體元件。
在方塊122處,路由所放置的接線對照表以判定用於可組態交換元件(例如,區塊間交換元件40、區塊內交換元件42及列內交換元件44)之設定,以將選定硬體元件耦合在一起以達成藉由接線對照表描述之連接。在一實例中,藉由判定FSM晶格30之將用以連接選定硬體元件之特定導體及用於可組態交換元件之設定之特定導體來判定用於可組態交換元件之設定。與方塊120處之放置相比,路由可計及硬體元件之間的連接之更多特定限制。因此,路由可調整如藉由全域放置判定之一些硬體元件之位置以鑑於FSM晶格30上之導體之實際限制而作出適當連接。
一旦放置及路由接線對照表,便可將該經放置及路由之接線對照表轉換為用於組態一FSM晶格30之複數個位元。該複數個位元在本文中稱為一影像(例如,二進制影像)。
在方塊124處,藉由編譯器20發佈一影像。影像包括用於組態FSM晶格30之特定硬體元件之複數個位元。可將位元載入至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可能夠以大於或等於1GByte/sec之一速率交換(例如,提供及接收)資料。此一資料交換
速率可大於狀態機引擎14分析資料之一速率。如應了解,取決於待分析之資料源,匯流排介面130可為用於將往返於一資料源之資料交換至狀態機引擎14之任何合適的匯流排介面,諸如一NAND快閃介面、周邊組件互連(PCI)介面、十億位元媒體獨立介面(GMMI)等等。如先前描述,狀態機引擎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、一指令緩衝器133、程序緩衝器134及一排內(IR)匯流排及程序緩衝器介面136。資料緩衝器132經組態以接收並暫時儲存待分析之資料。在一實施例中,存在兩個資料緩衝器132(資料緩衝器A及資料緩衝器B)。可將資料儲存在該兩個資料緩衝器132之一者中,而自另一資料緩衝器132清空資料以供FSM晶格30分析。匯流排介面130可經組態以將待分析之資料提供至資料緩衝器132直至資料緩衝器132已滿。在資料緩衝器132已滿之後,匯流排介面130可經組態以自由地用於其他目的(例如,提供來自一資料串流之其他資料直至資料緩衝器132可用於接收待分析之額外資料)。在經圖解說明之實施例中,資料緩衝器132可各自為32千位元組。指令緩衝器133經組態以經由匯流排介面130自處理器12接收指令,諸如對應於待分析之資料之指令及對應於組態狀態機引擎14之指令。IR匯流排及程序緩衝器介面136可促進將資料提供至程序緩衝器134。IR匯流排及程序緩衝器介面136可用以確保FSM晶格30按順序處理資料。IR匯流排及程
序緩衝器介面136可協調資料、時序資料、包裝指令等等之交換,使得正確地接收並分析資料。一般言之,IR匯流排及程序緩衝器介面136容許使用一裝置排中之多個裝置。該排裝置中之多個裝置共用資料使得所有該多個裝置依正確的順序接收全部共用資料。例如,多個實體裝置(例如,狀態機引擎14、晶片、分離裝置)可配置成一排且可經由IR匯流排及程序緩衝器介面136彼此提供資料。為本申請案之目的,術語「排」指代連接至相同晶片選擇之狀態機引擎14之一集合。在經圖解說明之實施例中,IR匯流排及程序緩衝器介面136可包含一8位元資料匯流排。
在經圖解說明之實施例中,狀態機引擎14亦包含一解壓縮器138及一壓縮器140以幫助提供資料至狀態機引擎14且自狀態機引擎14提供資料。如可了解,壓縮器140及解壓縮器138可使用相同的壓縮演算法以簡化軟體及/或硬體設計;然而,壓縮器140及解壓縮器138亦可使用不同的演算法。藉由壓縮資料,可最小化匯流排介面130(例如,DDR3匯流排介面)利用時間。在本實施例中,壓縮器140可用以壓縮狀態向量資料、組態資料(例如,程式化資料)及由FSM晶格30分析之後獲得之匹配結果資料。在一實施例中,可停用(例如,關閉)壓縮器140及解壓縮器138使得流動至壓縮器140及解壓縮器138及/或自壓縮器140及解壓縮器138流動之資料並未被修改(例如,未經壓縮亦未經解壓縮)。
壓縮器140及解壓縮器138亦可經組態以處置多個資料集合且各資料集合可具有變化長度。藉由「填補」壓縮資料且包含關於各壓縮區域何時結束之一指示符,壓縮器140可透過狀態機引擎14改良總體處理速度。
狀態機引擎14包含一狀態向量系統141,該狀態向量系統141具有一狀態向量快取記憶體142、一狀態向量記憶體緩衝器144、一狀態
向量中間輸入緩衝器146及一狀態向量中間輸出緩衝器148。狀態向量系統141可用以儲存FSM晶格30之多個狀態向量,將狀態向量移動至狀態機引擎14上或自狀態機引擎14移動狀態向量且將一狀態向量提供至FSM晶格30以使FSM晶格30還原至對應於所提供的狀態向量之一狀態。例如,各狀態向量可暫時儲存在狀態向量快取記憶體142中。即,可儲存各SME 34、36之狀態,使得該狀態可經還原且隨後用於進一步分析,同時釋放SME 34、36以分析一新資料集合(例如,搜尋項)。例如,如同一典型快取區,狀態向量快取記憶體142容許儲存狀態向量以供(此處)FSM晶格30快速擷取及使用。在經圖解說明之實施例中,狀態向量快取記憶體142可儲存至多512個狀態向量。各狀態向量包括FSM晶格30之SME 34、36之狀態(例如,啟動或未經啟動)及計數器58之動態(例如,當前)計數。
如應了解,可在一排中之不同狀態機引擎14(例如,晶片)之間交換狀態向量資料。可在不同狀態機引擎14之間交換狀態向量資料以用於以下各種目的,諸如:同步化FSM晶格30之SME 34、36之狀態及計數器58之動態計數;跨多個狀態機引擎14執行相同功能;跨多個狀態機引擎14重現結果;跨多個狀態機引擎14級聯結果;儲存用以分析透過多個狀態機引擎14級聯之資料之SME 34、36之狀態之歷史及計數器58之動態計數等等。此外,應注意,在一狀態機引擎14內,狀態向量資料可用以快速地還原狀態向量。例如,狀態向量資料可用以:將SME 34、36之狀態及計數器58之動態計數還原至一初始化狀態(例如,搜尋一新搜尋項);將SME 34、36之狀態及計數器58之動態計數還原至先前狀態(例如,搜尋一先前搜尋之搜尋項);及將SME 34、36之狀態及計數器58之動態計數改變為經組態用於一級聯組態(例如,以一級聯搜尋來搜尋一搜尋項)。在某些實施例中,可將狀態向量資料提供至匯流排介面130使得可將狀態向量資料提供至處理器12(例
如,用於分析狀態向量資料、重組態狀態向量資料以適用修改、重組態狀態向量資料以改良效率等等)。
例如,在某些實施例中,狀態機引擎14可將經快取之狀態向量資料(例如,由狀態向量系統141儲存之資料)自FSM晶格30提供至一外部裝置。外部裝置可接收狀態向量資料,修改狀態向量資料並將經修改之狀態向量資料提供至狀態機引擎14以使FSM晶格30還原(例如,重設、初始化)。因此,外部裝置可修改狀態向量資料使得狀態機引擎14可按需要略過(例如,跳過)狀態。
狀態向量快取記憶體142可自任何合適的裝置接收狀態向量資料。例如,狀態向量快取記憶體142可自FSM晶格30、另一FSM晶格30(例如,經由IR匯流排及程序緩衝器介面136)、解壓縮器138等等接收一狀態向量。在經圖解說明之實施例中,狀態向量快取記憶體142可經由狀態向量記憶體緩衝器144自其他裝置接收狀態向量。此外,狀態向量快取記憶體142可將狀態向量資料提供至任何合適的裝置。例如,狀態向量快取記憶體142可將狀態向量資料提供至狀態向量記憶體緩衝器144、狀態向量中間輸入緩衝器146及狀態向量中間輸出緩衝器148。
諸如狀態向量記憶體緩衝器144、狀態向量中間輸入緩衝器146及狀態向量中間輸出緩衝器148之額外緩衝器可結合狀態向量快取記憶體142使用以適應狀態向量之快速擷取及儲存,同時透過狀態機引擎14處理具有交錯封包之分離資料集合。在經圖解說明之實施例中,狀態向量記憶體緩衝器144、狀態向量中間輸入緩衝器146及狀態向量中間輸出緩衝器148之各者可經組態以暫時儲存一狀態向量。狀態向量記憶體緩衝器144可用以自任何合適的裝置接收狀態向量資料並將狀態向量資料提供至任何合適的裝置。例如,狀態向量記憶體緩衝器144可用以自FSM晶格30、另一FSM晶格30(例如,經由IR匯流排及程
序緩衝器介面136)、解壓縮器138及狀態向量快取記憶體142接收一狀態向量。作為另一實例,狀態向量記憶體緩衝器144可用以將狀態向量資料提供至(例如,其他FSM晶格30之)IR匯流排及程序緩衝器介面136、壓縮器140及狀態向量快取記憶體142。
同樣地,狀態向量中間輸入緩衝器146可用以自任何合適的裝置接收狀態向量資料並將狀態向量資料提供至任何合適的裝置。例如,狀態向量中間輸入緩衝器146可用以自一FSM晶格30(例如,經由IR匯流排及程序緩衝器介面136)、解壓縮器138及狀態向量快取記憶體142接收一狀態向量。作為另一實例,狀態向量中間輸入緩衝器146可用以將一狀態向量提供至FSM晶格30。此外,狀態向量中間輸出緩衝器148可用以自任何合適的裝置接收一狀態向量並將一狀態向量提供至任何合適的裝置。例如,狀態向量中間輸出緩衝器148可用以自FSM晶格30及狀態向量快取記憶體142接收一狀態向量。作為另一實例,狀態向量中間輸出緩衝器148可用以將一狀態向量提供至FSM晶格30(例如,經由IR匯流排及程序緩衝器介面136)及壓縮器140。
一旦由FSM晶格30產生一所關注結果,便可將匹配結果儲存在一匹配結果記憶體150中。即,可將指示一匹配(例如,偵測到一所關注型樣)之一「匹配向量」儲存在匹配結果記憶體150中。例如,接著可將匹配結果發送至一匹配緩衝器152以經由匯流排介面130傳輸至處理器12。如先前描述,可壓縮匹配結果。
亦可在狀態機引擎14中提供額外暫存器及緩衝器。例如,狀態機引擎14可包含控制及狀態暫存器154。此外,可提供還原及程式緩衝器156以最初用於組態FSM晶格30之SME 34、36或在分析期間還原FSM晶格30中之SME 34、36之狀態。類似地,亦可提供保存及修復映射緩衝器158以儲存保存及修復映射以供設定及使用。
圖10圖解說明配置成一裝置排之一例示性多個實體狀態機引擎
14。如先前描述,在匯流排介面130處接收待分析之資料。匯流排介面130將資料引導至包含各狀態機引擎14(例如,F0、F1、F2、F3、F4、F5、F6、F7)之資料緩衝器132及指令緩衝器133之一資料緩衝器系統159。資料緩衝器132經組態以接收並暫時儲存待分析之資料。在經圖解說明之實施例中,各狀態機引擎14中存在兩個資料緩衝器132(例如,資料緩衝器A及資料緩衝器B)。可將資料儲存在該兩個資料緩衝器132之一者中,同時自另一資料緩衝器132清空資料以供一FSM晶格30分析。如先前論述,指令緩衝器133經組態以經由匯流排介面130自處理器12接收指令,諸如對應於待分析之資料之指令。待分析之資料及對應於資料之指令係經由IR匯流排及程序緩衝器介面136自資料緩衝器系統159提供至FSM晶格30之一或多者(例如,Fa、Fb、Fc、Fd、Fe、Ff、Fg、Fh)。在本實施例中,將實體FSM晶格30配置成邏輯群組。具體言之,將Fg及Fh配置成一邏輯群組A 162,將Fe及Ff配置成一邏輯群組B 164,將Fc及Fd配置成一邏輯群組C 166且將Fa及Fb配置成一邏輯群組D 168。此外,如應了解,可經由IR匯流排及程序緩衝器介面136在FSM晶格30與另一裝置(例如,FSM晶格30)之間交換資料。例如,IR匯流排及程序緩衝器介面136可用以在FSM晶格30之任一者之間交換資料。雖然圖解說明8個狀態機引擎14,但是該裝置排可具有任何合適數目個狀態機引擎14(例如,1個、2個、4個、8個等)。如應了解,IR匯流排及程序緩衝器介面136可包含用於(例如,自資料緩衝器系統159及FSM晶格30)接收資料之一輸入。同樣地,IR匯流排及程序緩衝器介面136可包含用於發送資料(例如,至FSM晶格30)之一輸出。
匯流排介面130可以經定製以有效率地使用待分析之資料之一格式接收資料。具體言之,圖11至圖14圖解說明如何可藉由處理器12將資料指派(例如,分組)為經由匯流排介面130提供至狀態機引擎14之
資料區塊之實例。此外,圖15至圖17圖解說明如何可經由狀態機引擎14之資料緩衝器系統159接收、儲存及提供資料區塊之實例。圖18圖解說明如何可藉由邏輯群組162、164、166及168接收資料區塊。
現在參考圖11,圖解說明將藉由處理器12指派為資料區塊之資料分段(例如,資料集合、搜尋項)提供至狀態機引擎14之一實例。在本實施例中,將多個資料分段指派為單個資料區塊。各資料區塊經指派以藉由(例如,一排狀態機引擎14中之一或多個狀態機引擎14上之)FSM晶格30之單個邏輯群組分析。例如,藉由處理器12將一資料串流170(例如,待藉由處理器12發送至狀態機引擎14之大量資料)指派為:對應於意欲用於邏輯群組A 162之資料之一第一資料區塊172、對應於意欲用於邏輯群組B 164之資料之一第二資料區塊174、對應於意欲用於邏輯群組C 166之資料之一第三資料區塊176及對應於意欲用於邏輯群組D 168之資料之一第四資料區塊178。具體言之,藉由處理器12將資料串流170分為資料分段180、182、184、186、188、190、192、194、196、198及200。如應了解,資料分段180、182、184、186、188、190、192、194、196、198及200之各者可表示待由一FSM晶格30分析之一資料集合。如應了解,為任何合適理由,處理器12可將資料分段180、182、184、186、188、190、192、194、196、198及200指派至資料區塊172、174、176及178。例如,處理器12可基於各資料集合之一長度及/或分析資料集合之一順序將資料分段指派至特定資料區塊,以有效率地處理資料集合。
可使用任何合適的方式將資料分段180、182、184、186、188、190、192、194、196、198及200指派為資料區塊172、174、176及178。例如,可將資料分段180、182、184、186、188、190、192、194、196、198及200指派為資料區塊172、174、176及178,使得最小化資料區塊172、174、176及178中位元組之數目。作為另一實例,可
將資料分段180、182、184、186、188、190、192、194、196、198及200指派為資料區塊172、174、176及178使得將特定資料分段集合在一起。
如圖解說明,第一資料區塊172包含資料分段A 180、資料分段F 190及資料分段I 196。第二資料區塊174包含資料分段B 182及資料分段K 200。此外,第三資料區塊176包含資料分段C 184、資料分段E 188及資料分段G 192。第四資料區塊178包含資料分段D 186、資料分段H 194及資料分段J 198。
如應了解,為有效率地處理資料區塊,資料區塊可全部具有相等資料量。此外,資料區塊內之資料分段可依資料區塊內之預定間隔(例如,位元組、字組)開始及/或停止,使得處理裝置可判定資料分段何時開始及停止。然而,資料分段不一定具有正確資料量以依預定間隔開始及/或停止。因此,可在特定資料分段之間***資料填補使得在資料區塊內資料依預定間隔開始及/或停止。此外,可對一資料區塊之末端添加資料填補使得所有資料區塊具有相等資料量。
現在參考圖12,圖解說明***於圖11之資料區塊172、174、176及178之資料分段之間之資料填補之一實例。例如,在第一資料區塊172中,資料填補202可***在資料分段A 180與資料分段F 190之間。進一步言之,資料填補204可***在資料分段F 190與資料分段I 196之間。作為另一實例,在第二資料區塊174中,資料填補206可***在資料分段B 182與資料分段K 200之間。在第三資料區塊176中,資料填補208可***在資料分段C 184與資料分段E 188之間。同樣地,資料填補210可***在資料分段E 188與資料分段G 192之間。作為另一實例,在第四資料區塊178中,資料填補212可***在資料分段D 186與資料分段H 194之間。此外,資料填補214可***在資料分段H 194與資料分段J 198之間。
資料填補202、204、206、208、210、212及214可包含未經分析之任何合適數目個位元組之資料(例如,無效資料、垃圾資料、填隙資料、廢棄項目資料等等)。在一實施例中,被用作資料填補之位元組數目可為在加至先前資料分段之位元組之數目時到達全字組邊界之一位元組數目(即,先前資料分段之位元組數目加上被用作資料填補之位元組數目可被全字組邊界均等地除盡)。例如,資料填補202之位元組數目可為使得資料填補202與資料分段A 180(即,先前資料分段)之組合位元組數目可被全字組邊界均等地除盡(例如,無餘數)。在經圖解說明之實施例中,全字組邊界可為8個位元組。在其他實施例中,全字組邊界可為任何數目個位元組或位元。因此,在經圖解說明之實施例中,若資料分段A 180包含63個資料位元組,則資料填補202將包含1個資料位元組(例如,使資料分段A 180與資料填補202之間之組合資料位元組為64個,其中64可被8個位元組均等地除盡)。作為另一實例,若資料分段A 180包含60個資料位元組(即,不可被8均等地除盡),則資料填補202將包含4個資料位元組。作為進一步實例,若資料分段A 180包含64個資料位元組,則資料填補202將包含0個資料位元組,或換言之資料分段A 180與資料分段F 190之間將無需資料填補202。如應了解,各資料填補202、204、206、208、210、212及214可以一類似方式操作。
現在參考圖13,圖解說明***在圖12之資料區塊172、174、176及178之資料分段之後的資料之一實例。具體言之,可視需要在各資料區塊172、174、176及178之末端處***資料填補以使各資料區塊172、174、176及178中之位元組數目相等。此外,可使用各資料區塊172、174、176及178之末端處之資料填補,使得各資料區塊172、174、176及178到達如先前描述之一全字組邊界。在經圖解說明之實施例中,在資料分段I 196之後***資料填補216,在資料分段G 192之
後***資料填補218且在資料分段J 198之後***資料填補220。因此,資料區塊172、174、176及178之各者包含相等數目個位元組,且資料區塊172、174、176及178之各者到達一全字組邊界。
FSM晶格30可能難以區分資料填補與有效資料。因此,指令可伴隨資料區塊172、174、176及178使得在分析有效資料期間FSM晶格30可識別並忽略資料填補。此等指令可藉由處理器12經由匯流排介面130發送至狀態機引擎14,且可藉由狀態機引擎14之指令緩衝器133接收、儲存及提供。為產生指令,處理器12可在邏輯上將資料串流170分為區域222、224、226、228、230、232、234及236。可形成區域222、224、226、228、230、232、234及236之結束邊界,使得各區域在任何資料填補結束時結束。例如,第一區域222在資料填補208結束時結束。作為另一實例,第五區域230在資料填補204結束時結束。
伴隨資料區塊172、174、176及178之指令可包含各區域222、224、226、228、230、232、234及236之位元組數目及各區域內各資料區塊172、174、176及178之有效位元組數目(例如,排除位元組填補之位元組數目)。例如,指令可包含:對應於第一區域222之位元組數目238、對應於第一區域222內第一資料區塊172之有效位元組之位元組數目240、對應於第一區域222內第二資料區塊174之有效位元組之位元組數目242、對應於第一區域222內第三資料區塊176之有效位元組之位元組數目244及對應於第一區域222內第四資料區塊178之有效位元組之位元組數目246。
同樣地,指令可包含:對應於第二區域224之位元組數目248、250、252、254及256;對應於第三區域226之位元組數目258、260、262、264及266;對應於第四區域228之位元組數目268、270、272、274及276;對應於第五區域230之位元組數目278、280、282、284及286;對應於第六區域232之位元組數目288、290、292、294及296;
對應於第七區域234之位元組數目298、302、304及306;及對應於第八區域236之位元組數目308、312、314及316。因此,使用指令,FSM晶格30可識別***資料分段之資料填補。雖然本文中提呈一特定類型的指令,但是應注意包含於資料區塊172、174、176及178之群組內之指令可為容許FSM晶格30區分有效資料與資料填補(即,無效資料)之指令之任何合適的群組。
現在參考圖14,圖解說明藉由處理器12組織以傳輸至狀態機引擎14之資料緩衝器系統159之圖13之資料區塊172、174、176及178之一實例。資料區塊172、174、176及178之各者經配置具有具備等效於全字組長度之位元組數目318之多列資料。在經圖解說明之實施例中,全字組長度係8個位元組,狀態機引擎14之各者(例如,F0、F1、F2、F3、F4、F5、F6及F7)表示一位元組。來自資料分段之各者之第一位元組開始於各資料區塊172、174、176及178之右側且朝各資料區塊之左側增加,使得資料分段A 180之第一位元組係在行F0中且資料分段A 180之第八個位元組係在行F7中。如應了解,行F0表示最初將儲存在F0狀態機引擎14之資料緩衝器132中之資料,行F1表示最初將儲存在F1狀態機引擎14之資料緩衝器132中之資料,以此類推。此外,將資料分段自上而下放置在列中。如圖解說明,一資料分段及資料填補之各組合結束於行F7中(即,其等各自延伸達全字組長度)。此外,各資料區塊172、174、176及178大小相等。如應了解,在操作期間,可將資料區塊172、174、176及178自處理器12循序提供至狀態機引擎14。
來自資料區塊172、174、176及178之資料經配置使得意欲用於邏輯群組162、164、166及168之資料混合在資料緩衝器系統159中,使得意欲用於各邏輯群組162、164、166及168之資料之一部分混合在各狀態機引擎14(例如,F0、F1、F2、F3、F4、F5、F6及F7)內。可以
此方式接收並儲存資料以使資料能夠經由匯流排介面130快速地提供至資料緩衝器系統159。在某些實施例中,資料緩衝器系統159之資料緩衝器132可經組態以(例如,依預定間隔)鎖存來自匯流排介面130之資料。在其他實施例中,資料緩衝器系統159之資料緩衝器132可基於資料緩衝器132與匯流排介面130之間的連接而接收資料之一有限部分。如下文詳細地解釋,當經由IR匯流排及程序緩衝器介面136自資料緩衝器系統159提供資料至程序緩衝器134時,清理(sort out)經混合資料。
現在參考圖15,圖解說明正藉由狀態機引擎14接收之資料區塊172、174、176及178之一實例。具體言之,資料緩衝器系統159接收第一資料區塊172,接著接收第二資料區塊174、第三資料區塊176及第四資料區塊178。如上文論述,資料區塊172、174、176及178之各者可藉由處理器12指派以藉由一特定邏輯群組162、164、166及168分析。當資料緩衝器系統159接收資料區塊172、174、176及178時,資料緩衝器系統159以系統方式將來自資料區塊172、174、176及178之資料儲存至緩衝器中,使得資料將自資料緩衝器系統159正確地提供至FSM晶格162、164、166及168。
因此,圖16圖解說明如何將圖15之資料區塊172、174、176及178儲存在狀態機引擎14之資料緩衝器系統159中之一實例。特定言之,將來自第一資料區塊172之資料儲存在一緩衝器之第一列及其後每隔第四列(例如,列5、9、13、17等等)中。類似地,將來自第二資料區塊174之資料儲存在緩衝器之第二列及其後每隔第四列(例如,列6、10、14、18等等)中。進一步言之,將來自第三資料區塊176之資料儲存在緩衝器之第三列及其後每隔第四列(例如,列7、11、15、19等等)中。此外,來自第四資料區塊178之資料係儲存在緩衝器之第四列及其後每隔第四列(例如,列8、12、16、20等等)中。應注意,一
些狀態機引擎14可包含少於或多於四個FSM晶格162、164、166及168。因此,在其他實施例中,資料緩衝器系統159可經組態以依另一方式儲存來自資料區塊之資料。例如,在具有8個FSM晶格之一狀態機引擎14中,各FSM晶格之一資料區塊可使資料儲存在一緩衝器之一列及其後每隔第8列中。
現在參考圖17,圖解說明自資料緩衝器系統159提供至多個FSM晶格之資料之一實例。具體言之,資料係以資料叢發自資料緩衝器系統159中提供至IR匯流排及程序緩衝器介面136。在一實施例中(例如,其中全字組中之位元組數目318係8個位元組),使用8個資料叢發以完成一IR匯流排循環。具體言之,在一第一資料叢發320中,將來自行F0之4個位元組(例如,來自各資料區塊172、174、176及178之一位元組)提供至IR匯流排及程序緩衝器介面136。類似地,在一第二資料叢發322中,將來自行F1之4個位元組(例如,來自各資料區塊172、174、176及178之一位元組)提供至IR匯流排及程序緩衝器介面136。在一第三資料叢發324中,將來自行F2之4個位元組(例如,來自各資料區塊172、174、176及178之一位元組)提供至IR匯流排及程序緩衝器介面136。進一步言之,在一第四資料叢發326中,將來自行F3之4個位元組(例如,來自各資料區塊172、174、176及178之一位元組)提供至IR匯流排及程序緩衝器介面136。在一第五資料叢發328中,將來自行F4之4個位元組(例如,來自各資料區塊172、174、176及178之一位元組)提供至IR匯流排及程序緩衝器介面136。類似地,在一第六資料叢發330中,將來自行F5之4個位元組(例如,來自各資料區塊172、174、176及178之一位元組)提供至IR匯流排及程序緩衝器介面136。在一第七資料叢發332中,將來自行F6之4個位元組(例如,來自各資料區塊172、174、176及178之一位元組)提供至IR匯流排及程序緩衝器介面136。進一步言之,在一第八資料叢發334中,將來自行F7之4
個位元組(例如,來自各資料區塊172、174、176及178之一位元組)提供至IR匯流排及程序緩衝器介面136。因此,資料係使用資料叢發以系統方式自資料緩衝器系統159提供至IR匯流排及程序緩衝器介面136。
現在參考圖18,圖解說明資料叢發320、322、324、326、328、330、332及334至多個邏輯群組162、164、166及168中之資料提供之一實例。具體言之,在經圖解說明之實施例中,邏輯群組A 162(例如,Fg、Fh)之程序緩衝器134可經組態以鎖存提供至IR匯流排及程序緩衝器介面136上之各資料叢發320、322、324、326、328、330、332及334之第一位元組。類似地,邏輯群組B 164(例如,Fe、Ff)之程序緩衝器134可經組態以鎖存提供至IR匯流排及程序緩衝器介面136上之各資料叢發320、322、324、326、328、330、332及334之第二位元組。此外,邏輯群組C 166(例如,Fc、Fd)之程序緩衝器134可經組態以鎖存提供至IR匯流排及程序緩衝器介面136上之各資料叢發320、322、324、326、328、330、332及334之第三位元組。邏輯群組D 168(例如,Fa、Fb)之程序緩衝器134可經組態以鎖存提供至IR匯流排及程序緩衝器介面136上之各資料叢發320、322、324、326、328、330、332及334之第四位元組。
如應了解,邏輯群組162、164、166及168之程序緩衝器134可經組態以鎖存已提供至IR匯流排及程序緩衝器介面136上之任何位元組或位元組之組合。進一步言之,程序緩衝器A及程序緩衝器B可經組態以鎖存相同或不同位元組。在一實施例中,狀態機引擎14可包含少於或多於兩個程序緩衝器134。在此一實施例中,各程序緩衝器134可經組態以鎖存提供(叢發)至IR匯流排及程序緩衝器介面136上之一特定位元組。邏輯群組162、164、166及168之程序緩衝器134亦可經組態以自資料緩衝器系統159接收伴隨資料叢發之指令。藉由使用指
令,邏輯群組162、164、166及168之程序緩衝器134可忽略對應於一資料區域中之位元組總數與該資料區域中之有效位元組總數之間之一差之資料。
雖然本發明可具有各種修改及替代形式,但是已在圖式中藉由實例展示且在本文中詳細描述特定實施例。然而,應瞭解,本發明並不旨在限於所揭示之特定形式。實情係,本發明涵蓋落於如藉由下列隨附申請專利範圍定義之本發明之精神及範疇內之所有修改、等效物及替代。
14‧‧‧狀態機引擎
30‧‧‧有限狀態機(FSM)晶格
130‧‧‧第三代雙倍資料速率(DDR3)匯流排介面
132‧‧‧資料緩衝器
133‧‧‧指令緩衝器
134‧‧‧程序緩衝器
136‧‧‧排內(IR)匯流排及程序緩衝器介面
138‧‧‧解壓縮器
140‧‧‧壓縮器
141‧‧‧狀態向量系統
142‧‧‧狀態向量快取記憶體
144‧‧‧狀態向量記憶體緩衝器
146‧‧‧狀態向量中間輸入緩衝器
148‧‧‧狀態向量中間輸出緩衝器
150‧‧‧匹配結果記憶體
152‧‧‧匹配緩衝器
154‧‧‧控制及狀態暫存器
156‧‧‧還原及程式緩衝器
158‧‧‧保存及修復映射緩衝器
Claims (30)
- 一種資料分析系統,其包括:一資料緩衝器,其經組態以接收待分析之資料;一狀態機晶格,其包括複數個可組態元件且各可組態元件包括經組態以分析該資料之至少一部分並輸出該分析之一結果之複數個記憶體單元;及一緩衝器介面,其經組態以自該資料緩衝器接收該資料並將該資料提供至該狀態機晶格,其中該資料緩衝器經組態以經由資料叢發將資料提供至該緩衝器介面,且各資料叢發包括用於複數個狀態機晶格之各者之一預定部分。
- 如請求項1之系統,其中該資料緩衝器包括一第一資料緩衝器及一第二資料緩衝器,其中該第一資料緩衝器及該第二資料緩衝器之各者經組態以接收資料並將資料提供至該緩衝器介面。
- 如請求項2之系統,其中該第一資料緩衝器經組態以接收資料,而該第二資料緩衝器將資料提供至該緩衝器介面,且其中該第二資料緩衝器經組態以接收資料,而該第一資料緩衝器將資料提供至該緩衝器介面。
- 如請求項1之系統,其中該資料緩衝器經組態以接收該資料作為資料區塊且各資料區塊對應於複數個狀態機晶格之一者。
- 如請求項4之系統,其中該資料緩衝器經組態以接收一個、兩個、四個或八個資料區塊。
- 如請求項1之系統,其中該資料緩衝器經組態以接收該資料作為資料區塊之群組,且資料區塊之各群組包括用於該複數個狀態機晶格之各者之一資料區塊。
- 如請求項6之系統,其中該資料緩衝器經組態以依一交替型樣儲 存資料區塊之一群組之各資料區塊之一預定部分直至儲存資料區塊之該群組之各資料區塊,其中該交替型樣在各資料區塊之間交替。
- 如請求項7之系統,其中各資料區塊之該預定部分包括八個、十六個、三十二個或六十四個資料位元組。
- 如請求項1之系統,其中資料之該預定部分包括一個、兩個、四個或八個資料位元組。
- 如請求項1之系統,其包括耦合至該複數個狀態機晶格之各者之一或多個程序緩衝器,其中各程序緩衝器經組態以自對應於其各自狀態機晶格之各資料叢發判定資料之該預定部分。
- 如請求項1之系統,其中該資料緩衝器包括經組態以接收對應於待分析之該資料之指令之一指令緩衝器。
- 一種資料分析系統,其包括:複數個狀態機引擎,各狀態機引擎包括具有複數個資料分析元件之一狀態機晶格,各資料分析元件包括經組態以分析資料之至少一部分並輸出該分析之一結果之複數個記憶體單元;一緩衝器介面,其耦合至該複數個狀態機引擎之各者且經組態以接收該資料並將該資料提供至該複數個狀態機引擎;及經組態以接收待分析之資料並將該資料提供至該緩衝器介面之一資料緩衝器,其中該資料緩衝器經組態以接收該資料作為資料區塊之群組,資料區塊之各群組包括用於該複數個狀態機引擎之各者之一資料區塊,其中該等資料區塊之至少一者包括組合位元組填補之有效資料。
- 如請求項12之系統,其中該資料緩衝器包括一指令緩衝器,且其中該指令緩衝器經組態以接收識別包含位元組填補之資料區塊之部分之指令。
- 如請求項12之系統,其中該資料緩衝器經組態以接收複數個指令群組,且各指令群組包括與資料區塊之一群組有關之資料。
- 如請求項14之系統,其中資料區塊之各群組包括複數個區域且各指令群組包括與該複數個區域之各者有關之資料。
- 如請求項15之系統,其中與該複數個區域之各者有關之該資料包括該各自區域中之一位元組總數及該各自區域中之該等資料區塊之各者之一有效資料位元組總數。
- 如請求項16之系統,其中該複數個狀態機引擎之各者經組態以忽略對應於該位元組總數與該有效位元組總數之間之一差之資料。
- 如請求項12之系統,其中該複數個狀態機引擎包括一個、兩個、四個或八個狀態機引擎。
- 一種用於在一資料分析系統中之裝置之間提供資料之方法,其包括:在一緩衝器介面之一輸入處自一第一裝置接收資料;及在該緩衝器介面之一輸出處將該資料提供至一第二裝置;其中該緩衝器介面實現一資料緩衝器系統與複數個狀態機引擎之間之通信,其中該第一裝置包括該資料緩衝器且該第二裝置包括該複數個狀態機引擎,其中該第一裝置包括該複數個狀態機引擎之一第一狀態機引擎且該第二裝置包括該複數個狀態機引擎之一第二狀態機引擎。
- 一種用於準備待發送至一資料分析系統之資料之方法,其包括:將資料串流之資料分段指派至複數個資料區塊,其中各資料分段包括待分析之一資料集合且各資料區塊經組態以被提供至複數個狀態機引擎之一對應狀態機引擎; 在該等資料分段之至少一部分之間提供資料填補;在該複數個資料區塊之該等資料分段之末端處提供資料填補以產生長度相同之各資料區塊;及將該複數個資料區塊提供至該資料分析系統。
- 如請求項20之方法,其中提供在該等資料分段之至少一部分之間之該資料填補包括至少一位元組。
- 如請求項20之方法,其中在該等資料分段之至少該部分之間提供資料填補包括:在一先前資料分段之一位元組數目不可被一預定位元組數目均等地除盡時在資料分段之間提供資料填補。
- 如請求項22之方法,其中該預定位元組數目包括八個位元組。
- 如請求項20之方法,其中在一先前資料分段之後經提供作為資料填補之一位元組數目組合該先前資料分段之一位元組數目導致可被一預定位元組數目均等地除盡之一組合位元組數目。
- 如請求項20之方法,其中各資料區塊包括可被一預定位元組數目均等地除盡之一位元組數目。
- 如請求項20之方法,其包括將一指令集合提供給該複數個資料區塊,該指令集合經組態以區分有效資料與資料填補。
- 一種狀態機引擎,其包括:一匯流排介面,其經組態以接收待分析之資料;及一資料緩衝器系統,其經組態以自該匯流排介面接收待分析之該資料並將待分析之該資料提供至一狀態機晶格;其中該匯流排介面經組態以將待分析之該資料提供至該資料緩衝器系統直至該資料緩衝器系統已滿且在該資料緩衝器系統已滿之後,該匯流排介面經組態以用於其他目的。
- 如請求項27之狀態機引擎,其中該匯流排介面包括一第三代雙倍資料速率(DDR3)匯流排介面。
- 如請求項27之狀態機引擎,其中該匯流排介面包括一NAND快閃介面、一周邊組件互連(PCI)介面或一個十億位元媒體獨立介面(GMMI)。
- 如請求項27之狀態機引擎,其中該匯流排介面經組態以依大於該狀態機引擎分析資料之一速率之一資料速率接收該資料。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/552,479 US9235798B2 (en) | 2012-07-18 | 2012-07-18 | Methods and systems for handling data received by a state machine engine |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201419146A TW201419146A (zh) | 2014-05-16 |
TWI502502B true TWI502502B (zh) | 2015-10-01 |
Family
ID=49947557
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102125814A TWI502502B (zh) | 2012-07-18 | 2013-07-18 | 用於處理狀態機引擎所接收之資料之方法及系統 |
Country Status (7)
Country | Link |
---|---|
US (6) | US9235798B2 (zh) |
EP (1) | EP2875433B1 (zh) |
JP (1) | JP6017034B2 (zh) |
KR (1) | KR101908768B1 (zh) |
CN (1) | CN104471552B (zh) |
TW (1) | TWI502502B (zh) |
WO (1) | WO2014014709A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI812623B (zh) * | 2017-06-09 | 2023-08-21 | 安地卡及巴布達商區塊鏈控股有限公司 | 節點裝置、電腦實施方法及相關非暫時性處理器可讀媒體 |
Families Citing this family (27)
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 |
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 |
US9524248B2 (en) | 2012-07-18 | 2016-12-20 | Micron Technology, Inc. | Memory management for a hierarchical memory system |
US9389841B2 (en) | 2012-07-18 | 2016-07-12 | Micron Technology, Inc. | Methods and systems for using state vector data in a state machine engine |
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 |
US9534343B2 (en) | 2012-10-18 | 2017-01-03 | The Chemours Company Fc, Llc | Partially fluorinated copolymer emulsions containing fatty acids and esters |
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 |
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 |
WO2016109571A1 (en) | 2014-12-30 | 2016-07-07 | Micron Technology, Inc | Devices for time division multiplexing of state machine engine signals |
US10691964B2 (en) * | 2015-10-06 | 2020-06-23 | Micron Technology, Inc. | Methods and systems for event reporting |
US10846103B2 (en) | 2015-10-06 | 2020-11-24 | Micron Technology, Inc. | Methods and systems for representing processing resources |
US10977309B2 (en) | 2015-10-06 | 2021-04-13 | Micron Technology, Inc. | Methods and systems for creating networks |
US20170193351A1 (en) * | 2015-12-30 | 2017-07-06 | Micron Technology, Inc. | Methods and systems for vector length management |
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 |
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 |
US10481881B2 (en) * | 2017-06-22 | 2019-11-19 | Archeo Futurus, Inc. | Mapping a computer code to wires and gates |
US11474837B2 (en) * | 2018-04-09 | 2022-10-18 | Advanced New Technologies Co., Ltd. | Method and apparatus for efficient programming of electronic payment processing |
US11755342B2 (en) | 2020-12-16 | 2023-09-12 | Texas Instruments Incorporated | Monitoring transitions of a circuit |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070280196A1 (en) * | 2006-06-06 | 2007-12-06 | Christian Olgaard | Apparatus for capturing multiple data packets in a data signal for analysis |
TW200912728A (en) * | 2007-09-13 | 2009-03-16 | Thomson Licensing | System and method for splitting data and data control information |
US20110219150A1 (en) * | 2010-03-05 | 2011-09-08 | Gary Piccirillo | Dma engine capable of concurrent data manipulation |
TW201209717A (en) * | 2010-06-10 | 2012-03-01 | Micron Technology Inc | Analyzing data using a hierarchical structure |
Family Cites Families (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4298954A (en) * | 1979-04-30 | 1981-11-03 | International Business Machines Corporation | Alternating data buffers when one buffer is empty and another buffer is variably full of data |
US5287523A (en) | 1990-10-09 | 1994-02-15 | Motorola, Inc. | Method for servicing a peripheral interrupt request in a microcontroller |
JPH0887462A (ja) | 1994-09-20 | 1996-04-02 | Fujitsu Ltd | ステートマシン及び通信制御方式 |
US6115496A (en) * | 1995-03-02 | 2000-09-05 | Apple Computer, Inc. | Method and apparatus for accelerating image data compression |
JPH1069459A (ja) | 1996-08-29 | 1998-03-10 | Hitachi Ltd | シリアルインタフェース制御装置およびその制御方法 |
US6034963A (en) | 1996-10-31 | 2000-03-07 | Iready Corporation | Multiple network protocol encoder/decoder and data processor |
US6702417B2 (en) * | 1997-07-12 | 2004-03-09 | Silverbrook Research Pty Ltd | Printing cartridge with capacitive sensor identification |
US7152232B2 (en) * | 2001-07-16 | 2006-12-19 | Sun Microsystems, Inc. | Hardware message buffer for supporting inter-processor communication |
ATE398804T1 (de) * | 2002-04-26 | 2008-07-15 | California Inst Of Techn | Vorrichtung und verfahren für taktlose datenrückgewinnung |
US7133857B1 (en) * | 2002-10-15 | 2006-11-07 | Ximpleware, Inc. | Processing structured data |
US7487542B2 (en) | 2004-01-14 | 2009-02-03 | International Business Machines Corporation | Intrusion detection using a network processor and a parallel pattern detection engine |
US7392229B2 (en) | 2005-02-12 | 2008-06-24 | Curtis L. Harris | General purpose set theoretic processor |
EP1859346B1 (en) * | 2005-03-04 | 2012-01-11 | Hewlett-Packard Development Company, L.P. | A method and apparatus for facilitating pipeline throughput |
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 |
US7899977B2 (en) * | 2006-12-08 | 2011-03-01 | Pandya Ashish A | Programmable intelligent search memory |
US7886089B2 (en) | 2008-02-13 | 2011-02-08 | International Business Machines Corporation | Method, system and computer program product for enhanced shared store buffer management scheme for differing buffer sizes with limited resources for optimized performance |
JP2009301137A (ja) * | 2008-06-10 | 2009-12-24 | Mitsubishi Electric Corp | 並列プロセッサ |
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 |
US7970964B2 (en) | 2008-11-05 | 2011-06-28 | Micron Technology, Inc. | Methods and systems to accomplish variable width data input |
US7917684B2 (en) | 2008-11-05 | 2011-03-29 | Micron Technology, Inc. | Bus translator |
US9639493B2 (en) | 2008-11-05 | 2017-05-02 | Micron Technology, Inc. | Pattern-recognition processor with results buffer |
US20100118425A1 (en) | 2008-11-11 | 2010-05-13 | Menachem Rafaelof | Disturbance rejection in a servo control loop using pressure-based disc mode sensor |
US9164945B2 (en) | 2008-12-01 | 2015-10-20 | Micron Technology, Inc. | Devices, systems, and methods to synchronize parallel processing of a single data stream |
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 |
US8140780B2 (en) | 2008-12-31 | 2012-03-20 | Micron Technology, Inc. | Systems, methods, and devices for configuring a device |
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 |
US8281395B2 (en) | 2009-01-07 | 2012-10-02 | Micron Technology, Inc. | Pattern-recognition processor with matching-data reporting module |
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 |
US8285917B2 (en) * | 2009-03-26 | 2012-10-09 | Scaleo Chip | Apparatus for enhancing flash memory access |
US7683665B1 (en) * | 2009-04-21 | 2010-03-23 | International Business Machines Corporation | Multiple parallel programmable finite state machines using a shared transition table |
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 |
US8572016B2 (en) * | 2009-07-31 | 2013-10-29 | International Business Machines Corporation | Match engine for detection of multi-pattern rules |
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 |
US9081501B2 (en) * | 2010-01-08 | 2015-07-14 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
US8766666B2 (en) | 2010-06-10 | 2014-07-01 | Micron Technology, Inc. | Programmable device, hierarchical parallel machines, and methods for providing state information |
KR101607736B1 (ko) | 2011-01-25 | 2016-03-30 | 마이크론 테크놀로지, 인크. | 오토마톤의 진입 차수 및/또는 진출 차수를 제어하기 위한 양화 언롤링 |
KR101640295B1 (ko) | 2011-01-25 | 2016-07-15 | 마이크론 테크놀로지, 인크. | 정규 표현을 컴파일하기 위한 방법 및 장치 |
EP2668574B1 (en) | 2011-01-25 | 2021-11-24 | Micron Technology, INC. | Utilizing special purpose elements to implement a fsm |
WO2012103151A2 (en) | 2011-01-25 | 2012-08-02 | Micron Technology, Inc. | State grouping for element utilization |
WO2013032446A1 (en) * | 2011-08-30 | 2013-03-07 | Empire Technology Development Llc | Hardware-based array compression |
US8745291B2 (en) * | 2011-10-04 | 2014-06-03 | Qualcomm Incorporated | Inter-processor communication apparatus and method |
US8593175B2 (en) | 2011-12-15 | 2013-11-26 | Micron Technology, Inc. | Boolean logic in a state machine lattice |
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 |
US9443156B2 (en) | 2011-12-15 | 2016-09-13 | Micron Technology, Inc. | Methods and systems for data analysis in a state machine |
US9304968B2 (en) | 2012-07-18 | 2016-04-05 | Micron Technology, Inc. | Methods and devices for programming a state machine engine |
US9389841B2 (en) | 2012-07-18 | 2016-07-12 | Micron Technology, Inc. | Methods and systems for using state vector data in a state machine engine |
-
2012
- 2012-07-18 US US13/552,479 patent/US9235798B2/en active Active
-
2013
- 2013-07-09 WO PCT/US2013/049744 patent/WO2014014709A1/en active Application Filing
- 2013-07-09 CN CN201380038242.3A patent/CN104471552B/zh active Active
- 2013-07-09 JP JP2015523124A patent/JP6017034B2/ja active Active
- 2013-07-09 KR KR1020157002530A patent/KR101908768B1/ko active IP Right Grant
- 2013-07-09 EP EP13819214.1A patent/EP2875433B1/en active Active
- 2013-07-18 TW TW102125814A patent/TWI502502B/zh active
-
2016
- 2016-01-11 US US14/992,616 patent/US10366009B2/en active Active
-
2019
- 2019-07-16 US US16/513,418 patent/US10915450B2/en active Active
-
2021
- 2021-01-22 US US17/155,433 patent/US11836081B2/en active Active
-
2022
- 2022-11-02 US US17/979,472 patent/US11741014B2/en active Active
-
2023
- 2023-12-04 US US18/527,793 patent/US20240104020A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070280196A1 (en) * | 2006-06-06 | 2007-12-06 | Christian Olgaard | Apparatus for capturing multiple data packets in a data signal for analysis |
TW200912728A (en) * | 2007-09-13 | 2009-03-16 | Thomson Licensing | System and method for splitting data and data control information |
US20110219150A1 (en) * | 2010-03-05 | 2011-09-08 | Gary Piccirillo | Dma engine capable of concurrent data manipulation |
TW201209717A (en) * | 2010-06-10 | 2012-03-01 | Micron Technology Inc | Analyzing data using a hierarchical structure |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI812623B (zh) * | 2017-06-09 | 2023-08-21 | 安地卡及巴布達商區塊鏈控股有限公司 | 節點裝置、電腦實施方法及相關非暫時性處理器可讀媒體 |
Also Published As
Publication number | Publication date |
---|---|
US20240104020A1 (en) | 2024-03-28 |
US20160124860A1 (en) | 2016-05-05 |
US9235798B2 (en) | 2016-01-12 |
US10366009B2 (en) | 2019-07-30 |
EP2875433A1 (en) | 2015-05-27 |
US20230048032A1 (en) | 2023-02-16 |
US10915450B2 (en) | 2021-02-09 |
US20190340130A1 (en) | 2019-11-07 |
US11836081B2 (en) | 2023-12-05 |
WO2014014709A1 (en) | 2014-01-23 |
TW201419146A (zh) | 2014-05-16 |
US20140025905A1 (en) | 2014-01-23 |
US11741014B2 (en) | 2023-08-29 |
KR20150037937A (ko) | 2015-04-08 |
EP2875433B1 (en) | 2021-10-20 |
JP6017034B2 (ja) | 2016-10-26 |
EP2875433A4 (en) | 2016-11-16 |
KR101908768B1 (ko) | 2018-10-16 |
JP2015531111A (ja) | 2015-10-29 |
US20210149810A1 (en) | 2021-05-20 |
CN104471552A (zh) | 2015-03-25 |
CN104471552B (zh) | 2017-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI502502B (zh) | 用於處理狀態機引擎所接收之資料之方法及系統 | |
TWI492062B (zh) | 用於程式化狀態機引擎之方法與裝置 | |
TWI569206B (zh) | 用於狀態機引擎之結果產生 | |
TWI602120B (zh) | 在圖案識別處理系統中用於電力管理之方法及系統 | |
TWI515669B (zh) | 用於狀態機中資料分析之系統與方法 | |
TWI486810B (zh) | 在狀態機晶格中之計數器操作 | |
TWI515668B (zh) | 用於一狀態機中偵測之方法及系統 | |
TWI497418B (zh) | 狀態機引擎、用於處置一狀態機引擎中之狀態向量資料之方法及用於組態一狀態機引擎之一狀態機晶格之方法 | |
TWI625631B (zh) | 用於提供藉由狀態機器引擎所接收之資料之方法及裝置 | |
TWI600295B (zh) | 用於在狀態機中路由之方法及系統 | |
TWI488110B (zh) | 狀態機引擎及其方法 | |
KR101873619B1 (ko) | 상태 기계 격자에서의 불리언 로직 |