CN104067282A - 状态机晶格中的计数器操作 - Google Patents

状态机晶格中的计数器操作 Download PDF

Info

Publication number
CN104067282A
CN104067282A CN201280068059.3A CN201280068059A CN104067282A CN 104067282 A CN104067282 A CN 104067282A CN 201280068059 A CN201280068059 A CN 201280068059A CN 104067282 A CN104067282 A CN 104067282A
Authority
CN
China
Prior art keywords
counter
input
row
condition
response
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
CN201280068059.3A
Other languages
English (en)
Other versions
CN104067282B (zh
Inventor
哈罗德·B·诺伊斯
戴维·R·布朗
保罗·格伦迪宁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
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
Priority to CN201710637902.XA priority Critical patent/CN107608750B/zh
Publication of CN104067282A publication Critical patent/CN104067282A/zh
Application granted granted Critical
Publication of CN104067282B publication Critical patent/CN104067282B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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
    • 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
    • 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)
  • Debugging And Monitoring (AREA)
  • Control Of Electric Motors In General (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明揭示若干方法及装置,其中存在一种包含有限状态机晶格(30)的装置。所述晶格(30)可包含适合于计数所述晶格(30)中的可编程元件(34、36)检测到一条件的次数的计数器(58)。所述计数器(58)可经配置以响应于计数检测到所述条件达特定次数而输出。举例来说,所述计数器(58)可经配置以响应于以下各项而输出:确定检测到一条件达至少(或不超过)所述特定次数、确定检测到所述条件达恰好所述特定次数或确定在特定次数范围内检测到所述条件。所述计数器(58)可耦合到所述装置中的其它计数器(58)以用于确定高计数操作及/或特定量词。

Description

状态机晶格中的计数器操作
技术领域
本发明的实施例一般来说涉及电子装置,且更具体来说,在某些实施例中涉及用于型式辨识的并行有限状态机。
背景技术
在计算领域中,型式辨识任务日益具挑战性。在计算机之间传输的数据量越来越大,且用户希望检测的型式的数目日益增加。举例来说,通常通过搜索数据流中的型式(例如,特定短语或代码片段)来检测垃圾邮件及恶意软件。型式的数目随垃圾邮件及恶意软件的多样化而增加,因为新型式可经实施以搜索新变化形式。
辨识一型式通常可涉及检测指示所述型式的各种条件。计数检测到一(若干)条件的次数也可为有用的。计数器可经实施以计数检测到一条件的次数。然而,辨识一型式有时可涉及不可通过基本计数器容易地计数的所检测条件的特定量词。
附图说明
图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)存储器、基于多晶硅浮动栅极的存储器及/或各种架构的其它类型的快闪存储器(例如,“与非”存储器、“或非”存储器等)。存储器16可包含可提供将由状态机引擎14分析的数据的一或多个存储器装置,例如DRAM装置。此类装置可称为或包含固态驱动器(SSD)、MultimediaMediaCard(MMC)、SecureDigital(SD)卡、CompactFlash(CF)卡或任何其它适合装置。此外,应了解,此类装置可经由任何适合接口(例如通用串行总线(USB)、外围组件互连(PCI)、高速PCI(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且第二输入62耦合到GOT 60的第二SME 34,如将参考图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内的SME34、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耦合到“或”门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设定到高值且数据流线84上的数据对应于存储器单元80时,存储器单元80将高信号输出到检测线82。当数据流线84上的数据对应于存储器单元80且存储器单元80设定到低值时,存储器单元80将低信号输出到检测线82。检测线82上的来自存储器单元80的输出由检测单元86感测。
在一实例中,输入线62、64上的信号将相应检测单元86设定到作用或非作用状态。当设定到非作用状态时,检测单元86在相应输出72、74上输出低信号,而不管相应检测线82上的信号如何。当设定到作用状态时,检测单元86在从相应SME 34、36的存储器单元82中的一者检测到高信号时在相应输出线72、74上输出高信号。当处于作用状态中时,检测单元86在来自相应SME 34、36的所有存储器单元82的信号为低时在相应输出线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上输出高信号。在其它实例中,当多个数据流线84中的一者在其上具有高信号时,可通过将适当存储器单元80设定到高值来设定SME 34以输出高信号。
在一实例中,可通过从相关联寄存器读取位而将存储器单元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在其上具有高信号时输出高信号。可通过设定第一SME34的输出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的输出可包含指示给定型式的匹配的单个位、包括指示与多个型式的匹配及不匹配的多个位的字及对应于所有或某些可编程元件在给定时刻的状态的状态向量。如所描述,若干个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),将所述语法树转换成自动机(框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的有向连接展示。在一实例中,自动机的反转产生新的自动机,其中某一符号α上的每一转变p→q在同一符号上反转q→p。在反转中,开始状态变为最终状态且最终状态变为开始状态。在一实例中,自动机所辨识(例如,匹配)的语言是当依序输入到所述自动机中时将到达最终状态的所有可能字符串的集。所述自动机所辨识的语言中的每一串追踪从开始状态到一或多个最终状态的路径。
在框116处,在构造自动机之后,优化所述自动机以除其它之外还减小其复杂度及大小。可通过组合冗余状态来优化所述自动机。
在框118处,将经优化的自动机转换成网表。将所述自动机转换成网表将所述自动机的每一状态映射到FSM晶格30上的硬件元件(例如,SME 34、36,其它元件)并确定所述硬件元件之间的连接。
在框120处,放置网表以选择对应于所述网表的每一节点的目标装置的特定硬件元件(例如,SME 34、36,专用元件58)。在一实例中,放置是基于FSM晶格30的一般输入及输出约束而选择每一特定硬件元件。
在框122处,路由所放置的网表以确定用于可编程交换元件(例如,块间交换元件40、块内交换元件42及行内交换元件44)的设定,以便将选定硬件元件耦合在一起以实现网表所描述的连接。在一实例中,通过确定FSM晶格30的将用以连接选定硬件元件及用于可编程交换元件的设定的特定导体来确定用于可编程交换元件的设定。相比于框120处的放置,路由可能考虑硬件元件之间的连接的更特定限制。因此,假定有对FSM晶格30上的导体的实际限制,路由可调整如通过全局放置所确定的所述硬件元件中的一些硬件元件的位置以便做出适当连接。
一旦网表经放置及路由,便可将所述经放置及路由的网表转换成用于编程FSM晶格30的多个位。所述多个位在本文中称作图像。
在框124处,由编译器20公布图像。所述图像包括用于编程FSM晶格30的特定硬件元件的多个位。在其中所述图像包括多个位(例如,0及1)的实施例中,所述图像可称为二进制图像。可将所述位加载到FSM晶格30上以编程SME 34、36、专用元件58及可编程交换元件的状态,以使得经编程FSM晶格30实施具有源代码所描述的功能性的FSM。放置(框120)及路由(框122)可将FSM晶格30中的特定位置处的特定硬件元件映射到自动机中的特定状态。因此,所述图像中的位可编程特定硬件元件以实施所要功能。在一实例中,可通过将机器代码保存到计算机可读媒体来公布所述图像。在另一实例中,可通过在显示装置上显示所述图像来公布所述图像。在又一实例中,可通过将所述图像发送到另一装置(例如用于将所述图像加载到FSM晶格30上的编程装置)来公布所述图像。在再一实例中,可通过将所述图像加载到FSM晶格(例如,FSM晶格30)上来公布所述图像。
在一实例中,可通过将位值从图像直接加载到SME 34、36及其它硬件元件或通过将图像加载到一或多个寄存器中且然后将所述位值从所述寄存器写入到SME 34、36及其它硬件元件来将所述图像加载到FSM晶格30上。在一实例中,FSM晶格30的硬件元件(例如,SME 34、36、专用元件58、可编程交换元件40、42、44)经存储器映射以使得编程装置及/或计算机可通过将所述图像写入到一或多个存储器地址而将所述图像加载到FSM晶格30上。
本文中所描述的方法实例可为至少部分地机器或计算机实施的。一些实例可包含用指令编码的计算机可读媒体或机器可读媒体,所述指令可操作以配置电子装置以执行如在以上实例中所述的方法。此类方法的实施方案可包含代码,例如微码、汇编语言代码、高级语言代码等。此代码可包含用于执行各种方法的计算机可读指令。所述代码可形成计算机程序产品的部分。此外,所述代码可在执行期间或在其它时间有形地存储于一或多个易失性或非易失性计算机可读媒体上。这些计算机可读媒体可包含(但不限于)硬盘、可装卸磁盘、可装卸光盘(例如,压缩光盘及数字视频光盘)、盒式磁带、存储卡或存储棒、随机存取存储器(RAM)、只读存储器(ROM)等。
现在参考图9,其图解说明状态机引擎14的实施例。如先前所描述,状态机引擎14经配置以经由数据总线从源(例如存储器16)接收数据。在所图解说明的实施例中,数据可经由总线接口(例如DDR3总线接口130)发送到状态机引擎14。DDR3总线接口130可能够以大于或等于1千兆字节/秒的速率交换数据。如将了解,取决于将分析的数据的源,总线接口130可为用于将数据交换到数据源及将数据从数据源交换到状态机引擎14的任何适合总线接口,例如“与非”快闪接口、PCI接口等。如先前所描述,状态机引擎14包含经配置以分析数据的一或多个FSM晶格30。每一FSM晶格30可划分成两半晶格。在所图解说明的实施例中,每一半晶格可包含24K SME(例如,SME 34、36)以使得晶格30包含48K SME。晶格30可包括如先前关于图2到5所描述而布置的任何所要数目个SME。此外,尽管图解说明了仅一个FSM晶格30,但状态机引擎14可包含多个FSM晶格30,如先前所描述。
将分析的数据可在总线接口130处接收且经由若干个缓冲器及缓冲器接口传输到FSM晶格30。在所图解说明的实施例中,数据路径包含数据缓冲器132、过程缓冲器134及排间(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的逻辑排并行分析多个数据集。
在所图解说明的实施例中,状态机引擎14还包含解压缩器138及压缩器140以帮助经由状态机引擎14传送大量数据。压缩器140与解压缩器138协同工作以使得可将数据压缩以最小化数据传送时间。通过压缩将分析的数据,可最小化总线利用时间。基于由编译器20提供的信息,可将掩码提供到状态机引擎14以提供可能不对其使用状态机的信息。压缩器140及解压缩器138还可经配置以处置变化的突发长度的数据。通过填补经压缩数据及包含关于每一经压缩区域何时结束的指示符,压缩器140可经由状态机引擎14改进总体处理速度。压缩器140及解压缩器138还可用以压缩及解压缩在由FSM晶格30分析之后的匹配结果数据。
如先前所描述,FSM晶格30的输出可包括状态向量。所述状态向量包括FSM晶格30的可编程元件的状态(例如,经激活或未经激活)。每一状态向量可暂时存储于状态向量高速缓冲存储器142中以供进一步层次式处理及分析。也就是说,可存储每一状态机的状态以使得最终状态可用于进一步分析,同时释放状态机以用于重新编程及/或新数据集的进一步分析。如同典型高速缓冲存储器,状态向量高速缓冲存储器允许存储信息(此处,状态向量)以供快速撷取及使用(此处,(例如)由FSM晶格30撷取及使用)。额外缓冲器(例如状态向量存储器缓冲器、状态向量中间输入缓冲器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递减到零而将计数保持为零。如果断言保持输入166且将滚动输入164解除断言,那么计数器58A可在递减到零之后断言零计数输出176直到在复位输入180处对计数器58A进行复位为止。保持输入166可经断言以执行特定操作。举例来说,为了执行计数操作以确定数据流是否满足第二量词(例如,确定是否检测到一条件达恰好特定次数),可断言保持输入166以便一旦计数器58A已从初始值递减到零便将计数器保持为零。尽管计数器58A保持零计数,但耦合到块32中的计数器58A的其它计数器58A可确定是否检测到所述条件达任何进一步次数,此指示未满足第二量词。
在一些实施例中,一个以上计数器58A可经配置以共同使用以执行一或多个计数操作。针对计数操作使用一个以上计数器58A(称为经链接计数器)可增加经链接计数器的位大小。举例来说,可将块32中的来自行位置0、4、8及12的四个计数器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级联,那么可在计数器(12)上断言ER0输入174、ER1输入172及ER2输入170。当断言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位递减计数器。在一些实施例中,也可使用不同位大小的适合计数器及/或实施不同功能性的计数器。
尽管可易于对本发明做出各种修改及替代形式,但已在图式中通过举例方式展示且在本文中详细描述了特定实施例。然而,应理解,本发明并不意欲限于所揭示的特定形式。而是,本发明意欲涵盖如由以下随附申请专利范围定义的本发明的精神及范畴内的所有修改形式、等效形式及替代方案。

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所述的装置,其包括经配置以响应于检测到一条件而提供所述计数启用信号的可编程元件,其中所述计数器经配置以响应于检测到一条件而使计数递减包括所述计数器经配置以计数所述可编程元件检测到所述条件的次数。
CN201280068059.3A 2011-12-15 2012-12-05 状态机晶格中的计数器操作 Active CN104067282B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710637902.XA CN107608750B (zh) 2011-12-15 2012-12-05 用于型式辨识的装置

Applications Claiming Priority (3)

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
US13/327,499 2011-12-15
PCT/US2012/067988 WO2013090091A2 (en) 2011-12-15 2012-12-05 Counter operation in a state machine lattice

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201710637902.XA Division CN107608750B (zh) 2011-12-15 2012-12-05 用于型式辨识的装置

Publications (2)

Publication Number Publication Date
CN104067282A true CN104067282A (zh) 2014-09-24
CN104067282B CN104067282B (zh) 2017-08-22

Family

ID=47358304

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201280068059.3A Active CN104067282B (zh) 2011-12-15 2012-12-05 状态机晶格中的计数器操作
CN201710637902.XA Active CN107608750B (zh) 2011-12-15 2012-12-05 用于型式辨识的装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201710637902.XA Active CN107608750B (zh) 2011-12-15 2012-12-05 用于型式辨识的装置

Country Status (7)

Country Link
US (4) US8648621B2 (zh)
EP (1) EP2791854B1 (zh)
JP (1) JP6109186B2 (zh)
KR (1) KR101840905B1 (zh)
CN (2) CN104067282B (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
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
US8782624B2 (en) 2011-12-15 2014-07-15 Micron Technology, Inc. Methods and systems for detection in a state machine
US8648621B2 (en) * 2011-12-15 2014-02-11 Micron Technology, Inc. Counter operation 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
US8593175B2 (en) 2011-12-15 2013-11-26 Micron Technology, Inc. Boolean logic in a state machine lattice
US9443156B2 (en) 2011-12-15 2016-09-13 Micron Technology, Inc. Methods and systems for data analysis in a state machine
US20130275709A1 (en) 2012-04-12 2013-10-17 Micron Technology, Inc. Methods for reading data from a storage buffer including delaying activation of a column select
US9389841B2 (en) 2012-07-18 2016-07-12 Micron Technology, Inc. Methods and systems for using state vector data in a state machine engine
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
US9075428B2 (en) 2012-08-31 2015-07-07 Micron Technology, Inc. Results generation for state machine engines
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
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
US9703574B2 (en) 2013-03-15 2017-07-11 Micron Technology, Inc. Overflow detection and correction in state machine engines
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
WO2016109570A1 (en) 2014-12-30 2016-07-07 Micron Technology, Inc Systems and devices for accessing a state machine
US11366675B2 (en) 2014-12-30 2022-06-21 Micron Technology, Inc. Systems and devices for accessing a state machine
US10769099B2 (en) 2014-12-30 2020-09-08 Micron Technology, Inc. Devices for time division multiplexing of state machine engine signals
GB2536921A (en) * 2015-03-31 2016-10-05 Fujitsu Ltd Apparatus, program, and method for updating cache memory
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
US10846103B2 (en) 2015-10-06 2020-11-24 Micron Technology, Inc. Methods and systems for representing processing resources
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
US10592450B2 (en) 2016-10-20 2020-03-17 Micron Technology, Inc. Custom compute cores in integrated circuit devices
US10929764B2 (en) 2016-10-20 2021-02-23 Micron Technology, Inc. Boolean satisfiability
US20190081963A1 (en) * 2017-09-08 2019-03-14 Sophos Limited Realtime event detection

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6212125B1 (en) * 1998-05-19 2001-04-03 Oki Electric Industry Co., Ltd. Asynchronous semiconductor memory device with a control circuit that controls the latch timing of an input signal
CN1713133A (zh) * 2004-06-25 2005-12-28 富士通株式会社 可重构处理器和半导体器件
US20080140661A1 (en) * 2006-12-08 2008-06-12 Pandya Ashish A Embedded Programmable Intelligent Search Memory
WO2011081799A2 (en) * 2009-12-15 2011-07-07 Micron Technology, Inc. Multi-level hierarchical routing matrices for pattern-recognition processors

Family Cites Families (43)

* 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
US7487542B2 (en) 2004-01-14 2009-02-03 International Business Machines Corporation Intrusion detection using a network processor and a parallel pattern detection engine
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
JP5040427B2 (ja) * 2007-05-11 2012-10-03 ソニー株式会社 データ処理方法、データ処理装置、固体撮像装置、撮像装置、電子機器
JP4505766B2 (ja) * 2008-06-30 2010-07-21 ルネサスエレクトロニクス株式会社 データ処理装置及びトリミングデータ読み出し方法
US8209521B2 (en) 2008-10-18 2012-06-26 Micron Technology, Inc. Methods of indirect register access including automatic modification of a directly accessible address register
US8938590B2 (en) 2008-10-18 2015-01-20 Micron Technology, Inc. Indirect register access method and system
US9639493B2 (en) 2008-11-05 2017-05-02 Micron Technology, Inc. Pattern-recognition processor with results buffer
US7917684B2 (en) 2008-11-05 2011-03-29 Micron Technology, Inc. Bus translator
US7970964B2 (en) 2008-11-05 2011-06-28 Micron Technology, Inc. Methods and systems to accomplish variable width data input
US20100118425A1 (en) 2008-11-11 2010-05-13 Menachem Rafaelof Disturbance rejection in a servo control loop using pressure-based disc mode sensor
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
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
US8281395B2 (en) 2009-01-07 2012-10-02 Micron Technology, Inc. Pattern-recognition processor with matching-data reporting module
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
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
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
US7888983B2 (en) * 2009-06-26 2011-02-15 Qualcomm Incorporated Predetermined duty cycle signal generator
US8159900B2 (en) 2009-08-06 2012-04-17 Unisyn Medical Technologies, Inc. Acoustic system quality assurance and testing
US8489534B2 (en) 2009-12-15 2013-07-16 Paul D. Dlugosch Adaptive content inspection
US9501705B2 (en) 2009-12-15 2016-11-22 Micron Technology, Inc. Methods and apparatuses for reducing power consumption in a pattern recognition processor
US8766666B2 (en) * 2010-06-10 2014-07-01 Micron Technology, Inc. Programmable device, hierarchical parallel machines, and methods for providing state information
US8601013B2 (en) * 2010-06-10 2013-12-03 Micron Technology, Inc. Analyzing data using a hierarchical structure
US8726256B2 (en) * 2011-01-25 2014-05-13 Micron Technology, Inc. Unrolling quantifications to control in-degree and/or out-degree of automaton
JP5848778B2 (ja) 2011-01-25 2016-01-27 マイクロン テクノロジー, インク. Fsmを実装するための専用要素の利用
KR101640295B1 (ko) 2011-01-25 2016-07-15 마이크론 테크놀로지, 인크. 정규 표현을 컴파일하기 위한 방법 및 장치
KR101551045B1 (ko) 2011-01-25 2015-09-07 마이크론 테크놀로지, 인크. 요소 이용을 위한 상태 그룹화
US8782624B2 (en) 2011-12-15 2014-07-15 Micron Technology, Inc. Methods and systems for detection in a state machine
US8648621B2 (en) * 2011-12-15 2014-02-11 Micron Technology, Inc. Counter operation 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
US9443156B2 (en) 2011-12-15 2016-09-13 Micron Technology, Inc. Methods and systems for data analysis in a state machine
US8593175B2 (en) 2011-12-15 2013-11-26 Micron Technology, Inc. Boolean logic in a state machine lattice

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6212125B1 (en) * 1998-05-19 2001-04-03 Oki Electric Industry Co., Ltd. Asynchronous semiconductor memory device with a control circuit that controls the latch timing of an input signal
CN1713133A (zh) * 2004-06-25 2005-12-28 富士通株式会社 可重构处理器和半导体器件
US20080140661A1 (en) * 2006-12-08 2008-06-12 Pandya Ashish A Embedded Programmable Intelligent Search Memory
US7827190B2 (en) * 2006-12-08 2010-11-02 Pandya Ashish A Complex symbol evaluation for programmable intelligent search memory
WO2011081799A2 (en) * 2009-12-15 2011-07-07 Micron Technology, Inc. Multi-level hierarchical routing matrices for pattern-recognition processors

Also Published As

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

Similar Documents

Publication Publication Date Title
CN104067282A (zh) 状态机晶格中的计数器操作
US11741014B2 (en) Methods and systems for handling data received by a state machine engine
CN104011723B (zh) 状态机晶格中的布尔逻辑
CN104011736B (zh) 用于状态机中的检测的方法及系统
CN103999035B (zh) 用于状态机中的数据分析的方法及系统
CN103988212B (zh) 用于在状态机中路由的方法及系统
US10067901B2 (en) Methods and apparatuses for providing data received by a state machine engine
CN103547998B (zh) 用于编译正则表达式的方法和设备
US10489062B2 (en) Methods and systems for using state vector data in a state machine engine
CN104603742A (zh) 用于状态机引擎的结果产生
CN104583935A (zh) 状态机引擎中的指令插入
CN104487957A (zh) 用于编程状态机引擎的方法及装置
CN104603741A (zh) 在模式辨识处理系统中用于电力管理的方法及系统
CN103430148A (zh) 用于元件利用的状态分组

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant