CN104583935A - 状态机引擎中的指令插入 - Google Patents

状态机引擎中的指令插入 Download PDF

Info

Publication number
CN104583935A
CN104583935A CN201380044759.3A CN201380044759A CN104583935A CN 104583935 A CN104583935 A CN 104583935A CN 201380044759 A CN201380044759 A CN 201380044759A CN 104583935 A CN104583935 A CN 104583935A
Authority
CN
China
Prior art keywords
instruction
state machine
dot matrix
data
machine engine
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
CN201380044759.3A
Other languages
English (en)
Other versions
CN104583935B (zh
Inventor
戴维·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 CN104583935A publication Critical patent/CN104583935A/zh
Application granted granted Critical
Publication of CN104583935B publication Critical patent/CN104583935B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Logic Circuits (AREA)
  • Storage Device Security (AREA)

Abstract

本发明揭示状态机引擎,其包含具有指令插入寄存器的状态机引擎。一个此指令插入寄存器可提供初始化指令,以便使状态机引擎为数据分析作准备。指令插入寄存器还可提供指令以尝试解决在状态机引擎的操作期间发生的错误。指令插入寄存器还可用以在例如状态机经历致命错误之后调试状态机引擎。

Description

状态机引擎中的指令插入
技术领域
本发明的实施例大体涉及电子装置,且更具体地说,在某些实施例中,涉及具有用于数据分析的并行装置的电子装置。
背景技术
在常规基于冯·诺伊曼(von Neumann)的计算机上执行复杂模式辨识可能效率低下。然而,生物大脑(尤其人类大脑)善于执行模式辨识。当前研究表明,人类大脑使用大脑新皮质中的一系列经阶层式组织的神经元层执行模式辨识。阶层的较低层中的神经元分析来自(例如)感觉器官的“原始信号”,而较高层中的神经元分析来自较低层级中的神经元的信号输出。大脑新皮质中的这种阶层式系统可能结合大脑的其它区域完成复杂模式辨识,这使人类能够执行例如空间推理、意识思考及复杂语言等高阶功能。
在计算领域中,模式辨识任务越来越具有挑战性。计算机之间传输的数据量不断增大,且用户希望识别的模式数目日益增加。例如,通常通过在数据流中搜索模式(例如,特定词组或代码段)来检测垃圾邮件或恶意软件。模式数目随着垃圾邮件及恶意软件的多样化而增加,这是因为可实施新模式以搜索新变体。在数据流中搜索这些模式中的每一者可形成计算瓶颈。通常,当接收到数据流时,在数据流中一次一个地搜索每一模式。在系统准备好搜索数据流的下一部分之前的延迟随模式数目而增加。因此,模式辨识可使数据的接收减慢。
硬件已经设计以在数据流中搜索模式,但是这种硬件通常不能在给定的时间量期间处理足够的数据量。经配置以搜索数据流的一些装置通过将数据流分布在多个电路之间以在给定的时间量期间处理足够的数据量。所述电路各自确定数据流是否匹配模式的一部分。通常,大量电路并行操作,其各自大体同时搜索数据流。然而,尚不存在有效地允许以与生物大脑的方式更相当的方式执行模式辨识的系统。开发这种系统是合乎需要的。
附图说明
图1说明根据本发明的各种实施例的具有状态机引擎的系统的实例。
图2说明根据本发明的各种实施例的图1的状态机引擎的FSM点阵的实例。
图3说明根据本发明的各种实施例的图2的FSM点阵的块的实例。
图4说明根据本发明的各种实施例的图3的块的行的实例。
图5说明根据本发明的各种实施例的图4的行的两成员群组的实例。
图6说明根据本发明的各种实施例的有限状态机图表的实例。
图7说明根据本发明的各种实施例的使用FSM点阵实施的二层级阶层的实例。
图8说明根据本发明的各种实施例的编译器将源代码转换为二进制文件以编程图2的FSM点阵的方法的实例。
图9说明根据本发明的各种实施例的状态机引擎。
图10说明根据本发明的各种实施例的说明利用图9的指令插入寄存器的第一过程的流程图。
图11说明根据本发明的各种实施例的说明利用图9的指令插入寄存器的第二过程的流程图。
图12说明根据本发明的各种实施例的说明利用图9的指令插入寄存器的第三过程的流程图。
具体实施方式
现在转到诸图,图1说明大体上由参考数字10标示的基于处理器的系统的实施例。系统10(例如,数据分析系统)可为例如台式计算机、膝上型计算机、传呼器、蜂窝电话、个人记事本、便携式音频播放器、控制电路、相机等等的多种类型中的任一者。系统10还可为网络节点,例如路由器、服务器或客户端(例如,先前描述的计算机类型中的一者)。系统10可为某个其它种类的电子装置,例如复印机、扫描仪、打印机、游戏控制台、电视机、机顶视频分布或记录系统、电缆箱、个人数字媒体播放器、工厂自动化系统、汽车计算机系统或医疗装置。(用以描述系统的这些各种实例的术语(如本文中使用的许多其它术语)可共享一些参照物,且因此不应通过所列出的其它项加以狭隘地理解)。
在典型的基于处理器的装置(例如系统10)中,例如微处理器等处理器12控制系统10中的系统功能及请求的处理。此外,处理器12可包括共享系统控制的多个处理器。处理器12可直接或间接地耦合到系统10中的元件中的每一者,使得处理器12通过执行可存储于系统10内或系统10外部的指令而控制系统10。
根据本文中描述的实施例,系统10包含可在处理器12的控制下操作的状态机引擎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 Express(PCI-E)、小型计算机系统接口(SCSI)、IEEE 1394(Firewire)或任何其它合适的接口)耦合到系统10。为了促进存储器16(例如快闪存储器装置)的操作,系统10可包含存储器控制器(未说明)。如应了解,存储器控制器可为独立装置或其可与处理器12成一体。此外,系统10可包含外部存储装置18,例如磁性存储装置。外部存储装置还可将输入数据提供到状态机引擎14。
系统10可包含数个额外元件。例如,如关于图8更详细地描述,编译器20可用以配置(例如,编程)状态机引擎14。输入装置22还可耦合到处理器12以允许用户将数据输入到系统10中。例如,输入装置22可用以将数据输入到存储器16中以供状态机引擎14随后分析。例如,输入装置22可包含按钮、交换元件、键盘、光笔、尖笔、鼠标及/或语音辨识系统。例如显示器等输出装置24还可耦合到处理器12。例如,显示器24可包含LCD、CRT、LED及/或音频显示器。所述系统还可包含用于与网络(例如因特网)介接的网络接口装置26,例如网络接口卡(NIC)。如应了解,取决于系统10的应用,系统10可包含许多其它组件。
图2到5说明FSM点阵30的实例。在一实例中,FSM点阵30包括块32的阵列。如将描述,每一块32可包含对应于FSM中的多个状态的多个可选择性地耦合的硬件元件(例如,可配置元件及/或专用元件)。类似于FSM中的状态,硬件元件可分析输入流并基于输入流启动下游硬件元件。
可配置元件可经配置(例如,编程)以实施许多不同功能。例如,可配置元件可包含阶层式地组织成行38(图3及4中所示)及块32(图2及3中所示)中的状态机元件(SME)34、36(图5中所示)。SME还可被视为状态转变元件(STE)。为了在经阶层式组织的SME34、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包括布尔逻辑。例如,布尔逻辑可用以执行逻辑函数,例如AND、OR、NAND、NOR、乘积之和(SoP)、否定输出乘积之和(NSoP)、否定输出和之乘积(NPoS)及和之乘积(PoS)函数。这种布尔逻辑可用以从FSM点阵30中的终端状态SME(如本文随后讨论,对应于FSM的终端节点)提取数据。所提取的数据可用以将状态数据提供到其它FSM点阵30及/或提供用以重配置FSM点阵30或重配置另一FSM点阵30的配置数据。
图5说明GOT 60的实例。GOT 60包含第一SME 34及第二SME 36,其具有输入62、64及其耦合到OR门76及3对1多路复用器78的输出72、74。3对1多路复用器78可经设定以将GOT 60的输出66耦合到第一SME 34、第二SME 36或OR门76。OR门76可用以将两个输出72、74耦合在一起以形成GOT 60的共同输出66。在一实例中,如上文讨论,第一SME 34与第二SME 36展现奇偶校验,在第一SME 34的输入62可耦合到一些行互连导体68且第二SME 36的输入64可耦合到其它行互连导体70的情况下,可产生可克服奇偶校验问题的共同输出66。在一实例中,GOT 60内的两个SME 34、36可通过设定交换元件79中的任一者或两者而级联及/或循环回到其自身。SME 34、36可通过将SME 34、36的输出72、74耦合到另一SME 34、36的输入62、64而级联。SME 34、36可通过将输出72、74耦合到其自身输入62、64而循环回到其自身。因此,第一SME 34的输出72可不耦合到第一SME 34的输入62及第二SME 36的输入64、耦合到第一SME 34的输入62及第二SME 36的输入64中的一者或两者。此外,因为输入62、64中的每一者可耦合到多个行路由线,OR门可用以从沿着输入62、64以及输出72、74的这些行路由线选择输入中的任一者。
在一实例中,状态机元件34、36包括并联耦合到检测线82的多个存储器单元80,例如通常用于动态随机存取存储器(DRAM)中的存储器单元。一个这样的存储器单元80包括可设定为数据状态(例如对应于高值或低值(例如,1或0)的数据状态)的存储器单元。存储器单元80的输出耦合到检测线82,且到存储器单元80的输入基于数据流线84上的数据接收信号。在一实例中,解码输入块52处的输入以选择存储器单元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设定为作用中状态或非作用中状态。当设定为非作用中状态时,不顾及相应检测线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上具有高信号时输出高信号。第二SME 36最初可被设定为非作用中状态,但是在作用中时可经设定以在对应于位1的数据流线84上具有高信号时输出高信号。可通过设定第一SME 34的输出72以耦合到第二SME 36的输入64而使第一SME 34与第二SME 36级联。因此,当在对应于位0的数据流线84上感测到高信号时,第一SME 34在输出72上输出高信号且将第二SME 36的检测单元86设定为作用中状态。当在对应于位1的数据流线84上感测到高信号时,第二SME 36在输出74上输出高信号以启动另一SME 36或从FSM点阵30输出。
在一实例中,在单个物理装置上实施单个FSM点阵30,然而在其它实例中,可在单个物理装置(例如,物理芯片)上实施两个或两个以上FSM点阵30。在一实例中,每一FSM点阵30可包含相异数据输入块52、相异输出块54、相异编程接口56及相异可配置元件集合。此外,每一可配置元件集合可对其对应数据输入块52处的数据作出反应(例如,输出高或低信号)。例如,对应于第一FSM点阵30的第一可配置元件集合可对对应于第一FSM点阵30的第一数据输入块52处的数据作出反应。对应于第二FSM点阵30的第二可配置元件集合可对对应于第二FSM点阵30的第二数据输入块52处的数据作出反应。因此,每一FSM点阵30包含可配置元件集合,其中不同可配置元件集合可对不同输入数据作出反应。类似地,每一FSM点阵30及每一对应可配置元件集合可提供相异输出。在一些实例中,来自第一FSM点阵30的输出块54可耦合到第二FSM点阵30的输入块52,使得用于第二FSM点阵30的输入数据可包含来自一系列FSM点阵30的阶层式布置中的第一FSM点阵30的输出数据。
在一实例中,用于加载到FSM点阵30上的图像包括用于配置FSM点阵30内的可配置元件、可配置交换元件及专用元件的多个数据位。在一实例中,可将图像加载到FSM点阵30上以配置FSM点阵30以基于某些输入提供所要输出。输出块54可基于可配置元件对数据输入块52处的数据的反应而提供来自FSM点阵30的输出。来自输出块54的输出可包含指示给定模式的匹配的单个位、包括指示匹配及不匹配多个模式的多个位的字及对应于所有或某些可配置元件在给定时刻的状态的状态向量。如所述,状态机引擎(例如状态机引擎14)中可包含数个FSM点阵30以执行数据分析,例如模式辨识(例如,话音辨识、图像辨识等等)、信号处理、成像、计算机视觉、密码编译及其它。
图6说明可由FSM点阵30实施的有限状态机(FSM)的实例模型。FSM点阵30可配置(例如,编程)为FSM的物理实施方案。可将FSM表示为含有一或多个根节点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与下游节点94、96之间的边缘98指定的准则时,上游节点92、94可通过启动节点94、96而对输入数据作出反应。例如,当指定字符“b”的第一节点94处于作用中且接收字符“b”作为输入数据时,所述第一节点94将启动通过边缘98连接到所述第一节点94的第二节点94。如本文中使用,“上游”是指一或多个节点之间的关系,其中在一或多个其它节点上游(或在循环或反馈配置的情况中,在其自身上游)的第一节点是指其中第一节点可启动所述一或多个其它节点(或在循环的情况中,可启动其自身)的情境。类似地,“下游”是指其中在一或多个其它节点下游(或在循环的情况中,在其自身下游)的第一节点可通过所述一或多个其它节点启动(或在循环的情况中,可通过其自身启动)的关系。因此,术语“上游”及“下游”在本文中用以指一或多个节点之间的关系,但是这些术语并不排除使用循环或节点之间的其它非线性路径。
在图90中,根节点92可最初经启动且在输入数据匹配来自根节点92的边缘98时可启动下游节点94。当输入数据匹配来自节点94的边缘98时,节点94可启动节点96。在接收输入数据时,可以此方式启动贯穿图90的节点94、96。终端节点96对应于输入数据中的所关注序列的匹配。因此,启动终端节点96指示已接收所关注序列作为输入数据。在FSM点阵30实施模式辨识功能的上下文中,到达终端节点96可指示已在输入数据中检测到所关注的特定模式。
在一实例中,每一根节点92、标准节点94及终端节点96可对应于FSM点阵30中的可配置元件。每一边缘98可对应于可配置元件之间的连接。因此,转变到另一标准节点94或终端节点96(例如,具有连接到另一标准节点94或终端节点96的边缘98)的标准节点94对应于转变到(例如,将输出提供到)另一可配置元件的可配置元件。在一些实例中,根节点92不具有对应可配置元件。
如应了解,虽然节点92被描述为根节点且节点96被描述为终端节点,但是可无须存在特定“开始”或根节点,且可无须存在特定“结束”或输出节点。换句话说,任何节点均可为起始点,且任何节点可提供输出。
当编程FSM点阵30时,可配置元件中的每一者还可处于作用中或非作用中状态。给定可配置元件在非作用中时不对对应数据输入块52处的输入数据作出反应。作用中可配置元件可对数据输入块52处的输入数据作出反应,且当输入数据匹配可配置元件的设定时可启动下游可配置元件。当可配置元件对应于终端节点96时,可配置元件可耦合到输出块54以将匹配的指示提供到外部装置。
经由编程接口56加载到FSM点阵30上的图像可配置所述可配置元件及专用元件以及所述可配置元件与专用元件之间的连接,使得基于对数据输入块52处的数据作出的反应通过节点的循序启动实施所要FSM。在一实例中,除非通过上游可配置元件重新启动,否则可配置元件保持作用中达单个数据循环(例如,单个字符、字符集合、单个时钟循环)且然后变为非作用中。
可认为终端节点96存储经压缩的过去事件历史。例如,需要到达终端节点96的输入数据的一或多个模式可由所述终端节点96的启动来表示。在一实例中,由终端节点96提供的输出是二进制的,例如,输出指示是否已匹配所关注模式。在图90中终端节点96对标准节点94的比率可相当小。换句话说,虽然在FSM中存在高复杂度,但是比较而言,FSM的输出可为小的。
在一实例中,FSM点阵30的输出可包括状态向量。状态向量包括FSM点阵30的可配置元件的状态(例如,启动或未经启动)。在另一实例中,状态向量可包含可配置元件的全部或子集的状态(无论可配置元件是否对应于终端节点96)。在一实例中,状态向量包含对应于终端节点96的可配置元件的状态。因此,输出可包含由图90的全部终端节点96提供的指示的集合。可将状态向量表示为字,其中由每一终端节点96提供的二进制指示包括所述字的一个位。终端节点96的这种编码可对FSM点阵30提供检测状态(例如,是否已检测到所关注序列及已检测到何种所关注序列)的有效指示。
如上文提及,FSM点阵30可经编程以实施模式辨识功能。例如,FSM点阵30可经配置以辨识输入数据中的一或多个数据序列(例如,签名、模式)。当通过FSM点阵30辨识所关注数据序列时,可在输出块54处提供所述辨识的指示。在一实例中,模式辨识可辨识一串符号(例如,ASCII字符)以(例如)识别网络数据中的恶意软件或其它数据。
图7说明阶层式结构100的实例,其中FSM点阵30的两个层级串联耦合且用以分析数据。具体地说,在所说明的实施例中,阶层式结构100包含串联布置的第一FSM点阵30A及第二FSM点阵30B。每一FSM点阵30包含接收数据输入的相应数据输入块52、接收配置信号的编程接口块56及输出块54。
第一FSM点阵30A经配置以在数据输入块处接收输入数据,例如原始数据。第一FSM点阵30A对如上所述的输入数据作出反应并在输出块处提供输出。将来自第一FSM点阵30A的输出发送到第二FSM点阵30B的数据输入块。然后,第二FSM点阵30B可基于由第一FSM点阵30A提供的输出作出反应并提供阶层式结构100的对应输出信号102。两个FSM点阵30A及30B的这种阶层式串联耦合提供将关于经压缩字中的过去事件的数据从第一FSM点阵30A提供到第二FSM点阵30B的手段。所提供的数据实际上可为已由第一FSM点阵30A记录的复杂事件(例如,所关注序列)的概要。
图7中所示的FSM点阵30A、30B的两层级阶层100允许两个独立程序基于相同数据流而操作。所述两级阶层可类似于模型化为不同区域的生物大脑中的视觉辨识。在这种模型下,所述区域实际上是不同模式辨识引擎,其各自执行类似计算功能(模式匹配)但使用不同程序(签名)。通过将多个FSM点阵30A、30B连接在一起,可获得关于数据流输入的增加知识。
阶层的第一层级(由第一FSM点阵30A实施)可例如直接对原始数据流执行处理。例如,可在第一FSM点阵30A的输入块52处接收原始数据流,且第一FSM点阵30A的可配置元件可对所述原始数据流作出反应。阶层的第二层级(由第二FSM点阵30B实施)可处理来自第一层级的输出。例如,第二FSM点阵30B在第二FSM点阵30B的输入块52处接收来自第一FSM点阵30A的输出块54的输出,且第二FSM点阵30B的可配置元件可对第一FSM点阵30A的输出作出反应。因此,在此实例中,第二FSM点阵30B并不接收原始数据流作为输入,而是接收由如由第一FSM点阵30A确定的原始数据流匹配的所关注模式的指示。第二FSM点阵30B可实施辨识来自第一FSM点阵30A的输出数据流中的模式的FSM。应了解,除了接收来自FSM点阵30A的输出以外,第二FSM点阵30B还可接收来自多个其它FSM点阵的输入。同样地,第二FSM点阵30B可接收来自其它装置的输入。第二FSM点阵30B可组合这些多个输入以产生输出。
图8说明编译器将源代码转换为用于配置FSM点阵(例如点阵30)以实施FSM的图像的方法110的实例。方法110包含:将源代码剖析为语法树(方框112);将语法树转换为自动机(方框114);优化所述自动机(方框116);将所述自动机转换为接线对照表(netlist)(方框118);将所述接线对照表放置于硬件上(方框120);路由所述接线对照表(方框122)及发布所得图像(方框124)。
在一实例中,编译器20包含允许软件开发者产生图像以实施FSM点阵30上的FSM的应用编程接口(API)。编译器20提供将源代码中的正则表达式的输入集合转换为经配置以配置FSM点阵30的图像的方法。编译器20可通过用于具有冯·诺伊曼架构的计算机的指令加以实施。这些指令可使计算机上的处理器12实施编译器20的功能。例如,所述指令在由处理器12执行时可使处理器12对可由处理器12存取的源代码执行如方框112、114、116、118、120、122及124中描述的动作。
在一实例中,源代码描述用于识别符号群组内的符号模式的搜索字符串。为描述搜索字符串,源代码可包含多个正则表达式(regex)。正则表达式可为用于描述符号搜索模式的字符串。正则表达式广泛用于各种计算机领域中,例如编程语言、文本编辑器、网络安全及其它领域。在一实例中,由编译器支持的正则表达式包含用于分析未经结构化数据的准则。未经结构化数据可包含自由形式的数据且不具有应用于数据内的字的索引。字可包含数据内可打印及不可打印的字节的任何组合。在一实例中,编译器可支持多种不同源代码语言以用于实施包含Perl(例如,Perl可兼容正则表达式(PCRE))、PHP、Jave及.NET语言的正则表达式。
在方框112处,编译器20可剖析源代码以形成关系紧密的运算符的布置,其中不同类型的运算符对应于由源代码实施的不同函数(例如,由源代码中的正则表达式实施的不同函数)。剖析源代码可产生源代码的通用表示。在一实例中,通用表示包括呈称作语法树的树形图的形式的源代码中的正则表达式的经编码表示。本文中描述的实例引用作为语法树(亦称作“抽象语法树”)的布置,然而在其它实例中,可使用具体语法树或其它布置。
如上所述,因为编译器20可支持源代码的多种语言,所以剖析将源代码转换为非语言特定表示(例如语法树)而不顾及语言。因此,通过编译器20进行的进一步处理(方框114、116、118、120)可从共同输入结构发挥作用,而不顾及源代码的语言。
如上所述,语法树包含关系紧密的多个运算符。语法树可包含多种不同类型的运算符。例如,不同运算符可对应于由源代码中的正则表达式实施的不同函数。
在方框114处,将语法树转换为自动机。自动机包括FSM的软件模型,且因此可分类为确定性或非确定性。确定性自动机在给定时间具有单个执行路径,而非确定性自动机具有多个并行执行路径。自动机包括多个状态。为了将语法树转换为自动机,语法树中的运算符及运算符之间的关系转换为状态,其中所述状态之间具有转变。在一实例中,可部分基于FSM点阵30的硬件而转换自动机。
在一实例中,用于自动机的输入符号包含字母表的符号、数字0到9及其它可打印字符。在一实例中,输入符号是由字节值0到255(包含0及255)表示。在一实例中,自动机可表示为有向图,其中所述图的节点对应于状态集合。在一实例中,输入符号α上从状态p到状态q的转变(即,δ(p,α))是由从节点p到节点q的有向连接展示。在一实例中,自动机的反转产生新自动机,其中某个符号α上的每一转变p→q在相同符号上反转q→p。在反转中,开始状态变为最终状态,且最终状态变为开始状态。在一实例中,由自动机辨识(例如,匹配)的语言是在循序地输入到自动机中时将到达最终状态的全部可能字符串的集合。由自动机辨识的语言中的每一字符串追踪从开始状态到一或多个最后状态的路径。
在方框116处,在建构自动机之后,所述自动机经优化以减小其复杂度及大小等等。可通过组合冗余状态来优化自动机。
在方框118处,将经优化的自动机转换为接线对照表。将所述自动机转换为接线对照表将所述自动机的每一状态映射到FSM点阵30上的硬件元件(例如,SME 34、36、其它元件)并确定硬件元件之间的连接。
在方框120处,放置接线对照表以选择目标装置的对应于接线对照表的每一节点的特定硬件元件(例如,SME 34、36、专用元件58)。在一实例中,放置基于FSM点阵30的一般输入及输出约束来选择每一特定硬件元件。
在方框122处,路由所放置的接线对照表以确定用于可配置交换元件(例如,块间交换元件40、块内交换元件42及行内交换元件44)的设定,以将选定硬件元件耦合在一起以实现由接线对照表描述的连接。在一实例中,通过确定FSM点阵30的将用以连接选定硬件元件的特定导体及用于可配置交换元件的设定的特定导体来确定用于可配置交换元件的设定。与方框120处的放置相比,路由可考虑硬件元件之间的连接的更多特定限制。因此,给定FSM点阵30上的导体的实际限制,路由可调整如通过全局放置确定的一些硬件元件的位置以作出适当连接。
一旦放置及路由接线对照表,便可将所述经放置及路由的接线对照表转换为用于配置FSM点阵30的多个位。所述多个位在本文中被称为图像(例如二进制图像)。
在方框124处,通过编译器20发布图像。图像包括用于配置FSM点阵30的特定硬件元件的多个位。可将位加载到FSM点阵30上以配置SME 34、36、专用元件58及可配置交换元件的状态,使得经编程FSM点阵30实施具有由源代码描述的功能性的FSM。放置(方框120)及路由(方框122)可将FSM点阵30中的特定位置处的特定硬件元件映射到自动机中的特定状态。因此,图像中的位可配置特定硬件元件以实施(多个)所要功能。在一实例中,可通过将机器代码保存到计算机可读媒体来发布所述图像。在另一实例中,可通过在显示装置上显示所述图像来发布所述图像。在又一实例中,可通过将所述图像发送到另一装置(例如用于将所述图像加载到FSM点阵30上的配置装置)来发布所述图像。在又一实例中,可通过将所述图像加载到FSM点阵(例如,FSM点阵30)上来发布所述图像。
在一实例中,可通过将来自图像的位值直接加载到SME 34、36及其它硬件元件或通过将所述图像加载到一或多个寄存器中且然后将来自寄存器的位值写入到SME 34、36及其它硬件元件而将所述图像加载到FSM点阵30上。在一实例中,FSM点阵30的硬件元件(例如,SME 34、36、专用元件58、可配置交换元件40、42、44)经存储器映射使得配置装置及/或计算机可通过将图像写入到一或多个存储器地址而将图像加载到FSM点阵30上。
可至少部分用机器或计算机实施本文中描述的方法实例。一些实例可包含编码有指令的计算机可读媒体或机器可读媒体,所述指令可操作以配置电子装置以执行如上文实例中描述的方法。这些方法的实施方案可包含代码,例如微码、汇编语言代码、较高级语言代码或其类似物。这种代码可包含用于执行各种方法的计算机可读指令。代码可形成计算机程序产品的部分。此外,代码可在执行期间或在其它时间有形地存储在一或多个易失性或非易失性计算机可读媒体上。这些计算机可读媒体可包含(但不限于)硬盘、可装卸式磁盘、可装卸式光盘(例如,压缩光盘及数字视频光盘)、磁盒、存储卡或棒、随机存取存储器(RAM)、只读存储器(ROM)等等。
现在参考图9,说明状态机引擎14的实施例(例如,单个芯片上的单个装置)。如先前描述,状态机引擎14经配置以经由数据总线从源(例如存储器16)接收数据。在所说明的实施例中,数据可通过总线接口(例如第三代双倍数据速率(DDR3)总线接口130)发送到状态机引擎14。DDR3总线接口130可能够以大于或等于1千兆字节/秒的速率交换(例如,提供及接收)数据。这种数据交换速率可大于状态机引擎14分析数据的速率。如应了解,取决于待分析的数据的源,总线接口130可为用于将往返于数据源的数据交换到状态机引擎14的任何合适的总线接口,例如NAND快闪接口、外围组件互连(PCI)接口、千兆位媒体独立接口(GMMI)等等。如先前描述,状态机引擎14包含经配置以分析数据的一或多个FSM点阵30。每一FSM点阵30可被分为两个半点阵。在所说明的实施例中,每一半点阵可包含24K个SME(例如,SME 34、36),使得点阵30包含48K个SME。点阵30可包括如先前关于图2到5描述般布置的任何所要数目个SME。此外,虽然只说明一个FSM点阵30,但是状态机引擎14可包含多个FSM点阵30,如先前描述。
可在总线接口130处接收待分析的数据并通过数个缓冲器及缓冲器接口将数据提供到FSM点阵30。在所说明的实施例中,数据路径包含数据缓冲器132、指令缓冲器133、过程缓冲器134及排间(IR)总线及过程缓冲器接口136。数据缓冲器132经配置以接收并暂时存储待分析的数据。在一个实施例中,存在两个数据缓冲器132(数据缓冲器A及数据缓冲器B)。可将数据存储在所述两个数据缓冲器132中的一者中,而从另一数据缓冲器132清空数据以供FSM点阵30分析。总线接口130可经配置以将待分析的数据提供到数据缓冲器132直到数据缓冲器132已满为止。在数据缓冲器132已满之后,总线接口130可经配置以自由地用于其它目的(例如,提供来自数据流的其它数据直到数据缓冲器132可用于接收待分析的额外数据为止)。在所说明的实施例中,数据缓冲器132可各自为32千字节。指令缓冲器133经配置以经由总线接口130从处理器12接收指令,例如对应于待分析的数据的指令及对应于配置状态机引擎14的指令。IR总线及过程缓冲器接口136可促进将数据提供到过程缓冲器134。IR总线及过程缓冲器接口136可用以确保FSM点阵30按顺序处理数据。IR总线及过程缓冲器接口136可协调数据、时序数据、打包指令等等的交换,使得正确地接收并分析数据。一般来说,IR总线及过程缓冲器接口136允许通过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可用以将状态向量数据提供到(例如,其它FSM点阵30的)IR总线及过程缓冲器接口136、压缩器140及状态向量高速缓冲存储器142。
同样地,状态向量中间输入缓冲器146可用以从任何合适的装置接收状态向量数据并将状态向量数据提供到任何合适的装置。例如,状态向量中间输入缓冲器146可用以从FSM点阵30(例如,经由IR总线及过程缓冲器接口136)、解压缩器138及状态向量高速缓冲存储器142接收状态向量。作为另一实例,状态向量中间输入缓冲器146可用以将状态向量提供到FSM点阵30。此外,状态向量中间输出缓冲器148可用以从任何合适的装置接收状态向量并将状态向量提供到任何合适的装置。例如,状态向量中间输出缓冲器148可用以从FSM点阵30及状态向量高速缓冲存储器142接收状态向量。作为另一实例,状态向量中间输出缓冲器148可用以将状态向量提供到FSM点阵30(例如,经由IR总线及过程缓冲器接口136)及压缩器140。
一旦由FSM点阵30产生所关注结果,便可将结果存储在结果存储器150中。例如,可将指示匹配(例如,检测到所关注模式)的“匹配向量”存储在结果存储器150中。例如,然后可将匹配结果发送到缓冲器152以经由总线接口130传输到处理器12。如先前描述,可压缩所述结果。结果存储器150可包含两个存储器元件:存储器元件A及存储器元件B,其中的每一者对应于FSM点阵30的半点阵中的一者。在一个实施例中,存储器元件中的每一者可为DRAM存储器元件或任何其它合适的存储装置。在一些实施例中,存储器元件可操作为缓冲沿结果总线151从FSM点阵30接收的结果的初始缓冲器。例如,存储器元件A可沿结果总线151从FSM点阵30的半点阵0接收匹配。类似地,存储器元件B可沿结果总线151从FSM点阵30的半点阵1接收匹配。
在一个实施例中,提供到结果存储器150的结果可指示FSM点阵30已发现最终结果。例如,所述结果可指示已检测到完整的模式。替代地,提供到结果存储器150的结果可指示(例如)已达到FMS点阵30的特定状态。例如,提供到结果存储器150的结果可指示已达到一种状态(即,模式搜索的一个部分),使得可起始下一状态。以此方式,结果存储器150可存储多种类型的结果。
在一些实施例中,IR总线及过程缓冲器接口136可将数据提供到多个FSM点阵30以供分析。可对此数据进行时间多路复用。例如,如果存在八个FSM点阵30,那么可将所述八个FSM点阵30中的每一者的数据提供到对应于所述八个FSM点阵30的所有八个IR总线及过程缓冲器接口136。所述八个IR总线及过程缓冲器接口136中的每一者可接收待分析的整个数据集合。然后,所述八个IR总线及过程缓冲器接口136中的每一者可选择与相关联于相应IR总线及过程缓冲器接口136的FSM点阵30有关的整个数据集合的部分。然后,可将用于所述八个FSM点阵30中的每一者的此有关数据从相应IR总线及过程缓冲器接口136提供到与所述相应IR总线及过程缓冲器接口136相关联的相应FSM点阵30。以此方式,可对通过状态机引擎14的任何FSM点阵30接收的数据进行时间多路复用。因此,如上提及,还可对通过此数据的分析提供的结果进行时间多路复用。
因此,结果存储器150可操作以使每一所接收结果与产生所述结果的数据输入相互关联。为完成此,可存储对应于(且在一些实施例中结合)接收自结果总线151的每一结果的相应结果指示符。在一个实施例中,结果指示符可为单位旗标。在另一实施例中,结果指示符可为多位旗标。如果结果指示符可包含多位旗标,那么所述旗标的位位置可指示(例如)所述结果在输入数据流中的位置的计数、所述结果所对应的点阵、结果集合中的位置或其它识别信息。这些结果指示符可包含识别每一特定匹配结果且允许对结果适当地分组并将结果传输到(例如)压缩器140中的一或多个位。此外,通过特定结果的相应结果指示符识别所述特定结果的能力可允许从匹配结果存储器150选择性地输出所要结果。例如,只由FSM点阵30产生的特定结果可选择性地锁存为输出。这些结果指示符可允许对结果适当地分组并将结果供应到(例如)压缩器140。此外,通过特定结果的相应结果指示符识别所述特定结果的能力允许从结果存储器150选择性地输出所要结果。因此,只由FSM点阵30提供的特定结果可选择性地提供到压缩器140。
还可在状态机引擎14中提供额外寄存器及缓冲器。在一个实施例中,例如,缓冲器可存储与一个以上过程有关的信息,而寄存器可存储与单个过程有关的信息。例如,状态机引擎14可包含控制及状态寄存器154。此外,可提供程序缓冲器系统(例如,修复映射及程序缓冲器156)以最初编程FSM点阵30。例如,可(例如,经由解压缩器138)将初始(例如,起始)状态向量数据从程序缓冲器系统提供到FSM点阵30。解压缩器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接收数据(例如,配置指令)且从指令插入寄存器160接收经插入指令。此外,点阵编程及指令控制系统159可从程序缓冲器156接收数据(例如,配置数据)。点阵编程及指令控制系统159可使用配置指令及配置数据以配置FSM点阵30(例如,配置路由交换元件、SME 34、SME 36、布尔单元、计数器,匹配MUX),且可使用经插入指令以在状态机引擎14的操作期间校正错误。点阵编程及指令控制系统159还可使用解压缩器138以压缩数据且使用压缩器140以压缩数据(例如,用于与程序缓冲器156及修复映射缓冲器158交换数据)。
有时,错误(例如,崩溃、故障、事故、冻结、停止运作等等)可发生在状态机引擎14的操作期间。例如,存储器元件A或存储器元件B中的一者可已满(例如,不能从其对应半点阵接收任何进一步匹配结果)。在此情境中,匹配结果存储器150可实施溢出过程。此溢出过程可包含交换所接收结果的存储位置。例如,存储器元件A通常可相关联于(例如,存储)来自FSM点阵30的半点阵0的匹配结果,且存储器元件B通常可相关联于(例如,存储)来自FSM点阵30的半点阵1的匹配结果。例如,如果存储器元件A已满,那么可将存储器元件A中的一或多个当前存储结果236复制到存储器元件B中的位置以为待存储于存储器元件A中的新结果腾出空间。替代地或此外,当存储器元件B已满时,可将最初旨在用于存储器元件B的结果代替性地提供到存储器元件A并存储在存储器元件A中。在任一情境中,与存储于相邻存储器中的任何结果相关联的结果指示符可经提供且与所述结果一起存储以允许适当地识别并随后输出相应结果。因此,当此溢出过程开始时,匹配结果存储器150可经设定以在将输出结果的一或多个特定集合时搜索存储器元件A及存储器元件B两者。
可发生其中上文讨论的溢出过程不足以克服匹配结果存储器150的溢出的额外情境。例如,存储器元件A及存储器元件B两者均可能是满的。在此情境中,匹配结果存储器150可操作以中断(例如,停止、冻结、暂停、中止或类似物)状态机引擎的操作(例如,状态机引擎14的FSM点阵30中的数据分析)。例如,匹配结果存储器150可将指示(例如,旗标、通知、请求或类似物)提供到(例如)FSM点阵30、IR总线及过程缓冲器接口136及/或DDR3总线接口130以指示应中断FSM点阵30中的数据分析。一旦匹配结果存储器150中的足够存储器变得可用(例如,从匹配结果存储器150读出一或多个结果236)时,第二指示可从匹配结果存储器150提供到(例如)FSM点阵30、IR总线及过程缓冲器接口136及/或DDR3总线接口130以指示可继续FSM点阵30中的数据分析。以此方式,匹配结果存储器150可包含对状态机引擎14的处理越权。
当接收到应中断状态机引擎14的操作的指示时(例如,当接收到暂停处理旗标时),可从指令缓冲器133移除(例如,抹除、清空或类似物)指令缓冲器133中与所述操作相关联的任何指令。从指令缓冲器133的此指令移除将允许中断状态机引擎的操作(例如,暂停由FSM点阵30进行的数据分析)。然而,当是时候继续操作时,指令缓冲器133中缺少指令可导致在状态机引擎14的操作期间发生错误。为辅助防止此错误,可利用指令插入寄存器160。此指令插入寄存器可提供(例如)初始化指令以(例如,对FSM点阵30)指示来自指令缓冲器133的指令即将来临。图10中图解此过程。
图10图解用于中断及继续状态机引擎14的操作的过程162。在步骤164中,例如可通过FSM点阵30、IR总线及过程缓冲器接口136及/或DDR3总线接口130接收中断指示(例如,暂停请求)以请求中断状态机引擎14的操作(例如,FSM点阵30中的数据分析)。在步骤166中,中断状态机引擎的操作(例如,FSM点阵30中的数据分析)且可从指令缓冲器133移除指令缓冲器133中与所述操作相关联的任何指令。状态机引擎14的操作的此中断可继续直到(例如)存储器元件A及/或存储器元件B能够接收结果指示或已满足状态机引擎14的另一条件为止。此时,在步骤168中可接收继续指示。此继续指示可发信号通知可继续状态机引擎14的中断操作(例如,FSM点阵30能够再次分析数据)。在步骤170中,可从(例如)指令插入寄存器160提供初始化指令(例如)以(例如,对FSM点阵30)指示来自指令缓冲器133的指令即将来临,且在步骤172中留出足够时间以使用指令再填充指令缓冲器133。随后及/或巧合的是,在步骤174中,可以类似于在中断状态机引擎14的操作之前的方式从指令缓冲器133提供指令。
在其它情境中,状态机引擎14的一或多个元件可经历暂时错误,从而导致状态机引擎14的操作非预期地中断。图11中图解用于从此非预期中断恢复的过程。
在过程176的步骤178中,状态机引擎14可接收错误(例如,停止运作)的指示。此错误指示可为(例如)主动接收的指示(例如,信号):状态机引擎14的元件在操作期间已经历错误。此外或替代地,错误指示可通过(例如)主动监测状态机引擎14的一或多个元件而确定。在一些实施例中,除状态机引擎14以外还可通过系统10的处理器12接收或确定错误指示,或可通过所述处理器12代替状态机引擎14来接收或确定错误指示。在步骤180中,处理器12(或状态机引擎14)可中断从指令缓冲器133供应指令(例如到FSM点阵30)。代替从指令缓冲器133提供指令,可将指令从指令插入寄存器160提供到(例如,可将插入指令传输到)点阵编程及指令控制系统159,因而此经插入指令可经配置以尝试解决(例如,校正、矫正、补救或类似物)状态机引擎14的元件中的错误(例如,停止运作)。此经插入(例如,插入)指令可选自指令插入缓冲器160中的指令集合。例如,可基于所指示的错误从经配置以解决各种错误的指令集合选择待从指令插入寄存器160提供的指令。在其它实施例中,可基于所指示的错误类型从系统10(例如,处理器12)提供一或多个经插入(例如,插入)指令。通过利用指令插入寄存器160,可提供与错误有关的指令而不改变已加载到状态机引擎14中的任何数据集合或指令(例如,不改变指令缓冲器133中的指令)。
过程176在步骤184中继续,因而状态机引擎14及/或处理器12确定是否已解决错误(例如,停止运作)。如果已解决错误,那么可继续状态机引擎14的正常操作,包含从指令缓冲器133提供指令,如步骤186中图解。然而,如果来自指令插入寄存器160的经插入指令未解决错误(例如,停止运作),那么可在步骤188中重设及/或重新启动状态机引擎14。替代地,在另一实施例中,当(例如)来自指令插入寄存器160的第一经插入指令未解决错误(例如,停止运作)时,可通过指令插入寄存器160插入一或多个额外指令插入。
因此,过程176详述用于解决状态机引擎14中的错误的技术。然而,这些错误有时可能是致命的(例如,导致状态机引擎14及/或系统10崩溃或冻结)。在这些情境中,能够调试状态机引擎14可能是有利的。
图12图解用于在(例如)经历致命错误之后调试状态机引擎14的过程190。在此过程90中,可利用指令插入寄存器160以依循序方式提供指令,以确定指令集合中导致致命错误的指令。
在步骤192中,指令插入寄存器160可接收包含用以补救错误(例如,停止运作)的指令集合的插入指令,状态机引擎14的元件可能已在操作期间经历错误。这些指令可包含状态机引擎14最近执行的指令集合,且所述指令先前可能已导致系统10及/或状态机引擎14崩溃。
在步骤194中,代替从指令缓冲器133提供指令,可将指令从指令插入寄存器160提供到(例如,可将插入指令传输到)编程及指令控制系统159,因而此经插入指令可经配置以尝试解决(例如,校正、矫正、补救或类似物)状态机引擎14的元件中的错误(例如,停止运作)。此经插入(例如,插入)指令可选自指令插入缓冲器160中的指令集合。例如,可基于所指示的错误从经配置以解决各种错误的指令集合选择从指令插入寄存器160提供的指令。在其它实施例中,可基于所指示的错误类型从系统10(例如,处理器12)提供一或多个经插入(例如,插入)指令。此外,可选择此指令作为最近接收的指令,或可以先进先出方式从指令插入寄存器160传输所述指令,使得步骤192中的第一接收指令是步骤194中提供的第一指令。
在步骤196中,状态机引擎14及/或系统10可响应于执行所述指令集合中的第一指令而确定是否发生错误。如果未发生错误,那么过程可回复到步骤194,因而指令插入寄存器160插入来自所述指令集合的第二指令。
然而,如果在步骤196中发生错误,那么状态机引擎14可接收所述错误的指示。此错误指示可为(例如)主动接收的指示(例如,信号):状态机引擎14的元件已在一或多个过程中出现故障。此外或替代地,所述错误指示可通过(例如)主动监测状态机引擎14的一或多个元件而确定。在一些实施例中,除通过状态机引擎14以外还可通过系统10的处理器12接收或确定所述错误指示,或通过所述处理器12代替状态机引擎14来接收或确定所述错误指示。无论如何,此指示可辅助识别导致致命错误的特定指令。因此,技术人员或用户能够查明状态机引擎14及/或系统10中的致命错误的原因。例如,可使用指令插入寄存器160以一次提供一指令用于执行,而非将一系列指令加载给指令缓冲器133。鉴于状态机引擎14的并行性质,此可用于使用指令序列跟踪问题。
虽然本发明可具有各种修改及替代形式,但是已在图式中通过实例展示且在本文中详细描述特定实施例。然而,应了解,本发明并不旨在限于所揭示的特定形式。实情是,本发明涵盖落于如通过随附权利要求书界定的本发明的精神及范围内的所有修改、等效物及替代。

Claims (36)

1.一种状态机引擎,其包括:
状态机点阵,其包括多个可配置元件;
指令缓冲器,其经配置以提供与所述状态机引擎的操作相关联的第一指令;及
指令插入寄存器,其经配置以提供与所述状态机引擎的所述操作相关联的第二指令。
2.根据权利要求1所述的状态机引擎,其中所述状态机引擎经配置以响应于应中断所述状态机引擎的所述操作的指示而从所述指令缓冲器移除所述第一指令。
3.根据权利要求2所述的状态机引擎,其中所述指令插入寄存器经配置以响应于可继续所述状态机的所述操作的指示而将所述第二指令提供到所述状态机点阵。
4.根据权利要求3所述的状态机引擎,其中可继续所述状态机引擎的所述操作的所述指示包括所述状态机点阵能够分析数据的指示,且其中所述第二指令包括指示来自所述指令缓冲器的指令即将来临的初始化指令。
5.根据权利要求1所述的状态机引擎,其中所述状态机引擎经配置以响应于应中断所述状态机引擎的所述操作的指示而从所述指令缓冲器移除与所述状态机引擎的所述操作相关联的任何指令。
6.根据权利要求1所述的状态机引擎,其中所述操作包括所述状态机点阵中的所述数据的分析。
7.根据权利要求1所述的状态机引擎,其中所述指令插入寄存器经配置以响应于错误的指示而提供所述第二指令。
8.根据权利要求7所述的状态机引擎,其中所述状态机引擎经配置以提供所述错误的所述指示。
9.根据权利要求7所述的状态机引擎,其中所述状态机引擎经配置以从耦合到所述状态机引擎的外部装置接收所述错误的所述指示。
10.根据权利要求7所述的状态机引擎,其中所述状态机引擎经配置以响应于所述错误的所述指示而中断从所述指令缓冲器供应所述第一指令,其中从所述指令插入寄存器提供所述第二指令来代替所述第一指令。
11.根据权利要求10所述的状态机引擎,其中所述状态机引擎经配置以响应于所述错误的解决而继续从所述指令缓冲器供应所述第一指令。
12.根据权利要求7所述的状态机引擎,其中所述第二指令包括经配置以尝试解决所述错误的指令。
13.根据权利要求7所述的状态机引擎,其中所述状态机引擎经配置以从所述指令插入寄存器中的指令集合选择所述第二指令。
14.根据权利要求7所述的状态机引擎,其中所述状态机引擎经配置以基于所述所指示的错误选择所述第二指令。
15.根据权利要求1所述的状态机引擎,其中所述指令插入寄存器经配置以提供先前从所述指令缓冲器提供的指令集合。
16.根据权利要求15所述的状态机引擎,其中所述指令插入寄存器经配置以一次一个提供所述指令集合的指令,且其中所述状态机引擎经配置以确定所述指令集合中哪一指令导致错误。
17.根据权利要求15所述的状态机引擎,其中所述指令插入寄存器经配置以循序提供所述指令集合的指令。
18.根据权利要求1所述的状态机引擎,其进一步包括总线接口,其中所述指令插入寄存器经配置以经由所述总线接口接收所述第二指令。
19.根据权利要求1所述的状态机引擎,其进一步包括总线接口,其中所述指令缓冲器及所述指令插入寄存器经配置以经由所述总线接口从耦合到所述状态机引擎的外部装置接收所述第一及第二指令。
20.根据权利要求19所述的状态机引擎,其中所述外部装置经配置以响应于所述状态机引擎中的错误的指示而提供所述第二指令。
21.根据权利要求19所述的状态机引擎,其中所述外部装置经配置以接收所述分析的结果。
22.一种状态机引擎,其包括经配置以提供用于中断状态机点阵的操作的指令的指令插入寄存器,其中所述状态机点阵包括多个可配置元件且每一可配置元件包括经配置以分析数据并输出所述分析的结果的多个存储器单元。
23.根据权利要求22所述的状态机引擎,其中所述状态机引擎经配置以提供用于中断所述状态机点阵的所述操作的所述指令而非用于所述状态机点阵的操作的标准指令。
24.根据权利要求23所述的状态机引擎,其包括经配置以提供用于所述状态机点阵的操作的所述标准指令的指令缓冲器。
25.根据权利要求22所述的状态机引擎,其中用于中断所述状态机点阵的所述操作的所述指令经配置以尝试解决所述状态机引擎的所述操作中的错误。
26.根据权利要求22所述的状态机引擎,其中用于中断所述状态机点阵的所述操作的所述指令经配置以尝试解决所述状态机点阵的所述操作中的错误。
27.一种状态机引擎,其包括经配置以接收用于调试状态机点阵的指令的指令插入寄存器,其中所述状态机点阵包括多个可配置元件且每一可配置元件包括经配置以分析数据并输出所述分析的结果的多个存储器单元。
28.根据权利要求27所述的状态机引擎,其中所述状态机引擎经配置以响应于所述状态机点阵的操作中的错误的指示而将用于调试所述状态机点阵的所述操作的所述指令提供到所述状态机点阵。
29.根据权利要求28所述的状态机引擎,其中用于调试所述状态机点阵的所述操作的所述指令经配置以确定所述状态机点阵的所述操作中的所述错误的原因。
30.一种方法,其包括:
从指令缓冲器提供与状态机引擎的操作相关联的第一指令;
从指令插入寄存器提供与所述状态机引擎的所述操作相关联的第二指令。
31.根据权利要求30所述的方法,其中从所述指令插入寄存器提供所述第二指令包括:响应于错误的指示而提供所述第二指令。
32.根据权利要求31所述的方法,其中所述第二指令经配置以尝试解决所述错误。
33.根据权利要求31所述的方法,其进一步包括从所述指令插入寄存器中的指令集合选择从所述指令插入寄存器供应的所述第二指令。
34.根据权利要求30所述的方法,其进一步包括响应于应中断所述状态机引擎的所述操作的指示而从所述指令缓冲器移除与所述操作相关联的任何指令,且其中从所述指令插入寄存器提供所述第二指令包括响应于可继续所述操作的指示而提供所述第二指令。
35.根据权利要求30所述的方法,其进一步包括中断从所述指令缓冲器供应第三指令,其中从所述指令插入寄存器提供所述第二指令来代替所述第三指令。
36.根据权利要求30所述的方法,其中从指令插入寄存器提供与所述状态机引擎的所述操作相关联的第二指令包括:从所述指令插入寄存器提供先前从所述指令缓冲器提供的指令集合,其中循序提供来自所述指令集合的指令。
CN201380044759.3A 2012-08-31 2013-08-16 状态机引擎中的指令插入 Active CN104583935B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/601,491 US9063532B2 (en) 2012-08-31 2012-08-31 Instruction insertion in state machine engines
US13/601,491 2012-08-31
PCT/US2013/055438 WO2014035700A1 (en) 2012-08-31 2013-08-16 Instruction insertion in state machine engines

Publications (2)

Publication Number Publication Date
CN104583935A true CN104583935A (zh) 2015-04-29
CN104583935B CN104583935B (zh) 2018-04-27

Family

ID=50184156

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380044759.3A Active CN104583935B (zh) 2012-08-31 2013-08-16 状态机引擎中的指令插入

Country Status (7)

Country Link
US (2) US9063532B2 (zh)
EP (1) EP2891052B1 (zh)
JP (1) JP6280121B2 (zh)
KR (1) KR102061754B1 (zh)
CN (1) CN104583935B (zh)
TW (1) TWI488110B (zh)
WO (1) WO2014035700A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106990994A (zh) * 2017-03-06 2017-07-28 王铭鑫 树形原子状态机及其控制逻辑接口的实现方法及装置
CN112306889A (zh) * 2020-11-23 2021-02-02 国网北京市电力公司 充电桩的测试方法、装置、存储介质及处理器

Families Citing this family (24)

* 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
US20130275709A1 (en) 2012-04-12 2013-10-17 Micron Technology, Inc. Methods for reading data from a storage buffer including delaying activation of a column select
US9524248B2 (en) 2012-07-18 2016-12-20 Micron Technology, Inc. Memory management for a hierarchical memory system
US9389841B2 (en) 2012-07-18 2016-07-12 Micron Technology, Inc. Methods and systems for using state vector data in a state machine engine
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
US11366675B2 (en) 2014-12-30 2022-06-21 Micron Technology, Inc. Systems and devices for accessing a state machine
US10430210B2 (en) 2014-12-30 2019-10-01 Micron Technology, Inc. Systems and devices for accessing a state machine
WO2016109571A1 (en) 2014-12-30 2016-07-07 Micron Technology, Inc Devices for time division multiplexing of state machine engine signals
US10691964B2 (en) 2015-10-06 2020-06-23 Micron Technology, Inc. Methods and systems for event reporting
US10977309B2 (en) 2015-10-06 2021-04-13 Micron Technology, Inc. Methods and systems for creating networks
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
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

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5784636A (en) * 1996-05-28 1998-07-21 National Semiconductor Corporation Reconfigurable computer architecture for use in signal processing applications
EP0943995A2 (en) * 1998-03-20 1999-09-22 Texas Instruments Incorporated Processor having real-time external instruction insertion for debug functions without a debug monitor
US20070074005A1 (en) * 2005-09-27 2007-03-29 Ibm Corporation Method and apparatus for issuing instructions from an issue queue in an information handling system
US20110307433A1 (en) * 2010-06-10 2011-12-15 Paul Dlugosch Programmable device, heirarchical parallel machines, methods for providing state information

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5535331A (en) * 1987-09-04 1996-07-09 Texas Instruments Incorporated Processor condition sensing circuits, systems and methods
US5150469A (en) * 1988-12-12 1992-09-22 Digital Equipment Corporation System and method for processor pipeline control by selective signal deassertion
KR0163179B1 (ko) * 1989-03-31 1999-01-15 미다 가쓰시게 데이타 프로세서
US5197130A (en) * 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
US5794062A (en) 1995-04-17 1998-08-11 Ricoh Company Ltd. System and method for dynamically reconfigurable computing using a processing unit having changeable internal hardware organization
US6499078B1 (en) * 1999-07-19 2002-12-24 Microsoft Corporation Interrupt handler with prioritized interrupt vector generator
AU2574501A (en) 1999-11-24 2001-06-04 Z-Force Corporation Configurable state machine driver and methods of use
US6662297B1 (en) * 1999-12-30 2003-12-09 Intel Corporation Allocation of processor bandwidth by inserting interrupt servicing instructions to intervene main program in instruction queue mechanism
JP2001236495A (ja) * 2000-02-24 2001-08-31 Sony Corp 画像処理装置および画像処理方法
JP4327574B2 (ja) 2003-12-04 2009-09-09 株式会社アステア 給油口キャップ
US7487542B2 (en) * 2004-01-14 2009-02-03 International Business Machines Corporation Intrusion detection using a network processor and a parallel pattern detection engine
US7392229B2 (en) 2005-02-12 2008-06-24 Curtis L. Harris General purpose set theoretic processor
KR100817056B1 (ko) * 2006-08-25 2008-03-26 삼성전자주식회사 분기이력 길이표시기, 분기예측 시스템 및 분기 예측 방법
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
US8219508B2 (en) * 2007-07-06 2012-07-10 Lsi Corporation Systems and methods for compressing state machine instructions using a two access indexing scheme
EP2366144B1 (en) * 2008-10-15 2015-09-30 Hyperion Core, Inc. Sequential processor comprising an alu array
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
US8601013B2 (en) * 2010-06-10 2013-12-03 Micron Technology, Inc. Analyzing data using a hierarchical structure
KR101607736B1 (ko) 2011-01-25 2016-03-30 마이크론 테크놀로지, 인크. 오토마톤의 진입 차수 및/또는 진출 차수를 제어하기 위한 양화 언롤링
EP2668574B1 (en) 2011-01-25 2021-11-24 Micron Technology, INC. Utilizing special purpose elements to implement a fsm
CN103430148B (zh) 2011-01-25 2016-09-28 美光科技公司 用于元件利用的状态分组
EP2668575B1 (en) 2011-01-25 2021-10-20 Micron Technology, INC. Method and apparatus for compiling regular expressions
US8719404B2 (en) * 2011-02-28 2014-05-06 International Business Machines Corporation Regular expression searches utilizing general purpose processors on a network interconnect
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
US8648621B2 (en) * 2011-12-15 2014-02-11 Micron Technology, Inc. Counter operation in a state machine lattice
US9471315B2 (en) * 2012-03-16 2016-10-18 International Business Machines Corporation Run-time instrumentation reporting
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5784636A (en) * 1996-05-28 1998-07-21 National Semiconductor Corporation Reconfigurable computer architecture for use in signal processing applications
EP0943995A2 (en) * 1998-03-20 1999-09-22 Texas Instruments Incorporated Processor having real-time external instruction insertion for debug functions without a debug monitor
US20070074005A1 (en) * 2005-09-27 2007-03-29 Ibm Corporation Method and apparatus for issuing instructions from an issue queue in an information handling system
US20110307433A1 (en) * 2010-06-10 2011-12-15 Paul Dlugosch Programmable device, heirarchical parallel machines, methods for providing state information

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106990994A (zh) * 2017-03-06 2017-07-28 王铭鑫 树形原子状态机及其控制逻辑接口的实现方法及装置
CN106990994B (zh) * 2017-03-06 2020-11-27 王铭鑫 树形原子状态机及其控制逻辑接口的实现方法及装置
CN112306889A (zh) * 2020-11-23 2021-02-02 国网北京市电力公司 充电桩的测试方法、装置、存储介质及处理器
CN112306889B (zh) * 2020-11-23 2023-10-20 国网北京市电力公司 充电桩的测试方法、装置、存储介质及处理器

Also Published As

Publication number Publication date
US20150277907A1 (en) 2015-10-01
KR102061754B1 (ko) 2020-01-03
EP2891052A4 (en) 2016-10-19
JP2015531936A (ja) 2015-11-05
US9934034B2 (en) 2018-04-03
CN104583935B (zh) 2018-04-27
WO2014035700A1 (en) 2014-03-06
EP2891052B1 (en) 2020-01-01
JP6280121B2 (ja) 2018-02-14
TW201423585A (zh) 2014-06-16
KR20150052125A (ko) 2015-05-13
EP2891052A1 (en) 2015-07-08
US20140068234A1 (en) 2014-03-06
TWI488110B (zh) 2015-06-11
US9063532B2 (en) 2015-06-23

Similar Documents

Publication Publication Date Title
CN104583935A (zh) 状态机引擎中的指令插入
CN104603742A (zh) 用于状态机引擎的结果产生
CN104603741A (zh) 在模式辨识处理系统中用于电力管理的方法及系统
CN103999035B (zh) 用于状态机中的数据分析的方法及系统
CN104487957B (zh) 用于编程状态机引擎的方法及装置
CN104011723B (zh) 状态机晶格中的布尔逻辑
CN104011736B (zh) 用于状态机中的检测的方法及系统
US20190340130A1 (en) Methods and systems for handling data received by a state machine engine
CN103988212B (zh) 用于在状态机中路由的方法及系统
CN105051711B (zh) 用于提供由状态机引擎接收的数据的方法及设备
CN104067282B (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