TW201342110A - 在狀態機晶格中之計數器操作 - Google Patents

在狀態機晶格中之計數器操作 Download PDF

Info

Publication number
TW201342110A
TW201342110A TW101147679A TW101147679A TW201342110A TW 201342110 A TW201342110 A TW 201342110A TW 101147679 A TW101147679 A TW 101147679A TW 101147679 A TW101147679 A TW 101147679A TW 201342110 A TW201342110 A TW 201342110A
Authority
TW
Taiwan
Prior art keywords
counter
input
output
condition
response
Prior art date
Application number
TW101147679A
Other languages
English (en)
Other versions
TWI486810B (zh
Inventor
Harold B Noyes
David R Brown
Paul Glendenning
Original Assignee
Micron Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Publication of TW201342110A publication Critical patent/TW201342110A/zh
Application granted granted Critical
Publication of TWI486810B publication Critical patent/TWI486810B/zh

Links

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/045Programme control other than numerical control, i.e. in sequence controllers or logic controllers using logic state machines, consisting only of a memory or a programmable logic device containing the logic for the controlled machine and in which the state of its outputs is dependent on the state of its inputs or part of its own output states, e.g. binary decision controllers, finite state controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/82Architectures of general purpose stored program computers data or demand driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/567Computer malware detection or handling, e.g. anti-virus arrangements using dedicated hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4498Finite state machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/046Forward inferencing; Production systems
    • G06N5/047Pattern matching networks; Rete networks
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17724Structural details of logic blocks
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/02Indexing scheme relating to groups G06F7/02 - G06F7/026
    • G06F2207/025String search, i.e. pattern matching, e.g. find identical word or best match in a string

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Automation & Control Theory (AREA)
  • Logic Circuits (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Control Of Electric Motors In General (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本發明揭示方法及裝置,其中存在一種包含一有限狀態機晶格(30)之裝置。該晶格(30)可包含之一計數器(58),該計數器(58)適合於計數該晶格(30)中之一可程式化元件(34、36)偵測到一條件之一次數。該計數器(58)可經組態以回應於計數偵測到該條件達一特定次數而輸出。舉例而言,該計數器(58)可經組態以回應於以下各項而輸出:判定偵測到一條件達至少(或不超過)該特定次數、判定偵測到該條件達恰好該特定次數或判定偵測到該條件達一特定次數範圍內。該計數器(58)可耦合至該裝置中之其他計數器(58)以用於判定高計數操作及/或特定數量詞。

Description

在狀態機晶格中之計數器操作
本發明之實施例一般而言係關於電子裝置,且在特定實施例中更具體而言係關於用於型樣辨識之平行有限狀態機。
在計算領域中,型樣辨識任務日益具挑戰性。在電腦之間傳輸之資料量越來越大,且使用者希望偵測之型樣之數目日益增加。舉例而言,通常藉由搜尋一資料串流中之型樣(例如,特定片語或程式碼片段)來偵測垃圾郵件及惡意軟體。型樣之數目隨垃圾郵件及惡意軟體之多樣化而增加,此乃因新型樣可經實施以搜尋新變化形式。
辨識一型樣通常可涉及偵測指示該型樣之各種條件。計數偵測到一(若干)條件之次數亦可係有用的。計數器可經實施以計數偵測到一條件之一次數。然而,辨識一型樣有時可涉及不可藉由一基本計數器容易地計數的所偵測條件之特定數量詞。
10‧‧‧基於處理器之系統/系統
12‧‧‧處理器
14‧‧‧狀態機引擎
16‧‧‧記憶體
18‧‧‧外部儲存器
20‧‧‧編譯器
22‧‧‧輸入裝置
24‧‧‧輸出裝置/顯示器
26‧‧‧網路介面裝置
30‧‧‧有限狀態機晶格/晶格/第一有限狀態機晶格/第二有限狀態機晶格
30A‧‧‧第一有限狀態機晶格/有限狀態機晶格
30B‧‧‧第二有限狀態機晶格/有限狀態機晶格
32‧‧‧區塊
34‧‧‧可程式化元件/狀態機元件/第一狀態機元件
36‧‧‧可程式化元件/狀態機元件/第二狀態機元件
38‧‧‧列
38A至38E‧‧‧列
40‧‧‧可程式化區塊間交換元件/區塊間交換元件/可程式化交換元件/區塊間交換器
42‧‧‧可程式化區塊內交換元件/區塊內交換元件/可程式 化交換元件/區塊內交換器
44‧‧‧可程式化列內交換元件/列內交換元件/可程式化交換元件/列內交換器
46‧‧‧導體
48‧‧‧緩衝器
50‧‧‧緩衝器
52‧‧‧輸入區塊/資料輸入區塊/第一資料輸入區塊/第二資料輸入區塊
54‧‧‧輸出區塊
56‧‧‧程式化介面/程式化介面區塊
58‧‧‧特殊用途元件/計數器/12位元可程式化計數器/12位元計數器
58A‧‧‧計數器單元/計數器/12位元計數器/最高階計數器
58B‧‧‧布林邏輯單元/布林單元
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‧‧‧狀態向量快取記憶體
144‧‧‧狀態向量記憶體緩衝器
146‧‧‧狀態向量中間輸入緩衝器
148‧‧‧狀態向量中間輸出緩衝器
150‧‧‧匹配結果記憶體
152‧‧‧匹配緩衝器
154‧‧‧控制與狀態暫存器
156‧‧‧還原與程式化緩衝器
158‧‧‧保存與修復映射緩衝器
160‧‧‧初始值輸入/12位元初始值輸入
162‧‧‧載入初始輸入
164‧‧‧回復輸入
166‧‧‧保持輸入
168‧‧‧鏈接啟用輸入
170‧‧‧啟用重設(2)輸入/啟用重設2輸入
172‧‧‧啟用重設(1)輸入/啟用重設1輸入
174‧‧‧啟用重設(0)輸入/啟用重設0輸入
176‧‧‧零計數輸出
178‧‧‧計數啟用輸入
180‧‧‧重設輸入
182‧‧‧接收進位輸入/進位輸入
184‧‧‧接收結果輸入/結果輸入
186‧‧‧重設輸入/重設(2)輸入
188‧‧‧重設輸入/重設(1)輸入
190‧‧‧重設輸入/重設輸入0/重設(0)輸入
圖1圖解說明根據本發明之各項實施例之具有一狀態機引擎之系統之一實例。
圖2圖解說明根據本發明之各項實施例之圖1之狀態機引擎之一FSM晶格之一實例。
圖3圖解說明根據本發明之各項實施例之圖2之FSM晶格之一區塊之一實例。
圖4圖解說明根據本發明之各項實施例之圖3之區塊之一列之一實例。
圖5圖解說明根據本發明之各項實施例之圖4之列中之兩者之一群組的一實例。
圖6圖解說明根據本發明之各項實施例之一有限狀態機圖之一實例。
圖7圖解說明根據本發明之各項實施例之藉助FSM晶格實施之兩層級階層之一實例。
圖8圖解說明根據本發明之各項實施例之用於一編譯器將原始程式碼轉換成一個二進制檔案以用於程式化圖2之FSM晶格之一方法之一實例。
圖9圖解說明根據本發明之各項實施例之一狀態機引擎。
圖10圖解說明根據本發明之各項實施例之如圖3中之一區塊,該區塊在該區塊之列中具有計數器。
圖11圖解說明根據本發明之各項實施例之圖10之一計數器。
現在轉至各圖,圖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)、MultimediaMediaCard(MMC)、SecureDigital(SD)卡、CompactFlash(CF)卡或任何其他適合裝置。此外,應瞭解,此等裝置可經由任何適合介面(諸如通用串列匯流排(USB)、周邊組件互連(PCI)、PCIExpress(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之一影像之方法。可藉由用於具有一馮.諾伊曼(von Neumann)架構之一電腦之指令來實施編譯器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之一有向連接展示。在一實例中,一自動機之一倒轉產生一新自動機,其中某一符號α上之每一轉變pq在同一符號上倒轉qp。在一倒轉中,開始狀態變成一最終狀態且最終狀態變成開始狀態。在一實例中,一自動機所辨識(例如,匹配)之語言係在順序地輸入至該自動機中時將達到一最終狀態之所有可能字元字串集。該自動機所辨識之語言中之每一字串追蹤自開始狀態至一或多個最終狀態之一路徑。
在方塊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可協調資料交換、時序資訊、包裝指令等以使得按正確次序接收及分析資料。通常,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以用於儲存保存與修復映射以用於設置及使用。
如所論述,在某些實施例中,區塊32中之列38中之每一者可包含一或多個特殊用途元件58,諸如一計數器、一可程式化布林邏輯單元、一查找表RAM、一場可程式化閘陣列(FPGA)、一特殊應用積體 電路(ASIC)、一可程式化處理器(例如,微處理器)或用於執行一特殊用途功能之其他元件。特殊用途元件58可藉助每一列38中之一或多個GOT 60連接至列內交換元件。此外,來自每一列38之輸出可連接至區塊內交換元件42,區塊內交換元件42可藉由區塊間交換元件40連接。
圖10係具有各自包含一特殊用途元件58之列38之一區塊32之一實例的一圖解說明。舉例而言,區塊32中之特殊用途元件58可包含計數器單元58A及布林邏輯單元58B。儘管圖10中圖解說明列位置0至4中之僅列38(例如,標記為38A至38E),但每一區塊32可具有任何數目個列38(例如,16個列38)且一或多個特殊用途元件58可組態於列38中之每一者中。舉例而言,在一項實施例中,計數器單元58A可組態於特定列38中(例如,在列位置0、4、8及12中),而布林邏輯單元58B可組態於16個列38中之剩餘列中(例如,在列位置1、2、3、5、6、7、9、10、11、13、14、15及16中)。GOT 60與特殊用途元件58可透過列內交換元件44在每一列38中選擇性地耦合(例如,選擇性地連接),其中區塊32之每一列38可透過區塊內交換元件42與區塊32之其他列38中之任一者選擇性地耦合。
在某些實施例中,每一列38中之每一作用GOT 60可輸出指示是否偵測到一或多個條件(例如,偵測到一匹配)之一信號,且列38中之特殊用途元件58可接收GOT 60輸出以判定是否滿足該一或多個條件之特定數量詞及/或計數偵測到一條件之一次數。舉例而言,一計數操作之數量詞可包含判定是否偵測到一條件達至少一特定次數,判定是否偵測到一條件不超過一特定次數,判定是否偵測到一條件達恰好一特定次數,及判定是否偵測到一條件達在一特定次數範圍內。
來自計數器58A及/或布林邏輯單元58B之輸出可透過列內交換元件44及區塊內交換元件42通信以執行具有較大複雜度之計數或邏輯。 舉例而言,計數器58A可經組態以實施數量詞,諸如僅在偵測到一條件達一確切次數時確證一輸出。亦可同時使用一區塊32中之計數器58A,藉此增加經組合計數器之總位元計數以計數一所偵測條件之較高數目。此外,在某些實施例中,可一起使用不同特殊用途元件58(諸如計數器58A與布林邏輯單元58B)。舉例而言,可由一區塊32中之一或多個計數器58A計數一或多個布林邏輯單元58B之一輸出。
儘管圖10中簡化計數器58A與區塊32之其他元件之間的連接,但計數器58A可具有可經確證以執行各種計數器功能之多個輸入。如圖11中所圖解說明,計數器58A包括一12位元可程式化遞減計數器。根據本發明技術,可在每一計數器58A處執行計數操作,且亦可藉由將一列38中之一或多個計數器58A「鏈接」在一起來執行計數操作。此外,在某些實施例中,亦可將不同列38中之計數器58A鏈接在一起。
在某些實施例中,計數器58A可包含一計數啟用輸入178、一重設輸入180及一零計數輸出176。計數器58A可具有其中可將一初始計數值載入於計數器58A中之一初始值輸入160。舉例而言,對於一12位元計數器58A,可自一相關聯暫存器載入或以其他方式載入多達一12位元數目作為初始值。在某些實施例中,計數器58A可包含可用以在計數器58A之一初始程式化期間鎖存該初始值之一載入初始輸入162。一旦載入初始輸入162經確證以鎖存該初始值,重設計數器58A便將載入該經鎖存初始值。可藉由一適合程式化信號(例如,來自處理器12)改變該初始值。
計數啟用輸入178在被確證時使計數器58A之計數遞減1。舉例而言,若在一列38A中之GOT 60中之一者處偵測到一條件,則GOT 60可將一高信號輸出至相關聯計數器58A之計數啟用輸入178。藉由確證計數啟用輸入178,計數器58A可遞減一計數。一旦計數器58A遞減至一零計數,計數器58A便可確證零計數輸出176,零計數輸出176可 透過列內交換器44、區塊內交換器42及/或區塊間交換器40傳輸以指示已計數特定數目個所偵測條件。
計數器58A可包含可在計數器58A執行一特定計數操作之前取決於將由計數器58A執行之操作而程式化至該計數器之一回復輸入164及一保持輸入166。當確證回復輸入164且未確證保持輸入166時,計數器58A回應於計數器58A遞減至零(例如,在計數器58A遞減至零之後)載入鎖存於12位元初始值輸入160中之初始值。因此,具有一經確證回復輸入164及一經撤銷確證保持輸入166之一計數器58A可在不具有一額外重設輸入之情況下重設為初始值。回復輸入164可經確證以執行特定計數操作。舉例而言,為了執行一計數操作以判定一資料串流是否滿足一第一數量詞(例如,判定是否偵測到一條件達至少一特定次數),可確證回復輸入164以使得一旦計數遞減至零,便結束計數操作,此乃因進一步偵測該條件與滿足第一數量詞不相關。
保持輸入166在被確證時回應於計數器58A遞減至零(例如,一旦計數器58A遞減至零)將計數保持為零。若確證保持輸入166且撤銷確證回復輸入164,則計數器58A可在遞減至零之後確證零計數輸出176直至在重設輸入180處重設計數器58A為止。保持輸入166可經確證以執行特定操作。舉例而言,為了執行一計數操作以判定一資料串流是否滿足一第二數量詞(例如,判定是否偵測到一條件達恰好一特定次數),可確證保持輸入166以便一旦計數器58A已自初始值遞減至零便將計數器保持為零。儘管計數器58A保持零計數,但耦合至一區塊32中之計數器58A之其他計數器58A可判定是否偵測到該條件達指示未滿足第二數量詞之任何進一步次數。
在某些實施例中,一個以上計數器58A可經組態以共同使用以執行一或多個計數操作。針對一計數操作使用一個以上計數器58A(稱為經鏈接計數器)可增加該等經鏈接計數器之位元大小。舉例而言, 來自列位置0、4、8及12的一區塊32中之四個計數器58A可經鏈接為一個48位元計數器。每一計數器58A可包含一鏈接啟用輸入168,鏈接啟用輸入168在被確證時將計數器58A啟用為經鏈接啟用計數器58A之一級聯之部分。經級聯計數器可按階組態,其中一較低階計數器可計數一零計數並將該零計數輸出至一較高階計數器。一較高階計數器可在其已達到一零計數時將一零計數輸出至另一較高階計數器(例如,一主計數器)。
作為一經鏈接計數器操作之一實例,列位置0、4及8中之計數器58A(分別稱為計數器(0)、計數器(4)及計數器(8))可具有經確證鏈接啟用輸入168以使得其在一計數器級聯中操作。計數器(0)可係最低階計數器且可稱為級聯中之主計數器。計數器(4)可係按階之下一者,且計數器(8)可係級聯之最高階計數器58A。計數器58A可具有使得一計數器58A能夠在計數器58A已達到零時載入(「翻轉回復」)其初始值之一經確證回復輸入164。在一項實施例中,計數器(0)可具有一初始值輸入且可在確證計數啟用輸入178時遞減一計數。一旦計數器(0)已遞減至零,計數器(0)便可指示其已遞減至零,且下一較高階計數器(4)可在接收進位輸入182處接收此指示。計數器(4)可遞減一計數,且計數器(0)可重設為其初始輸入值且可繼續遞減至零並重新載入,其中計數器(4)隨計數器(0)之每一重新載入而遞減一計數。當計數器(4)遞減至零時,計數器(4)可指示其已遞減至零,且下一較高階計數器(8)可在其進位輸入182處接收此指示。計數器(8)可遞減一計數,且計數器(4)可重設為其最初輸入值且可繼續遞減至零並重新載入,其中計數器(8)隨計數器(4)之每一重新載入而遞減一計數。
一旦計數器(8)遞減至零,計數器(8)便可向計數器(4)指示其已遞減至零指示,計數器(4)可在接收結果輸入184處接收此輸入。一旦最高階計數器(8)已完全遞減,計數器(4)便可不再重設。一旦計數器(4) 完全遞減,計數器(4)便可向主計數器(0)指示此,主計數器(0)在結果輸入184處接收該輸入。一旦所有較高階計數器已完全遞減,主計數器(0)便可不再重設,且主計數器(0)可確證其零計數輸出176以指示完成經級聯計數操作。
此外,在某些實施例中,經級聯計數器可經組態以使得遞減至零之一較低階計數器可重設一較高階計數器。每一計數器可具有一啟用重設0(ER(0))輸入174、一ER(1)輸入172及一ER(2)輸入170。ER(0)輸入174、ER(1)輸入172及ER(2)輸入170中之每一者可經確證以使得計數器58A可藉由自對應於啟用重設輸入位置之一計數器在一重設輸入186、188或190中接收一重設信號而重設。舉例而言,在某些實施例中,若級聯列位置0、4、8及12中之計數器58A,則ER0輸入174、ER1輸入172及ER2輸入170可在計數器(12)上確證。當確證ER0輸入174、ER1輸入172及ER2輸入170時,計數器(12)可藉由列位置0中之一計數器58A而在重設輸入0(R(0)輸入)190處重設,藉由列位置4中之一計數器58A而在R(1)輸入188處重設且藉由列位置8中之一計數器58A而在R(2)輸入186處重設。因此,在某些實施例中,在一經級聯計數器操作中,每當一較低階計數器已遞減至零時,該較低階計數器可重設一較高階計數器。
應注意,儘管圖10將每一列38繪示為具有一個計數器58A或一個布林單元58B,但列38不限於具有僅一個特殊用途元件58。舉例而言,在某些實施例中,一或多個列38可具有一或多個計數器58A以及額外特殊用途元件58。包含計數器58A之特殊用途元件58可能夠經由一列38內之列內交換元件44與其他特殊用途元件58通信。此外,計數器58A不限於12位元遞減計數器。在某些實施例中,亦可使用不同位元大小之適合計數器及/或實施不同功能性之計數器。
儘管可易於對本發明做出各種修改及替代形式,但已在圖式中 藉由舉例方式展示且在本文中詳細描述了特定實施例。然而,應理解,本發明並不意欲限於所揭示之特定形式。而是,本發明意欲涵蓋如由以下隨附申請專利範圍定義之本發明之精神及範疇內之所有修改形式、等效形式及替代方案。
32‧‧‧區塊
38A至38E‧‧‧列
40‧‧‧區塊間交換器
42‧‧‧區塊內交換元件/區塊內交換器
44‧‧‧列內交換元件/列內交換器
58A‧‧‧計數器/12位元計數器
58B‧‧‧布林邏輯單元/布林單元
60‧‧‧兩者之群組

Claims (29)

  1. 一種裝置,其包括:一有限狀態機(FSM)晶格,其包括:複數個區塊,該等區塊中之每一者包括複數個列,該等列中之每一者包括複數個可程式化元件,其中該等可程式化元件中之一特定者經組態以基於一條件之一偵測而輸出一信號;且該等區塊中之一特定者之該等列中之至少一者進一步包括經組態以可選擇性地耦合至該等區塊中之該特定者之該複數個列中之任一者中之該複數個可程式化元件中之任一者的一計數器,其中該計數器經組態以回應於計數偵測到該條件達一特定次數而輸出。
  2. 如請求項1之裝置,其中該等區塊中之該特定者之該複數個列中之每一者包括經組態以選擇性地耦合彼列之該複數個可程式化元件中之任一者與該計數器之列內電路。
  3. 如請求項2之裝置,其中該複數個區塊中之每一者包括經組態以選擇性地耦合彼區塊之該複數個列中之任一者之區塊內電路,其中彼區塊之該複數個列中之一者中之一個計數器可耦合至彼區塊之該複數個列中之另一者中之另一計數器。
  4. 如請求項3之裝置,其中該晶格包括經組態以選擇性地耦合該複數個區塊中之任一者之區塊間電路,其中該複數個區塊中之該特定者中之該計數器可經由該列內電路、該區塊內電路及該區塊間電路而選擇性地耦合至該複數個區塊中之另一者中之一可程式化元件。
  5. 如請求項1之裝置,其中每一計數器包括一遞減計數器。
  6. 如請求項1之裝置,其中該計數器經組態以可選擇性地耦合至該複數個列中之任何其他計數器包括:該計數器經組態以可選擇性地耦合至該複數個列中之任何其他計數器以形成一經級聯計數器。
  7. 如請求項1之裝置,其中每一計數器包括:一保持輸入,其經組態以經確證以回應於該計數器遞減至零且直至重設該計數器為止將該計數器保持為零;及一回復輸入,其經組態以經確證以在未確證該保持輸入時載入該計數器之一初始值。
  8. 如請求項1之裝置,其中每一計數器包括:一啟用鏈接輸入,其經組態以經確證以將該計數器啟用為一經級聯計數器之部分;及一回復輸入,其經組態以經確證以回應於該計數器遞減至零而翻轉回復該計數器之一初始值。
  9. 如請求項8之裝置,其中每一計數器包括經組態以自一較低階計數器接收一經翻轉回復值之一進位輸入。
  10. 如請求項9之裝置,其中每一計數器包括經組態以回應於一較高階計數器遞減至零而接收一指示之一結果輸入。
  11. 如請求項8之裝置,其中該每一計數器包括經組態以藉由另一計數器確證以重設該計數器之一啟用重設輸入。
  12. 如請求項11之裝置,其中該啟用重設輸入包括複數個啟用重設輸入,該複數個啟用重設輸入經組態以啟用該計數器以藉由複數個其他計數器中之任一者重設。
  13. 如請求項1之裝置,其中不包括一計數器的該等區塊中之該特定者之該複數個列中之一特定者包括一布林邏輯單元,其中該布林邏輯單元可經由列內電路及區塊內電路而選擇性地耦合至該 計數器。
  14. 如請求項1之裝置,其中該計數器經組態以回應於計數偵測到該條件達一特定次數而輸出包括:該計數器經組態以回應於計數偵測到該條件達至少該特定次數而輸出。
  15. 如請求項1之裝置,其中該計數器經組態以回應於計數偵測到該條件達一特定次數而輸出:包括該計數器經組態以回應於計數偵測到該條件達恰好該特定次數而輸出。
  16. 如請求項1之裝置,其中該計數器經組態以回應於計數偵測到該條件達一特定次數而輸出包括:該計數器經組態以回應於計數偵測到該條件達在一特定次數範圍內而輸出。
  17. 如請求項1之裝置,其中該計數器經組態以可選擇性地耦合至該等區塊中之該特定者之該複數個列中之任何其他計數器。
  18. 如請求項1之裝置,其包括一伺服器、一個人電腦、一工作站、一路由器、一網路交換器、晶片測試設備、一膝上型電腦、一行動電話、一媒體播放器、一遊戲控制台或包括該FSM晶格之一大型主機電腦。
  19. 一種在一計數器處執行一計數操作之方法,其包括:在一狀態機晶格中分析一資料串流以偵測一條件;每當偵測到該條件時在該計數器處計數;回應於該計數器計數偵測到該條件達一特定次數而自該計數器輸出;回應於該計數器計數偵測到該條件達一特定次數、確證該計數器之一回復輸入且未確證該計數器之一保持輸入而將一初始值載入至該計數器;及回應於確證該計數器之該保持輸入且直至該計數器之一重設為止保持該計數器之該輸出,其中基於該計數操作之一數量詞 而確證該計數器之該回復輸入、該計數器之該保持輸入或者不確證該計數器之該回復輸入或該保持輸入中之任一者。
  20. 如請求項19之方法,其包括:將該初始值載入至該計數器中且將該初始值鎖存於該計數器中。
  21. 如請求項19之方法,其中在該計數器處計數包括:每當偵測到該條件時,自該初始值遞減一計數。
  22. 如請求項21之方法,其中自該計數器輸出包括:輸出一零計數。
  23. 如請求項22之方法,其中保持該計數器之該輸出包括:將該計數保持為零。
  24. 如請求項19之方法,其中在該計數器處計數包括:在一經級聯計數器處計數。
  25. 如請求項19之方法,其中該數量詞包括以下各項中之一者:判定是否偵測到該條件達至少一特定次數、判定是否偵測到該條件不超過一特定次數、判定是否偵測到該條件達恰好一特定次數及判定是否偵測到該條件達一特定次數範圍內。
  26. 一種裝置,其包括:一計數器,其經組態以:接收一計數啟用信號且回應於偵測到一條件而遞減一計數;回應於該計數器遞減至零而輸出一零計數;若在該計數器上確證一保持輸入,則保持該零計數直至重設該計數器為止;若一較低階計數器與該計數器級聯,則自該較低階計數器接收一進位輸入;回應於該計數器遞減至零而向該較低階計數器指示;且 回應於另一計數器確證一重設信號而重設。
  27. 如請求項26之裝置,其中該計數器經組態以在遞減至零之後且直至重設該計數器為止輸出該零計數。
  28. 如請求項26之裝置,其包括一布林邏輯單元,其中該計數器經組態以選擇性地耦合至該布林邏輯單元。
  29. 如請求項26之裝置,其包括經組態以回應於偵測到一條件而提供該計數啟用信號之一可程式化元件,其中該計數器經組態以回應於偵測到一條件而遞減一計數包括該計數器經組態以計數該可程式化元件偵測到該條件之一次數。
TW101147679A 2011-12-15 2012-12-14 在狀態機晶格中之計數器操作 TWI486810B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/327,499 US8648621B2 (en) 2011-12-15 2011-12-15 Counter operation in a state machine lattice

Publications (2)

Publication Number Publication Date
TW201342110A true TW201342110A (zh) 2013-10-16
TWI486810B TWI486810B (zh) 2015-06-01

Family

ID=47358304

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101147679A TWI486810B (zh) 2011-12-15 2012-12-14 在狀態機晶格中之計數器操作

Country Status (7)

Country Link
US (4) US8648621B2 (zh)
EP (1) EP2791854B1 (zh)
JP (1) JP6109186B2 (zh)
KR (1) KR101840905B1 (zh)
CN (2) CN107608750B (zh)
TW (1) TWI486810B (zh)
WO (1) WO2013090091A2 (zh)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
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
US8593175B2 (en) 2011-12-15 2013-11-26 Micron Technology, Inc. Boolean logic in a state machine lattice
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
US8680888B2 (en) 2011-12-15 2014-03-25 Micron Technologies, Inc. Methods and systems for routing 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
US9524248B2 (en) 2012-07-18 2016-12-20 Micron Technology, Inc. Memory management for a hierarchical memory system
US9235798B2 (en) 2012-07-18 2016-01-12 Micron Technology, Inc. Methods and systems for handling data received by 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
US9501131B2 (en) 2012-08-31 2016-11-22 Micron Technology, Inc. Methods and systems for power management in a pattern recognition processing system
US9063532B2 (en) 2012-08-31 2015-06-23 Micron Technology, Inc. Instruction insertion in state machine engines
US9075428B2 (en) 2012-08-31 2015-07-07 Micron Technology, Inc. Results generation for 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
US11586956B2 (en) * 2013-05-28 2023-02-21 Keysight Technologies, Inc. Searching apparatus utilizing sub-word finite state machines
US10534686B2 (en) 2014-01-30 2020-01-14 Micron Technology, Inc. Apparatuses and methods for address detection
US11366675B2 (en) 2014-12-30 2022-06-21 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
US10430210B2 (en) 2014-12-30 2019-10-01 Micron Technology, Inc. Systems and devices for accessing a state machine
GB2536921A (en) * 2015-03-31 2016-10-05 Fujitsu Ltd Apparatus, program, and method for updating cache memory
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
US10691964B2 (en) 2015-10-06 2020-06-23 Micron Technology, Inc. Methods and systems for event reporting
US10146555B2 (en) 2016-07-21 2018-12-04 Micron Technology, Inc. Adaptive routing to avoid non-repairable memory and logic defects on automata processor
US10268602B2 (en) 2016-09-29 2019-04-23 Micron Technology, Inc. System and method for individual addressing
US10019311B2 (en) 2016-09-29 2018-07-10 Micron Technology, Inc. Validation of a symbol response memory
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
US20190081963A1 (en) * 2017-09-08 2019-03-14 Sophos Limited Realtime event detection

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5559841A (en) * 1995-07-10 1996-09-24 Vlsi Technology, Inc. Digital phase detector
JPH11328957A (ja) * 1998-05-19 1999-11-30 Oki Micro Design:Kk 半導体記憶装置
US7487542B2 (en) 2004-01-14 2009-02-03 International Business Machines Corporation Intrusion detection using a network processor and a parallel pattern detection engine
JP2006011825A (ja) * 2004-06-25 2006-01-12 Fujitsu Ltd 再構成可能演算装置および半導体装置
US7057427B2 (en) * 2004-07-15 2006-06-06 Freescale Semiconductor, Inc Power on reset circuit
US7154305B2 (en) * 2004-12-22 2006-12-26 Alcatel Periodic electrical signal frequency monitoring systems and methods
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
US7899977B2 (en) * 2006-12-08 2011-03-01 Pandya Ashish A Programmable intelligent search memory
JP5040427B2 (ja) * 2007-05-11 2012-10-03 ソニー株式会社 データ処理方法、データ処理装置、固体撮像装置、撮像装置、電子機器
JP4505766B2 (ja) * 2008-06-30 2010-07-21 ルネサスエレクトロニクス株式会社 データ処理装置及びトリミングデータ読み出し方法
US8938590B2 (en) 2008-10-18 2015-01-20 Micron Technology, Inc. Indirect register access method and system
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
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
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
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
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
US10007486B2 (en) 2008-12-01 2018-06-26 Micron Technology, Inc. Systems and methods to enable identification of different data sets
DE102008060719B4 (de) 2008-12-05 2018-09-20 Siemens Healthcare Gmbh Verfahren zur Steuerung des Aufnahmebetriebs einer Magnetresonanzeinrichtung bei der Aufnahme von Magnetresonanzdaten eines Patienten sowie zugehörige Magnetresonanzeinrichtung
US8140780B2 (en) 2008-12-31 2012-03-20 Micron Technology, Inc. Systems, methods, and devices for configuring a device
US20100174887A1 (en) 2009-01-07 2010-07-08 Micron Technology Inc. Buses for Pattern-Recognition Processors
US8214672B2 (en) 2009-01-07 2012-07-03 Micron Technology, Inc. Method and systems for power consumption management of a pattern-recognition processor
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
US8068576B2 (en) * 2009-02-24 2011-11-29 Taiwan Semiconductor Manufacturing Company, Ltd. Counters and exemplary applications
US8330439B2 (en) * 2009-06-23 2012-12-11 Intersil Americas Inc. System and method for PFM/PWM mode transition within a multi-phase buck converter
US7888983B2 (en) * 2009-06-26 2011-02-15 Qualcomm Incorporated Predetermined duty cycle signal generator
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
US8159900B2 (en) 2009-08-06 2012-04-17 Unisyn Medical Technologies, Inc. Acoustic system quality assurance and testing
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
US9323994B2 (en) * 2009-12-15 2016-04-26 Micron Technology, Inc. Multi-level hierarchical routing matrices for pattern-recognition processors
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
JP5763784B2 (ja) 2011-01-25 2015-08-12 マイクロン テクノロジー, インク. 要素利用のための状態のグループ化
US8726256B2 (en) * 2011-01-25 2014-05-13 Micron Technology, Inc. Unrolling quantifications to control in-degree and/or out-degree of automaton
JP5763783B2 (ja) 2011-01-25 2015-08-12 マイクロン テクノロジー, インク. 正規表現をコンパイルするための方法および装置
CN103547999B (zh) 2011-01-25 2017-05-17 美光科技公司 利用专用元件实施有限状态机
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
US8680888B2 (en) 2011-12-15 2014-03-25 Micron Technologies, Inc. Methods and systems for routing in a state machine
US8782624B2 (en) 2011-12-15 2014-07-15 Micron Technology, Inc. Methods and systems for detection in a state machine
US9443156B2 (en) 2011-12-15 2016-09-13 Micron Technology, Inc. Methods and systems for data analysis in a state machine

Also Published As

Publication number Publication date
US20140115299A1 (en) 2014-04-24
WO2013090091A3 (en) 2014-07-24
US20150253755A1 (en) 2015-09-10
CN104067282A (zh) 2014-09-24
KR101840905B1 (ko) 2018-05-04
CN104067282B (zh) 2017-08-22
EP2791854A2 (en) 2014-10-22
US9665083B2 (en) 2017-05-30
JP2015505399A (ja) 2015-02-19
JP6109186B2 (ja) 2017-04-05
US20170261956A1 (en) 2017-09-14
US20130159670A1 (en) 2013-06-20
CN107608750B (zh) 2020-05-08
US8648621B2 (en) 2014-02-11
KR20140103143A (ko) 2014-08-25
CN107608750A (zh) 2018-01-19
US9058465B2 (en) 2015-06-16
US9886017B2 (en) 2018-02-06
EP2791854B1 (en) 2019-01-23
TWI486810B (zh) 2015-06-01
WO2013090091A2 (en) 2013-06-20

Similar Documents

Publication Publication Date Title
TWI486810B (zh) 在狀態機晶格中之計數器操作
TWI515668B (zh) 用於一狀態機中偵測之方法及系統
TWI489779B (zh) 狀態機晶格中之布林邏輯
TWI515669B (zh) 用於狀態機中資料分析之系統與方法
TWI600295B (zh) 用於在狀態機中路由之方法及系統
TWI502502B (zh) 用於處理狀態機引擎所接收之資料之方法及系統
TWI569206B (zh) 用於狀態機引擎之結果產生
TWI497418B (zh) 狀態機引擎、用於處置一狀態機引擎中之狀態向量資料之方法及用於組態一狀態機引擎之一狀態機晶格之方法
TW201411357A (zh) 用於程式化狀態機引擎之方法與裝置