CN104487957A - 用于编程状态机引擎的方法及装置 - Google Patents

用于编程状态机引擎的方法及装置 Download PDF

Info

Publication number
CN104487957A
CN104487957A CN201380038508.4A CN201380038508A CN104487957A CN 104487957 A CN104487957 A CN 104487957A CN 201380038508 A CN201380038508 A CN 201380038508A CN 104487957 A CN104487957 A CN 104487957A
Authority
CN
China
Prior art keywords
state machine
data
dot matrix
fsm
reparation
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
CN201380038508.4A
Other languages
English (en)
Other versions
CN104487957B (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
Publication of CN104487957A publication Critical patent/CN104487957A/zh
Application granted granted Critical
Publication of CN104487957B publication Critical patent/CN104487957B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • 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/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • 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
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Automation & Control Theory (AREA)
  • Logic Circuits (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Image Processing (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)

Abstract

本发明揭示一种状态机引擎,其具有程序缓冲器。所述程序缓冲器经配置以经由总线接口接收用于配置状态机点阵的配置数据。所述状态机引擎还包含修复映射缓冲器,所述修复映射缓冲器经配置以经由所述总线接口将修复映射数据提供到外部装置。所述状态机点阵包含多个可编程元件。每一可编程元件包含经配置以分析数据并输出所述分析的结果的多个存储器单元。

Description

用于编程状态机引擎的方法及装置
技术领域
本发明的实施例大体上涉及电子装置,且更具体地说,在某些实施例中涉及具有用于数据分析的并行装置的电子装置。
背景技术
对常规的基于冯·诺伊曼(von Neumann)的计算机执行复杂数据分析(例如,样式辨识)可为低效率的。然而,生物大脑(尤其是人类大脑)善于执行复杂数据分析。当前研究表明,人类大脑使用大脑新皮质中的一系列经层次型组织的神经元层执行数据分析。层次的较低层中的神经元分析来自(例如)感觉器官的“原始信号”,而较高层中的神经元分析来自较低级别中的神经元的信号输出。大脑新皮质中的这个层次型系统可能结合大脑的其它区域完成复杂数据分析,这使人类能够执行例如空间推理、意识思考及复杂语言的高级功能。
在计算领域中,例如,样式辨识任务越来越具有挑战性。计算机之间传输的数据量不断增大,且用户希望检测的样式的数目日益增加。例如,通常通过在数据流中搜索样式(例如,代码的特定短语或片段)来检测垃圾邮件或恶意软件。样式的数目随着垃圾邮件及恶意软件的多样性而增加,这是因为可实施新样式以搜索新变体。针对这些样式中的每一者搜索数据流可形成计算瓶颈。通常,当接收到数据流时,针对每一样式一次一个地搜索数据流。在系统准备搜索数据流的下一部分之前的延迟随着样式的数目而增加。因此,样式辨识可减慢数据的接收。
硬件已经设计以针对样式搜索数据流,但是这个硬件通常不能够在给定的时间量内处理足够量的数据。经配置以搜索数据流的一些装置通过将数据流分布在多个电路之间而在给定的时间量内处理足够量的数据。所述电路各自确定数据流是否匹配于样式的部分。通常,大量电路并行地操作,每一电路大体上同时搜索数据流。然而,至今仍未存在实际上允许以与生物大脑的方式更相当的方式执行复杂数据分析的系统。可期望开发此类系统。
附图说明
图1说明根据本发明的各种实施例的具有状态机引擎的系统的实例。
图2说明根据本发明的各种实施例的图1的状态机引擎的有限状态机(FSM)点阵的实例。
图3说明根据本发明的各种实施例的图2的FSM点阵的块的实例。
图4说明根据本发明的各种实施例的图3的块的行的实例。
图5说明根据本发明的各种实施例的图4的列的两个为一组的实例。
图6说明根据本发明的各种实施例的有限状态机图形的实例。
图7说明根据本发明的各种实施例的使用FSM点阵实施的双级别层次的实例。
图8说明根据本发明的各种实施例的用于使编译器将源代码转换为二进制文件以编程图2的FSM点阵的方法的实例。
图9说明根据本发明的各种实施例的状态机引擎。
图10说明展示根据本发明的各种实施例的用于编程状态机引擎中的FSM点阵的方法的流程图。
具体实施方式
现在参考诸图,图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可用于利用高处理速度的系统中的复杂数据分析(例如,样式辨识)。例如,本文中描述的实施例可合并在具有1千兆字节/秒的处理速度的系统中。因此,在利用状态机引擎14的情况下,可快速地分析来自高速存储器装置或其它外部装置的数据。状态机引擎14可根据若干准则(例如,搜索项)大约同时(例如,在单一装置周期期间)分析数据流。状态机引擎14的级别上的FSM群集内的FSM点阵中的每一者可各自大约同时从数据流接收同一搜索项,且并行FSM点阵中的每一者可以处理准则确定所述项是否将状态机引擎14推进到下一状态。状态机引擎14可根据相对大数目个准则(例如,大于100个、大于110个或大于10,000个准则)分析诸项。因为FSM点阵并行地操作,所以其可将准则应用于具有相对高带宽的数据流(例如,大于或一般等于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)、多媒体卡(MMC)、安全数字(SD)卡、闪存(CF)卡,或任何其它合适的装置。此外,应了解,这些装置可经由任何合适的接口(例如通用串行总线(USB)、外围组件互连(PCI)、快速PCI(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的元件对的多个SME34、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),且第二多个行互连导体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内的两个SME34、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中的一者,或耦合到第一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时,存储器单元80将高信号输出到检测线82。当数据流线84上的数据选择存储器单元80且将存储器单元80设置为低值时,存储器单元80将低信号输出到检测线82。检测线82上来自存储器单元80的输出是由检测单元86感测。
在实例中,输入线62、64上的信号将相应检测单元86设置为活动状态或非活动状态。当设置为非活动状态时,不管相应检测线82上的信号如何,检测单元86在相应输出72、74上输出低信号。当设置为活动状态时,检测单元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上输出高信号。在其它实例中,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上具有高信号时输出高信号。第二SME36最初可被设置为非活动状态,但是在活动时可经设置以在对应于位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);将自动机转换为连线表(方框118);将连线表放置于硬件上(方框120);路由连线表(方框122);及发布所得图像(方框124)。
在实例中,编译器20包含允许软件开发者创建图像以实施FSM点阵30上的FSM的应用程序编程接口(API)。编译器20提供用以将源代码中的正则表达式的输入集合转换为经配置以配置FSM点阵30的图像的方法。编译器20可通过用于具有冯·诺伊曼体系结构的计算机的指令加以实施。这些指令可致使计算机上的处理器12实施编译器20的功能。例如,所述指令在由处理器12执行时可致使处理器12对可由处理器12存取的源代码执行如方框112、114、116、118、120、122及124中描述的动作。
在实例中,源代码描述用于识别符号组内的符号样式的搜索字符串。为了描述搜索字符串,源代码可包含多个正则表达式(regex)。regex可为用于描述符号搜索样式的字符串。regex广泛地用于各种计算机域中,例如编程语言、文本编辑器、网络安全性及其它。在实例中,由编译器支持的正则表达式包含用于分析未结构化数据的准则。未结构化数据可包含自由格式的数据,且不具有应用于数据内的字的索引。字可包含数据内可打印及不可打印的字节的任何组合。在实例中,编译器可支持多种不同源代码语言以用于实施包含Perl(例如,Perl兼容正则表达式(PCRE))、PHR、Jave及NET语言的regex。
在方框112处,编译器20可剖析源代码以形成相关连接的运算符的布置,其中不同类型的运算符对应于由源代码实施的不同函数(例如,由源代码中的regex实施的不同函数)。剖析源代码可创建源代码的通用表示。在实例中,通用表示包括呈称作语法树的树形图的形式的源代码中的regex的经编码表示。本文中描述的实例参考作为语法树(亦称作“抽象语法树”)的布置,然而,在其它实例中,可使用具体语法树或其它布置。
如上文所提及,因为编译器20可支持源代码的多种语言,所以剖析将源代码转换为非语言特定表示(例如语法树),而不管语言如何。因此,由编译器20进行的进一步处理(方框114、116、118、120)可从共同输入结构发挥作用,而不管源代码的语言如何。
如上文所提到,语法树包含相关地连接的多个运算符。语法树可包含多种不同类型的运算符。即,不同运算符可对应于源代码中由regex实施的不同函数。
在方框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、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千兆字节/秒的速率交换(例如,提供及接收)数据。此类数据交换速率可大于由状态机引擎14分析数据的速率。应了解,取决于待分析的数据的源,总线接口130可为用于将数据交换到状态机引擎14及从数据源交换到状态机引擎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允许通过FSM点阵30的逻辑排并行地分析多个数据集合。例如,多个物理装置(例如,状态机引擎14、芯片、单独装置)可以布置成排,且可经由IR总线与进程缓冲器接口136相互提供数据。出于本申请案的目的,术语“排”是指连接到同一芯片选择的状态机引擎14的集合。在所说明的实施例中,IR总线与进程缓冲器接口136可包含32位数据总线。在其它实施例中,IR总线与进程缓冲器接口136可包含任何合适的数据总线,例如128位数据总线。
在所说明的实施例中,状态机引擎14还包含解压缩器138及压缩器140以帮助通过状态机引擎14提供状态矢量数据。压缩器140连同解压缩器138一起工作,使得可压缩状态矢量数据以最小化数据提供次数。通过压缩状态矢量数据,可最小化总线利用时间。压缩器140及解压缩器138还可经配置以处置突发长度变化的状态矢量数据。通过填补经压缩的状态矢量数据且包含关于每一经压缩区域何时结束的指示符,压缩器140可通过状态机引擎14改善整体处理速度。压缩器140可用以在由FSM点阵30分析之后压缩匹配结果数据。压缩器140及解压缩器138还可用以压缩及解压缩配置数据。在一个实施例中,可停用(例如,关闭)压缩器140及解压缩器138,使得流动到压缩器140及解压缩器138及/或从压缩器140及解压缩器138流动的数据未被修改。
如先前所描述,FSM点阵30的输出可包括状态矢量。状态矢量包括FSM点阵30的SME 34、36的状态(例如,激活或未激活),及计数器58的动态(例如,当前)计数。状态机引擎14包含状态矢量系统141,状态矢量系统141具有状态矢量高速缓冲存储器142、状态矢量存储器缓冲器144、状态矢量中间输入缓冲器146及状态矢量中间输出缓冲器148。状态矢量系统141可用以存储FSM点阵30的多个状态矢量,且将状态矢量提供到FSM点阵30以使FSM点阵30恢复到对应于所提供的状态矢量的状态。例如,每一状态矢量可暂时存储在状态矢量高速缓冲存储器142中。即,可存储每一SME 34、36的状态,使得状态可经恢复且随后用于进一步分析,同时释放SME 34、36以进一步分析新数据集合(例如,搜索项)。例如,类似于典型高速缓冲存储器,状态矢量高速缓冲存储器142允许存储状态矢量以供快速检索及使用,这里是由FSM点阵30快速检索及使用。在所说明的实施例中,状态矢量高速缓冲存储器142可存储高达512个状态矢量。
应了解,可在排中的不同状态机引擎14(例如,芯片)之间交换状态矢量数据。可在不同状态机引擎14之间交换状态矢量数据以用于以下各种目的,例如:使状态机引擎14的FSM点阵30的SME 34、36的状态同步、跨多个状态机引擎14执行相同功能、跨多个状态机引擎14重现结果、跨多个状态机引擎14使结果级联、存储用以分析通过多个状态机引擎14级联的数据的SME 34、36的状态历史,等等。此外,应注意,在状态机引擎14内,状态矢量数据可用以快速地配置FSM点阵30的SME 34、36。例如,状态矢量数据可用以:使SME 34、36的状态恢复到初始化状态(例如,搜索新搜索项);使SME 34、36的状态恢复到先前状态(例如,搜索先前所搜索的搜索项);及将SME 34、36的状态改变为经配置用于级联配置(例如,以级联搜索来搜索一搜索项)。在某些实施例中,可将状态矢量数据提供到总线接口130,使得可将状态矢量数据提供到处理器12(例如,用于分析状态矢量数据、重配置状态矢量数据以应用修改、重配置状态矢量数据以改善SME 34、36的效率,等等)。
例如,在某些实施例中,状态机引擎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可用以将状态矢量数据提供到IR总线与进程缓冲器接口136(例如,用于其它FSM点阵30)、压缩器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。例如,可将初始(例如,开始)状态矢量数据从程序缓冲器系统提供到FSM点阵30(例如,经由解压缩器138)。解压缩器138可用以解压缩经提供以编程FSM点阵30的配置数据(例如,状态矢量数据、路由交换机数据、SME 34、36状态、布尔函数数据、计数器数据、匹配MUX数据)。
类似地,还可提供修复映射缓冲器系统(例如,保存与修复映射缓冲器158)以存储数据(例如,保存与修复映射)以供设置及使用。由修复映射缓冲器系统存储的数据可包含对应于经修复的硬件元件的数据,例如识别哪些SME 34、36被修复的数据。修复映射缓冲器系统可经由任何合适的方式接收数据。例如,可将数据从“熔丝映射”存储器(其提供在最终制造测试期间对装置进行的修复的映射)提供到修复映射缓冲器158。作为另一实例,修复映射缓冲器系统可包含用以修改(例如,定制)标准编程文件使得所述标准编程文件可在具有经修复体系结构的FSM点阵30中操作(例如,可绕过FSM点阵30中的不良SME 34、36,使得其未被使用)的数据。压缩器140可用以压缩从熔丝映射存储器提供到修复映射缓冲器158的数据。如所说明,总线接口130可用以将数据提供到程序缓冲器156,且从修复映射缓冲器158提供数据。应了解,可压缩提供到程序缓冲器156及/或从修复映射缓冲器158提供的数据。在一些实施例中,经由状态机引擎14外部的装置(例如,处理器12、存储器16、编译器20等等)将数据提供到总线接口130及/或从总线接口130接收数据。状态机引擎14外部的装置可经配置以接收从修复映射缓冲器158提供的数据、存储所述数据、分析所述数据、修改所述数据,及/或将新或经修改数据提供到程序缓冲器156。
状态机引擎14包含用以编程FSM点阵30的点阵编程系统159。如所说明,点阵编程系统159可从指令队列133接收数据(例如,配置指令)。此外,点阵编程系统159可从程序缓冲器156接收数据(例如,配置数据)。点阵编程系统159可使用配置指令及配置数据以配置FSM点阵30(例如,配置路由交换机、SME 34、36、布尔单元、计数器、匹配MUX)。点阵编程系统159可使用解压缩器138以压缩数据,且使用压缩器140以压缩数据(例如,用于与程序缓冲器156及修复映射缓冲器158交换的数据)。
现在参考图10,说明展示用于编程状态机引擎14中的FSM点阵30的方法160的流程图。方法160可包含:将配置数据提供到程序缓冲器156(方框162);将配置指令提供到指令缓冲器133(方框164);起始配置更新(方框166);从指令缓冲器133读取指令(方框168);确定指令是否为配置指令(方框170);从程序缓冲器156读取配置数据且在配置数据被压缩的情况下解压缩配置数据(方框172);及将配置数据提供到FSM点阵30(方框174)。
在一个实施例中,在方框162处,处理器12可经由总线接口130将配置数据提供到程序缓冲器系统(例如,恢复映射与程序缓冲器156)。此外,处理器12可经由总线接口130将配置指令提供到指令缓冲器133(方框164)。在方框166处,可起始配置更新(例如,经由处理器12、点阵编程系统159或状态机引擎14)。然后,在方框168处,点阵编程系统159可读取存储在指令缓冲器133中的指令。紧接着,在方框170处,点阵编程系统159可确定从指令缓冲器133读取的指令是否为配置指令。如果指令不为配置指令,那么在方框168处,点阵编程系统159读取存储在指令缓冲器133中的额外指令。然而,如果指令为配置指令,那么点阵编程系统159读取存储在程序缓冲器系统中的配置数据(方框172)。在一些实施例中,可压缩配置数据。因此,还在方框172处,点阵编程系统159可解压缩配置数据(例如,经由解压缩器138)。然后,点阵编程系统159将配置数据提供到FSM点阵30(方框174)。
虽然本发明可容许各种修改及替代形式,但是已在图式中作为实例而展示且在本文中详细地描述特定实施例。然而,应理解,本发明并不希望限于所披露的特定形式。实情是,本发明将涵盖属于如由所附权利要求书定义的本发明的精神及范围的所有修改、等效者及替代。

Claims (25)

1.一种状态机引擎,其包括:
程序缓冲器,其经配置以经由总线接口接收用于配置状态机点阵的配置数据;及
修复映射缓冲器,其经配置以经由所述总线接口将修复映射数据提供到外部装置;
其中所述状态机点阵包括多个可编程元件,且每一可编程元件包括经配置以分析数据并输出所述分析的结果的多个存储器单元。
2.根据权利要求1所述的状态机引擎,其中所述程序缓冲器经配置以接收经压缩的配置数据。
3.根据权利要求1所述的状态机引擎,其中所述程序缓冲器经配置以接收非压缩的配置数据。
4.根据权利要求1所述的状态机引擎,其中所述修复映射缓冲器经配置以提供经压缩的修复映射数据。
5.根据权利要求1所述的状态机引擎,其中所述修复映射缓冲器经配置以提供非压缩的修复映射数据。
6.根据权利要求1所述的状态机引擎,其中所述外部装置经配置以:接收从所述修复映射缓冲器提供的修复映射数据;分析所述修复映射数据;构造配置数据的经修改版本;及将配置数据的所述经修改版本提供到所述程序缓冲器。
7.根据权利要求1所述的状态机引擎,其中所述程序缓冲器经配置以将配置数据提供到点阵编程系统以配置所述状态机点阵。
8.一种状态机引擎,其包括经配置以经由总线接口接收用于配置状态机点阵的配置数据的程序缓冲器,其中所述状态机点阵包括多个可编程元件,且每一可编程元件包括经配置以分析数据流的至少一部分并输出所述分析的结果的多个存储器单元。
9.根据权利要求8所述的状态机引擎,其中所述程序缓冲器经配置以将配置数据提供到点阵编程系统。
10.根据权利要求9所述的状态机引擎,其中所述点阵编程系统经配置以将配置数据提供到所述状态机点阵以配置所述状态机点阵。
11.根据权利要求8所述的状态机引擎,其中所述程序缓冲器经配置以将经压缩的配置数据提供到点阵编程系统。
12.根据权利要求11所述的状态机引擎,其中所述点阵编程系统经配置以在接收到所述经压缩的配置数据之后解压缩所述配置数据。
13.一种状态机引擎,其包括经配置以经由总线接口将修复映射数据从状态机点阵提供到外部装置的修复映射缓冲器,其中所述状态机点阵包括多个可编程元件,且每一可编程元件包括经配置以分析数据流的至少一部分并输出所述分析的结果的多个存储器单元。
14.根据权利要求13所述的状态机引擎,其中所述修复缓冲器经配置以从点阵编程系统接收配置数据。
15.根据权利要求13所述的状态机引擎,其中所述修复缓冲器经配置以从点阵编程系统接收经压缩的修复映射数据。
16.根据权利要求15所述的状态机引擎,其中所述点阵编程系统经配置以在将所述修复映射数据提供到所述修复缓冲器之前压缩所述修复映射数据。
17.根据权利要求13所述的状态机引擎,其中所述外部装置经配置以存储所述修复映射数据。
18.根据权利要求13所述的状态机引擎,其中所述外部装置经配置以分析所述修复映射数据并将经修改的配置数据提供到所述状态机引擎。
19.根据权利要求13所述的状态机引擎,其中所述修复映射数据包括对应于所述状态机点阵的经修复部分的数据。
20.根据权利要求13所述的状态机引擎,其中所述修复映射数据包括识别所述状态机点阵的哪些部分被修复的指示,及识别所述状态机点阵如何被修复的指示。
21.一种用于配置状态机引擎的状态机点阵的方法,其包括:
在所述状态机引擎的程序缓冲器处接收配置数据;
将所述配置数据从所述程序缓冲器提供到点阵编程系统;及
使用所述点阵编程系统配置所述状态机点阵,其中所述状态机点阵包括多个可编程元件,且每一可编程元件包括经配置以分析数据流的至少一部分并输出所述分析的结果的多个存储器单元。
22.根据权利要求21所述的方法,其包括在配置所述状态机点阵之前解压缩配置数据。
23.根据权利要求21所述的方法,其包括在所述状态机引擎的指令缓冲器处接收指令。
24.根据权利要求23所述的方法,其包括将所述指令提供到所述点阵编程系统。
25.根据权利要求24所述的方法,其中使用所述点阵编程系统配置所述状态机点阵包括确定所述指令是否为配置指令,及在所述指令为配置指令的情况下配置所述状态机点阵。
CN201380038508.4A 2012-07-18 2013-07-09 用于编程状态机引擎的方法及装置 Active CN104487957B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/552,492 2012-07-18
US13/552,492 US9304968B2 (en) 2012-07-18 2012-07-18 Methods and devices for programming a state machine engine
PCT/US2013/049755 WO2014014712A1 (en) 2012-07-18 2013-07-09 Methods and devices for programming a state machine engine

Publications (2)

Publication Number Publication Date
CN104487957A true CN104487957A (zh) 2015-04-01
CN104487957B CN104487957B (zh) 2017-10-03

Family

ID=49947414

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380038508.4A Active CN104487957B (zh) 2012-07-18 2013-07-09 用于编程状态机引擎的方法及装置

Country Status (7)

Country Link
US (4) US9304968B2 (zh)
EP (1) EP2875436A4 (zh)
JP (1) JP6207605B2 (zh)
KR (1) KR101922762B1 (zh)
CN (1) CN104487957B (zh)
TW (1) TWI492062B (zh)
WO (1) WO2014014712A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112306889A (zh) * 2020-11-23 2021-02-02 国网北京市电力公司 充电桩的测试方法、装置、存储介质及处理器
CN113918488A (zh) * 2020-07-10 2022-01-11 美光科技公司 用于存储器装置的可配置链路接口

Families Citing this family (25)

* 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
US9323994B2 (en) 2009-12-15 2016-04-26 Micron Technology, Inc. Multi-level hierarchical routing matrices for pattern-recognition processors
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
US9075428B2 (en) 2012-08-31 2015-07-07 Micron Technology, Inc. Results generation for 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
US9218862B1 (en) 2014-04-11 2015-12-22 Altera Corporation Method and apparatus for operating finite-state machines in configurable storage circuits
US10430210B2 (en) 2014-12-30 2019-10-01 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
WO2016109571A1 (en) 2014-12-30 2016-07-07 Micron Technology, Inc Devices for time division multiplexing of state machine engine signals
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
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
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
EP3340044A1 (en) * 2016-12-22 2018-06-27 Ecole Nationale de l'Aviation Civile Method and apparatus for processing software code
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
US10740150B2 (en) * 2018-07-11 2020-08-11 X-Drive Technology, Inc. Programmable state machine controller in a parallel processing system

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5659551A (en) * 1995-05-31 1997-08-19 International Business Machines Corporation Programmable computer system element with built-in self test method and apparatus for repair during power-on
US6011407A (en) * 1997-06-13 2000-01-04 Xilinx, Inc. Field programmable gate array with dedicated computer bus interface and method for configuring both
US6614703B2 (en) * 2000-01-13 2003-09-02 Texas Instruments Incorporated Method and system for configuring integrated systems on a chip
US6697979B1 (en) * 1997-12-22 2004-02-24 Pact Xpp Technologies Ag Method of repairing integrated circuits
CN1738219A (zh) * 2004-05-14 2006-02-22 夏普株式会社 发送接收装置、数据传送系统、发送接收方法及程序
US20110307433A1 (en) * 2010-06-10 2011-12-15 Paul Dlugosch Programmable device, heirarchical parallel machines, methods for providing state information
US20120069691A1 (en) * 2008-05-15 2012-03-22 Micron Technology, Inc. Block repair scheme

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5452231A (en) * 1988-10-05 1995-09-19 Quickturn Design Systems, Inc. Hierarchically connected reconfigurable logic assembly
US5774738A (en) * 1993-05-03 1998-06-30 Texas Instruments Incorporated State machines
US5991907A (en) 1996-02-02 1999-11-23 Lucent Technologies Inc. Method for testing field programmable gate arrays
US6587979B1 (en) * 1999-10-18 2003-07-01 Credence Systems Corporation Partitionable embedded circuit test system for integrated circuit
US20050102573A1 (en) 2003-11-03 2005-05-12 Macronix International Co., Ltd. In-circuit configuration architecture for embedded configurable logic array
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 再構成可能演算装置および半導体装置
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
EP2092529B8 (en) * 2007-04-26 2016-07-27 Avago Technologies General IP (Singapore) Pte. Ltd. Embedded memory repair on the basis of fuse burn state machine and a fuse download state machine
US8296120B2 (en) * 2008-06-20 2012-10-23 Utah State University FPGA simulated annealing accelerator
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
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
US20100118425A1 (en) 2008-11-11 2010-05-13 Menachem Rafaelof Disturbance rejection in a servo control loop using pressure-based disc mode sensor
US10007486B2 (en) 2008-12-01 2018-06-26 Micron Technology, Inc. Systems and methods to enable identification of different data sets
US20100138575A1 (en) 2008-12-01 2010-06-03 Micron Technology, Inc. Devices, systems, and methods to synchronize simultaneous dma parallel processing of a single data stream by multiple devices
US9348784B2 (en) 2008-12-01 2016-05-24 Micron Technology, Inc. Systems and methods for managing endian mode of a device
US9164945B2 (en) 2008-12-01 2015-10-20 Micron Technology, Inc. Devices, systems, and methods to synchronize parallel processing of a single data stream
US8140780B2 (en) 2008-12-31 2012-03-20 Micron Technology, Inc. Systems, methods, and devices for configuring a device
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
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
US8281190B2 (en) * 2009-08-02 2012-10-02 Avago Technologies Enterprise IP (Singapore) Pte. Ltd. Circuits and methods for processing memory redundancy data
US9323994B2 (en) 2009-12-15 2016-04-26 Micron Technology, Inc. Multi-level hierarchical routing matrices for pattern-recognition processors
US9501705B2 (en) 2009-12-15 2016-11-22 Micron Technology, Inc. Methods and apparatuses for reducing power consumption in a pattern recognition processor
US8489534B2 (en) 2009-12-15 2013-07-16 Paul D. Dlugosch Adaptive content inspection
US8601013B2 (en) 2010-06-10 2013-12-03 Micron Technology, Inc. Analyzing data using a hierarchical structure
US8726256B2 (en) 2011-01-25 2014-05-13 Micron Technology, Inc. Unrolling quantifications to control in-degree and/or out-degree of automaton
JP5763784B2 (ja) 2011-01-25 2015-08-12 マイクロン テクノロジー, インク. 要素利用のための状態のグループ化
CN103547999B (zh) 2011-01-25 2017-05-17 美光科技公司 利用专用元件实施有限状态机
JP5763783B2 (ja) 2011-01-25 2015-08-12 マイクロン テクノロジー, インク. 正規表現をコンパイルするための方法および装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5659551A (en) * 1995-05-31 1997-08-19 International Business Machines Corporation Programmable computer system element with built-in self test method and apparatus for repair during power-on
US6011407A (en) * 1997-06-13 2000-01-04 Xilinx, Inc. Field programmable gate array with dedicated computer bus interface and method for configuring both
US6697979B1 (en) * 1997-12-22 2004-02-24 Pact Xpp Technologies Ag Method of repairing integrated circuits
US6614703B2 (en) * 2000-01-13 2003-09-02 Texas Instruments Incorporated Method and system for configuring integrated systems on a chip
CN1738219A (zh) * 2004-05-14 2006-02-22 夏普株式会社 发送接收装置、数据传送系统、发送接收方法及程序
US20120069691A1 (en) * 2008-05-15 2012-03-22 Micron Technology, Inc. Block repair scheme
US20110307433A1 (en) * 2010-06-10 2011-12-15 Paul Dlugosch Programmable device, heirarchical parallel machines, methods for providing state information

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113918488A (zh) * 2020-07-10 2022-01-11 美光科技公司 用于存储器装置的可配置链路接口
CN113918488B (zh) * 2020-07-10 2023-03-24 美光科技公司 用于存储器装置的可配置链路接口
US11740795B2 (en) 2020-07-10 2023-08-29 Micron Technology, Inc. Configurable link interfaces for a memory device
CN112306889A (zh) * 2020-11-23 2021-02-02 国网北京市电力公司 充电桩的测试方法、装置、存储介质及处理器
CN112306889B (zh) * 2020-11-23 2023-10-20 国网北京市电力公司 充电桩的测试方法、装置、存储介质及处理器

Also Published As

Publication number Publication date
EP2875436A4 (en) 2016-11-09
US20200117977A1 (en) 2020-04-16
WO2014014712A1 (en) 2014-01-23
KR20150036166A (ko) 2015-04-07
US20160217365A1 (en) 2016-07-28
US9304968B2 (en) 2016-04-05
US20140025614A1 (en) 2014-01-23
EP2875436A1 (en) 2015-05-27
US10509995B2 (en) 2019-12-17
US11599770B2 (en) 2023-03-07
TW201411357A (zh) 2014-03-16
CN104487957B (zh) 2017-10-03
KR101922762B1 (ko) 2018-11-27
JP6207605B2 (ja) 2017-10-04
TWI492062B (zh) 2015-07-11
US20230196065A1 (en) 2023-06-22
JP2015534659A (ja) 2015-12-03

Similar Documents

Publication Publication Date Title
US11741014B2 (en) Methods and systems for handling data received by a state machine engine
CN104487957A (zh) 用于编程状态机引擎的方法及装置
US9454322B2 (en) Results generation for state machine engines
EP2972920B1 (en) Methods and apparatuses for providing data received by a state machine engine
CN104011723B (zh) 状态机晶格中的布尔逻辑
CN104011736B (zh) 用于状态机中的检测的方法及系统
KR101999590B1 (ko) 패턴 인식 프로세싱 시스템에서의 전력 관리를 위한 방법들 및 시스템들
US10789182B2 (en) System and method for individual addressing
CN104583935A (zh) 状态机引擎中的指令插入
CN104487956A (zh) 用于使用状态机引擎中的状态向量数据的方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant