CN104603742A - 用于状态机引擎的结果产生 - Google Patents
用于状态机引擎的结果产生 Download PDFInfo
- Publication number
- CN104603742A CN104603742A CN201380044757.4A CN201380044757A CN104603742A CN 104603742 A CN104603742 A CN 104603742A CN 201380044757 A CN201380044757 A CN 201380044757A CN 104603742 A CN104603742 A CN 104603742A
- Authority
- CN
- China
- Prior art keywords
- result
- memory element
- data
- state machine
- fsm
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4498—Finite state machines
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/045—Programme 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Automation & Control Theory (AREA)
- Logic Circuits (AREA)
- Mobile Radio Communication Systems (AREA)
- Image Processing (AREA)
Abstract
本发明揭示一种状态机引擎(14),其包含存储元件,例如(例如,匹配)结果存储器(150)。所述存储元件(150)经配置以接收数据的分析的结果。所述存储元件(150)还经配置以基于所述结果的特性而将所述结果存储于所述存储元件(150)的特定部分中。此外,所述存储元件(150)经配置以存储对应于所述结果的结果指示符。还揭示其它状态机引擎(14)及方法。
Description
技术领域
本发明的实施例大体涉及电子装置,且更具体地说,在某些实施例中,涉及具有用于数据分析的并行装置的电子装置。
背景技术
在常规基于冯·诺伊曼(von Neumann)的计算机上执行复杂模式辨识可能效率低下。然而,生物大脑(尤其人类大脑)善于执行模式辨识。当前研究表明,人类大脑使用大脑新皮质中的一系列经阶层式组织的神经元层执行模式辨识。阶层的较低层中的神经元分析来自(例如)感觉器官的“原始信号”,而较高层中的神经元分析来自较低层级中的神经元的信号输出。大脑新皮质中的这种阶层式***可能结合大脑的其它区域完成复杂模式辨识,这使人类能够执行例如空间推理、意识思考及复杂语言等高阶功能。
在计算领域中,模式辨识任务越来越具有挑战性。计算机之间传输的数据量不断增大,且用户希望识别的模式数目日益增加。例如,通常通过在数据流中搜索模式(例如,特定词组或代码段)来检测垃圾邮件或恶意软件。模式数目随着垃圾邮件及恶意软件的多样化而增加,这是因为可实施新模式以搜索新变体。在数据流中搜索这些模式中的每一者可形成计算瓶颈。通常,当接收到数据流时,在数据流中一次一个地搜索每一模式。在***准备好搜索数据流的下一部分之前的延迟随模式数目而增加。因此,模式辨识可使数据的接收减慢。
硬件已经设计以在数据流中搜索模式,但是这种硬件通常不能在给定的时间量期间处理足够的数据量。经配置以搜索数据流的一些装置通过将数据流分布在多个电路之间以在给定的时间量期间处理足够的数据量。所述电路各自确定数据流是否匹配模式的一部分。通常,大量电路并行操作,其各自大体同时搜索数据流。然而,尚不存在有效地允许以与生物大脑的方式更相当的方式执行模式辨识的***。开发这种***是合乎需要的。
附图说明
图1说明根据本发明的各种实施例的具有状态机引擎的***的实例。
图2说明根据本发明的各种实施例的图1的状态机引擎的FSM点阵的实例。
图3说明根据本发明的各种实施例的图2的FSM点阵的块的实例。
图4说明根据本发明的各种实施例的图3的块的行的实例。
图5说明根据本发明的各种实施例的图4的行的两成员群组的实例。
图6说明根据本发明的各种实施例的有限状态机图表的实例。
图7说明根据本发明的各种实施例的使用FSM点阵实施的二层级阶层的实例。
图8说明根据本发明的各种实施例的编译器将源代码转换为二进制文件以编程图2的FSM点阵的方法的实例。
图9说明根据本发明的各种实施例的状态机引擎。
图10说明根据本发明的各种实施例的图3的块的行的第二实例。
图11说明根据本发明的各种实施例的图10的匹配元件的实例。
图12说明根据本发明的各种实施例的对应于图11的多路复用器的真值表。
图13说明根据本发明的各种实施例的图11的匹配结果存储器150。
具体实施方式
现在转到诸图,图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)、DDR2SDRAM、DDR3SDRAM等等。存储器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流动的数据不被修改。
如先前描述,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。如先前描述,可压缩匹配结果。
还可在状态机引擎14中提供额外的寄存器及缓冲器。例如,状态机引擎14可包含控制及状态寄存器154。此外,可提供恢复缓冲器***(例如,恢复及程序缓冲器156)以最初配置FSM点阵30的SME 34、36或在分析期间恢复FSM点阵30中的SME 34、36的状态。例如,可(例如,经由解压缩器138)将状态向量数据从恢复缓冲器156提供到状态向量***141的状态向量中间输入缓冲器146。解压缩器138可用以解压缩提供到状态向量存储器缓冲器144及/或状态向量中间输入缓冲器146的状态向量数据。状态向量***141可将状态向量数据提供到FSM点阵30以配置FSM点阵30的SME 34、36。类似地,还可提供保存缓冲器***(例如,保存及修复映射缓冲器158)以存储保存及修复映射以供设定及使用。例如,可(例如,经由压缩器140)将状态向量数据从状态向量***141的状态向量中间输出缓冲器148提供到保存缓冲器158。压缩器140可用以压缩从状态向量存储器缓冲器144及/或状态向量中间输出缓冲器148提供到保存缓冲器158的状态向量数据。
图10说明类似于上文关于图4讨论的行38的第二实例。行38可包含可编程行内交换元件44及行互连导体162、164、166、168、170、172、174、176、178、180、182、184、186、188、190及192(其还可被称为如下文所述的“行路由线162到192”且可为除图4的互连导体68及70以外的互连导体或可经使用代替图4的互连导体68及70)。
图10的行38还可包含8个GOT 60、专用元件58、输入62、输入64、输出66、匹配元件160及专用元件路由线194。图10中说明的GOT 60及专用元件58可实质上类似于先前关于图4讨论的GOT 60及专用元件58。因此,每一GOT 60具有输入62及64以启动其中的SME 34、36以允许通过每一GOT的相应SME 34、36执行分析(例如,经分析的数据流中的匹配),这可结合来自其它GOT 60的结果一起利用。
可从输出66上的GOT 60选择性地提供由GOT 60提供的结果。在一个实施例中,GOT 60的可能输出可不包含输出,包含来自GOT 60的SME 34的输出、来自GOT 60的SME 36的输出或第一SME 34的输出与第二SME 36的输出的逻辑组合(例如,OR)。因此,GOT 60可经配置以提供来自GOT 60的选定结果。此配置可基于(例如)在FSM点阵30的初始配置期间执行的初始编程而完成。来自GOT 60的结果可提供到匹配元件160,其可操作地提供来自行38的选定结果以进行给定数据流分析或数据流分析的一部分。
此外,行38可包含行路由线162到192。在本实施例中,存在能够选择性地耦合到8个GOT 60及专用元件58的16个行线162到192。然而,应了解,可结合行38利用更少或更多行路由线。
行路由线162到176中的每一者可用以将启动信号提供到行38中的GOT 60的SME34、36的任一者,而行路由线178、182、186及190中的每一者可用以将启动信号提供到GOT 60的SME 34的任一者,且行路由线180、184、188及192中的每一者可用以将启动信号提供到GOT 60的SME 36的任一者。因此,通过使用这些行路由线162到192,可启动任何特定SME(例如,SME 34)的任何特定检测单元86。这可通过(例如,根据加载图像)将相应行路由线162到192选择性地耦合到特定SME 34、36的统一启动输入62、64而完成。例如,GOT 60可将输出66传输到耦合到所述输出66的行路由线,例如行路由线162。然后,这可用于相同行38上的所有SME 34、36、专用元件58及(对于行路由线166、174、176而言)匹配元件160。此输出66信号还可传输到块内交换元件42中。所述信号可然后输出到(例如)多达3个块路由线。所述信号可通过额外的块内交换元件42从所述3个块路由线路由到相同块32中的不同行38。其还可通过块间交换元件40路由到不同块32。
如图10中说明,行路由线162到192中的每一者包含图3的多个行内交换元件44,其可用以将任何GOT 60选择性地耦合到任何其它GOT 60,或将任何GOT 60选择性地耦合到行38内(就此而言,或另一行及/或另一块内)的任何其它元件(例如,专用元件58)。然而,这些连接可受限于可用交换元件196。例如,行路由线162、164、166、168、170、172、174及176中的每一者可用以启动行38内的SME 34、36的任一者。然而,行路由线162、164、166、168、170、172、174及176中的每一者还可选择性地耦合到GOT60的相应不同者的输出。例如,来自GOT 60的任一者的输出在可耦合到所述输出的行路由线162、164、166、168、170、172、174及176的相应者上可只由所述GOT 60提供。因此,在一个实施例中,因为行路由线162、164、166、168、170、172、174及176可耦合到GOT 60的输出66,所以行路由线162、164、166、168、170、172、174及176可将信号提供(例如,输出)到块内交换元件42。相比之下,在一个实施例中,行路由线178、180、182、184、186、188、190及192可从块内交换元件42接收可接收自(例如)其它行38或块32的信号(例如,可通过所述信号驱动)。
除行路由线162到192以外,行38还可包含耦合到专用元件58的专用元件路由线194。类似于行路由线162、164、166、168、170、172、174及176,专用路由线194可将信号提供(例如,输出)到块内交换元件42,且在一个实施例中,专用元件路由线194还可耦合到匹配元件160。例如,如果专用元件58包括计数器,那么计数器的输出可提供到专用路由线194。类似地,如果专用元件58包含布尔逻辑元件(例如布尔单元),那么布尔逻辑元件的输出可提供到专用路由线194。通过使用这些专用元件,可将重复搜索(例如,寻找元件十次)或级联搜索(例如,寻找元件x、y及z)减化为可由专用路由线194提供到块内交换元件42及匹配元件160中的任一者或二者的单个输出。
图11中呈现匹配元件160的更详细说明。如说明,匹配元件160可包含四个数据输入198、200、202及204、两个输出及六个控制输入210、212、214、216、218及220。此外,匹配元件可包含两个2对1多路复用器222、224。虽然说明2对1多路复用器222、224,但是应注意,可视需要或在硅空间允许时利用其它配置(例如3对1多路复用器、4对1多路复用器或其它元件)来代替2对1多路复用器222、224,以(例如)允许路由/输出配置的灵活性。
在一个实施例中,匹配元件160的数据输入198耦合到行路由线176,数据输入200耦合到行路由线174,数据输入202耦合到专用路由线194,且数据输入204耦合到行路由线168。这些特定线的选择只是说明性的,且已经选取以证实从行38接收信号的灵活性。通过将行路由线168及行路由线176选取为连接到匹配元件160,可建立GOT 60之间的奇偶校验。例如,通过所有GOT 60的第一半部分(GOT 60零到三)中的一个GOT60对数据流的至少一部分执行的第一分析的结果可在路由线168上提供到匹配元件160,而通过所有GOT 60的第二半部分(GOT 60四到七)中的另一GOT 60由所述数据流的至少一部分执行的第二分析的结果可通过路由线176提供到匹配元件160。以此方式***输入200、204可允许减少将结果提供到匹配元件160的路径。此外,通过在匹配元件160处沿专用路由线194从专用元件58接收结果,可将经级联搜索的结果一次提供到匹配元件160。最终,行路由线174的选择对行38的总体***添加灵活性。然而,如提及,这些选择只是说明性的。
如说明,匹配元件160的数据输入198、200可耦合到2对1多路复用器222,而匹配元件160的数据输入202、204可耦合到2对1多路复用器224。2对1多路复用器222、224还可各自从(例如)可基于在FSM点阵30的初始配置期间执行的加载图像进行配置的控制输入210、212、214、216、218及220接收控制信号。在一个实施例中,2对1多路复用器222可从控制输入210接收选择信号S0,从控制输入212接收选择信号S1,且从控制输入214接收输出启用信号。类似地,2对1多路复用器224可从控制输入216接收选择信号S0,从控制输入218接收选择信号S1,且从控制输入220接收输出启用信号。选择信号S0、S1可分别用以选择将所述数据输入的哪些数据输入耦合到输出206及208以将数据搜索的分析结果提供到(例如)输出块54。此外,使用提供选择信号S0、S1的多个选择线可允许在无反相器的情况下建立2对1多路复用器222、224中的每一者,因此减小实施2对1多路复用器222、224所需的面积。然而,在一个实施例中,可利用携载单个选择信号(例如,S0)的单个选择线。此外,在一个实施例中,可删除输出启用信号。
此外,来自控制输入214及220的输出启用信号可为允许只在数据输入198、200、202及204上的信号稳定时提供输出206及208上的信号的时钟信号或其它启用信号。此外,来自控制输入214及220的输出启用信号可为允许只在数据输入198、200、202及204上的信号稳定时提供输出206及208的时钟信号或其它启用信号。在其它实例中,可消除输出启用信号。
图12说明陈述来自控制输入210及216的选择信号S0及来自控制输入212及218的选择信号S1可如何编程地选择2对1多路复用器222及224的输出206及208的实例的真值表226。如图12中所示,说明对应于匹配元件160的输出206及208的真值表226。应注意,真值表226中表示的输出206及208假设来自控制输入214及220的输出启用信号已启动2对1多路复用器222及224。如真值表226中说明,当来自控制输入210及216的选择信号S0及来自控制输入212及218的选择信号S1两者处于非作用中(即,“0”)时,由2对1多路复用器222及224的输出206及208提供的信号将处于非作用中。例如,并未从匹配元件160提供来自行38的结果。当来自控制输入210及216的选择信号S0处于作用中(例如,“1”)且来自控制输入212及218的选择信号S1处于非作用中时,由2对1多路复用器222及224的输出206及208提供的信号将为由行路由线174及168提供的结果。相反地,当来自控制输入210及216的选择信号S0处于非作用中且来自控制输入212及218的选择信号S1处于作用中时,由2对1多路复用器222及224的输出206及208提供的信号将为由行路由线176及专用路由线194提供的结果。最终,禁止来自控制输入210及216的选择信号S0及来自控制输入212及218的选择信号S1两者借以处于作用中的条件。因此,在匹配元件160的配置期间避免此状态。以此方式,匹配元件160可经选择性地配置以未在输出206、208上提供信号,提供接收自第一数据输入200、204的信号(由行路由线174、168提供的结果)或接收自第二数据输入198、202的信号(由行路由线176、专用路由线194提供的结果)。此外,应注意,匹配元件160可以不限于图12中说明的特定实施例的其它配置操作。
如上提及,由匹配元件160的输出206或208提供的信号可为基于FSM点阵30的初始配置的任何结果。这些结果可提供到存储元件,例如结果存储器150。图13中说明此结果存储器的一个实施例。
结果存储器150可分为四个存储器元件228、229、230及231,所述四个存储器元件中的两个元件各自对应于FSM点阵30的半点阵的相应者。例如,存储器元件228及230可对应于半点阵0,而存储器元件229及231可对应于半点阵1。此设定可允许对对应于相应半点阵30的存储器同时执行读取及写入操作。例如,可已将数据写入到存储器元件228,同时已从存储器元件230读取数据。在一个实施例中,存储器元件228、229、230及232中的每一者可为DRAM存储器元件或任何其它合适的存储装置。在一个实施例中,存储器元件228及229是(例如)单个存储器芯片(元件)的部分,且存储器元件230及231是分离存储器芯片(元件)的部分。在一些实施例中,存储器元件228、229、230及232可操作为初始缓冲器以缓冲从FSM点阵30接收由结果总线232提供的结果。结果存储器150可经配置以基于结果的特性(例如FSM点阵30中提供结果的位置的指示)将所接收结果存储在结果存储器150的特定部分中。例如,存储器元件228及230中的存储位置可存储通过结果总线232从FSM点阵30的半点阵0提供的匹配。类似地,存储器元件230及232中的存储位置可存储通过结果总线232从FSM点阵30的半点阵1提供的匹配。此存储可结合从(例如)编程接口56提供到结果存储器150的信号来完成。
在一个实施例中,提供到结果存储器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可操作以使每一所接收的结果与产生所述结果的数据输入相互关联。为完成此,可存储对应于(且在一些实施例中结合)接收自结果总线232的每一结果236的相应结果指示符234。在一个实施例中,结果指示符234可为单位旗标。在另一实施例中,结果指示符234可为多位旗标。如果结果指示符234可包含多位旗标,那么所述旗标的位位置可指示(例如)所述结果在输入数据流中的位置的计数、所述结果所对应的点阵、结果集合中的位置或其它识别信息。这些结果指示符234可允许对结果适当地分组并将结果供应到输出总线238,例如提供到压缩器140。此外,通过特定结果236的相应结果指示符234识别所述特定结果236的能力允许从结果存储器150选择性地输出所要结果236。因此,只由FSM点阵30提供的特定结果236可选择性地提供到输出总线238。结合确定结果应存储于存储元件的特定部分中(例如,在所述确定之前、之后或在确定的同时),结果存储器150可确定所述部分中(例如,存储器元件228)的存储位置是否可用。如果经确定的部分中的所述存储位置可用,那么可将所述结果存储于所述部分中。
然而,可出现其中存储器元件228、229、230或232中的一者已满(例如,所述结果存储器150的所述部分中的存储位置不可用)的情境。在此情境中,结果存储器150可实施溢出过程。此溢出过程可包含交换所接收结果236的存储位置。例如,虽然存储器元件228通常相关联于(存储)来自FSM点阵30的半点阵0的结果236,但是(例如)在存储器元件228已满的情况下,可将存储器元件228中的一或多个当前存储的结果236复制到存储器元件230中的位置以为待存储于存储器228中的新结果236腾出空间。替代地或此外,当存储器元件229已满时,可将最初旨在用于存储器229的结果236代替性地存储在存储器元件231中。在任一情境中,与存储于相邻存储器中的任何结果236相关联的结果指示符234将允许适当地输出相应结果236。因此,当此溢出过程开始时,结果存储器150可经配置以在希望输出结果236的特定集合时搜索存储器元件228及230(或229及231)两者。此可基于(例如)由编程接口56提供的指令而完成。
可发生其中上文讨论的溢出过程不足以克服结果存储器150的溢出的额外情境。例如,存储器元件228及230两者均可能是满的。在此情境中,结果存储器150可操作以暂停由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的分析越权。
虽然本发明可具有各种修改及替代形式,但是已在图式中通过实例展示且在本文中详细描述特定实施例。然而,应了解,本发明并不旨在限于所揭示的特定形式。实情是,本发明涵盖落于如通过随附权利要求书界定的本发明的精神及范围内的所有修改、等效物及替代。
Claims (27)
1.一种状态机引擎,其包括:
存储元件,其经配置以:
接收数据的分析的结果;
基于所述结果的特性,将所述结果存储于所述存储元件的特定部分中;及
存储对应于所述结果的结果指示符。
2.根据权利要求1所述的状态机引擎,其中所述特定部分包括相异存储器元件。
3.根据权利要求2所述的状态机引擎,其中所述相异存储器元件包括DRAM存储器。
4.根据权利要求1所述的状态机引擎,其中所述结果的所述特性包括点阵中提供所述结果的位置的指示。
5.根据权利要求1所述的状态机引擎,其中所述结果指示符使所述结果与产生所述结果的数据输入相互关联。
6.根据权利要求1所述的状态机引擎,其中所述存储元件经配置以在所述特定部分已满时提供指示。
7.根据权利要求6所述的状态机引擎,其中所述状态机引擎经配置以响应于所述指示而暂停所述数据的所述分析。
8.一种方法,其包括:
在存储元件处接收数据的分析的结果;
基于所述结果的特性,确定所述存储元件的多个部分中的哪一部分将存储所述结果;及
将所述结果存储于所述存储元件的所述经确定的部分中的存储位置中。
9.根据权利要求8所述的方法,其包括存储对应于所述结果的结果指示符。
10.根据权利要求9所述的方法,其中存储对应于所述结果的结果指示符包括:连同所述结果一起存储所述结果指示符。
11.根据权利要求9所述的方法,其中所述结果指示符使所述结果与产生所述结果的数据输入相互关联。
12.根据权利要求8所述的方法,其中所述结果包括第一结果且所述存储位置包括第一存储位置,且所述方法进一步包括:
在所述存储元件处接收数据的分析的第二结果;
确定所述第二结果是否应存储于所述存储元件的所述经确定的部分中;及
如果所述存储元件的所述经确定的部分中的第二存储位置可用,那么将所述第二结果存储于所述存储元件的所述经确定的部分中。
13.根据权利要求12所述的方法,其中所述经确定的部分包括所述存储元件的第一部分,且所述方法进一步包括在所述存储元件的所述经确定的部分中的所述第二存储位置不可用的情况下,将所述第二结果存储在所述存储元件的第二部分中。
14.根据权利要求13所述的方法,其包括配置所述存储元件以在所述第二结果存储于所述存储元件的所述第二部分中时,从所述存储元件的所述第一及第二部分两者提供所述结果。
15.根据权利要求8所述的方法,其包括在所述存储元件的所述多个部分已满时提供指示。
16.根据权利要求15所述的方法,其包括响应于所述指示暂停所述数据的所述分析。
17.根据权利要求16所述的方法,其包括在所述存储元件的所述多个部分不再满时提供另一指示,及响应于所述另一指示而继续所述数据的所述分析。
18.一种状态机引擎,其包括:
可编程元件的块,其经配置以提供数据分析的结果;及
存储元件,其经配置以:
接收所述结果;
确定所述存储元件的多个部分中的哪一部分将存储所述结果;及
将所述结果及对应于所述结果的结果指示符存储于所述存储元件的所述经确定的部分中的存储位置中。
19.根据权利要求18所述的状态机引擎,其中所述存储元件经配置以基于所述结果的特性来确定所述存储元件的所述多个部分中的哪一部分将存储所述结果。
20.根据权利要求19所述的状态机引擎,其中所述结果的所述特性包括点阵中的位置的指示,所述点阵包括提供所述结果的所述块。
21.根据权利要求18所述的状态机引擎,其中所述结果包括第一结果,且可编程元件的所述块进一步经配置以提供所述分析的第二结果。
22.根据权利要求21所述的状态机引擎,其中所述存储位置包括第一存储位置,且其中所述存储元件经配置以:
接收所述第二结果;
确定所述第二结果是否应存储于所述存储元件的所述经确定的部分中;及
如果所述存储元件的所述经确定的部分中的第二存储位置可用,那么将所述第二结果存储于所述存储元件的所述经确定的部分中。
23.根据权利要求22所述的状态机引擎,其中所述经确定的部分包括所述存储元件的第一部分,且进一步其中所述存储元件经配置以在所述存储元件的所述经确定的部分中的所述第二存储位置不可用的情况下,将所述第二结果存储在所述存储元件的第二部分中。
24.根据权利要求23所述的状态机引擎,其中所述存储元件经配置以在所述第二结果存储于所述存储元件的所述第二部分中时,针对结果搜索所述存储元件的所述第一及第二部分。
25.根据权利要求18所述的状态机引擎,其中所述存储元件经配置以在所述存储元件的所述多个部分已满时提供指示。
26.根据权利要求25所述的状态机引擎,其中所述状态机引擎经配置以响应于所述指示而暂停所述数据的分析。
27.根据权利要求26所述的状态机引擎,其中所述存储元件经配置以在所述存储元件的所述多个部分不再满时提供另一指示,且其中所述状态机引擎经配置以响应于所述另一指示而继续数据的所述分析。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/601,642 | 2012-08-31 | ||
US13/601,642 US9075428B2 (en) | 2012-08-31 | 2012-08-31 | Results generation for state machine engines |
PCT/US2013/055436 WO2014035699A1 (en) | 2012-08-31 | 2013-08-16 | Results generation for state machine engines |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104603742A true CN104603742A (zh) | 2015-05-06 |
CN104603742B CN104603742B (zh) | 2017-06-23 |
Family
ID=50184155
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380044757.4A Active CN104603742B (zh) | 2012-08-31 | 2013-08-16 | 用于状态机引擎的结果产生 |
Country Status (7)
Country | Link |
---|---|
US (2) | US9075428B2 (zh) |
EP (1) | EP2891053B1 (zh) |
JP (1) | JP6106752B2 (zh) |
KR (1) | KR101921373B1 (zh) |
CN (1) | CN104603742B (zh) |
TW (1) | TWI569206B (zh) |
WO (1) | WO2014035699A1 (zh) |
Families Citing this family (24)
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 |
US9501131B2 (en) | 2012-08-31 | 2016-11-22 | Micron Technology, Inc. | Methods and systems for power management in a pattern recognition processing system |
US9703574B2 (en) | 2013-03-15 | 2017-07-11 | Micron Technology, Inc. | Overflow detection and correction in state machine engines |
US9448965B2 (en) | 2013-03-15 | 2016-09-20 | Micron Technology, Inc. | Receiving data streams in parallel and providing a first portion of data to a first state machine engine and a second portion to a second state machine |
KR20160046613A (ko) * | 2014-10-21 | 2016-04-29 | 삼성전자주식회사 | 카운터 데이터 처리 방법 및 디바이스 |
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 |
US11366675B2 (en) | 2014-12-30 | 2022-06-21 | Micron Technology, Inc. | Systems and devices for accessing a state machine |
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 |
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 |
US20180113951A1 (en) * | 2016-10-20 | 2018-04-26 | Micron Technology, Inc. | Graph traversal using automata processor |
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 |
EP3960569A4 (en) * | 2019-04-23 | 2023-01-25 | Hitachi Astemo, Ltd. | VEHICLE CONTROL DEVICE AND COMPUTER PROGRAM |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080320053A1 (en) * | 2007-06-21 | 2008-12-25 | Michio Iijima | Data management method for accessing data storage area based on characteristic of stored data |
US20110307503A1 (en) * | 2010-06-10 | 2011-12-15 | Paul Dlugosch | Analyzing data using a hierarchical structure |
US20110307433A1 (en) * | 2010-06-10 | 2011-12-15 | Paul Dlugosch | Programmable device, heirarchical parallel machines, methods for providing state information |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7487542B2 (en) | 2004-01-14 | 2009-02-03 | International Business Machines Corporation | Intrusion detection using a network processor and a parallel pattern detection engine |
US7716455B2 (en) | 2004-12-03 | 2010-05-11 | Stmicroelectronics, Inc. | Processor with automatic scheduling of operations |
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 |
JP5031538B2 (ja) * | 2007-06-21 | 2012-09-19 | 株式会社日立製作所 | データ分配方法、データ分配プログラム、及び並列データベースシステム |
JPWO2009104324A1 (ja) | 2008-02-22 | 2011-06-16 | 日本電気株式会社 | 能動計量学習装置、能動計量学習方法およびプログラム |
US7816943B2 (en) * | 2008-06-16 | 2010-10-19 | Microchip Technology Incorporated | Programmable cycle state machine interface |
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 |
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 |
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 |
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 |
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 |
US8380575B2 (en) * | 2009-12-15 | 2013-02-19 | Trading Technologies International, Inc. | System and methods for risk-based prioritized transaction message flow |
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 |
US9323994B2 (en) | 2009-12-15 | 2016-04-26 | Micron Technology, Inc. | Multi-level hierarchical routing matrices for pattern-recognition processors |
KR101640295B1 (ko) | 2011-01-25 | 2016-07-15 | 마이크론 테크놀로지, 인크. | 정규 표현을 컴파일하기 위한 방법 및 장치 |
WO2012103151A2 (en) | 2011-01-25 | 2012-08-02 | Micron Technology, Inc. | State grouping for element utilization |
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 |
US8648621B2 (en) | 2011-12-15 | 2014-02-11 | Micron Technology, Inc. | Counter operation in a state machine lattice |
US8593175B2 (en) | 2011-12-15 | 2013-11-26 | Micron Technology, Inc. | Boolean logic in a state machine lattice |
US9443156B2 (en) | 2011-12-15 | 2016-09-13 | Micron Technology, Inc. | Methods and systems for data analysis in a state machine |
US8782624B2 (en) | 2011-12-15 | 2014-07-15 | Micron Technology, Inc. | Methods and systems for detection in a state machine |
US8680888B2 (en) | 2011-12-15 | 2014-03-25 | Micron Technologies, Inc. | Methods and systems for routing in a state machine |
US9389841B2 (en) | 2012-07-18 | 2016-07-12 | Micron Technology, Inc. | Methods and systems for using state vector data in a state machine engine |
US9304968B2 (en) | 2012-07-18 | 2016-04-05 | Micron Technology, Inc. | Methods and devices for programming a state machine engine |
US9235798B2 (en) | 2012-07-18 | 2016-01-12 | Micron Technology, Inc. | Methods and systems for handling data received by a state machine engine |
US9501131B2 (en) | 2012-08-31 | 2016-11-22 | Micron Technology, Inc. | Methods and systems for power management in a pattern recognition processing system |
US9063532B2 (en) | 2012-08-31 | 2015-06-23 | Micron Technology, Inc. | Instruction insertion in state machine engines |
-
2012
- 2012-08-31 US US13/601,642 patent/US9075428B2/en active Active
-
2013
- 2013-08-16 KR KR1020157007432A patent/KR101921373B1/ko active IP Right Grant
- 2013-08-16 JP JP2015529852A patent/JP6106752B2/ja active Active
- 2013-08-16 CN CN201380044757.4A patent/CN104603742B/zh active Active
- 2013-08-16 EP EP13833176.4A patent/EP2891053B1/en active Active
- 2013-08-16 WO PCT/US2013/055436 patent/WO2014035699A1/en active Application Filing
- 2013-08-30 TW TW102131468A patent/TWI569206B/zh active
-
2015
- 2015-06-30 US US14/756,000 patent/US9454322B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080320053A1 (en) * | 2007-06-21 | 2008-12-25 | Michio Iijima | Data management method for accessing data storage area based on characteristic of stored data |
US20110307503A1 (en) * | 2010-06-10 | 2011-12-15 | Paul Dlugosch | Analyzing data using a hierarchical structure |
US20110307433A1 (en) * | 2010-06-10 | 2011-12-15 | Paul Dlugosch | Programmable device, heirarchical parallel machines, methods for providing state information |
Also Published As
Publication number | Publication date |
---|---|
KR101921373B1 (ko) | 2018-11-22 |
US20150324129A1 (en) | 2015-11-12 |
EP2891053B1 (en) | 2021-07-28 |
CN104603742B (zh) | 2017-06-23 |
EP2891053A1 (en) | 2015-07-08 |
US9454322B2 (en) | 2016-09-27 |
US9075428B2 (en) | 2015-07-07 |
JP6106752B2 (ja) | 2017-04-05 |
TWI569206B (zh) | 2017-02-01 |
WO2014035699A1 (en) | 2014-03-06 |
KR20150052110A (ko) | 2015-05-13 |
US20140068167A1 (en) | 2014-03-06 |
EP2891053A4 (en) | 2016-05-11 |
TW201423581A (zh) | 2014-06-16 |
JP2015531935A (ja) | 2015-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104603742A (zh) | 用于状态机引擎的结果产生 | |
US11741014B2 (en) | Methods and systems for handling data received by a state machine engine | |
CN103999035B (zh) | 用于状态机中的数据分析的方法及*** | |
CN104603741A (zh) | 在模式辨识处理***中用于电力管理的方法及*** | |
CN104583935A (zh) | 状态机引擎中的指令*** | |
CN104011736B (zh) | 用于状态机中的检测的方法及*** | |
CN104487957B (zh) | 用于编程状态机引擎的方法及装置 | |
CN104011723B (zh) | 状态机晶格中的布尔逻辑 | |
CN105051711B (zh) | 用于提供由状态机引擎接收的数据的方法及设备 | |
CN103988212B (zh) | 用于在状态机中路由的方法及*** | |
CN104487956A (zh) | 用于使用状态机引擎中的状态向量数据的方法及*** | |
CN104067282A (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 |