CN104487956A - 用于使用状态机引擎中的状态向量数据的方法及*** - Google Patents
用于使用状态机引擎中的状态向量数据的方法及*** Download PDFInfo
- Publication number
- CN104487956A CN104487956A CN201380038332.2A CN201380038332A CN104487956A CN 104487956 A CN104487956 A CN 104487956A CN 201380038332 A CN201380038332 A CN 201380038332A CN 104487956 A CN104487956 A CN 104487956A
- Authority
- CN
- China
- Prior art keywords
- state vector
- state
- state machine
- vector data
- data
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Logic Circuits (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Read Only Memory (AREA)
Abstract
本发明提供一种状态机引擎(14),其包含状态向量***(141)。所述状态向量***(141)包含输入缓冲器(146),所述输入缓冲器(146)经配置以从还原缓冲器(156)接收状态向量数据并将状态向量数据提供到状态机晶格(30)。所述状态向量***(141)还包含输出缓冲器(148),所述输出缓冲器(148)经配置以从所述状态机晶格(30)接收状态向量数据并将状态向量数据提供到保存缓冲器(158)。
Description
技术领域
本发明的实施例大体涉及电子装置,且更具体地说,在某些实施例中,涉及具有用于数据分析的并行装置的电子装置。
背景技术
在常规基于冯·诺伊曼(von Neumann)的计算机上执行复杂数据分析(例如,模式辨识)可能效率低下。然而,生物大脑(尤其人类大脑)善于执行复杂的数据分析。当前研究表明,人类大脑使用大脑新皮质中的一系列经阶层式组织的神经元层执行数据分析。阶层的较低层中的神经元分析来自(例如)感觉器官的“原始信号”,而较高层中的神经元分析来自较低层级中的神经元的信号输出。大脑新皮质中的这种阶层式***可能结合大脑的其它区域完成复杂数据分析,这使人类能够执行例如空间推理、意识思考及复杂语言等高阶功能。
在计算领域中,例如模式辨识任务越来越具有挑战性。计算机之间传输的数据量不断增大,且用户希望检测的模式数目日益增加。例如,通常通过在数据流中搜索模式(例如,特定词组或代码段)来检测垃圾邮件或恶意软件。模式数目随着垃圾邮件及恶意软件的多样化而增加,这是因为可实施新模式以搜索新变体。针对这些模式中的每一者搜索数据流可形成计算瓶颈。通常,当接收到数据流时,针对每一模式一次一个地搜索数据流。在***准备好搜索数据流的下一部分之前的延迟随模式数目而增加。因此,模式辨识可使数据的接收减慢。
硬件已经设计以针对模式搜索数据流,但是这种硬件通常不能在给定的时间量期间处理足够的数据量。经配置以搜索数据流的一些装置通过将数据流分布在多个电路之间以在给定的时间量期间处理足够的数据量。所述电路各自确定数据流是否匹配模式的一部分。通常,大量电路并行操作,其各自大体同时搜索数据流。然而,尚不存在有效地允许以与生物大脑的方式更相当的方式执行复杂数据分析的***。开发这种***是合乎需要的。
附图说明
图1说明根据本发明的各种实施例的具有状态机引擎的***的实例。
图2说明根据本发明的各种实施例的图1的状态机引擎的有限状态机(FSM)品格的实例。
图3说明根据本发明的各种实施例的图2的FSM品格的块的实例。
图4说明根据本发明的各种实施例的图3的块的行的实例。
图5说明根据本发明的各种实施例的图4的行的两成员群组的实例。
图6说明根据本发明的各种实施例的有限状态机图表的实例。
图7说明根据本发明的各种实施例的使用FSM品格实施的二层级阶层的实例。
图8说明根据本发明的各种实施例的编译器将源代码转换为二进制文件以配置图2的FSM品格的方法的实例。
图9说明根据本发明的各种实施例的状态机引擎。
图10说明展示根据本发明的各种实施例的用于处置状态向量***中的状态向量数据的流程图。
具体实施方式
现在转到诸图,图1说明大体上由参考数字10标示的基于处理器的***的实施例。***10(例如,数据分析***)可为例如台式计算机、膝上型计算机、传呼器、蜂窝电话、个人记事本、便携式音频播放器、控制电路、相机等等的多种类型中的任一者。***10还可为网络节点,例如路由器、服务器或客户端(例如,先前描述的计算机类型中的一者)。***10可为某个其它种类的电子装置,例如复印机、扫描仪、打印机、游戏控制台、电视机、机顶视频分布或记录***、电缆箱、个人数字媒体播放器、工厂自动化***、汽车计算机***或医疗装置。(用以描述***的这些各种实例的术语(如本文中使用的许多其它术语)可共享一些参照物,且因此不应通过所列出的其它项加以狭隘地理解)。
在典型的基于处理器的装置(例如***10)中,例如微处理器等处理器12控制***10中的***功能及请求的处理。此外,处理器12可包括共享***控制的多个处理器。处理器12可直接或间接地耦合到***10中的组件中的每一者,使得处理器12通过执行可存储于***10内或***10外部的指令而控制***10。
根据本文中描述的实施例,***10包含可在处理器12的控制下操作的状态机引擎14。如本文中所使用,状态机引擎14是指单个装置(例如,单个芯片)。状态机引擎14可采用任何自动机理论。例如,状态机引擎14可采用数个状态机架构中的一者,包含(但不限于)米立(Mealy)架构、摩尔(Moore)架构、有限状态机(FSM)、确定性FSM(DFSM)、位并行状态机(BPSM)等等。虽然可使用多种架构,但是为论述目的,本申请案提及FSM。然而,所属领域的技术人员应了解,可使用多种状态机架构中的任一者来采用所述技术。
如下文进一步论述,状态机引擎14可包含数个(例如,一或多个)有限状态机(FSM)品格(例如,芯片的核心)。为本申请案的目的,术语“品格”是指元件(例如,布尔单元、计数器单元、状态机元件、状态转变元件)的组织框架(例如,路由矩阵、路由网络、框架)。此外,“品格”可具有任何合适的形状、结构或阶层式组织(例如,栅格、立方体、球形、级联)。每一FSM品格可实施各自并行接收及分析相同数据的多个FSM。此外,FSM品格可布置成群组(例如,群集),使得FSM品格的群集可并行分析相同输入数据。此外,状态机引擎14的FSM品格的群集可布置在阶层式结构中,其中来自阶层式结构的较低层级上的状态机品格的输出可用作到较高层级上的状态机品格的输入。通过经由阶层式结构使状态机引擎14的并行FSM品格的群集串联地级联,可分析(例如,评估、搜索等等)日益复杂的模式。
此外,基于状态机引擎14的阶层式并行配置,状态机引擎14可用于利用高处理速度的***中的复杂数据分析(例如,模式辨识)。例如,本文中描述的实施例可并入具有1千兆字节/秒的处理速度的***中。因此,利用状态机引擎14,可迅速分析来自高速存储器装置或其它外部装置的数据。状态机引擎14可根据多个准则(例如,搜索项)大约同时(例如,在单个装置循环期间)分析数据流。状态机引擎14的层级上的FSM群集内的FSM品格中的每一者可各自大约同时从数据流接收相同搜索项,且并行FSM品格中的每一者可依处理准则确定所述项是否将状态机引擎14推进到下一状态。状态机引擎14可根据相对较大数目个准则(例如,大于100个、大于110个或大于10,000个准则)分析诸个项。因为FSM品格并行操作,所以其可将准则应用于具有相对较高带宽的数据流(例如,大于或大体等于1千兆字节/秒的数据流)而不使数据流减慢。
在一个实施例中,状态机引擎14可经配置以辨识(例如,检测)数据流中的大量模式。例如,状态机引擎14可用以检测用户或其它实体可能希望分析的多种类型数据流中的一或多者中的模式。例如,状态机引擎14可经配置以分析经由网络接收的数据流,例如经由因特网接收的数据包或经由蜂窝网络接收的语音或数据。在一个实例中,状态机引擎14可经配置以分析垃圾邮件或恶意软件的数据流。数据流可被接收为串行数据流,其中以具有意义的顺序(例如以时间、词汇或语义显著的顺序)接收数据。或者,数据流可经并行或无序接收,且然后通过(例如)对经由因特网接收的数据包进行重新排序而转换为串行数据流。在一些实施例中,数据流可串行地呈现项,但是可并行接收表达所述项中的每一者的位。数据流可从***10外部的源接收,或可通过询问例如存储器16等存储器装置且由存储于存储器16中的数据形成数据流而形成。在其它实例中,状态机引擎14可经配置以辨识拼写某一字的字符序列、指定基因的基因碱基对序列、形成图像的部分的图片或视频文件中的位序列、形成程序的部分的可执行文件中的位序列或形成歌曲或口语词组的部分的音频文件中的位序列。待分析的数据流可包含呈二进制格式或其它格式(例如,十进制、ASCII等等)的多个数据位。所述流可编码具有单个数字或多个数字(例如,多个二进制数字)的数据。
如应了解,***10可包含存储器16。存储器16可包含易失性存储器,例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步DRAM(SDRAM)、双倍数据速率DRAM(DDR SDRAM)、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。图像可配置(例如,设定)SME34、36的状态。即,图像可配置SME 34、36以依某一方式对输入块52处的给定输入作出反应。例如,可设定SME 34、36以在输入块52处接收到字符“a”时输出高信号。
在一实例中,输入块52、输出块54及/或程序设计接口56可被实施为寄存器,使得到寄存器的写入或从寄存器的读取提供数据到相应元件或从相应元件提供数据。因此,可将来自存储于对应于程序设计接口56的寄存器中的图像的位加载于SME 34、36上。虽然图2说明块32、输入块52、输出块54及块间交换元件40之间的特定数目个导体(例如,导线、迹线),但应了解,在其它实例中,可使用更少或更多个导体。
图3说明块32的实例。块32可包含可选择性地与可配置块内交换元件42耦合在一起的多个行38。此外,行38可用块间交换元件40选择性地耦合到另一块32内的另一行38。行38包含组织成在本文中称为两成员群组(GOT)60的元件对的多个SME 34、36。在实例中,块32包括十六(16)个行38。
图4说明行38的实例。GOT 60可通过可配置行内交换元件44选择性地耦合到行38内的其它GOT 60及任何其它元件(例如,专用元件58)。GOT 60还可用块内交换元件42耦合到其它行38中的其它GOT 60,或用块间交换元件40耦合到其它块32中的其它GOT 60。在一实例中,GOT 60具有第一输入62及第二输入64以及输出66。如将参考图5进一步说明,第一输入62耦合到GOT 60的第一SME 34,且第二输入64耦合到GOT 60的第二SME 36。
在一实例中,行38包含第一多个行互连导体68及第二多个行互连导体70。在一实例中,GOT 60的输入62、64可耦合到一或多个行互连导体68、70,且输出66可耦合到一或多个行互连导体68、70。在一实例中,第一多个行互连导体68可耦合到行38内的每一GOT 60的每一SME 34、36。第二多个行互连导体70只可耦合到行38内的每一GOT 60的一个SME 34、36,但无法耦合到GOT 60的另一SME 34、36。在一实例中,如将关于图5更佳地说明,第二多个行互连导体70的第一半可耦合到行38内的SME 34、36的第一半(来自每一GOT 60的一个SME 34),且第二多个行互连导体70的第二半可耦合到行38内的SME 34、36的第二半(来自每一GOT 60的另一SME 34、36)。第二多个行互连导体70与SME 34、36之间的有限连接能力在本文中被称为“同位”。在一实例中,行38还可包含专用元件58,例如计数器、可配置布尔逻辑元件、查找表、RAM、现场可配置门阵列(FPGA)、专用集成电路(ASIC)、可配置处理器(例如,微处理器)或用于执行专用功能的其它元件。
在一实例中,专用元件58包括计数器(在本文中还被称为计数器58)。在一实例中,计数器58包括12位可配置递减计数器。12位可配置计数器58具有计数输入、重设输入及零计数输出。计数输入在经断言时使计数器58的值递减1。重设输入在经断言时使计数器58从相关联寄存器加载初始值。对于12位计数器58,可加载至多12位数字作为初始值。当计数器58的值递减到零(0)时,断言零计数输出。计数器58还具有至少两个模式:脉冲及保持。当将计数器58设定为脉冲模式时,零计数输出在计数器58达到零及时钟循环时被断言。零计数输出在计数器58的下一时钟循环期间被断言。导致计数器58在时间上偏离时钟循环。在下一时钟循环处,不再断言零计数输出。当将计数器58设定为保持模式时,零计数输出在计数器58递减到零的时钟循环期间经断言,且保持断言直到通过正经断言的重设输入重设计数器58为止。
在另一实例中,专用元件58包括布尔逻辑。例如,布尔逻辑可用以执行逻辑函数,例如AND、OR、NAND、NOR、乘积之和(SoP)、否定输出乘积之和(NSoP)、否定输出和之乘积(NPoS)及和之乘积(PoS)函数。这种布尔逻辑可用以从FSM品格30中的终端状态SME(如本文随后论述,对应于FSM的终端节点)提取数据。所提取的数据可用以将状态数据提供到其它FSM品格30及/或提供用以重配置FSM品格30或重配置另一FSM品格30的配置数据。
图5说明GOT 60的实例。GOT 60包含第一SME 34及第二SME 36,其具有输入62、64及其耦合到OR栅极76及3对1多路复用器78的输出72、74。3对1多路复用器78可经设定以将GOT 60的输出66耦合到第一SME 34、第二SME 36或OR栅极76。OR栅极76可用以将两个输出72、74耦合在一起以形成GOT 60的共同输出66。在一实例中,如上文论述,第一SME 34与第二SME 36展现同位,在第一SME 34的输入62可耦合到一些行互连导体68且第二SME 36的输入64可耦合到其它行互连导体70的情况下,可产生可克服同位问题的共同输出66。在一实例中,GOT 60内的两个SME34、36可通过设定交换元件79中的任一者或两者而级联及/或循环回到其自身。SME 34、36可通过将SME 34、36的输出72、74耦合到另一SME 34、36的输入62、64而级联。SME 34、36可通过将输出72、74耦合到其自身输入62、64而循环回到其自身。因此,第一SME 34的输出72可不耦合到第一SME 34的输入62及第二SME 36的输入64、耦合到第一SME 34的输入62及第二SME 36的输入64中的一者或两者。
在一实例中,状态机元件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的特定硬件元件的多个位。在其中图像包括多个位(例如,0及1)的实施例中,图像可称为二进制图像。可将位加载到FSM品格30上以配置SME 34、36、专用元件58及可配置交换元件的状态,使得经编程FSM品格30实施具有由源代码描述的功能性的FSM。放置(框120)及路由(框122)可将FSM品格30中的特定位置处的特定硬件元件映射到自动机中的特定状态。因此,图像中的位可配置特定硬件元件以实施(多个)所要功能。在一实例中,可通过将机器代码保存到计算机可读媒体来发布所述图像。在另一实例中,可通过在显示装置上显示所述图像来发布所述图像。在又一实例中,可通过将所述图像发送到另一装置(例如用于将所述图像加载到FSM品格30上的配置装置)来发布所述图像。在又一实例中,可通过将所述图像加载到FSM品格(例如,FSM品格30)上来发布所述图像。
在一实例中,可通过将来自图像的位值直接加载到SME 34、36及其它硬件元件或通过将所述图像加载到一或多个寄存器中且然后将来自寄存器的位值写入到SME 34、36及其它硬件元件而将所述图像加载到FSM品格30上。在一实例中,FSM品格30的硬件元件(例如,SME 34、36、专用元件58、可配置交换元件40、42、44)经存储器映射使得配置装置及/或计算机可通过将图像写入到一或多个存储器地址而将图像加载到FSM品格30上。
可至少部分用机器或计算机实施本文中描述的方法实例。一些实例可包含编码有指令的计算机可读媒体或机器可读媒体,所述指令可操作以配置电子装置以执行如上文实例中描述的方法。这些方法的实施方案可包含代码,例如微码、汇编语言代码、较高级语言代码或其类似物。这种代码可包含用于执行各种方法的计算机可读指令。代码可形成计算机程序产品的部分。此外,代码可在执行期间或在其它时间有形地存储在一或多个易失性或非易失性计算机可读媒体上。这些计算机可读媒体可包含(但不限于)硬盘、可装卸式磁盘、可装卸式光盘(例如,光盘及数字视频光盘)、磁盒、存储卡或棒、随机存取存储器(RAM)、只读存储器(ROM)等等。
现在参考图9,说明状态机引擎14的实施例(例如,单个芯片上的单个装置)。如先前描述,状态机引擎14经配置以经由数据总线从源(例如存储器16)接收数据。在所说明的实施例中,数据可通过总线接口(例如第三代双倍数据速率(DDR3)总线接口130)发送到状态机引擎14。DDR3总线接口130可能够以大于或等于1千兆字节/秒的速率交换(例如,提供及接收)数据。这种数据交换速率可大于状态机引擎14分析数据的速率。如应了解,取决于待分析的数据的源,总线接口130可为用于将往返于数据源的数据交换到状态机引擎14的任何合适的总线接口,例如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,说明展示用于处置状态向量***141中的状态向量数据的方法160的流程图。方法160包含:接收状态向量数据(框162);解压缩状态向量数据(框164);存储状态向量数据(框166);将状态向量数据提供到状态机品格(框168);从状态机品格接收状态向量数据(框170);压缩状态向量数据(框172);以及将状态向量数据提供到保存缓冲器***(框174)。
在一个实施例中,在框162处,状态向量***141在状态向量***141的第一输入处接收状态向量数据。因此,状态向量***141可从FSM品格30、另一FSM品格30(例如,经由IR总线及处理缓冲器接口136)及/或还原缓冲器***(例如,还原及程序缓冲器156)接收状态向量数据。状态机引擎14可包含解压缩器138,且可解压缩提供到状态向量***141的状态向量数据。此外,状态向量***141可存储状态向量数据(框166)。例如,状态向量***141可将状态向量数据存储在状态向量***141的存储装置(例如,状态向量高速缓冲存储器142)中。
在所说明的实施例中,在框168处,状态向量***141可在状态向量***141的输出处(例如,经由IR总线及处理缓冲器接口136)将状态向量数据提供到FSM品格30或另一FSM品格30。状态机引擎14可(例如,经由压缩器140)压缩待从状态向量***141输出的状态向量数据(框172)。在框174处,状态向量***141可经由状态向量***141的输出将状态向量数据提供到保存缓冲器***(例如,保存及修复映射缓冲器158)。保存缓冲器***可存储状态向量数据及/或经由总线接口130将状态向量数据提供到其它装置。因此,可通过状态向量***141处置状态向量数据。如应了解,可使用任何合适的方法处置状态向量数据。此外,可以任何合适的顺序执行方法160。
虽然本发明可具有各种修改及替代形式,但是已在图式中通过实例展示且在本文中详细描述特定实施例。然而,应了解,本发明并不旨在限于所揭示的特定形式。实情是,本发明涵盖落于如通过随附权利要求书界定的本发明的精神及范围内的所有修改、等效物及替代。
Claims (62)
1.一种状态机引擎,其包括:
状态向量***,其包括:
输入缓冲器,其经配置以从还原缓冲器接收状态向量数据并将状态向量数据提供到状态机晶格;以及
输出缓冲器,其经配置以从所述状态机晶格接收状态向量数据并将状态向量数据提供到保存缓冲器。
2.根据权利要求1所述的状态机引擎,其中所述输入缓冲器经配置以经由缓冲器接口从第二状态机晶格接收状态向量数据。
3.根据权利要求1所述的状态机引擎,其中所述状态向量***包括状态向量存储装置,所述状态向量存储装置经配置以从所述状态机晶格接收状态向量数据并存储状态向量数据。
4.根据权利要求3所述的状态机引擎,其中所述输入缓冲器经配置以从所述状态向量存储装置接收状态向量数据。
5.根据权利要求3所述的状态机引擎,其中所述输出缓冲器经配置以从所述状态向量存储装置接收状态向量数据。
6.根据权利要求3所述的状态机引擎,其中所述状态向量存储装置经配置以存储多个状态向量。
7.根据权利要求3所述的状态机引擎,其中所述状态向量存储装置经配置以存储大约512个状态向量。
8.根据权利要求3所述的状态机引擎,其中所述状态向量***包括存储器缓冲器,所述存储器缓冲器经配置以从所述状态机晶格接收状态向量数据并将状态向量数据提供到所述状态向量存储装置。
9.根据权利要求8所述的状态机引擎,其中所述存储器缓冲器经配置以从所述状态向量存储装置接收状态向量数据并将状态向量数据提供到第二状态机晶格。
10.根据权利要求8所述的状态机引擎,其中所述存储器缓冲器经配置以从第二状态机晶格接收状态向量数据。
11.根据权利要求8所述的状态机引擎,其中所述存储器缓冲器经配置以从所述还原缓冲器接收状态向量数据。
12.根据权利要求8所述的状态机引擎,其中所述存储器缓冲器经配置以经由解压缩器从所述还原缓冲器接收状态向量数据,其中所述解压缩器经配置以解压缩在所述还原缓冲器处接收的状态向量数据以将所述状态向量数据从所述还原缓冲器提供到所述存储器缓冲器。
13.根据权利要求8所述的状态机引擎,其中所述存储器缓冲器经配置以将状态向量数据提供到所述保存缓冲器。
14.根据权利要求8所述的状态机引擎,其中所述存储器缓冲器经配置以经由压缩器将状态向量数据提供到所述保存缓冲器,所述压缩器经配置以压缩在所述存储器缓冲器处接收的状态向量数据以将所述状态向量数据从所述存储器缓冲器提供到所述保存缓冲器。
15.根据权利要求8所述的状态机引擎,其中所述存储器缓冲器经配置以暂时存储一个状态向量。
16.根据权利要求1所述的状态机引擎,其中所述输入缓冲器经配置以暂时存储一个状态向量。
17.根据权利要求1所述的状态机引擎,其中所述输出缓冲器经配置以经由缓冲器接口将状态向量数据提供到第二状态机晶格。
18.根据权利要求1所述的状态机引擎,其中所述输出缓冲器经配置以暂时存储一个状态向量。
19.根据权利要求1所述的状态机引擎,其进一步包括解压缩器,所述解压缩器经配置以解压缩在所述还原缓冲器处接收的状态向量数据以将所述状态向量数据从所述还原缓冲器提供到所述输入缓冲器。
20.根据权利要求1所述的状态机引擎,其进一步包括压缩器,所述压缩器经配置以压缩所述输出缓冲器处接收的状态向量数据以将所述状态向量数据从所述输出缓冲器提供到所述保存缓冲器。
21.一种用于处置状态机引擎中的状态向量数据的方法,其包括:
在状态向量***的输入处接收状态向量数据;
将所述状态向量数据存储在所述状态向量***内的存储装置中;以及
在所述状态向量***的输出处将所述状态向量数据提供到状态机晶格。
22.根据权利要求21所述的方法,其中在所述状态向量***的所述输出处将所述状态向量数据提供到所述状态机晶格包括使所述状态机晶格还原到对应于所述所提供的状态向量数据的状态。
23.根据权利要求21所述的方法,其包括解压缩在所述输入处接收的所述状态向量数据。
24.根据权利要求21所述的方法,其包括在所述状态向量***的第二输出处将所述状态向量数据提供到保存缓冲器。
25.根据权利要求24所述的方法,其中将所述状态向量数据提供到所述保存缓冲器包括压缩所述状态向量数据。
26.根据权利要求21所述的方法,其中接收状态向量数据包括从所述状态机晶格接收状态向量数据。
27.一种状态机引擎,其包括状态向量***,所述状态向量***经配置以存储状态机晶格的多个状态向量并将状态向量提供到所述状态机晶格以使所述状态机晶格还原到对应于所述所提供的状态向量的状态。
28.根据权利要求27所述的状态机引擎,其中所述状态向量***包括经配置以接收状态向量的输入缓冲器、经配置以提供状态向量的输出缓冲器及经配置以存储状态向量的存储装置。
29.根据权利要求28所述的状态机引擎,其中所述状态机引擎包括经配置以压缩由所述状态向量***提供到***接口的状态向量的压缩器及经配置以解压缩由所述***接口提供到所述状态向量***的状态向量的解压缩器。
30.根据权利要求27所述的状态机引擎,其中所述状态机引擎经配置以将状态向量提供到多个状态机晶格并从所述多个状态机晶格接收状态向量。
31.一种用于配置状态机引擎的状态机晶格的方法,其包括:
将高速缓冲存储的状态向量数据从所述状态机晶格提供到外部装置;以及
从所述外部装置接收经修改的状态向量数据。
32.根据权利要求31所述的方法,其包括压缩所述高速缓冲存储的状态向量数据。
33.根据权利要求31所述的方法,其中将所述高速缓冲存储的状态向量数据从所述状态机晶格提供到所述外部装置包括经由所述状态机引擎的保存缓冲器将所述高速缓冲存储的状态向量数据提供到所述外部装置。
34.根据权利要求33所述的方法,其包括将所述高速缓冲存储的状态向量数据从所述保存缓冲器提供到所述外部装置。
35.一种包括状态向量***的状态机引擎,所述状态向量***包括:
输入缓冲器,其经配置以从第一状态机晶格接收状态向量数据并将状态向量数据提供到第二状态机晶格;以及
输出缓冲器,其经配置以从所述第二状态机晶格接收状态向量数据并将状态向量数据提供到所述第一状态机晶格。
36.根据权利要求35所述的状态机引擎,其中所述第一状态机晶格与所述第二状态机晶格位于不同物理装置上。
37.根据权利要求35所述的状态机引擎,其中所述第一状态机晶格与所述第二状态机晶格位于相同物理装置上。
38.一种包括状态向量***的状态机引擎,所述状态向量***包括:
高速缓冲存储器,其经配置以存储状态向量数据;以及
缓冲器,其经配置以从状态机晶格接收状态向量数据并从所述高速缓冲存储器接收状态向量数据。
39.根据权利要求38所述的状态机引擎,其中所述缓冲器经配置以将状态向量数据提供到所述高速缓冲存储器。
40.根据权利要求38所述的状态机引擎,其中所述缓冲器经配置以将状态向量数据提供到***接口。
41.根据权利要求40所述的状态机引擎,其包括保存缓冲器及压缩器,其中所述状态机引擎经配置以通过所述压缩器及所述保存缓冲器将所述状态向量数据提供到所述***接口。
42.根据权利要求38所述的状态机引擎,其中所述状态机晶格包括第一状态机晶格,且其中所述缓冲器经配置以从第二状态机晶格接收状态向量数据。
43.根据权利要求38所述的状态机引擎,其中所述状态机晶格包括第一状态机晶格,且其中所述缓冲器经配置以将状态向量数据提供到第二状态机晶格。
44.根据权利要求38所述的状态机引擎,其中所述缓冲器经配置以从***接口接收状态向量数据。
45.根据权利要求44所述的状态机引擎,其包括还原缓冲器及解压缩器,其中所述状态机引擎经配置以通过所述解压缩器及所述还原缓冲器从所述***接口接收状态向量数据。
46.一种包括状态向量***的状态机引擎,所述状态向量***包括:
接口;
高速缓冲存储器,其经配置以存储状态向量数据;以及
缓冲器,其经配置以从所述高速缓冲存储器接收状态向量数据并将所述所接收的状态向量数据提供到所述接口。
47.根据权利要求46所述的状态机引擎,其中所述接口包括***接口。
48.根据权利要求46所述的状态机引擎,其中所述接口包括第三代双倍数据速率DDR3总线接口。
49.根据权利要求46所述的状态机引擎,其中所述接口包括排内总线接口。
50.根据权利要求46所述的状态机引擎,其中所述缓冲器经配置以从状态机晶格接收状态向量数据。
51.一种包括状态向量***的状态机引擎,所述状态向量***包括:
第一接口;
第二接口;
高速缓冲存储器,其经配置以存储状态向量数据;
状态机晶格;以及
缓冲器,其经配置以从所述第一接口、所述第二接口及所述高速缓冲存储器中的一者接收状态向量数据并将所述所接收的状态向量数据提供到所述状态机晶格。
52.根据权利要求51所述的状态机引擎,其中所述第一接口包括***接口,且所述第二接口包括排内总线接口。
53.一种包括状态向量***的状态机引擎,所述状态向量***包括:
接口;
高速缓冲存储器,其经配置以存储状态向量数据;
状态机晶格;以及
缓冲器,其经配置以从所述状态机晶格及所述高速缓冲存储器中的一者接收状态向量数据并将所述所接收的状态向量数据提供到所述接口。
54.根据权利要求53所述的状态机引擎,其中所述接口包括***接口。
55.根据权利要求53所述的状态机引擎,其中所述接口包括排内总线接口。
56.一种用于处置状态机引擎中的状态向量数据的方法,其包括:
在状态向量***的输入处接收状态向量数据;
将所述状态向量数据存储在所述状态向量***内的存储装置中;以及
将所述状态向量数据提供到所述状态机引擎的***接口。
57.根据权利要求56所述的方法,其中将所述状态向量数据提供到所述状态机引擎的***接口包括通过缓冲器、压缩器及保存缓冲器将状态向量数据提供到所述***接口。
58.根据权利要求56所述的方法,其中将所述状态向量数据提供到***接口包括:压缩所述状态向量数据;以及将所述经压缩的状态向量数据提供到所述***接口。
59.一种用于配置状态机引擎的状态机晶格的方法,其包括:
从所述状态机晶格接收高速缓冲存储的状态向量数据。
60.根据权利要求59所述的方法,其包括修改所述所接收的状态向量数据。
61.根据权利要求60所述的方法,其包括将经修改的状态向量数据提供到所述状态机引擎。
62.根据权利要求61所述的方法,其包括使用所述经修改的状态向量数据配置所述状态机引擎的所述状态机晶格。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/552,488 | 2012-07-18 | ||
US13/552,488 US9389841B2 (en) | 2012-07-18 | 2012-07-18 | Methods and systems for using state vector data in a state machine engine |
PCT/US2013/049748 WO2014014710A1 (en) | 2012-07-18 | 2013-07-09 | Methods and systems for using state vector data in a state machine engine |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104487956A true CN104487956A (zh) | 2015-04-01 |
CN104487956B CN104487956B (zh) | 2017-10-27 |
Family
ID=49947547
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380038332.2A Active CN104487956B (zh) | 2012-07-18 | 2013-07-09 | 用于使用状态机引擎中的状态向量数据的方法及*** |
Country Status (7)
Country | Link |
---|---|
US (4) | US9389841B2 (zh) |
EP (1) | EP2875434A4 (zh) |
JP (1) | JP6041987B2 (zh) |
KR (1) | KR102165134B1 (zh) |
CN (1) | CN104487956B (zh) |
TW (1) | TWI497418B (zh) |
WO (1) | WO2014014710A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9235798B2 (en) | 2012-07-18 | 2016-01-12 | Micron Technology, Inc. | Methods and systems for handling data received by a state machine engine |
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 |
US9075428B2 (en) | 2012-08-31 | 2015-07-07 | Micron Technology, Inc. | Results generation for state machine engines |
US9448965B2 (en) | 2013-03-15 | 2016-09-20 | Micron Technology, Inc. | Receiving data streams in parallel and providing a first portion of data to a first state machine engine and a second portion to a second state machine |
US9703574B2 (en) | 2013-03-15 | 2017-07-11 | Micron Technology, Inc. | Overflow detection and correction in state machine engines |
US10157165B2 (en) * | 2015-06-05 | 2018-12-18 | Micron Technology, Inc. | Methods and devices for reducing array size and complexity in automata processors |
US10846103B2 (en) | 2015-10-06 | 2020-11-24 | Micron Technology, Inc. | Methods and systems for representing processing resources |
CN107220028B (zh) * | 2017-05-24 | 2020-05-29 | 上海兆芯集成电路有限公司 | 加速压缩方法以及使用此方法的装置 |
GB201709219D0 (en) * | 2017-06-09 | 2017-07-26 | Nchain Holdings Ltd | Computer-implemented system and method |
US10545742B2 (en) * | 2017-09-06 | 2020-01-28 | Nicira, Inc. | Annotation-driven framework for generating state machine updates |
US11755342B2 (en) | 2020-12-16 | 2023-09-12 | Texas Instruments Incorporated | Monitoring transitions of a circuit |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6446145B1 (en) * | 2000-01-06 | 2002-09-03 | International Business Machines Corporation | Computer memory compression abort and bypass mechanism when cache write back buffer is full |
US20070162726A1 (en) * | 2006-01-10 | 2007-07-12 | Michael Gschwind | Method and apparatus for sharing storage and execution resources between architectural units in a microprocessor using a polymorphic function unit |
CN101044485A (zh) * | 2003-06-18 | 2007-09-26 | 安布里克股份有限公司 | 集成电路开发*** |
Family Cites Families (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5377129A (en) | 1990-07-12 | 1994-12-27 | Massachusetts Institute Of Technology | Particle interaction processing system |
US5287523A (en) | 1990-10-09 | 1994-02-15 | Motorola, Inc. | Method for servicing a peripheral interrupt request in a microcontroller |
AU8966391A (en) | 1990-12-24 | 1992-06-25 | Ball Corporation | System for analysis of embedded computer systems |
US5623680A (en) * | 1993-12-28 | 1997-04-22 | Lucent Technologies Inc. | Finite state machine for process control |
JPH10111862A (ja) | 1996-08-13 | 1998-04-28 | Fujitsu Ltd | 再帰型ニューラルネットワークに基づく時系列解析装置および方法 |
JP2000347708A (ja) | 1999-06-02 | 2000-12-15 | Nippon Telegr & Teleph Corp <Ntt> | ニューラルネットよる動的システムの制御方法及び装置及びニューラルネットよる動的システムの制御プログラムを格納した記憶媒体 |
US6628660B1 (en) * | 1999-06-11 | 2003-09-30 | Lattice Semiconductor Corporation | Finite state machine with associated memory |
JP3743487B2 (ja) * | 1999-07-14 | 2006-02-08 | 富士ゼロックス株式会社 | プログラマブル論理回路装置、情報処理システム、プログラマブル論理回路装置への回路の再構成方法、プログラマブル論理回路装置用の回路情報の圧縮方法 |
US7051189B2 (en) * | 2000-03-15 | 2006-05-23 | Arc International | Method and apparatus for processor code optimization using code compression |
US6900661B2 (en) * | 2002-06-28 | 2005-05-31 | International Business Machines Corporation | Repairable finite state machines |
US8024548B2 (en) * | 2003-02-18 | 2011-09-20 | Christopher Joseph Daffron | Integrated circuit microprocessor that constructs, at run time, integrated reconfigurable logic into persistent finite state machines from pre-compiled machine code instruction sequences |
US7411418B2 (en) * | 2003-05-23 | 2008-08-12 | Sensory Networks, Inc. | Efficient representation of state transition tables |
US7487542B2 (en) | 2004-01-14 | 2009-02-03 | International Business Machines Corporation | Intrusion detection using a network processor and a parallel pattern detection engine |
US7539681B2 (en) * | 2004-07-26 | 2009-05-26 | Sourcefire, Inc. | Methods and systems for multi-pattern searching |
US7392229B2 (en) | 2005-02-12 | 2008-06-24 | Curtis L. Harris | General purpose set theoretic processor |
US7539031B2 (en) * | 2006-09-19 | 2009-05-26 | Netlogic Microsystems, Inc. | Inexact pattern searching using bitmap contained in a bitcheck command |
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 |
US7890692B2 (en) * | 2007-08-17 | 2011-02-15 | Pandya Ashish A | FSA context switch architecture for programmable intelligent search memory |
US7689947B2 (en) * | 2007-01-04 | 2010-03-30 | International Business Machines Corporation | Data-driven finite state machine engine for flow control |
US8200992B2 (en) * | 2007-09-24 | 2012-06-12 | Cognitive Electronics, Inc. | Parallel processing computer systems with reduced power consumption and methods for providing the same |
US8209521B2 (en) | 2008-10-18 | 2012-06-26 | Micron Technology, Inc. | Methods of indirect register access including automatic modification of a directly accessible address register |
US8938590B2 (en) | 2008-10-18 | 2015-01-20 | Micron Technology, Inc. | Indirect register access method and system |
US9639493B2 (en) | 2008-11-05 | 2017-05-02 | Micron Technology, Inc. | Pattern-recognition processor with results buffer |
US7917684B2 (en) | 2008-11-05 | 2011-03-29 | Micron Technology, Inc. | Bus translator |
US7970964B2 (en) | 2008-11-05 | 2011-06-28 | Micron Technology, Inc. | Methods and systems to accomplish variable width data input |
US20100118425A1 (en) | 2008-11-11 | 2010-05-13 | Menachem Rafaelof | Disturbance rejection in a servo control loop using pressure-based disc mode sensor |
US9348784B2 (en) | 2008-12-01 | 2016-05-24 | Micron Technology, Inc. | Systems and methods for managing endian mode of a device |
US10007486B2 (en) | 2008-12-01 | 2018-06-26 | Micron Technology, Inc. | Systems and methods to enable identification of different data sets |
US9164945B2 (en) | 2008-12-01 | 2015-10-20 | Micron Technology, Inc. | Devices, systems, and methods to synchronize parallel processing of a single data stream |
US20100138575A1 (en) | 2008-12-01 | 2010-06-03 | Micron Technology, Inc. | Devices, systems, and methods to synchronize simultaneous dma parallel processing of a single data stream by multiple devices |
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 |
US9323994B2 (en) | 2009-12-15 | 2016-04-26 | Micron Technology, Inc. | Multi-level hierarchical routing matrices for pattern-recognition processors |
US9501705B2 (en) | 2009-12-15 | 2016-11-22 | Micron Technology, Inc. | Methods and apparatuses for reducing power consumption in a pattern recognition processor |
US8489534B2 (en) | 2009-12-15 | 2013-07-16 | Paul D. Dlugosch | Adaptive content inspection |
JP2011175394A (ja) | 2010-02-24 | 2011-09-08 | Fujifilm Corp | シングル・サインオン・システムを構成するウェブ・サーバならびにその動作制御方法およびその動作制御プログラム |
US8766666B2 (en) * | 2010-06-10 | 2014-07-01 | Micron Technology, Inc. | Programmable device, hierarchical parallel machines, and methods for providing state information |
US8601013B2 (en) | 2010-06-10 | 2013-12-03 | Micron Technology, Inc. | Analyzing data using a hierarchical structure |
EP2668574B1 (en) | 2011-01-25 | 2021-11-24 | Micron Technology, INC. | Utilizing special purpose elements to implement a fsm |
WO2012103151A2 (en) | 2011-01-25 | 2012-08-02 | Micron Technology, Inc. | State grouping for element utilization |
KR101607736B1 (ko) | 2011-01-25 | 2016-03-30 | 마이크론 테크놀로지, 인크. | 오토마톤의 진입 차수 및/또는 진출 차수를 제어하기 위한 양화 언롤링 |
KR101640295B1 (ko) | 2011-01-25 | 2016-07-15 | 마이크론 테크놀로지, 인크. | 정규 표현을 컴파일하기 위한 방법 및 장치 |
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 |
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 |
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 |
US9063532B2 (en) * | 2012-08-31 | 2015-06-23 | Micron Technology, Inc. | Instruction insertion in state machine engines |
-
2012
- 2012-07-18 US US13/552,488 patent/US9389841B2/en active Active
-
2013
- 2013-07-09 WO PCT/US2013/049748 patent/WO2014014710A1/en active Application Filing
- 2013-07-09 EP EP13819345.3A patent/EP2875434A4/en not_active Withdrawn
- 2013-07-09 JP JP2015523125A patent/JP6041987B2/ja active Active
- 2013-07-09 CN CN201380038332.2A patent/CN104487956B/zh active Active
- 2013-07-09 KR KR1020157002718A patent/KR102165134B1/ko active IP Right Grant
- 2013-07-18 TW TW102125815A patent/TWI497418B/zh active
-
2016
- 2016-07-11 US US15/206,824 patent/US10254976B2/en active Active
-
2019
- 2019-04-05 US US16/376,881 patent/US10489062B2/en active Active
- 2019-11-25 US US16/694,584 patent/US10671295B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6446145B1 (en) * | 2000-01-06 | 2002-09-03 | International Business Machines Corporation | Computer memory compression abort and bypass mechanism when cache write back buffer is full |
CN101044485A (zh) * | 2003-06-18 | 2007-09-26 | 安布里克股份有限公司 | 集成电路开发*** |
US20070162726A1 (en) * | 2006-01-10 | 2007-07-12 | Michael Gschwind | Method and apparatus for sharing storage and execution resources between architectural units in a microprocessor using a polymorphic function unit |
Also Published As
Publication number | Publication date |
---|---|
JP6041987B2 (ja) | 2016-12-14 |
US20140025889A1 (en) | 2014-01-23 |
US10671295B2 (en) | 2020-06-02 |
TW201419158A (zh) | 2014-05-16 |
EP2875434A1 (en) | 2015-05-27 |
KR102165134B1 (ko) | 2020-10-15 |
CN104487956B (zh) | 2017-10-27 |
US10489062B2 (en) | 2019-11-26 |
WO2014014710A1 (en) | 2014-01-23 |
EP2875434A4 (en) | 2016-12-21 |
TWI497418B (zh) | 2015-08-21 |
US9389841B2 (en) | 2016-07-12 |
US20160320982A1 (en) | 2016-11-03 |
KR20150037962A (ko) | 2015-04-08 |
US20190235766A1 (en) | 2019-08-01 |
US20200089416A1 (en) | 2020-03-19 |
US10254976B2 (en) | 2019-04-09 |
JP2015533231A (ja) | 2015-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11741014B2 (en) | Methods and systems for handling data received by a state machine engine | |
US20240211761A1 (en) | Methods and systems for power management in a pattern recognition processing system | |
CN103999035B (zh) | 用于状态机中的数据分析的方法及*** | |
CN104603742A (zh) | 用于状态机引擎的结果产生 | |
CN104011736B (zh) | 用于状态机中的检测的方法及*** | |
CN104011723B (zh) | 状态机晶格中的布尔逻辑 | |
CN104487957B (zh) | 用于编程状态机引擎的方法及装置 | |
CN104487956A (zh) | 用于使用状态机引擎中的状态向量数据的方法及*** | |
CN104583935A (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 |