CN105051711B - 用于提供由状态机引擎接收的数据的方法及设备 - Google Patents

用于提供由状态机引擎接收的数据的方法及设备 Download PDF

Info

Publication number
CN105051711B
CN105051711B CN201480015637.6A CN201480015637A CN105051711B CN 105051711 B CN105051711 B CN 105051711B CN 201480015637 A CN201480015637 A CN 201480015637A CN 105051711 B CN105051711 B CN 105051711B
Authority
CN
China
Prior art keywords
data
state machine
machine engine
state
power traction
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.)
Active
Application number
CN201480015637.6A
Other languages
English (en)
Other versions
CN105051711A (zh
Inventor
大卫·R·布朗
哈洛德·B·诺耶思
因德吉特·S·贝恩斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Priority to CN201911004643.2A priority Critical patent/CN110825464A/zh
Publication of CN105051711A publication Critical patent/CN105051711A/zh
Application granted granted Critical
Publication of CN105051711B publication Critical patent/CN105051711B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4498Finite state machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Abstract

本发明涉及一种设备,其可包含经配置以从处理器(12)接收数据流(170)的第一部分的第一状态机引擎(14)及经配置以从所述处理器(12)接收所述数据流(170)的第二部分的第二状态机引擎(14)。所述设备包含经配置以允许实现所述第一状态机引擎(14)与所述第二状态机引擎(14)之间的数据传送的缓冲器接口(136)。所述缓冲器接口(136)包含耦合到所述第一状态机引擎(14)及所述第二状态机引擎(14)的接口数据总线(376)。所述缓冲器接口(136)经配置以在所述第一状态机引擎(14)与所述第二状态机引擎(14)之间提供数据。

Description

用于提供由状态机引擎接收的数据的方法及设备
相关申请案交叉参考
本申请案是于2013年3月15日提出申请的美国专利申请案第61/788,364号的非临时申请案。
技术领域
本发明的实施例大体来说涉及电子装置,且更具体来说在某些实施例中涉及具有用于数据分析的平行装置的电子装置。
背景技术
复杂数据分析(例如,型式辨识)在基于冯诺依曼(von Neumann)的常规计算机上执行起来效率低下。然而,生物大脑,特定来说人类大脑擅长执行复杂数据分析。当前研究表明,人类大脑使用新皮质中的一系列以分层方式组织的神经元层来执行数据分析。分层的较低层中的神经元分析来自(举例来说)感觉器官的“原始信号”,而较高层中的神经元分析来自较低层级中的神经元的信号输出。新皮质中的此分层系统,可能与大脑的其它区域组合,实现复杂数据分析,此使得人类能够执行高级功能,例如空间推理、意识思考及复杂语言。
在计算领域中,举例来说,型式辨识任务越来越具有挑战性。计算机之间发射不断变大的数据量,且用户希望检测的型式的数目日益增加。举例来说,通常通过搜索数据流中的型式(例如,代码的特定短语或片段)来检测垃圾邮件或恶意软件。型式数目随垃圾邮件及恶意软件的多样化而增加,这是因为可实施新型式以搜索新变体。针对这些型式中的每一者搜索数据流可形成计算瓶颈。通常,在接收到数据流时,针对每一型式一次一个地搜索数据流。在系统准备搜索数据流的下一部分之前的延迟随型式数目而增加。因此,型式辨识可使数据的接收减慢。
已设计用以针对型式搜索数据流的硬件,但此硬件通常不能够在给定的时间量中处理充分数据量。经配置以搜索数据流的某些装置通过在多个电路当中分布数据流来搜索数据流。所述电路各自确定所述数据流是否匹配型式的一部分。通常,大量电路并行操作,每一者在大体相同时间搜索数据流。然而,尚不存在实际上允许以更相当于生物大脑的方式的方式执行复杂数据分析的系统。此系统的开发是合意的。
附图说明
图1图解说明根据本发明的各种实施例的具有状态机引擎的系统的实例。
图2图解说明根据本发明的各种实施例的图1的状态机引擎的有限状态机(FSM)点阵的实例。
图3图解说明根据本发明的各种实施例的图2的FSM点阵的块的实例。
图4图解说明根据本发明的各种实施例的图3的块的行的实例。
图5图解说明根据本发明的各种实施例的图4的行中的两个一群组的实例。
图6图解说明根据本发明的各种实施例的有限状态机图的实例。
图7图解说明根据本发明的各种实施例的实施有FSM点阵的两层级分层的实例。
图8图解说明根据本发明的各种实施例的用于编译器将源代码转换成用于编程图2的FSM点阵的二进制文件的方法的实例。
图9图解说明根据本发明的各种实施例的状态机引擎。
图10图解说明根据本发明的各种实施例的布置成一排装置的多个物理状态机引擎的实例。
图11图解说明根据本发明的各种实施例的待提供到状态机引擎的分组成数据块的数据分段的实例。
图12图解说明根据本发明的各种实施例的插入于图11的数据块的数据分段之间的数据填补的实例。
图13图解说明根据本发明的各种实施例的在图12的数据块的数据分段之后插入的数据填补的实例。
图14图解说明根据本发明的各种实施例的经组织用于发射到状态机引擎的数据缓冲器系统的图13的数据块的实例。
图15图解说明根据本发明的各种实施例的布置成一排装置且通过排间(IR)总线与过程缓冲器接口耦合在一起的多个物理状态机引擎的实例。
图16图解说明根据本发明的各种实施例的耦合到多个物理状态机引擎的IR总线与过程缓冲器接口的信号的实例。
图17图解说明根据本发明的各种实施例的IR总线与过程缓冲器接口的信号的时序图的实例。
图18图解说明根据本发明的各种实施例的存储于组织成多个逻辑群组的多个物理状态机引擎的数据缓冲器中的数据的实例。
图19图解说明根据本发明的各种实施例的存储于组织成多个逻辑群组的多个物理状态机引擎的过程缓冲器中的数据的实例。
图20图解说明根据本发明的各种实施例的组织成一个逻辑群组的多个物理状态机引擎的数据缓冲器中的数据的实例。
图21图解说明根据本发明的各种实施例的存储于组织成一个逻辑群组的多个物理状态机引擎的过程缓冲器中的数据的实例。
具体实施方式
现在翻到图,图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)点阵(例如,状态机引擎14的核心)。出于本申请案的目的,术语“点阵”是指元件(例如,布林(Boolean)单元、计数器单元、状态机元件、状态转变元件)的组织框架(例如,路由矩阵、路由网络、帧)。此外,“点阵”可具有任何适合形状、结构或分层组织(例如,栅格、立方体、球面、级联)。每一FSM点阵可实施各自并行接收及分析相同数据的多个FSM。此外,FSM点阵可布置成群组(例如,群集),使得FSM点阵的群集可并行分析相同输入数据。此外,状态机引擎14的FSM点阵的群集可布置成分层结构,其中来自分层结构的较低层级上的状态机点阵的输出可用作较高层级上的状态机点阵的输入。通过经由分层结构串联级联状态机引擎14的平行FSM点阵的群集,可分析(例如,评估、搜索等)越来越复杂的型式。
此外,基于状态机引擎14的分层平行配置,状态机引擎14可用于利用高处理速度的系统中的复杂数据分析(例如,型式辨识)。举例来说,本文中所描述的实施例可并入于具有处理速度1千兆字节/秒的系统中。因此,利用状态机引擎14,可快速分析来自高速存储器装置或其它外部装置的数据。状态机引擎14可大约同时(例如,在单个装置循环期间)根据数个准则(例如,搜索项)分析数据流。状态机引擎14的层级上的FSM群集内的FSM点阵中的每一者可各自大约同时从数据流接收相同搜索项,且平行FSM点阵中的每一者可确定所述项是否使状态机引擎14前进到处理准则中的下一状态。状态机引擎14可根据相对大数目的准则(例如,100个以上、1000个以上或10,000个以上)来分析项。由于其并行操作,因此其可将准则应用于具有相对高带宽的数据流(例如,大于或大体等于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(PCI-E)、小型计算机系统接口(SCSI)、IEEE 1394(火线)或任何其它适合接口)耦合到系统10。为促进存储器16(例如快闪存储器装置)的操作,系统10可包含存储器控制器(未图解说明)。如将了解,存储器控制器可为独立装置或其可与处理器12成整体。另外,系统10可包含外部存储装置18,例如磁性存储装置。外部存储装置还可将输入数据提供到状态机引擎14。
系统10可包含若干个额外元件。举例来说,编译器20可用于配置(例如,编程)状态机引擎14,如关于图8更详细描述。输入装置22还可耦合到处理器12以允许用户将数据输入到系统10中。举例来说,输入装置22可用于将数据输入到存储器16中以用于由状态机引擎14进行的稍后分析。举例来说,输入装置22可包含按钮、切换元件、键盘、光笔、手写笔、鼠标及/或语音辨识系统。例如显示器的输出装置24还可耦合到处理器12。举例来说,显示器24可包含LCD、CRT、LED及/或音频显示器。所述系统还可包含用于与网络(例如因特网)介接的网络接口装置26,例如网络接口卡(NIC)。如将了解,系统10可包含许多其它组件,取决于系统10的应用。
图2到5图解说明FSM点阵30的实例。在实例中,FSM点阵30包括块32的阵列。如将描述,每一块32可包含对应于FSM中的多个状态的多个可选择性耦合的硬件元件(例如,可配置元件及/或专用元件)。类似于FSM中的状态,硬件元件可分析输入流并基于所述输入流激活下游硬件元件。
可配置元件可经配置(例如,编程)以实施许多不同功能。举例来说,可配置元件可包含以分层方式组织成行38(图3及4中所展示)及块32(图2及3中所展示)的状态机元件(SME)34、36(图5中所展示)。SME还可视为状态转变元件(STE)。为了在以分层方式组织的SME 34、36之间路由信号,可使用可配置切换元件的分层,包含块间切换元件40(图2及3中所展示)、块内切换元件42(图3及4中所展示)及行内切换元件44(图4中所展示)。
如下文所描述,切换元件可包含路由结构及缓冲器。SME 34、36可对应于FSM点阵30所实施的FSM的状态。可通过使用如下文所描述的可配置切换元件将SME 34、36耦合在一起。因此,可通过配置SME 34、36以对应于状态的功能且通过选择性地将SME 34、36耦合在一起以对应于FSM中的状态之间的转变而在FSM点阵30上实施FSM。
图2图解说明FSM点阵30的实例的整体视图。FSM点阵30包含可与可配置块间切换元件40选择性地耦合在一起的多个块32。块间切换元件40可包含导体46(例如,导线、迹线等)及缓冲器48及50。在实例中,缓冲器48及50经包含以控制信号去往/来自块间切换元件40的连接及时序。如下文进一步所描述,缓冲器48可经提供以缓冲在块32之间发送的数据,而缓冲器50可经提供以缓冲在块间切换元件40之间发送的数据。另外,块32可选择性耦合到输入块52(例如,数据输入端口)以用于接收信号(例如,数据)及将数据提供到块32。块32还可选择性耦合到输出块54(例如,输出端口)以用于将来自块32的信号提供到外部装置(例如,另一FSM点阵30)。FSM点阵30还可包含编程接口56以配置(例如,经由图像、程序)FSM点阵30。所述图像可配置(例如,设定)SME 34、36的状态。也就是说,所述图像可配置SME34、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包含多个SME 34、36,所述SME组织成若干元件对(在本文中称作两个一群组(GOT)60)。在实例中,块32包括十六(16)个行38。
图4图解说明行38的实例。GOT 60可通过可配置行内切换元件44选择性地耦合到行38内的其它GOT 60及任何其它元件(例如,专用元件58)。GOT 60还可借助块内切换元件42耦合到其它行38中的其它GOT 60,或借助块间切换元件40耦合到其它块32中的其它GOT60。在实例中,GOT 60具有第一输入62及第二输入64以及输出66。第一输入62耦合到GOT 60的第一SME 34且第二输入64耦合到GOT 60的第二SME 36,如参考图5将进一步图解说明。
在实例中,行38包含第一多个行互连导体68及第二多个行互连导体70。在实例中,GOT 60的输入62、64可耦合到一或多个行互连导体68、70,且输出66可耦合到一或多个行互连导体68、70。在实例中,第一多个行互连导体68可耦合到行38内的每一GOT 60的每一SME34、36。第二多个行互连导体70可耦合到行38内的每一GOT 60的仅一个SME 34、36,但不可耦合到GOT 60的另一SME 34、36。在实例中,第二多个行互连导体70的第一半体可耦合到行38内的SME 34、36的第一半体(来自每一GOT 60的一个SME 34)且第二多个行互连导体70的第二半体可耦合到行38内的SME 34、36的第二半体(来自每一GOT 60的另一SME 34、36),如关于图5将更好图解说明。第二多个行互连导体70与SME 34、36之间的有限连接性在本文中称作“奇偶性”。在实例中,行38还可包含专用元件58,例如计数器、可配置布林逻辑元件、查找表、RAM、现场可配置门阵列(FPGA)、专用集成电路(ASIC)、可配置处理器(例如,微处理器)或用于执行专用功能的其它元件。
在实例中,专用元件58包括计数器(在本文中也称作计数器58)。在实例中,计数器58包括12位可配置递减计数器。12位可配置计数器58具有计数输入、重置输入及零计数输出。计数输入在被断言时使计数器58的值递减1。重置输入在被断言时致使计数器58从相关联寄存器加载初始值。对于12位计数器58来说,可加载多达12位的数值作为所述初始值。当计数器58的值递减到零(0)时,断言零计数输出。计数器58还具有至少两种模式,脉冲及保持。当计数器58设定到脉冲模式时,当计数器58达到零且时钟循环时断言零计数输出。在计数器58的下一时钟循环期间断言零计数输出。导致计数器58在时间方面从时钟循环偏移。在下一时钟循环处,不再断言零计数输出。当计数器58设定到保持模式时,在计数器58递减到零时于时钟循环期间断言零计数输出,且保持断言直到计数器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,第一SME 34及第二SME 36具有输入62、64且具有耦合到“或”门76及3对1多路复用器78的其输出72、74。3对1多路复用器78可经设定以将GOT 60的输出66耦合到第一SME 34、第二SME 36或者“或”门76。“或”门76可用于将两个输出72、74耦合在一起以形成GOT 60的共同输出66。在实例中,第一SME 34及第二SME 36展现奇偶性,如上文所论述,其中第一SME 34的输入62可耦合到一些行互连导体68且第二SME 36的输入64可耦合到其它行互连导体70,可产生可克服奇偶性问题的共同输出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中无一者、一者或两者。
在实例中,状态机元件34、36包括并联耦合到检测线82的多个存储器单元80,例如通常用于动态随机存取存储器(DRAM)中的那些存储器单元。一个此存储器单元80包括可设定到数据状态(例如对应于高值或低值(例如,1或0)的一个数据状态)的存储器单元。存储器单元80的输出耦合到检测线82且到存储器单元80的输入基于数据流线84上的数据而接收信号。在实例中,输入块52处的输入经解码以选择存储器单元80中的一或多者。选定存储器单元80将其所存储的数据状态作为输出提供到检测线82上。举例来说,可将在输入块52处接收的数据提供到解码器(未展示)且所述解码器可选择数据流线84中的一或多者。在实例中,所述解码器可将8位ACSII字符转换成256个数据流线84中的对应1者。
因此,在存储器单元80经设定到高值且数据流线84上的数据选择存储器单元80时,存储器单元80将高信号输出到检测线82。当数据流线84上的数据选择存储器单元80且存储器单元80经设定到低值时,存储器单元80将低信号输出到检测线82。来自检测线82上的存储器单元80的输出由检测单元86感测。
在实例中,输入线62、64上的信号将相应检测单元86设定到活动或非活动状态。当设定到非活动状态时,不管相应检测线82上的信号如何,检测单元86在相应输出72、74上输出低信号。当设定到活动状态时,检测单元86在从相应SME 34、36的存储器单元82中的一者检测到高信号时在相应输出线72、74上输出高信号。当处于活动状态中时,检测单元86在来自相应SME 34、36的所有存储器单元82的信号为低时在相应输出线72、74上输出低信号。
在实例中,SME 34、36包含256个存储器单元80且每一存储器单元80耦合到不同数据流线84。因此,SME 34、36可经编程以在数据流线84中的选定一或多者在其上具有高信号时输出高信号。举例来说,SME 34可使第一存储器单元80(例如,位0)设定为高且使所有其它存储器单元80(例如,位1到255)设定为低。当相应检测单元86处于活动状态中时,SME 34在对应于位0的数据流线84在其上具有高信号时在输出72上输出高信号。在其它实例中,可通过将适当存储器单元80设定到高值来设定SME 34以在多个数据流线84中的一者在其上具有高信号时输出高信号。
在实例中,可通过从相关联寄存器读取位而将存储器单元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与第二SME 36可通过设定第一SME 34的输出72以耦合到第二SME 36的输入64来级联。因此,当在对应于位0的数据流线84上感测到高信号时,第一SME 34在输出72上输出高信号且将第二SME 36的检测单元86设定到活动状态。当在对应于位1的数据流线84上感测到高信号时,第二SME 36在输出74上输出高信号以激活另一SME 36或供从FSM点阵30输出。
在实例中,在单个物理装置上实施单个FSM点阵30,然而在其它实例中可在单个物理装置(例如,物理芯片)上实施两个或两个以上FSM点阵30。在实例中,每一FSM点阵30可包含不同数据输入块52、不同输出块54、不同编程接口56及不同可配置元件组。此外,每一可配置元件组可对在其对应数据输入块52处的数据做出反应(例如,输出高或低信号)。举例来说,对应于第一FSM点阵30的第一可配置元件组可对对应于第一FSM点阵30的第一数据输入块52处的数据做出反应。对应于第二FSM点阵30的第二可配置元件组可对对应于第二FSM点阵30的第二数据输入块52做出反应。因此,每一FSM点阵30包含一组可配置元件,其中不同可配置元件组可对不同输入数据做出反应。类似地,每一FSM点阵30及每一对应可配置元件组可提供不同输出。在一些实例中,来自第一FSM点阵30的输出块54可耦合到第二FSM点阵30的输入块52,使得第二FSM点阵30的输入数据可包含来自一系列FSM点阵30的分层布置中的第一FSM点阵30的输出数据。
在实例中,用于加载到FSM点阵30上的图像包括用于配置FSM点阵30内的可配置元件、可配置切换元件及专用元件的多个位的数据。在实例中,图像可加载到FSM点阵30上以配置FSM点阵30以基于某些输入提供所要输出。输出块54可基于可编程元件对数据输入块52处的数据的反应而提供来自FSM点阵30的输出。来自输出块54的输出可包含指示给定型式的匹配的单个位、包括指示与多个型式的匹配及不匹配的多个位的字以及对应于所有或某些可配置元件在给定时刻的状态的状态向量。如所描述,若干个FSM点阵30可包含于状态机引擎(例如状态机引擎14)中以执行数据分析,例如型式辨识(例如,语音辨识、图像辨识等)信号处理、成像、计算机视觉、密码术及其它。
图6图解说明可由FSM点阵30实施的有限状态机(FSM)的实例性模型。FSM点阵30可经配置(例如,编程)为FSM的物理实施方案。FSM可表示为图式90(例如,有向图、无向图、伪图),其含有一或多个根节点92。除根节点92之外,所述FSM还可由经由一或多个边缘98连接到根节点92及其它标准节点94的数个标准节点94及终端节点96构成。节点92、94、96对应于所述FSM中的状态。边缘98对应于所述状态之间的转变。
节点92、94、96中的每一者可处于活动或非活动状态中。当处于非活动状态中时,节点(92、94、96)不对输入数据做出反应(例如,响应)。当处于活动状态中时,节点(92、94、96)可对输入数据做出反应。上游节点92、94可在输入数据匹配由上游节点92、94与下游节点94、96之间的边缘98规定的标准时通过激活节点下游的节点94、96而对输入数据做出反应。举例来说,规定字符‘b’的第一节点94将在第一节点94为活动且字符‘b’经接收为输入数据时将激活由边缘98连接到第一节点94的第二节点94。如本文中所使用,“上游”是指一或多个节点之间的关系,其中在一或多个其它节点上游(或在循环或反馈配置的情形中,在其自身上游)的第一节点是指其中第一节点可激活一或多个其它节点(或在循环的情形中,可激活其自身)的情景。类似地,“下游”是指其中在一或多个其它节点下游(或在循环的情形中,在其自身下游)的第一节点可由一或多个其它节点激活(或在循环的情形中,可由其自身激活)的关系。因此,本文中使用术语“上游”及“下游”是指一或多个节点之间的关系,但这些术语不排除在节点当中使用循环或其它非线性路径。
在图式90中,根节点92可经初始激活且可在输入数据匹配来自根节点92的边缘98时激活下游节点94。节点94可在输入数据匹配来自节点94的边缘98时激活节点96。贯穿图式90的节点94、96可在接收输入数据时以此方式激活。终端节点96对应于输入数据中的所关注序列的匹配。因此,激活终端节点96指示已接收到所关注序列作为输入数据。在实施型式辨识功能的FSM点阵30的上下文中,到达终端节点96可指示已在输入数据中检测到特定所关注型式。
在实例中,每一根节点92、标准节点94及终端节点96可对应于FSM点阵30中的可配置元件。每一边缘98可对应于可配置元件之间的连接。因此,过渡到另一标准节点94或终端节点96(例如,具有连接到另一标准节点94或终端节点96的边缘98)标准节点94对应于过渡到另一可配置元件(例如,将输出提供到另一可配置元件)的可配置元件。在一些实例中,根节点92不具有对应可配置元件。
如将了解,尽管节点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的可配置元件可对原始数据流做出反应。所述分层的第二层级(由第二FAM点阵30B实施)可处理来自第一层级的输出。也就是说,第二FSM点阵30B在第二FSM点阵30B的输入块52处接收来自第一FSM点阵30A的输出块54的输出且第二FSM点阵30B的可配置元件可对第一FSM点阵30A的输出做出反应。因此,在此实例中,第二FSM点阵30B不接收原始数据流作为输入,而是接收由如由第一FSM点阵30A确定的原始数据流匹配的所关注型式的指示。第二FSM点阵30B可实施辨识来自第一FSM点阵30A的输出数据流中的型式的FSM。应了解,除接收来自FSM点阵30A的输出外,第二FSM点阵30B还可接收来自多个其它FSM点阵的输入。同样,第二FSM点阵30B可接收来自其它装置的输入。第二FSM点阵30B可组合这些多个输入以产生输出。
图8图解说明用于编译器以将源代码转换成用于配置FSM点阵(例如点阵30)以实施FSM的图像的方法110的实例。方法110包含将源代码剖析成语法树(框112),将所述语法树转换成自动机(框114),优化所述自动机(框116),将所述自动机转换成网表(框118),将所述网表放置于硬件上(框120),路由所述网表(框122)及发布所得图像(框124)。
在实例中,编译器20包含允许软件开发者创建用于在FSM点阵30上实施FSM的图像的应用程序编程接口(API)。编译器20提供用以将源代码中的输入正规表达式集转换成经配置以配置FSM点阵30的图像的方法。可通过用于具有冯诺依曼架构的计算机的指令来实施编译器20。这些指令可导致计算机上的处理器12实施编译器20的功能。举例来说,指令在由处理器12执行时,可导致处理器12对可由处理器12存取的源代码执行框112、114、116、118、120、122及124中所描述的动作。
在实例中,源代码描述用于识别符号群组内的符号的型式的搜索串。为描述搜索串,源代码可包含多个正规表达式(regex)。regex可为用于描述符号搜索型式的串。regex广泛地用于各种计算机领域中,例如编程语言、文本编辑器、网络安全及其它领域。在实例中,编译器所支持的正规表达式包含用于分析未结构化的数据的准则。未结构化的数据可包含自由形式的数据且不具有应用于所述数据内的字的索引。字可包含所述数据内的字节(其可打印及不可打印)的任一组合。在实例中,编译器可支持多种不同源代码语言以用于实施包含Perl(例如,Perl兼容正规表达式(PCRE))、PHP、Java及.NET语言的regex。
在框112处,编译器20可剖析源代码以形成关系连接的算子的布置,其中不同类型的算子对应于由源代码实施的不同函数(例如,由源代码中的regex实施的不同函数)。剖析源代码可创建源代码的通用表示。在实例中,通用表示包括呈称作语法树的树形图的形式的源代码中的regex的经编码表示。本文中所描述的实例是指作为语法树(还称作“抽象语法树”)的配置,然而在其它实例中可使用具体语法树或其它布置。
如上文所提及,由于编译器20可支持源代码的多种语言,因此剖析不管语言如何而将源代码转换成非语言特定表示(例如,语法树)。因此,不管源代码的语言如何,由编译器20进行的进一步处理(框114、116、118、120)均可从共同输入结构起作用。
如上所述,语法树包含关系连接的多个算子。语法树可包含多种不同类型的算子。也就是说,不同算子可对应于由源代码中的regex实施的不同函数。
在框114处,将语法树转换成自动机。自动机包括FSM的软件模型且可因此分类为确定性的及非确定性的。确定性自动机在给定时间具有单个执行路径,而非确定性自动机具有多个同时执行路径。所述自动机包括多个状态。为了将语法树转换成自动机,将语法树中的算子及算子之间的关系转换成状态,其中所述状态之间具有转变。在实例中,所述自动机可部分地基于FSM点阵30的硬件而转换。
在实例中,用于自动机的输入符号包括字母、数字0到9及其它可打印字符等符号。在实例中,输入符号由字节值0到255(包括0及255)表示。在实例中,自动机可表示为有向图,其中所述图的节点对应于所述组状态。在实例中,输入符号α(即,δ(p,α))上从状态p到状态q的转变由从节点p到节点q的有向连接展示。在实例中,自动机的反转产生新自动机,其中某一符号α上的每一转变p→q在同一符号上反转q→p。在反转中,开始状态变为最终状态且最终状态变为开始状态。在实例中,由自动机辨识(例如,匹配)的语言是当依序输入到所述自动机中时将到达最终状态的所有可能字符串的集。由自动机辨识的语言中的每一串追踪从开始状态到一或多个最终状态的路径。
在框116处,在建构自动机之后,所述自动机经优化以除其它之外还减小其复杂度及大小。可通过组合冗余状态来优化所述自动机。
在框118处,将经优化自动机转换成网表。将所述自动机转换成网表将所述自动机的每一状态映射到FSM点阵30上的硬件元件(例如,SME 34、36,其它元件),并确定所述硬件元件之间的连接。
在框120处,放置所述网表以选择目标装置的对应于所述网表的每一节点的特定硬件元件(例如,SME 34、36,专用元件58)。在实例中,放置基于FSM点阵30的一般输入及输出约束来选择每一特定硬件元件。
在框122处,路由所放置的网表以确定用于可配置切换元件(例如,块间切换元件40、块内切换元件42及行内切换元件44)的设定,以便将选定硬件元件耦合在一起以实现由网表描述的连接。在实例中,通过确定FSM点阵30的将用以连接选定硬件元件及用于可配置切换元件的设定的特定导体来确定用于可配置切换元件的设定。路由可能考量在框120处放置的硬件元件之间的连接的更特定限制。因此,假定对FSM点阵30上的导体的实际限制,路由可调整如由全局放置确定的硬件元件中的一些硬件元件的位置以便进行适当连接。
一旦网表经放置及路由,便可将经放置及路由的网表转换成用于配置FSM点阵30的多个位。多个位在本文中称作图像(例如,二进制图像)。
在框124处,图像由编译器20发布。图像包括用于配置FSM点阵30的特定硬件元件的多个位。位可加载到FSM点阵30上以配置SME 34、36、专用元件58及可配置切换元件的状态,使得经编程FSM点阵30实施具有由源代码描述的功能性的FSM。放置(框120)及路由(框122)可将FSM点阵30中的特定位置处的特定硬件元件映射到自动机中的特定状态。因此,所述图像中的位可配置特定硬件元件以实施所要功能。在实例中,可通过将机器码保存到计算机可读媒体来发布所述图像。在另一实例中,可通过将所述图像显示于显示装置上来发布所述图像。在又另一实例中,可通过将所述图像发送到另一装置(例如用于将所述图像加载到FSM点阵30上的配置装置)来发布所述图像。在又另一实例中,可通过将所述图像加载到FSM点阵(例如,FSM点阵30)上来发布所述图像。
在实例中,可通过将来自所述图像的位值直接加载到SME 34、36及其它硬件元件或通过将图像加载到一或多个寄存器中且接着将所述位值从寄存器写入到SME 34、36及其它硬件元件来将图像加载到FSM点阵30上。在实例中,FSM点阵30的硬件元件(例如,SME 34、36、专用元件58、可配置切换元件40、42、44)经存储器映射使得配置装置及/或计算机可通过将图像写入到一或多个存储器地址而将图像加载到FSM点阵30上。
本文中所描述的方法实例可为至少部分地机器或计算机实施的。一些实例可包含借助指令编码的计算机可读媒体或机器可读媒体,所述指令可操作以配置电子装置以执行如以上实例中所描述的方法。此类方法的实施方案可包含代码,例如微代码、汇编语言代码、较高层级语言代码等等。此代码可包含计算机可读指令以用于执行各种方法。所述代码可形成计算机程序产品的部分。此外,所述代码可在执行期间或在其它时间有形地存储于一或多个易失性或非易失性计算机可读媒体上。这些计算机可读媒体可包含(但不限于)硬盘、可装卸式磁盘、可装卸式光盘(例如,光盘及数字视频盘)、盒式磁带、存储器卡或棒、随机存取存储器(RAM)、只读存储器(ROM)等等。
现在参考图9,图解说明状态机引擎14(例如,单个芯片上的单个装置)的实施例。如先前所描述,状态机引擎14经配置以经由数据总线从一源(例如存储器16)接收数据。在所图解说明实施例中,数据可经由总线接口(例如第三代双倍数据速率(DDR3)总线接口130)发送到状态机引擎14。DDR3总线接口130可能够以大于或等于1千兆字节/秒的速率交换(例如,提供及接收)数据。此数据交换速率可大于由状态机引擎14分析数据的速率。如将了解,取决于待分析的数据的源,总线接口130可为用于交换数据到状态机引擎14及从数据源到状态机引擎14的任何适合总线接口,例如NAND快闪接口、外围组件互连(PCI)接口、千兆位媒体独立接口(GMII)等。如先前所描述,状态机引擎14包含经配置以分析数据的一或多个FSM点阵30。每一FSM点阵30可划分成两个半点阵。在所图解说明实施例中,每一半点阵可包含24K SME(例如,SME 34、36),使得点阵30包含48K SME。点阵30可包括任何合意数目个SME,如先前关于图2到5所描述而布置。此外,虽然仅图解说明一个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千字节,而在其它实施例中,数据缓冲器132可为任何适合大小(例如,4千字节、8千字节、16千字节、64千字节等)。指令缓冲器133经配置以经由总线接口130从处理器12接收指令,例如对应于待分析的数据的指令及对应于配置状态机引擎14的指令。IR总线与过程缓冲器接口136可促进将数据提供到过程缓冲器134。IR总线与过程缓冲器接口136可用于确保数据由FSM点阵30按次序处理。IR总线与过程缓冲器接口136可协调数据的交换、时序数据、包装指令等,使得正确地接收及分析数据。通常,IR总线与过程缓冲器接口136允许使用装置排中的多个装置。装置排中的多个装置共享数据使得所有多个装置以正确次序接收所有共享数据。举例来说,多个物理装置(例如状态机引擎14、芯片、单独装置)可经布置于一排中且可经由IR总线与过程缓冲器接口136将数据提供到彼此。出于本申请案的目的,术语“排”是指连接到相同芯片选择的一组状态机引擎14。在所图解说明实施例中,IR总线与过程缓冲器接口136可包含8位数据总线。
在所图解说明实施例中,状态机引擎14还包含解压缩器138及压缩器140以有助于将数据提供到状态机引擎14及从状态机引擎14提供数据。如可了解,压缩器140及解压缩器138可使用相同压缩算法来简化软件及/或硬件设计;然而,压缩器140及解压缩器138还可使用不同算法。通过压缩数据,可使总线接口130(例如,DDR3总线接口)利用时间最小化。在本实施例中,压缩器140可用于压缩状态向量数据,配置数据(例如,编程数据)及在由FSM点阵30分析之后获得的匹配结果数据。在一个实施例中,压缩器140及解压缩器138可停用(例如,关断),使得流动到压缩器140及解压缩器138及/或从所述压缩器140及解压缩器138流动的数据未经修改(例如,既未经压缩也未经解压缩)。
压缩器140及解压缩器138还可经配置以处置多个数据集,且每一数据集可具有变化的长度。通过“填补”压缩数据且包含关于每一压缩区何时结束的指示符,压缩器140可经由状态机引擎14改进整个处理速度。
状态机引擎14包含状态向量系统141,所述状态向量系统具有状态向量高速缓冲存储器142、状态向量存储器缓冲器144、状态向量中间输入缓冲器146及状态向量中间输出缓冲器148。状态向量系统141可用于存储FSM点阵30的多个状态向量,以将状态向量移动到状态机引擎14上或从所述状态机引擎14移动离开,且将状态向量提供到FSM点阵30以将FSM点阵30恢复到对应于所提供状态向量的状态。举例来说,每一状态向量可暂时存储于状态向量高速缓冲存储器142中。也就是说,每一SME 34、36的状态可存储,使得状态可经恢复且用于稍后时间处的进一步分析,同时使SME 34、36自由以用于分析新数据集(例如,搜索项)。如同典型高速缓冲存储器,状态向量高速缓冲存储器142允许存储状态向量以用于(此处,举例来说,由FSM点阵30)快速检索及使用。在所图解说明实施例中,状态向量高速缓冲存储器142可存储高达512个状态向量。每一状态向量包括FSM点阵30的SME 34、36的状态(例如,经激活或未经激活)及计数器58的动态(例如,当前)计数。
如将了解,状态向量数据可在一排中的不同状态机引擎14(例如,芯片)之间交换。出于例如以下的各种目的,状态向量数据可在不同状态机引擎14之间交换:使FSM点阵30的SME 34、36的状态及计数器58的动态计数同步化、跨越多个状态机引擎14执行相同功能、跨越多个状态机引擎14再现结果、跨越多个状态机引擎14级联结果、存储用于分析经由多个状态机引擎14级联的数据的SME 34、36的状态及计数器58的动态计数的历史纪录等等。此外,应注意,在状态机引擎14内,状态向量数据可用于快速恢复状态向量。举例来说,状态向量数据可用于将SME 34、36的状态及计数器58的动态计数恢复到初始化状态(例如,搜索新搜索项),将SME 34、36的状态及计数器58的动态计数恢复到先前状态(例如,搜索先前搜索的搜索项)及改变SME 34、36的状态及计数器58的动态计数以经配置用于级联配置(例如,在级联搜索中搜索一搜索项)。在某些实施例中,可将状态向量数据提供到总线接口130,使得可将状态向量数据提供到处理器12(例如,用于分析状态向量数据、重新配置状态向量数据以应用修改、重新配置状态向量数据以改进效率等等)。
举例来说,在某些实施例中,状态机引擎14可将经高速缓存状态向量数据(例如,由状态向量系统141存储的数据)从FSM点阵30提供到外部装置。外部装置可接收状态向量数据、修改状态向量数据及将经修改状态向量数据提供到状态机引擎14以用于恢复FSM点阵30(例如,重置、初始化)。因此,外部装置可修改状态向量数据使得状态机引擎14可视需要跳过状态(例如,在各状态之间跳跃)。
状态向量高速缓冲存储器142可从任何适合装置接收状态向量数据。举例来说,状态向量高速缓冲存储器142可从FSM点阵30、另一FSM点阵30(例如,经由IR总线与过程缓冲器接口136)、解压缩器138等等接收状态向量。在所图解说明实施例中,状态向量高速缓冲存储器142可经由状态向量存储器缓冲器144从其它装置接收状态向量。此外,状态向量高速缓冲存储器142可将状态向量数据提供到任何适合装置。举例来说,状态向量高速缓冲存储器142可将状态向量数据提供到状态向量存储器缓冲器144、状态向量中间输入缓冲器146及状态向量中间输出缓冲器148。
额外缓冲器(例如状态向量存储器缓冲器144、状态向量中间输入缓冲器146及状态向量中间输出缓冲器148)可结合状态向量高速缓冲存储器142用于适应状态向量的迅速检索及存储,同时经由状态机引擎14处理具有交错包的单独数据集。在所图解说明实施例中,状态向量存储器缓冲器144、状态向量中间输入缓冲器146及状态向量中间输出缓冲器148中的每一者可经配置以暂时存储一个状态向量。状态向量存储器缓冲器144可用于从任何适合装置接收状态向量数据及将状态向量数据提供到任何适合装置。举例来说,状态向量存储器缓冲器144可用于从FSM点阵30、另一FSM点阵30(例如,经由IR总线与过程缓冲器接口136)、解压缩器138及状态向量高速缓冲存储器142接收状态向量。作为另一实例,状态向量存储器缓冲器144可用于将状态向量数据提供到IR总线与过程缓冲器接口136(例如,用于其它FSM点阵30)、压缩器140及状态向量高速缓冲存储器142。
同样,状态向量中间输入缓冲器146可用于从任何适合装置接收状态向量数据及将状态向量数据提供到任何适合装置。举例来说,状态向量中间输入缓冲器146可用于从FSM点阵30(例如,经由IR总线与过程缓冲器接口136)、解压缩器138及状态向量高速缓冲存储器142接收状态向量。作为另一实例,状态向量中间输入缓冲器146可用于将状态向量提供到FSM点阵30。此外,状态向量中间输出缓冲器148可用于从任何适合装置接收状态向量及将状态向量提供到任何适合装置。举例来说,状态向量中间输出缓冲器148可用于从FSM点阵30及状态向量高速缓冲存储器142接收状态向量。作为另一实例,状态向量中间输出缓冲器148可用于将状态向量提供到FSM点阵30(例如,经由IR总线与过程缓冲器接口136)及压缩器140。
一旦所关注结果由FSM点阵30产生,匹配结果便可存储于匹配结果存储器150中。举例来说,指示匹配(例如,所关注型式的检测)的“匹配向量”可存储于匹配结果存储器150中。举例来说,匹配结果可接着发送到匹配缓冲器152以用于经由总线接口130发射到处理器12。如先前所描述,可压缩匹配结果。
额外寄存器及缓冲器还可提供于状态机引擎14中。举例来说,状态机引擎14可包含控制与状态寄存器154。另外,恢复与编程缓冲器156可经提供以用于初始配置FSM点阵30的SME 34、36,或在分析期间恢复FSM点阵30中的SME 34、36的状态。类似地,保存与修复映射缓冲器158还可经提供用于存储设置及用途的保存与修复映射。
图10图解说明布置成装置排的多个物理状态机引擎14的实例。如可了解,状态机引擎14与处理器12之间的接口(例如,DDR3总线接口130)可使得状态机引擎14能够使用来自处理器12的所有数据线从处理器12接收数据。举例来说,如果处理器12具有64个数据线且每一状态机引擎14具有八个数据线,那么八个状态机引擎14可耦合到64个数据线以从处理器12的所有数据线接收数据。因此,处理器12可快速且使用标准接口将数据提供到状态机引擎14。此外,状态机引擎14可经配置以一起协调使得将由状态机引擎14共同接收的所有数据以有序方式提供到所有状态机引擎14。
如先前所描述,在总线接口130处接收待分析的数据。总线接口130将数据引导到每一状态机引擎14(例如,F0、F1、F2、F3、F4、F5、F6、F7)的数据缓冲器系统159,所述数据缓冲器系统包含数据缓冲器132及指令缓冲器133。数据缓冲器132经配置以接收且暂时存储待分析的数据。在所图解说明实施例中,每一状态机引擎14中存在两个数据缓冲器132(例如,数据缓冲器A及数据缓冲器B)。数据可存储于两个数据缓冲器132中的一者中,同时数据从另一数据缓冲器132清除,供由FSM点阵30进行分析。如先前所论述,指令缓冲器133经配置以经由总线接口130从处理器12接收指令,例如对应于待分析的数据的指令。从数据缓冲器系统159,待分析的数据及对应于所述数据的指令经由IR总线与过程缓冲器接口136提供到FSM点阵30中的一或多者。在本实施例中,物理FSM点阵30布置成逻辑群组。具体来说,状态机引擎14F0及F1的FSM点阵30布置成逻辑群组A 162、状态机引擎14F2及F3的FSM点阵30布置成逻辑群组B 164、状态机引擎14F4及F5的FSM点阵30布置成逻辑群组C 166,且状态机引擎14F6及F7的FSM点阵30布置成逻辑群组D 168。在其它实施例中,物理FSM点阵30可布置成任何适合数目个逻辑群组(例如,1、2、3、4、5、6、7、8)。此外,如将了解,数据可经由IR总线与过程缓冲器接口136在状态机引擎14之间交换。举例来说,IR总线与过程缓冲器接口136可用于在状态机引擎14(例如,F0、F1、F2、F3、F4、F5、F6、F7)中的任何者之间交换数据。尽管图解说明八个状态机引擎14,但装置排可具有任何适合数目个状态机引擎14(例如,1、2、4、8等等)。如将了解,每一状态机引擎14的IR总线与过程缓冲器接口136可包含用于接收数据(例如,从其特有数据缓冲器系统159及从其它状态机引擎14的IR总线与过程缓冲器接口136)的输入。同样,每一状态机引擎14的IR总线与过程缓冲器接口136可包含用于发送数据(例如,发送到FSM点阵30及其它状态机引擎14的IR总线与过程缓冲器接口136)的输出。
总线接口130可以经修整以高效使用数据的格式接收待分析的数据。具体来说,图11到14图解说明数据可如何由处理器12指派(例如,分组)成经由总线接口130提供到状态机引擎14的数据块的实例。
现在参考图11,图解说明由处理器12指派到待提供到状态机引擎14的数据块中的数据分段(例如,数据集、搜索项)的实例。在本实施例中,将多个数据分段指派到单个数据块中。每一数据块经指派以由FSM点阵30(在状态机引擎14排中的一或多个状态机引擎14上)的单个逻辑群组(例如,162、164、166、168)进行分析。举例来说,数据流170(例如,待由处理器12发送到状态机引擎14的大量数据)由处理器12指派到以下各项中:对应于打算用于逻辑群组A 162的数据的第一数据块172、对应于打算用于逻辑群组B 164的数据的第二数据块174、对应于打算用于逻辑群组C 166的数据的第三数据块176及对应于打算用于逻辑群组D 168的数据的第四数据块178。具体来说,数据流170由处理器12从数据分段180、182、184、186、188、190、192、194、196、198及200汇编。如将了解,数据分段180、182、184、186、188、190、192、194、196、198及200中的每一者可表示待由FSM点阵30分析的数据集。如将了解,出于任何适合原因,处理器12可将数据分段180、182、184、186、188、190、192、194、196、198及200指派到数据块172、174、176及178。举例来说,处理器12可基于每一数据集的长度及/或数据集待分析的次序将数据分段指派到某些数据块以便高效处理数据集。
可使用任何适合方式将数据分段180、182、184、186、188、190、192、194、196、198及200指派到数据块172、174、176及178中。举例来说,可将数据分段180、182、184、186、188、190、192、194、196、198及200指派到数据块172、174、176及178中,使得使数据块172、174、176及178中的字节数目最小化。作为另一实例,可将数据分段180、182、184、186、188、190、192、194、196、198及200指派到数据块172、174、176及178中,使得某些数据分段分组在一起。
如所图解说明,第一数据块172包含数据分段A 180、数据分段F 190及数据分段I196。第二数据块174包含数据分段B 182及数据分段K 200。此外,第三数据块176包含数据分段C 184、数据分段E 188及数据分段G 192。第四数据块178包含数据分段D 186、数据分段H 194及数据分段J 198。
如将了解,为高效处理数据块,数据块可全部具有相等量的数据。此外,数据块内的数据分段可在数据块内以预定间隔(例如,字节、字)开始及/或停止,使得处理装置可确定数据分段何时开始及停止。然而,数据分段可不具有以预定间隔开始及/或停止的正确量的数据。因此,可将数据填补插入于某些数据分段之间使得数据在数据块内以预定间隔开始及/或停止。另外,可将数据填补添加到数据块的末端,使得所有数据块具有相等量的数据。
现在参考图12,图解说明插入于图11的数据块172、174、176及178的数据分段之间的数据填补的实例。举例来说,在第一数据块172中,可将数据填补202插入于数据分段A180与数据分段F 190之间。此外,可将数据填补204插入于数据分段F 190与数据分段I 196之间。作为另一实例,在第二数据块174中,可将数据填补206插入于数据分段B 182与数据分段K 200之间。在第三数据块176中,可将数据填补208插入于数据分段C 184与数据分段E188之间。同样,可将数据填补210插入于数据分段E 188与数据分段G 192之间。作为另一实例,在第四数据块178中,可将数据填补212插入于数据分段D 186与数据分段H 194之间。另外,可将数据填补214插入于数据分段H 194与数据分段J 198之间。
数据填补202、204、206、208、210、212及214可包含尚未经分析的任何适合数目个字节的数据(例如,无效数据、垃圾数据、填料数据、无用数据等)。在一个实施例中,用作数据填补的字节的数目可为当添加到先前数据分段的字节的数目时达到总字边界的字节数目(即,先前数据分段的字节的数目加上用作数据填补的字节的数目可由总字边界平分)。举例来说,数据填补202的字节的数目可使得数据填补202及数据分段A 180(即,先前数据分段)的字节的组合数目可由总字边界平分(例如,无余数)。在所图解说明实施例中,总字边界可为八个字节。在其它实施例中,总字边界可为任何适合数目个字节或位。如此,在所图解说明实施例中,如果数据分段A 180将包含63个字节的数据,那么数据填补202将包含一个字节的数据(例如,以在数据分段A 180与数据填补202之间产生64个组合字节的数据,其中64可由八个字节平分)。作为另一实例,如果数据分段A 180包含60个字节的数据(例如,其不可被八平分),那么数据填补202将包含四个字节的数据。作为又一实例,如果数据分段A 180包含64个字节的数据,那么数据填补202将包含零个字节的数据,或换句话说,数据分段A 180与数据分段F 190之间将不需要数据填补202。如将了解,每一数据填补202、204、206、208、210、212及214可以类似方式操作。
现在参考图13,图解说明在图12的数据块172、174、176及178的数据分段之后插入的数据填补的实例。具体来说,可视需要将数据填补插入于每一数据块172、174、176及178的末端处以使每一数据块172、174、176及178中的字节的数目相等。此外,可使用每一数据块172、174、176及178的末端处的数据填补使得每一数据块172、174、176及178达到总字边界,如先前所描述。在所图解说明实施例中,数据填补216插入于数据分段I 196之后,数据填补218插入于数据分段G 192之后,且数据填补220插入于数据分段J 198之后。因此,数据块172、174、176及178中的每一者包含相等数目个字节且数据块172、174、176及178中的每一者达到总字边界。
对FSM点阵30来说可难以将数据填补与有效数据区分开。因此,指令可伴随数据块172、174、176及178,使得在分析有效数据期间可由FSM点阵30识别并忽略数据填补。可由处理器12经由总线接口130将此类指令发送到状态机引擎14且可由状态机引擎14的指令缓冲器160接收、存储并提供所述指令。为产生所述指令,处理器12可将数据流170逻辑地划分成区222、224、226、228、230、232、234及236。区222、224、226、228、230、232、234及236的结束边界可经形成使得每一区在任何数据填补结束时结束。举例来说,第一区222在数据填补208结束时结束。作为另一实例,第五区230在数据填补204结束时结束。
伴随数据块172、174、176及178的指令可包含关于每一区222、224、226、228、230、232、234及236的总字节的数目以及关于每一区内的每一数据块172、174、176及178的有效字节的数目(例如,不包含字节填补的字节的数目)。举例来说,指令可包含:对应于第一区222的字节238的数目、对应于第一区222内的第一数据块172的有效字节的字节240的数目、对应于第一区222内的第二数据块174的有效字节的字节242的数目、对应于第一区222内的第三数据块176的有效字节的字节244的数目及对应于第一区222内的第四数据块178的有效字节的字节246的数目。应注意,在此实例中,由238、240、242及246表示的字节的数目是相等的,这是因为在数据分段A1、B1及D1之后无填补。
同样,指令可包含:对应于第二区224的字节248、250、252、254及256的数目,对应于第三区226的字节258、260、262、264及266的数目,对应于第四区228的字节268、270、272、274及276的数目,对应于第五区230的字节278、280、282、284及286的数目,对应于第六区232的字节288、290、292、294及296的数目,对应于第七区234的字节298、300、302、304及306的数目及对应于第八区236的字节308、310、312、314及316的数目。应注意,指令可包含关于每一区222、224、226、228、230、232、234、236中的每一数据分段的有效字节的数目。因此,针对第七区234,逻辑群组A 162可包含零个的有效字节300的数目。此外,针对第八区236,逻辑群组A 162可包含零个的有效字节310的数目。因此,使用指令,FSM点阵30可识别关于数据分段所插入的数据填补。尽管本文中已呈现一个特定类型的指令,但应注意,包含有数据块172、174、176及178的群组的指令可为允许FSM点阵30将有效数据与数据填补(即,无效数据)区分开的任何适合指令群组。
现在参考图14,图解说明用于发射到状态机引擎14的数据缓冲器系统159的由处理器12组织的图13的数据块172、174、176及178的实例。数据块172、174、176及178中的每一者布置有具有等效于整个字长度的字节318的数目的数据行。在所图解说明实例中,整个字长度为八个字节,由字节表示状态机引擎14(例如,F0、F1、F2、F3、F4、F5、F6及F7)中的每一者。来自数据分段中的每一者的第一字节在每一数据块172、174、176及178的右侧处开始且朝向每一数据块的左侧增加,使得数据分段A 180的第一字节在栏F0中且数据分段A 180的第八字节在栏F7中。如将了解,栏F0表示将初始存储于F0状态机引擎14的数据缓冲器132中的数据,栏F1表示将初始存储于F1状态机引擎14的数据缓冲器132中的数据,等等。此外,数据分段从顶部到底部放置于行中。如所图解说明,数据分段及数据填补的每一组合在栏F7中结束(即,其各自延长整个字长度)。此外,每一数据块172、174、176及178在大小上相等。如将了解,在操作期间,数据块172、174、176及178可依序从处理器12提供到状态机引擎14。
给定块(172、174、176及178)的数据提供到装置排中的所有状态机引擎14的数据缓冲器系统159且跨越所述数据缓冲器系统存储,使得打算用于对应逻辑群组(分别162、164、166或168)的数据跨越排的状态机引擎14的数据缓冲器系统159扩散。可以此方式接收并存储数据使得数据能够经由总线接口130快速提供到数据缓冲器系统159。在某些实施例中,数据缓冲器系统159的数据缓冲器132可经配置以锁存来自总线接口130的数据(例如,以预定间隔)。在其它实施例中,数据缓冲器系统159的数据缓冲器132可基于数据缓冲器132与总线接口130之间的连接接收数据的有限部分。如下文详细解释,存储于数据缓冲器系统159中的数据在将数据经由IR总线与过程缓冲器接口136从数据缓冲器系统159提供到过程缓冲器134时拣出。
图15图解说明布置成装置排且通过IR总线与过程缓冲器接口136耦合在一起的多个物理状态机引擎14的实例。具体来说,在所图解说明实施例中,八个状态机引擎14(F0、F1、F2、F3、F4、F5、F6及F7)经配置于单个印刷电路板上以形成模块340。在某些实施例中,模块340可以类似于双列直插式存储器模块(DIMM)的方式布置。举例来说,单个芯片可包含一个状态机引擎14。此外,各自具有一个状态机引擎14的多个芯片可耦合(例如,以电、光学或其它可操作方式耦合)到模块340的印刷电路板。举例来说,印刷电路板可包含各自包含一个状态机引擎14的1、2、4、8、16或16个以上芯片。此外,在某些实施例中,模块340可包含用于将模块340耦合到一系统(例如计算机、工作站或服务器)的72、100、144、168、184、200、240个或者更少或更多引脚或连接元件。举例来说,模块340可包含240个引脚且可经配置以插入到服务器中的槽中。
模块340的引脚耦合到DDR3总线接口130以促进处理器12与模块340之间的数据传送。此外,使用印刷电路板的路由线将模块340的引脚耦合到具有状态机引擎14的芯片(例如,F0、F1、F2、F3、F4、F5、F6及F7)的引脚。DDR3总线接口130包含DDR3地址总线342以使得处理器12能够选择每一状态机引擎14的数据缓冲器系统159的存储器地址。如所图解说明,DDR3地址总线342包含16个地址线;然而,在其它实施例中,DDR3地址总线342可包含少于或多于16个地址线。DDR3地址总线342中的每一地址线耦合到每一状态机引擎14的数据缓冲器系统159。因此,处理器12可一起选择每一状态机引擎14的数据缓冲器系统159的地址。
如可了解,状态机引擎14与处理器12之间的DDR3总线接口130可使得状态机引擎14能够使用来自处理器12的所有数据线从处理器12接收数据。举例来说,如果处理器12具有64个数据线且每一状态机引擎14具有八个数据线,那么八个状态机引擎14可耦合到64个数据线以从处理器12的所有数据线接收数据。因此,处理器12可快速且使用标准接口将数据提供到状态机引擎14。此外,状态机引擎14可经配置以一起协调使得将由状态机引擎14共同接收的所有数据以有序方式提供到所有状态机引擎14。在所图解说明实施例中,DDR3总线接口130包含具有耦合到每一状态机引擎14的数据线344、346、348、350、352、354、356及358的组的数据总线343。如所图解说明,单独数据线耦合到每一状态机引擎14。举例来说,在某些实施例中,数据总线343包含64个数据线且模块340包含八个状态机引擎14。在此实施例中,八个数据线可耦合到及/或单独专用于八个状态机引擎14中的每一者。因此,使用数据总线343及DDR3地址总线342,相应的数据字节可同时提供到每一状态机引擎14的数据缓冲器系统159的选定地址。在某些实施例中,少于或多于八个数据线可将状态机引擎14耦合到数据总线343。此外,DDR3总线接口130可包含少于或多于64个数据线。以下表(表1)图解说明具有规定数目个数据线的DDR3总线接口130的配置及耦合到状态机引擎14的DDR3总线接口130的数据线的数目的各种实例。
表1
如表1中所图解说明,如果数据总线343包含八个数据线,那么八个数据线可耦合到具有八个线的输入数据总线宽度的一个状态机引擎14。作为另一实例,如果数据总线343包含16个数据线,那么16个数据线可耦合到具有八个线的输入数据总线宽度的两个状态机引擎14,或具有16个线的输入数据总线宽度的一个状态机引擎14。作为又一实例,如果数据总线343包含32个数据线,那么32个数据线可耦合到具有八个线的输入数据总线宽度的四个状态机引擎14,或具有16个线的输入数据总线宽度的两个状态机引擎14。此外,如果数据总线343包含64个数据线,那么64个数据线可耦合到具有八个线的输入数据总线宽度的八个状态机引擎14,或具有16个线的输入数据总线宽度的四个状态机引擎14。
DDR3总线接口130包含促进处理器12与模块340之间的数据传送的其它控制线360、362、364、366、368、370、372及374。其它控制线360、362、364、366、368、370、372及374可实现处理器12与选定状态机引擎14之间的个别通信及/或可共同地实现处理器12与状态机引擎14之间的通信。
在操作期间,处理器12可将数据提供到DDR3总线接口130。举例来说,处理器12可使用具有64个数据线的数据总线一次提供64个位的数据。此外,状态机引擎14可各自从耦合到每一状态机引擎14的八个数据线接收八个位的数据。因此,处理器12可一次将64个位的数据提供到模块340。如先前所论述,状态机引擎14可经配置以通过其它不同状态机引擎14接收待分析的数据。如此,处理器12可将数据提供到模块340在数据块中,其中每一数据块打算由模块340的状态机引擎14中的一或多者处理。换句话说,处理器12可不分类及/或包装其提供的数据块。举例来说,处理器12可提供打算由状态机引擎14F0分析的若干个连续字节的数据,尽管所述若干个连续字节的数据的部分将由状态机引擎14(F0、F1、F2、F3、F4、F5、F6及F7)中的每一者接收及存储。因此,处理器12可以简化且高效方式将数据提供到模块340,且可使得状态机引擎14能够分类数据以由选定状态机引擎14处理。
处理器12还可将指令提供到状态机引擎14以指示将分析从处理器12提供的每一数据块的状态机引擎14,可将指令提供到状态机引擎14以分析数据达一段时间(例如,预定段时间),且可将指令提供到状态机引擎14以关于从处理器12提供的每一数据块的长度指示状态机引擎14。在某些实施例中,数据缓冲器系统159可包含某些存储器位置以存储从处理器12接收的指令。因此,处理器12可使用DDR3地址总线342来选择专用于接收指令的数据缓冲器系统159的预定地址。处理器12可接着使用数据总线343及DDR3地址总线342来将指令提供到状态机引擎14中的每一者。
IR总线与过程缓冲器接口136是模块340的部分且包含互连状态机引擎14的连接(例如,电、光学或另一可操作连接)。如所图解说明,IR总线与过程缓冲器接口136包含可为指令总线的部分的IR数据总线376及其它控制线378。在所图解说明实施例中,IR数据总线376包含使状态机引擎14中的每一者彼此耦合的八个数据线。具体来说,IR数据总线376将每一状态机引擎14的数据缓冲器系统159及每一状态机引擎14的过程缓冲器134耦合在一起。此外,IR数据总线376可用于将从处理器12接收的数据提供到其它状态机引擎14以用于分析数据。其它控制线378可用于同步化及/或控制状态机引擎14之间的数据传送。
具有状态机引擎14的每一芯片可经分组成逻辑群组以处理从处理器12接收的数据。如可了解,模块340的状态机引擎14可包含一或多个逻辑群组。在模块340中,可存在包含所有状态机引擎14(F0、F1、F2、F3、F4、F5、F6及F7)的一个逻辑群组。此外,可存在两个、三个、四个、五个、六个、七个或八个逻辑群组。逻辑群组可具有任何数目个状态机引擎14,且逻辑群组并非必须为相同大小。举例来说,在一个实施例中,第一逻辑群组可包含状态机引擎14F0及F1,且第二逻辑群组可包含状态机引擎14F2、F3、F4、F5、F6及F7。通过使用可包含一个以上状态机引擎14的逻辑群组,太大而难以编程成单个状态机引擎14的单个自动机处理器块可由逻辑群组分析。此外,逻辑群组使得多个数据块能够同时由不同逻辑群组分析。此外,逻辑群组使得以高吞吐量速度分析数据,例如通过使用具有相同大小的逻辑群组及/或通过并行处理。因此,模块340的架构提供灵活性且可使得模块340的单个状态机引擎14能够以高达1.0Gbps或1.0Gbps以上的速率处理数据。此外,模块340的架构可使得模块340能够在八个逻辑群组中并行处理数据,例如通过使用八个状态机引擎14,借此实现高达单个状态机引擎14的速率的八倍的数据处理速率(例如,8.0Gbps或8.0Gbps以上)。
尽管每一状态机引擎14可为逻辑群组的部分,但状态机引擎14可不接收其为特定逻辑群组的部分的任何指示及/或关于是其逻辑群组的部分的状态机引擎14的数目的指示。然而,某些信息可使用指令及/或其它控制线360、362、364、366、368、370、372及374提供到状态机引擎14。举例来说,状态机引擎14可接收及/或存储关于以下各项的指示:DDR3总线接口130的总的总线宽度、耦合到DDR3总线接口130的数据线的数目、IR数据总线376的数据线的数目、DDR3总线接口130上的装置位置、IR数据总线376上的装置位置、状态机引擎14是否为主装置、状态机引擎14是否为从装置、待执行的IR数据总线376循环的数目、将接收的字节的数目及/或待分析的字节的数目(例如,有效数据)。
举例来说,在模块340的初始化期间,处理器12可将数据提供到每一状态机引擎14以将一数目指派到每一状态机引擎14(例如,0、1、2、3、4、5、6、7)。在某些实施例中,接收“0”的状态机引擎14可为状态机引擎14F0且可为“主”装置,且所有其它装置可为“从”装置。在其它实施例中,“主”装置可经指派任何适合值。在某些实施例中,“主”装置可经配置以协调状态机引擎14的同步化。处理器12还可将数据提供到每一状态机引擎14以指示为模块340的部分的状态机引擎14的总数目、状态机引擎14所属于的逻辑群组及/或为模块340的部分的逻辑群组的数目。
在具有一个逻辑群组的一个实施例中,IR总线与过程缓冲器接口136使得排中的每一状态机引擎14(例如,F0、F1、F2、F3、F4、F5、F6及F7)能够分析由处理器12提供的所有字节的数据。因此,在此实施例中,整个数据流可在状态机引擎14中的每一者中处理。在具有多个逻辑群组的另一实施例中,IR总线与过程缓冲器接口136使得排中的每一状态机引擎14能够通过实施数据切片方案以适时方式接收数据流的经指派部分。举例来说,处理器12可依序提供打算用于每一逻辑群组的数据,但状态机引擎14可将数据以偏移方式存储于每一状态机引擎14的数据缓冲器系统159中,使得数据可提供到IR数据总线376以高效地将数据提供到既定状态机引擎14。
图16图解说明耦合到多个物理状态机引擎14的IR总线与过程缓冲器接口136的实例。具体来说,所图解说明实施例包含划分成两个逻辑群组(即,逻辑群组0及逻辑群组1)的四个状态机引擎14。此外,四个状态机引擎14可耦合到具有32个数据线的DDR3总线接口130。如上文所描述,IR数据总线376耦合到状态机引擎14中的每一者。此外,其它控制线378包含耦合到状态机引擎14中的每一者的一排同步化线(RSYNC)380、IR总线数据有效线(IRDV)382、第一IR总线数据选通线(IRDQS)384及第二IR总线数据选通线(IRDQS#)386。状态机引擎14中的每一者经配置以从RSYNC 380接收输入及/或控制RSYNC 380的信号。举例来说,在一个实施例中,“从”装置及/或“主”装置可经配置以通过将RSYNC 380拉动到逻辑0来控制RSYNC 380的信号从逻辑1到逻辑0,而“主”装置可经配置以基于从RSYNC 380接收的输入控制IRDV 382的信号。在所图解说明实施例中,状态机引擎14F0配置为“主”装置,而状态机引擎14F1、F2及F3配置为“从”装置。此外,状态机引擎14F1、F2及F3经配置以控制RSYNC380的信号,而状态机引擎14F0经配置以基于从RSYNC 380接收的输入控制IRDV 382的信号。状态机引擎14F0可经配置以接收指示状态机引擎14F1、F2及F3全部可用于接收数据的第一指示(例如,逻辑高)。此外,状态机引擎14F0可经配置以接收指示状态机引擎14F1、F2及F3中的至少一者不可用于接收数据的第二指示(例如,逻辑低)。举例来说,状态机引擎14F1、F2及F3中的任一者可控制RSYNC 380的信号到逻辑低(例如,输出逻辑低)以向状态机引擎14F0指示状态机引擎14F1、F2及F3中的至少一者不可用于接收数据。
另外,状态机引擎14中的每一者经配置以从IRDV 382接收输入及/或控制IRDV382的信号。举例来说,在一个实施例中,“主”装置可经配置以控制IRDV 382的信号,而“从”装置可经配置以从IRDV 382接收输入。在所图解说明实施例中,状态机引擎14F0经配置以控制IRDV 382的信号,而状态机引擎14F1、F2及F3经配置以从IRDV 382接收输入。状态机引擎14F0可经配置以控制信号到指示提供到状态机引擎14F1、F2及F3的数据为有效的第一指示(例如,逻辑高)。此外,状态机引擎14F0可经配置以控制信号到指示提供到状态机引擎14F1、F2及F3的数据为无效的第二指示(例如,逻辑低)。状态机引擎14中的每一者经配置以从IRDQS 384及IRDQS#386接收输入且将输出提供到IRDQS 384及IRDQS#386。此外,状态机引擎14中的每一者经配置以将数据输出到IRDQS 384及/或IRDQS#386同时将数据提供到IR数据总线376。
图17图解说明IR总线与过程缓冲器接口136的信号的时序图的实例。在某些配置中,RSYNC 380可用于同步化状态机引擎14。举例来说,状态机引擎14中的每一者可包含其中状态机引擎14将RSYNC 380的信号驱动到逻辑低(例如,将RSYNC 380“拉动”到逻辑低)的默认状态。处理器12可将起始状态机引擎14的同步化的各种指令提供到状态机引擎14。举例来说,起始同步化的指令可包含M_BAR、I_DA.PROCESS、I_DA.PROCESS_EoP、I_DA.PROCESS_EoD、I_DB.PROCESS、I_DB.PROCESS_EoP及I_DB.PROCESS_EoD。当状态机引擎14遇到这些指令中的一者时,状态机引擎14停止将RSYNC 380的信号驱动到逻辑低(例如,“释放”RSYNC 380)且暂停操作(例如,不继续执行指令)。状态机引擎14暂停操作直到RSYNC380转变到逻辑高(此在所有状态机引擎14停止将RSYNC 380的信号驱动到逻辑低,或“释放”RSYNC 380之后发生)及/或IRDV 382转变到逻辑高。当状态机引擎14检测RSYNC 380及/或IRDV 382为逻辑高时,状态机引擎14继续起始同步化的指令的操作。在起始同步化的指令完成时,状态机引擎可返回到其默认状态,其中状态机引擎14将RSYNC 380的信号驱动到逻辑低(例如,将RSYNC 380“拉动”到逻辑低)。
图17中图解说明在此操作期间交换的信号的一个实施例。举例来说,在时间388处,RSYNC 380从逻辑低转变到逻辑高。此转变指示所有状态机引擎14F0、F1、F2及F3已(例如,从处理器12)接收到起始状态机引擎14的同步化的指令、所有状态机引擎14F0、F1、F2及F3已暂停操作,且所有状态机引擎14F0、F1、F2及F3已停止将RSYNC 380的信号驱动到逻辑低。在此实例中,状态机引擎14F0、F1、F2及F3已遇到数据缓冲器处理指令(例如,I_DA.PROCESS、I_DA.PROCESS_EoP、I_DA.PROCESS_EoD、I_DB.PROCESS、I_DB.PROCESS_EoP及I_DB.PROCESS_EoD)。在时间390处,RSYNC 380从逻辑高转变到逻辑低。此转变指示状态机引擎14F0、F1、F2及F3中的至少一者已完成数据缓冲处理指令,且状态机引擎14F0、F1、F2及F3中的至少一者已将RSYNC 380拉动到逻辑低。
在时间392处,IRDV 382从逻辑低转变到逻辑高。此转变是有效数据将开始提供到IR数据总线376(以“主”装置开始且继续按次序(例如,F0、F1、F2、F3)穿过排中的每一状态机引擎14)的从“主”状态机引擎14F0到所有状态机引擎14F0、F1、F2及F3的指示。在时间394处,IRDV 382从逻辑高转变到逻辑低。此转变是有效数据不再提供到IR数据总线376的从“主”状态机引擎14F0到所有状态机引擎14F0、F1、F2及F3的指示。
在时间396处,“主”状态机引擎14F0将数据(例如,打算用于逻辑群组0的第一字节的数据)提供到IR数据总线376上且将逻辑高输出到IRDQS 384及/或IRDQS#386上。接着,在时间397处,“主”状态机引擎14F0将数据(例如,打算用于逻辑群组1的第二字节的数据)提供到IR数据总线376上且将逻辑高输出到IRDQS 384及/或IRDQS#386上。此外,在时间398处,状态机引擎14F1将数据(例如,打算用于逻辑群组0的第一字节的数据)提供到IR数据总线376上且将逻辑高输出到IRDQS 384及/或IRDQS#386上。接着,在时间399处,状态机引擎14F1将数据(例如,打算用于逻辑群组1的第二字节的数据)提供到IR数据总线376上且将逻辑高输出到IRDQS 384及/或IRDQS#386上。
此外,在时间400处,状态机引擎14F2将数据(例如,打算用于逻辑群组0的第一字节的数据)提供到IR数据总线376上且将逻辑高输出到IRDQS 384及/或IRDQS#386上。接着,在时间401处,状态机引擎14F2将数据(打算用于逻辑群组1的第二字节的数据)提供到IR数据总线376上且将逻辑高输出到IRDQS 384及/或IRDQS#386上。另外,在时间402处,状态机引擎14F3将数据(例如,打算用于逻辑群组0的第一字节的数据)提供到IR数据总线376上且将逻辑高输出到IRDQS 384及/或IRDQS#386上。接着,在时间403处,状态机引擎14F3将数据(打算用于逻辑群组1的第二字节的数据)提供到IR数据总线376上且将逻辑高输出到IRDQS384及/或IRDQS#386上。
因此,状态机引擎14中的每一者提供具有两个字节数据的“突发长度”的数据(例如,每一状态机引擎14在排中的下一状态机引擎14提供数据之前输出两个字节的数据)。在所图解说明实施例中,第一字节的数据打算用于第一逻辑群组(逻辑群组0)且第二字节的数据打算用于第二逻辑群组(逻辑群组1)。如可了解,在其它实施例中,“突发长度”可变化。举例来说,“突发长度”可基于逻辑群组的数目,等于逻辑群组的数目,等等。在将数据提供到IR数据总线376时,状态机引擎14接收数据并存储打算用于所述状态机引擎14的数据。举例来说,由于状态机引擎14F0及F1为逻辑群组0的部分,因此状态机引擎14F0及F1存储由状态机引擎14中的每一者提供的每一第一字节。此外,由于状态机引擎14F2及F3为逻辑群组1的部分,因此状态机引擎14F2及F3存储由状态机引擎14中的每一者提供的每一第二字节。在某些实施例中,状态机引擎14中的每一者经配置以基于IRDQS 384及/或IRDQS#386的下降边缘存储数据。
在所图解说明实施例中,状态机引擎14中的每一者仅提供一个数据突发。然而,如可了解,提供数据突发的每一状态机引擎14的旋转循环可在RSYNC 380于时间390处从逻辑高转变到逻辑低之前重复任何次数。在某些实施例中,提供数据突发的每一状态机引擎14的循环可基于从处理器12提供到状态机引擎14的指令而重复。举例来说,处理器12可将指示相应状态机引擎14将存储来自IR数据总线376的字节的数目(CNTC)的指令提供到状态机引擎14中的每一者。因此,提供数据突发的每一状态机引擎14的循环可重复等于CNTC数目的次数。在某些实施例中,CNTC数目可等于待提供到逻辑群组的最长数据群组的长度,借此实现用以接收其既定数据的每一逻辑群组的充分循环。此外,处理器12可将指示将分析的相应状态机引擎14的字节的数目(CNTV)的指令提供到状态机引擎14中的每一者。在某些实施例中,如果CNTC数目大于CNTV数目,那么状态机引擎14可在CNTV数目高达CNTC数目之后认为所接收字节为无效数据(例如,垃圾数据、无用数据等)。
在时间404处,RSYNC 380从逻辑低转变到逻辑高。此转变指示所有状态机引擎14F0、F1、F2及F3已接收到起始状态机引擎14的同步化的指令(例如,从处理器12)、所有状态机引擎14F0、F1、F2及F3已暂停操作且所有状态机引擎14F0、F1、F2及F3已停止将RSYNC380的信号驱动到逻辑低。在此实例中,状态机引擎14F0、F1、F2及F3已遇到M_BAR指令。M_BAR指令用于在额外指令由状态机引擎14执行之前同步化状态机引擎14。在时间405处,RSYNC 380从逻辑高转变到逻辑低。此转变指示状态机引擎14F0、F1、F2及F3中的至少一者已将RSYNC 380拉动到逻辑低,且状态机引擎14同步化且可借助执行额外指令而继续。
在时间406处,RSYNC 380从逻辑低转变到逻辑高。在此实例中,状态机引擎14F0、F1、F2及F3已遇到另一数据缓冲器处理指令(例如,I_DA.PROCESS、I_DA.PROCESS_EoP、I_DA.PROCESS_EoD、I_DB.PROCESS、I_DB.PROCESS_EoP及I_DB.PROCESS_EoD)。因此,在时间407处,IRDV 382从逻辑低转变到逻辑高。此转变是有效数据将开始提供到IR数据总线376(以“主”装置开始且继续按次序(例如,F0、F1、F2、F3)穿过排中的每一状态机引擎14)的从“主”状态机引擎14F0到所有状态机引擎14F0、F1、F2及F3的指示。在时间408处,“主”状态机引擎14F0将数据(例如,打算用于逻辑群组0的第一字节的数据)提供到IR数据总线376上且将逻辑高输出到IRDQS 384及/或IRDQS#386上。接着,在时间409处,“主”状态机引擎14F0将数据(例如,打算用于逻辑群组1的第二字节的数据)提供到IR数据总线376上且将逻辑高输出到IRDQS 384及/或IRDQS#386上。其它状态机引擎14可在此后将数据提供到IR数据总线376上,如上文关于时间388到394所描述。
在状态机引擎14的操作期间,可使用RSYNC 380及IRDV 382以同步化方式将数据提供到IR数据总线376,其中所有状态机引擎14一起同步化。此外,状态机引擎14中的每一者存储指示其在构成模块340的装置排中的位置的指令。如此,状态机引擎14中的每一者能够计时数据存储及数据输出以促进使用IR数据总线376的有序数据传送,使得在正确时间处提供及存储数据。如可了解,可在数据传送过程期间发生错误。因此,“主”状态机引擎14F0可在任何时间处使IRDV 382转变到逻辑低以停止(例如,阻挡、阻止、延迟等)IR数据总线376上的数据传送直到错误解决为止。此外,状态机引擎14F1、F2及F3中的任何者可将RSYNC 380引导到逻辑低,借此将应停止IR数据总线376上的数据传送的指示提供到“主”状态机引擎14F0。
图18图解说明存储于组织成多个逻辑群组的多个物理状态机引擎14的数据缓冲器132中的数据的实例。具体来说,图18图解说明具有组织成八个逻辑群组的八个状态机引擎14(F0、F1、F2、F3、F4、F5、F6及F7)的模块340的DDR3接口视图的表410。具有八个逻辑群组的此配置可提供用于具有八个状态机引擎14的模块340的最大数据吞吐量。在所图解说明实施例中,状态机引擎14耦合到具有64个数据线的DDR3总线接口130。因此,八个数据线耦合到每一状态机引擎14。然而,本文中所描述的相同概念可适用于具有耦合到每一状态机引擎14的任何适合数目个数据线的任何适合DDR3总线接口130。此外,本文中所描述的相同概念可适用于具有任何适合数目个状态机引擎14的模块340。表410图解说明模块340从处理器12接收且以偏移方式存储于状态机引擎14当中的数据。通过使用模块340来将数据以偏移方式存储于模块340上而非使用处理器12来重新布置数据,处理器12可自由以执行其它功能。
表410包含指示从处理器12到64个数据线的写入的数目的写入计数栏412及指示基于从处理器12接收字节的时间按数字次序的个别字节编号的字节编号栏414。字节编号栏414包含指示存储于相应状态机引擎14(F0、F1、F2、F3、F4、F5、F6及F7)的数据缓冲器系统159中的特定字节的栏F0、F1、F2、F3、F4、F5、F6及F7。表410还包含指示字节编号栏414中指示的字节存储于其中的数据缓冲器系统159的数据缓冲器A及B 132中的每一者内的地址的数据缓冲器地址栏416,及指示待由状态机引擎14的特定逻辑群组处理的数据的目标栏418。举例来说,在从处理器12到64个数据线的第一写入(例如,在写入计数栏412中的0)期间,处理器12将数据缓冲器系统159的第一地址的地址选择(例如,处理器写入地址0)及对应八个数据字节提供到DDR3地址总线342。此可导致第一数据字节(例如,0)存储于第一状态机引擎14(例如,F0)中在第一状态机引擎14(例如,F0)的第一数据缓冲器地址416(例如,0)处,第二数据字节(例如,1)存储于第二状态机引擎14(例如,F1)中在第二状态机引擎14(例如,F1)的相同第一数据缓冲器地址416(例如,0)处,第三数据字节(例如,2)存储于第三状态机引擎14(例如,F2)中在第三状态机引擎14(例如,F2)的相同第一数据缓冲器地址416(例如,0)处,第四数据字节(例如,3)存储于第四状态机引擎14(例如,F3)中在第四状态机引擎14(例如,F3)的相同第一数据缓冲器地址416(例如,0)处,第五数据字节(例如,4)存储于第五状态机引擎14(例如,F4)中在第五状态机引擎14(例如,F4)的相同第一数据缓冲器地址416(例如,0)处,第六数据字节(例如,5)存储于第六状态机引擎14(例如,F5)中在第六状态机引擎14(例如,F5)的相同第一数据缓冲器地址416(例如,0)处,第七数据字节(例如,6)存储于第七状态机引擎14(例如,F6)中在第七状态机引擎14(例如,F6)的相同第一数据缓冲器地址416(例如,0)处,及第八数据字节(例如,7)存储于第八状态机引擎14(例如,F7)中在第八状态机引擎14(例如,F7)的相同第一数据缓冲器地址416(例如,0)处。
作为另一实例,在从处理器12到64个数据线的第二写入(例如,在写入计数栏412中的1)期间,处理器12将数据缓冲器系统159的第二地址的地址选择(例如,处理器写入地址1)及对应八个数据字节提供到DDR3地址总线342。此可导致第一数据字节(例如,8)存储于第一状态机引擎14(例如,F0)中在第一状态机引擎14(例如,F0)的第二数据缓冲器地址416(例如,8)处,第二数据字节(例如,9)存储于第二状态机引擎14(例如,F1)中在第二状态机引擎14F1的相同第二数据缓冲器地址416(例如,8)处,第三数据字节(例如,10)存储于第三状态机引擎14(例如,F2)中在第三状态机引擎14(例如,F2)的相同第二数据缓冲器地址416(例如,8)处,第四数据字节(例如,11)存储于第四状态机引擎14(例如,F3)中在第四状态机引擎14(例如,F3)的相同第二数据缓冲器地址416(例如,8)处,第五数据字节(例如,12)存储于第五状态机引擎14(例如,F4)中在第五状态机引擎14(例如,F4)的相同第二数据缓冲器地址416(例如,8)处,第六数据字节(例如,13)存储于第六状态机引擎14(例如,F5)中在第六状态机引擎14(例如,F5)的相同第二数据缓冲器地址416(例如,8)处,第七数据字节(例如,14)存储于第七状态机引擎14(例如,F6)中在第七状态机引擎14(例如,F6)的相同第二数据缓冲器地址416(例如,8)处,及第八数据字节(例如,15)存储于第八状态机引擎14(例如,F7)中在第八状态机引擎14(例如,F7)的相同第二数据缓冲器地址416(例如,8)处。如两个实例中所图解说明,数据缓冲器地址416在从处理器12的第一写入与从处理器12的第二写入之间改变八(例如,等于模块340的排中的逻辑群组的数目的数目)。尽管处理器12继续写入线性地址块,但在连续处理器12写入到数据缓冲器系统159时,数据缓冲器地址416继续自动递增八,直到打算用于第一逻辑群组(逻辑群组0)的所有数据提供到模块340为止。将数据以类似方式提供到其它逻辑群组,如所图解说明。
举例来说,在从处理器12到64个数据线的第513次写入(例如,写入计数栏412中的512)期间,处理器12将数据缓冲器系统159的第三地址的地址选择(例如,处理器写入地址512)及对应八个数据字节提供到DDR3地址总线342。此可导致第一数据字节(例如,4096)存储于第一状态机引擎14(例如,F0)中在第一状态机引擎14(例如,F0)的第三数据缓冲器地址416(例如,1)处,第二数据字节(例如,4097)存储于第二状态机引擎14(例如,F1)中在第二状态机引擎14(例如,F1)的相同第三数据缓冲器地址416(例如,1)处,第三数据字节(例如,4098)存储于第三状态机引擎14(例如,F2)中在第三状态机引擎14(例如,F2)的相同第三数据缓冲器地址416(例如,1)处,第四数据字节(例如,4099)存储于第四状态机引擎14(例如,F3)中在第四状态机引擎14(例如,F3)的相同第三数据缓冲器地址416(例如,1)处,第五数据字节(例如,4100)存储于第五状态机引擎14(例如,F4)中在第五状态机引擎14(例如,F4)的相同第三数据缓冲器地址416(例如,1)处,第六数据字节(例如,4101)存储于第六状态机引擎14(例如,F5)中在第六状态机引擎14(例如,F5)的相同第三数据缓冲器地址416(例如,1)处,第七数据字节(例如,4102)存储于第七状态机引擎14(例如,F6)中在第七状态机引擎14(例如,F6)的相同第三数据缓冲器地址416(例如,1)处,及第八数据字节(例如,4103)存储于第八状态机引擎14(例如,F7)中在第八状态机引擎14(例如,F7)的相同第三数据缓冲器地址416(例如,1)处。
应注意,表410指示从写入计数栏412的所有写入0到511包含打算用于包含第一状态机引擎14(例如,F0)的逻辑群组0的数据。此外,表410指示从写入计数栏412的所有写入512到1023包含打算用于包含第二状态机引擎14(例如,F1)的逻辑群组1的数据,等等。
图19图解说明存储于组织成多个逻辑群组的多个物理状态机引擎14的过程缓冲器134中的数据的实例。具体来说,图19图解说明具有组织成八个逻辑群组的八个状态机引擎14(F0、F1、F2、F3、F4、F5、F6及F7)的模块340的IR数据总线376视图的表421。表421包含指示从处理器12接收的个别字节编号的字节编号栏414。字节编号栏414包含指示存储于相应状态机引擎14(F0、F1、F2、F3、F4、F5、F6及F7)的数据缓冲器系统159中的特定字节的栏F0、F1、F2、F3、F4、F5、F6及F7。表421还包含指示字节编号栏414中指示的字节存储于其中的数据缓冲器系统159的数据缓冲器A及B132中的一者内的地址的数据缓冲器地址栏416。此外,表421包含指示存储于过程缓冲器134中的个别字节编号的字节编号栏426。字节编号栏426包含指示存储于相应状态机引擎14(F0、F1、F2、F3、F4、F5、F6及F7)的过程缓冲器134中的特定字节的栏F0、F1、F2、F3、F4、F5、F6及F7。举例来说,过程缓冲器A行428指示存储于状态机引擎14的第一过程缓冲器中的特定字节,且过程缓冲器B行430指示存储于状态机引擎14的第二过程缓冲器中的特定字节。
因此,表421图解说明数据以偏移方式存储于数据缓冲器系统159中且以直接方式提供到过程缓冲器134。举例来说,在到IR数据总线376上的第一数据突发期间,状态机引擎14F0可提供从处理器12接收的字节0、4096、8192、12288、16384、20480、24576及28672(例如,用于逻辑群组中的每一者的第一字节)。在到IR数据总线376上的第二突发期间,状态机引擎14F1可提供从处理器12接收的字节1、4097、8193、12289、16385、20481、24577及28673(例如,用于逻辑群组中的每一者的第二字节)。状态机引擎14中的每一者经配置以存储对应于所述状态机引擎的逻辑群组的来自数据突发的字节。举例来说,状态机引擎14F0经配置以存储提供到IR数据总线376的每一数据突发的第一字节,状态机引擎14F1经配置以存储提供到IR数据总线376的每一数据突发的第二字节,等等。因此,将在由数据缓冲器系统159存储时以偏移方式存储的数据经由IR数据总线376提供到状态机引擎14,使得每一状态机引擎14可以正确次序接收其既定数据以用于分析。
图20图解说明存储于组织成一个逻辑群组的多个物理状态机引擎14的数据缓冲器132中的数据的实例。具体来说,图20图解说明具有组织成一个逻辑群组的八个状态机引擎14(F0、F1、F2、F3、F4、F5、F6及F7)的模块340的DDR3接口视图的表432。如所图解说明,数据由处理器12提供且存储于状态机引擎14(F0、F1、F2、F3、F4、F5、F6及F7)中。所有状态机引擎14为单个逻辑群组(例如,逻辑群组0)的部分。在所图解说明实施例中,由模块340接收的数据连续存储于数据缓冲器系统159中。
图21图解说明存储于组织成一个逻辑群组的多个物理状态机引擎14的过程缓冲器134中的数据的实例。具体来说,图21图解说明具有组织成一个逻辑群组的八个状态机引擎14(F0、F1、F2、F3、F4、F5、F6及F7)的模块340的IR数据总线376视图的表434。在到IR数据总线376上的第一数据突发期间,状态机引擎14F0可提供从处理器12接收的字节0(例如,用于逻辑群组的第一字节),状态机引擎14F1可提供从处理器12接收的字节1(例如,用于逻辑群组的第二字节)等等,使得在数据突发期间提供八个字节。状态机引擎14中的每一者经配置以存储来自数据突发的对应于所述状态机引擎的逻辑群组的字节。举例来说,所有状态机引擎14F0、F1、F2、F3、F4、F5、F6及F7经配置以存储提供到IR数据总线376的每一数据突发的所有字节。因此,由数据缓冲器系统159存储的所有数据经由IR数据总线376提供到状态机引擎14,使得每一状态机引擎14可接收所有数据以用于并行分析。如可了解,虽然图18到21图解说明具有4千字节的缓冲器,但其它实施例可包含具有任何适合大小(例如,8千字节、16千字节、32千字节、64千字节等)的缓冲器。
如本文中所使用,术语设备可为单个模块,或包含一或多个模块的系统。虽然可易于对本发明做出各种修改及替代形式,但特定实施例已通过实例方式展示于图式中并已详细描述于本文中。然而,应理解,并不打算将本发明限制于所揭示的特定形式。而是,本发明将涵盖归属于由所附权利要求书界定的本发明精神及范围内的所有修改、等效内容及替代方案。

Claims (48)

1.一种设备,其包括:
数据总线,其包括第一多个数据线及第二多个数据线,其中所述第一多个数据线经配置以与所述第二多个数据线并行地提供数据;
第一状态机引擎,其耦合到所述第一多个数据线;以及
第二状态机引擎,其耦合到所述第二多个数据线,其中所述第一状态机引擎经配置以与所述第二状态机引擎从所述第二多个数据线接收数据流的第二部分并行地从所述第一多个数据线接收所述数据流的第一部分,且其中所述数据流的所述第一部分与所述数据流的所述第二部分不同;
其中所述第二状态机引擎经配置以将所述数据流的所述第二部分提供到所述第一状态机引擎,且所述第一状态机引擎经配置以分析所述数据流的所述第一部分及所述数据流的所述第二部分。
2.根据权利要求1所述的设备,其中所述第一状态机引擎及所述第二状态机引擎中的每一者包括具有多个可配置元件的相应状态机点阵,且所述多个可配置元件中的每一可配置元件包括经配置以分析所述数据流的至少一部分且输出所述分析的结果的多个单元。
3.根据权利要求1所述的设备,其包括耦合到所述第一状态机引擎及所述第二状态机引擎的地址总线。
4.根据权利要求3所述的设备,其中所述第一状态机引擎及所述第二状态机引擎经配置以并行地从所述地址总线接收信号。
5.根据权利要求1所述的设备,其包括耦合到所述第一状态机引擎的第一控制线及耦合到所述第二状态机引擎的第二控制线,其中所述第一状态机引擎经配置以与所述第二状态机引擎从所述第二控制线接收第二组信号并行地从所述第一控制线接收第一组信号。
6.根据权利要求1所述的设备,其中所述数据总线包括第三多个数据线、第四多个数据线、第五多个数据线、第六多个数据线、第七多个数据线及第八多个数据线,其中所述第一多个数据线经配置以与所述第二多个数据线、所述第三多个数据线、所述第四多个数据线、所述第五多个数据线、所述第六多个数据线、所述第七多个数据线及所述第八多个数据线并行地提供数据。
7.根据权利要求6所述的设备,其包括:
第三状态机引擎,其耦合到所述第三多个数据线;
第四状态机引擎,其耦合到所述第四多个数据线;
第五状态机引擎,其耦合到所述第五多个数据线;
第六状态机引擎,其耦合到所述第六多个数据线;
第七状态机引擎,其耦合到所述第七多个数据线;以及
第八状态机引擎,其耦合到所述第八多个数据线。
8.根据权利要求7所述的设备,其中所述第一状态机引擎经配置以与以下各项并行地从所述第一多个数据线接收所述数据流的所述第一部分:所述第二状态机引擎从所述第二多个数据线接收所述数据流的所述第二部分、所述第三状态机引擎从所述第三多个数据线接收所述数据流的第三部分、所述第四状态机引擎从所述第四多个数据线接收所述数据流的第四部分、所述第五状态机引擎从所述第五多个数据线接收所述数据流的第五部分、所述第六状态机引擎从所述第六多个数据线接收所述数据流的第六部分、所述第七状态机引擎从所述第七多个数据线接收所述数据流的第七部分及所述第八状态机引擎从所述第八多个数据线接收所述数据流的第八部分。
9.根据权利要求8所述的设备,其中所述第三状态机引擎经配置以将所述数据流的所述第三部分提供到所述第一状态机引擎,所述第四状态机引擎经配置以将所述数据流的所述第四部分提供到所述第一状态机引擎,所述第五状态机引擎经配置以将所述数据流的所述第五部分提供到所述第一状态机引擎,所述第六状态机引擎经配置以将所述数据流的所述第六部分提供到所述第一状态机引擎,所述第七状态机引擎经配置以将所述数据流的所述第七部分提供到所述第一状态机引擎,所述第八状态机引擎经配置以将所述数据流的所述第八部分提供到所述第一状态机引擎,且所述第一状态机引擎经配置以分析所述数据流的所述第三部分、所述数据流的所述第四部分、所述数据流的所述第五部分、所述数据流的所述第六部分、所述数据流的所述第七部分及所述数据流的所述第八部分。
10.根据权利要求1所述的设备,其中所述第一状态机引擎包括经配置以存储所述数据流的所述第一部分的第一缓冲器,且所述第二状态机引擎包括经配置以存储所述数据流的所述第二部分的第二缓冲器。
11.根据权利要求10所述的设备,其中所述第一状态机引擎包括经配置以存储所述数据流的所述第一部分及所述数据流的所述第二部分的第三缓冲器。
12.根据权利要求1所述的设备,其包括经配置以从所述第二状态机引擎接收所述数据流的所述第二部分且将所述数据流的所述第二部分提供到所述第一状态机引擎的缓冲器接口。
13.根据权利要求12所述的设备,其中所述缓冲器接口经配置以将指令提供到所述第一状态机引擎及所述第二状态机引擎中的至少一者。
14.根据权利要求12所述的设备,其中所述第一状态机引擎包括经配置以锁存提供到所述缓冲器接口的第一数据集的第一缓冲器,且所述第二状态机引擎包括经配置以锁存提供到所述缓冲器接口的第二数据集的第二缓冲器。
15.根据权利要求14所述的设备,其中所述第一缓冲器经配置而以第一预定间隔锁存所述第一数据集,且所述第二缓冲器经配置而以第二预定间隔锁存所述第二数据集。
16.根据权利要求1所述的设备,其中所述第一状态机引擎和所述第二状态机引擎形成模块。
17.根据权利要求1所述的设备,其包括数据分析系统。
18.根据权利要求1所述的设备,其中所述第一状态机引擎及所述第二状态机引擎中的每一者包括单独芯片。
19.一种用于分析数据的方法,其包括:
在第一状态机引擎处从数据总线的第一多个数据线接收数据流的第一部分;
在第二状态机引擎处从所述数据总线的第二多个数据线接收所述数据流的第二部分,其中与所述第一状态机引擎接收所述数据流的所述第一部分并行地在所述第二状态机引擎处接收所述数据流的所述第二部分,且其中所述数据流的所述第一部分与所述数据流的所述第二部分不同;以及
将所述数据流的所述第二部分从所述第二状态机引擎提供到所述第一状态机引擎。
20.根据权利要求19所述的方法,其包括:使用所述第一状态机引擎分析所述数据流的所述第一部分及所述数据流的所述第二部分。
21.根据权利要求19所述的方法,其包括:在所述第一状态机引擎及所述第二状态机引擎处接收地址信号以并行地选择所述第一状态机引擎的第一存储器地址及所述第二状态机引擎的第二存储器地址。
22.根据权利要求21所述的方法,其中所述第一存储器地址等于所述第二存储器地址。
23.一种设备,其包括:
第一状态机引擎,其经配置以接收数据流的第一部分;
第二状态机引擎,其经配置以接收所述数据流的第二部分,且其中所述数据流的所述第一部分与所述数据流的所述第二部分不同;以及
缓冲器接口,其经配置以允许实现所述第一状态机引擎与所述第二状态机引擎之间的数据传送,所述缓冲器接口包括耦合到所述第一状态机引擎及所述第二状态机引擎且经配置以在所述第一状态机引擎与所述第二状态机引擎之间提供数据的接口数据总线。
24.根据权利要求23所述的设备,其中所述接口数据总线为双向总线。
25.根据权利要求23所述的设备,其中所述接口数据总线包括8位排间数据总线。
26.根据权利要求23所述的设备,其中所述缓冲器接口进一步包括耦合到所述第一状态机引擎及所述第二状态机引擎且经配置以协调所述第一状态机引擎与所述第二状态机引擎之间的数据传送的指令总线。
27.根据权利要求26所述的设备,其中所述第一状态机引擎是经配置以将指令提供到所述指令总线以协调所述第一状态机引擎与所述第二状态机引擎之间的数据传送的主装置。
28.根据权利要求26所述的设备,其中所述第二状态机引擎是经配置以接收由主装置提供到所述指令总线的指令的从装置,其中所述指令经配置以控制所述第二状态机引擎将所述数据流的所述第二部分提供到所述接口数据总线的时间。
29.根据权利要求23所述的设备,其中所述第一状态机引擎及所述第二状态机引擎中的至少一者包括经配置以使得能够将数据提供于所述接口数据总线上、停止将数据提供到所述接口数据总线或其某一组合的输出。
30.根据权利要求23所述的设备,其中所述第一状态机引擎及所述第二状态机引擎中的每一者包括经配置以同步化提供到所述接口数据总线的数据的输出。
31.根据权利要求23所述的设备,其中所述第一状态机引擎及所述第二状态机引擎为逻辑群组的部分,且所述第一状态机引擎经配置以与所述第二状态机引擎分析所述数据流的相同部分。
32.根据权利要求23所述的设备,其中所述第一状态机引擎为第一逻辑群组的部分,所述第二状态机引擎为第二逻辑群组的部分,且所述第一逻辑群组及所述第二逻辑群组经配置以分析所述数据流的不同部分。
33.根据权利要求23所述的设备,其中所述第一状态机引擎为第一逻辑群组的部分,所述第二状态机引擎为第二逻辑群组的部分,且所述第一逻辑群组及所述第二逻辑群组中的至少一者包括多个状态机引擎。
34.根据权利要求33所述的设备,其中所述第一逻辑群组比所述第二逻辑群组包括更多个状态机引擎。
35.根据权利要求23所述的设备,其中所述第一状态机引擎包括第一总线位置,所述第一状态机引擎包括经配置以存储对应于所述第一总线位置的数据的第一存储装置,所述第二状态机引擎包括第二总线位置,且所述第二状态机引擎包括经配置以存储对应于所述第二总线位置的数据的第二存储装置。
36.根据权利要求23所述的设备,其中所述第一状态机引擎经配置以存储对应于所述接口数据总线的总线宽度的数据。
37.根据权利要求23所述的设备,其中所述第一状态机引擎经配置以在同步化信号被所述第一状态机引擎及所述第二状态机引擎接收之后存储提供到所述接口数据总线的第一数据集,且所述第二状态机引擎经配置以在所述同步化信号被所述第一状态机引擎及所述第二状态机引擎接收之后存储提供到所述接口数据总线的第二数据集。
38.根据权利要求37所述的设备,其中所述第一数据集及所述第二数据集中的每一者包括一个字节。
39.根据权利要求23所述的设备,其中所述第一状态机引擎及所述第二状态机引擎中的每一者为状态机引擎排的部分。
40.根据权利要求39所述的设备,其中所述状态机引擎排中的每一状态机引擎经配置以将相应字节依序提供到所述缓冲器接口。
41.根据权利要求40所述的设备,其中所述状态机引擎排中的每一状态机引擎经配置以接收提供到所述缓冲器接口的所有所述相应字节。
42.根据权利要求40所述的设备,其中所述状态机引擎排中的每一状态机引擎经配置以接收提供到所述缓冲器接口的所述相应字节的部分。
43.一种用于操作缓冲器接口的方法,其包括:
在主芯片处接收数据流的第一部分;
在从芯片处接收所述数据流的第二部分,且其中所述数据流的所述第一部分与所述数据流的所述第二部分不同;
使用所述缓冲器接口将第一信号从所述主芯片提供到所述从芯片,以起始所述主芯片与所述从芯片之间的数据传送;
在从所述主芯片提供所述第一信号之后的第一时间处将所述数据流的所述第一部分提供到所述缓冲器接口;以及
在所述第一时间之后的第二时间处将所述数据流的所述第二部分提供到所述缓冲器接口。
44.根据权利要求43所述的方法,其包括:使用所述缓冲器接口将第二信号从所述主芯片提供到所述从芯片以停止所述主芯片与所述从芯片之间的数据传送。
45.根据权利要求43所述的方法,其包括:使用所述缓冲器接口将第二信号从所述从芯片提供到所述主芯片以停止所述主芯片与所述从芯片之间的数据传送。
46.根据权利要求43所述的方法,其包括:将指令提供到所述主芯片及所述从芯片中的至少一者以分析数据达一段时间。
47.根据权利要求43所述的方法,其包括:将指令提供到所述主芯片及所述从芯片以指示所述主芯片及所述从芯片在执行指令之前同步化。
48.根据权利要求47所述的方法,其中所述指令包括数据缓冲器处理指令。
CN201480015637.6A 2013-03-15 2014-03-11 用于提供由状态机引擎接收的数据的方法及设备 Active CN105051711B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911004643.2A CN110825464A (zh) 2013-03-15 2014-03-11 用于提供由状态机引擎接收的数据的方法及设备

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361788364P 2013-03-15 2013-03-15
US61/788,364 2013-03-15
US14/065,168 2013-10-28
US14/065,168 US9448965B2 (en) 2013-03-15 2013-10-28 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
PCT/US2014/023589 WO2014150554A1 (en) 2013-03-15 2014-03-11 Methods and apparatuses for providing data received by a state machine engine

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201911004643.2A Division CN110825464A (zh) 2013-03-15 2014-03-11 用于提供由状态机引擎接收的数据的方法及设备

Publications (2)

Publication Number Publication Date
CN105051711A CN105051711A (zh) 2015-11-11
CN105051711B true CN105051711B (zh) 2019-11-15

Family

ID=51532880

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201911004643.2A Pending CN110825464A (zh) 2013-03-15 2014-03-11 用于提供由状态机引擎接收的数据的方法及设备
CN201480015637.6A Active CN105051711B (zh) 2013-03-15 2014-03-11 用于提供由状态机引擎接收的数据的方法及设备

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201911004643.2A Pending CN110825464A (zh) 2013-03-15 2014-03-11 用于提供由状态机引擎接收的数据的方法及设备

Country Status (7)

Country Link
US (5) US9448965B2 (zh)
EP (1) EP2972920B1 (zh)
JP (1) JP6177418B2 (zh)
KR (1) KR102168930B1 (zh)
CN (2) CN110825464A (zh)
TW (1) TWI625631B (zh)
WO (1) WO2014150554A1 (zh)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100138575A1 (en) 2008-12-01 2010-06-03 Micron Technology, Inc. Devices, systems, and methods to synchronize simultaneous dma parallel processing of a single data stream by multiple devices
US20100174887A1 (en) 2009-01-07 2010-07-08 Micron Technology Inc. Buses for Pattern-Recognition Processors
US9323994B2 (en) 2009-12-15 2016-04-26 Micron Technology, Inc. Multi-level hierarchical routing matrices for pattern-recognition processors
US8489534B2 (en) * 2009-12-15 2013-07-16 Paul D. Dlugosch Adaptive content inspection
US9524248B2 (en) 2012-07-18 2016-12-20 Micron Technology, Inc. Memory management for a hierarchical memory system
US9063532B2 (en) * 2012-08-31 2015-06-23 Micron Technology, Inc. Instruction insertion in state machine engines
US9448965B2 (en) 2013-03-15 2016-09-20 Micron Technology, Inc. Receiving data streams in parallel and providing a first portion of data to a first state machine engine and a second portion to a second state machine
US9703574B2 (en) 2013-03-15 2017-07-11 Micron Technology, Inc. Overflow detection and correction in state machine engines
US10057250B2 (en) 2013-05-14 2018-08-21 Kara Partners Llc Technologies for enhancing computer security
US10594687B2 (en) 2013-05-14 2020-03-17 Kara Partners Llc Technologies for enhancing computer security
US11366675B2 (en) 2014-12-30 2022-06-21 Micron Technology, Inc. Systems and devices for accessing a state machine
WO2016109571A1 (en) 2014-12-30 2016-07-07 Micron Technology, Inc Devices for time division multiplexing of state machine engine signals
US10430210B2 (en) 2014-12-30 2019-10-01 Micron Technology, Inc. Systems and devices for accessing a state machine
US9977652B2 (en) * 2015-04-14 2018-05-22 University Of Virginia Patent Foundation System, method, and computer-readable medium for high throughput pseudo-random number generation
US11580472B2 (en) * 2015-05-14 2023-02-14 Palantir Technologies Inc. Systems and methods for state machine management
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
CN105573949A (zh) * 2015-12-09 2016-05-11 熊猫电子集团有限公司 Vpx架构具有jesd204b接口的采集处理电路
KR102416176B1 (ko) 2016-05-10 2022-07-01 엘에스일렉트릭(주) 슬레이브 디바이스 제어 방법
US10019311B2 (en) 2016-09-29 2018-07-10 Micron Technology, Inc. Validation of a symbol response memory
US10268602B2 (en) 2016-09-29 2019-04-23 Micron Technology, Inc. System and method for individual addressing
US10592450B2 (en) 2016-10-20 2020-03-17 Micron Technology, Inc. Custom compute cores in integrated circuit devices
US10929764B2 (en) 2016-10-20 2021-02-23 Micron Technology, Inc. Boolean satisfiability
US10564877B1 (en) * 2017-05-24 2020-02-18 Syncsort Incorporated Methods and apparatus to store and enable a transfer protocol for new file formats for distributed processing and preserve data integrity through distributed storage blocks
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
US10890898B2 (en) * 2017-11-03 2021-01-12 Drishti Technologies, Inc. Traceability systems and methods
CN109683897B (zh) * 2018-12-29 2022-05-10 广州华多网络科技有限公司 程序处理方法、装置及设备
US11296720B2 (en) * 2020-08-24 2022-04-05 Innogrit Technologies Co., Ltd. Data compression using reduced numbers of occurrences
CN113379047B (zh) * 2021-05-25 2024-04-05 北京微芯智通科技合伙企业(有限合伙) 一种实现卷积神经网络处理的系统及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1656471A (zh) * 2002-05-21 2005-08-17 华盛顿大学 使用可重编程硬件高速处理流数据以发现可重编程的模式并对其作出响应的方法、系统和装置
CN101208676A (zh) * 2005-04-29 2008-06-25 皇家飞利浦电子股份有限公司 使用状态机增强i2c从/主接口
CN101208681A (zh) * 2005-04-29 2008-06-25 皇家飞利浦电子股份有限公司 由单个i2c数据流对并行i2c从设备进行编程

Family Cites Families (177)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL38603A (en) 1972-01-21 1975-10-15 Bar Lev H Automatic pattern recognition method and apparatus particularly for optically recognizing alphanumeric characters
JPS4891935A (zh) 1972-03-08 1973-11-29
US4011547A (en) 1972-07-17 1977-03-08 International Business Machines Corporation Data processor for pattern recognition and the like
GB1518093A (en) 1974-10-04 1978-07-19 Mullard Ltd Mark detection apparatus
JPS51112236A (en) 1975-03-28 1976-10-04 Hitachi Ltd Shape position recognizer unit
JPS5313840A (en) 1976-07-23 1978-02-07 Hitachi Ltd Analogy calculator
US4204193A (en) 1978-11-03 1980-05-20 International Business Machines Corporation Adaptive alignment for pattern recognition system
US4414685A (en) 1979-09-10 1983-11-08 Sternberg Stanley R Method and apparatus for pattern recognition and detection
US4748674A (en) 1986-10-07 1988-05-31 The Regents Of The University Of Calif. Pattern learning and recognition device
US5014327A (en) 1987-06-15 1991-05-07 Digital Equipment Corporation Parallel associative memory having improved selection and decision mechanisms for recognizing and sorting relevant patterns
US5216748A (en) 1988-11-30 1993-06-01 Bull, S.A. Integrated dynamic programming circuit
US5617574A (en) 1989-05-04 1997-04-01 Texas Instruments Incorporated Devices, systems and methods for conditional instructions
JP2833062B2 (ja) 1989-10-30 1998-12-09 株式会社日立製作所 キャッシュメモリ制御方法とこのキャッシュメモリ制御方法を用いたプロセッサおよび情報処理装置
US5028821A (en) 1990-03-01 1991-07-02 Plus Logic, Inc. Programmable logic device with programmable inverters at input/output pads
US5377129A (en) 1990-07-12 1994-12-27 Massachusetts Institute Of Technology Particle interaction processing system
EP0476159B1 (en) 1990-09-15 1996-12-11 International Business Machines Corporation Programmable neural logic device
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
US6400996B1 (en) 1999-02-01 2002-06-04 Steven M. Hoffberg Adaptive pattern recognition based control system and method
US5331227A (en) 1992-05-15 1994-07-19 Micron Semiconductor, Inc. Programmable logic device macrocell with an exclusive feedback line and an exclusive external input line
US5300830A (en) 1992-05-15 1994-04-05 Micron Semiconductor, Inc. Programmable logic device macrocell with an exclusive feedback and exclusive external input lines for registered and combinatorial modes using a dedicated product term for control
US5291482A (en) 1992-07-24 1994-03-01 At&T Bell Laboratories High bandwidth packet switch
US5357512A (en) 1992-12-30 1994-10-18 Intel Corporation Conditional carry scheduler for round robin scheduling
US5459798A (en) 1993-03-19 1995-10-17 Intel Corporation System and method of pattern recognition employing a multiprocessing pipelined apparatus with private pattern memory
US5825921A (en) 1993-03-19 1998-10-20 Intel Corporation Memory transfer apparatus and method useful within a pattern recognition system
US5586266A (en) * 1993-10-15 1996-12-17 International Business Machines Corporation System and method for adaptive, active monitoring of a serial data stream having a characteristic pattern
CA2145361C (en) 1994-03-24 1999-09-07 Martin William Sotheran Buffer manager
US20050251638A1 (en) 1994-08-19 2005-11-10 Frederic Boutaud Devices, systems and methods for conditional instructions
JP3345515B2 (ja) 1994-08-31 2002-11-18 アイワ株式会社 ピークシフト補正回路およびそれを使用した磁気記録媒体再生装置
US5615237A (en) 1994-09-16 1997-03-25 Transwitch Corp. Telecommunications framer utilizing state machine
JPH0887462A (ja) 1994-09-20 1996-04-02 Fujitsu Ltd ステートマシン及び通信制御方式
US5790531A (en) 1994-12-23 1998-08-04 Applied Digital Access, Inc. Method and apparatus for determining the origin of a remote alarm indication signal
US6279128B1 (en) 1994-12-29 2001-08-21 International Business Machines Corporation Autonomous system for recognition of patterns formed by stored data during computer memory scrubbing
US5794062A (en) 1995-04-17 1998-08-11 Ricoh Company Ltd. System and method for dynamically reconfigurable computing using a processing unit having changeable internal hardware organization
US5659551A (en) 1995-05-31 1997-08-19 International Business Machines Corporation Programmable computer system element with built-in self test method and apparatus for repair during power-on
US5723984A (en) 1996-06-07 1998-03-03 Advanced Micro Devices, Inc. Field programmable gate array (FPGA) with interconnect encoding
US5680640A (en) 1995-09-01 1997-10-21 Emc Corporation System for migrating data by selecting a first or second transfer means based on the status of a data element map initialized to a predetermined state
US5754878A (en) 1996-03-18 1998-05-19 Advanced Micro Devices, Inc. CPU with DSP function preprocessor having pattern recognition detector that uses table for translating instruction sequences intended to perform DSP function into DSP macros
JPH10111862A (ja) 1996-08-13 1998-04-28 Fujitsu Ltd 再帰型ニューラルネットワークに基づく時系列解析装置および方法
JPH1069459A (ja) 1996-08-29 1998-03-10 Hitachi Ltd シリアルインタフェース制御装置およびその制御方法
US6034963A (en) 1996-10-31 2000-03-07 Iready Corporation Multiple network protocol encoder/decoder and data processor
JP2940496B2 (ja) 1996-11-05 1999-08-25 日本電気株式会社 パタンマッチング符号化装置及び方法
US6317427B1 (en) 1997-04-24 2001-11-13 Cabletron Systems, Inc. Method and apparatus for adaptive port buffering
US6011407A (en) 1997-06-13 2000-01-04 Xilinx, Inc. Field programmable gate array with dedicated computer bus interface and method for configuring both
US6362868B1 (en) 1997-07-15 2002-03-26 Silverbrook Research Pty Ltd. Print media roll and ink replaceable cartridge
US6097212A (en) 1997-10-09 2000-08-01 Lattice Semiconductor Corporation Variable grain architecture for FPGA integrated circuits
US6041405A (en) 1997-12-18 2000-03-21 Advanced Micro Devices, Inc. Instruction length prediction using an instruction length pattern detector
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
US6219776B1 (en) 1998-03-10 2001-04-17 Billions Of Operations Per Second Merged array controller and processing element
EP0943995A3 (en) 1998-03-20 2000-12-06 Texas Instruments Incorporated Processor having real-time external instruction insertion for debug functions without a debug monitor
US6151644A (en) 1998-04-17 2000-11-21 I-Cube, Inc. Dynamically configurable buffer for a computer network
US6052766A (en) 1998-07-07 2000-04-18 Lucent Technologies Inc. Pointer register indirectly addressing a second register in the processor core of a digital processor
US9195784B2 (en) 1998-08-31 2015-11-24 Cadence Design Systems, Inc. Common shared memory in a verification system
US7430171B2 (en) 1998-11-19 2008-09-30 Broadcom Corporation Fibre channel arbitrated loop bufferless switch circuitry to increase bandwidth without significant increase in cost
US7899052B1 (en) 1999-01-27 2011-03-01 Broadcom Corporation Memory structure for resolving addresses in a packet-based network switch
US6412057B1 (en) 1999-02-08 2002-06-25 Kabushiki Kaisha Toshiba Microprocessor with virtual-to-physical address translation using flags
US6636483B1 (en) 1999-02-25 2003-10-21 Fairchild Semiconductor Corporation Network switch with zero latency flow control
US6317849B1 (en) 1999-04-28 2001-11-13 Intel Corporation Method and apparatus for controlling available capabilities of a device
JP2000347708A (ja) 1999-06-02 2000-12-15 Nippon Telegr & Teleph Corp <Ntt> ニューラルネットよる動的システムの制御方法及び装置及びニューラルネットよる動的システムの制御プログラムを格納した記憶媒体
US6880087B1 (en) 1999-10-08 2005-04-12 Cisco Technology, Inc. Binary state machine system and method for REGEX processing of a data stream in an intrusion detection system
AU2574501A (en) 1999-11-24 2001-06-04 Z-Force Corporation Configurable state machine driver and methods of use
US6640262B1 (en) 1999-12-20 2003-10-28 3Com Corporation Method and apparatus for automatically configuring a configurable integrated circuit
US6625740B1 (en) 2000-01-13 2003-09-23 Cirrus Logic, Inc. Dynamically activating and deactivating selected circuit blocks of a data processing integrated circuit during execution of instructions according to power code bits appended to selected instructions
US6614703B2 (en) 2000-01-13 2003-09-02 Texas Instruments Incorporated Method and system for configuring integrated systems on a chip
US7080359B2 (en) 2002-01-16 2006-07-18 International Business Machines Corporation Stack unique signatures for program procedures and methods
US6240003B1 (en) 2000-05-01 2001-05-29 Micron Technology, Inc. DRAM content addressable memory using part of the content as an address
US6977897B1 (en) 2000-05-08 2005-12-20 Crossroads Systems, Inc. System and method for jitter compensation in data transfers
US6476636B1 (en) 2000-09-02 2002-11-05 Actel Corporation Tileable field-programmable gate array architecture
US6625704B2 (en) 2001-08-08 2003-09-23 Sangate Systems, Inc. Data backup method and system using snapshot and virtual tape
WO2003039001A1 (en) 2001-10-29 2003-05-08 Leopard Logic, Inc. Programmable interface for field programmable gate array cores
US7333580B2 (en) 2002-01-28 2008-02-19 Broadcom Corporation Pipelined parallel processing of feedback loops in a digital circuit
US6925510B2 (en) 2002-02-22 2005-08-02 Winbond Electronics, Corp. Peripheral or memory device having a combined ISA bus and LPC bus
GB0224023D0 (en) * 2002-10-16 2002-11-27 Roysmith Graeme Reconfigurable integrated circuit
US7146643B2 (en) 2002-10-29 2006-12-05 Lockheed Martin Corporation Intrusion detection accelerator
US7349416B2 (en) 2002-11-26 2008-03-25 Cisco Technology, Inc. Apparatus and method for distributing buffer status information in a switching fabric
US7292572B2 (en) 2002-12-11 2007-11-06 Lsi Corporation Multi-level register bank based configurable ethernet frame parser
US7089352B2 (en) 2002-12-23 2006-08-08 Micron Technology, Inc. CAM modified to be used for statistic calculation in network switches and routers
US6944710B2 (en) 2002-12-30 2005-09-13 Micron Technology, Inc. Multiple category CAM
US6880146B2 (en) 2003-01-31 2005-04-12 Hewlett-Packard Development Company, L.P. Molecular-wire-based restorative multiplexer, and method for constructing a multiplexer based on a configurable, molecular-junction-nanowire crossbar
US7305047B1 (en) 2003-03-12 2007-12-04 Lattice Semiconductor Corporation Automatic lane assignment for a receiver
US7366352B2 (en) 2003-03-20 2008-04-29 International Business Machines Corporation Method and apparatus for performing fast closest match in pattern recognition
US7093062B2 (en) * 2003-04-10 2006-08-15 Micron Technology, Inc. Flash memory data bus for synchronous burst read page
US7366854B2 (en) * 2003-05-08 2008-04-29 Hewlett-Packard Development Company, L.P. Systems and methods for scheduling memory requests utilizing multi-level arbitration
CN1860520B (zh) 2003-05-20 2011-07-06 辛迪安特公司 数字底板
US7010639B2 (en) 2003-06-12 2006-03-07 Hewlett-Packard Development Company, L.P. Inter integrated circuit bus router for preventing communication to an unauthorized port
US6906938B2 (en) 2003-08-15 2005-06-14 Micron Technology, Inc. CAM memory architecture and a method of forming and operating a device according to a CAM memory architecture
DE102004045527B4 (de) 2003-10-08 2009-12-03 Siemens Ag Konfigurierbare Logikschaltungsanordnung
US7860915B2 (en) 2003-12-29 2010-12-28 Xilinx, Inc. Digital signal processing circuit having a pattern circuit for determining termination conditions
US7849119B2 (en) 2003-12-29 2010-12-07 Xilinx, Inc. Digital signal processing circuit having a pattern detector circuit
US7243165B2 (en) 2004-01-14 2007-07-10 International Business Machines Corporation Parallel pattern detection engine
US7487542B2 (en) 2004-01-14 2009-02-03 International Business Machines Corporation Intrusion detection using a network processor and a parallel pattern detection engine
GB0415850D0 (en) 2004-07-15 2004-08-18 Imagination Tech Ltd Memory management system
US7716455B2 (en) 2004-12-03 2010-05-11 Stmicroelectronics, Inc. Processor with automatic scheduling of operations
US7176717B2 (en) 2005-01-14 2007-02-13 Velogix, Inc. Programmable logic and routing blocks with dedicated lines
US7358761B1 (en) 2005-01-21 2008-04-15 Csitch Corporation Versatile multiplexer-structures in programmable logic using serial chaining and novel selection schemes
US7392229B2 (en) 2005-02-12 2008-06-24 Curtis L. Harris General purpose set theoretic processor
US7499464B2 (en) 2005-04-06 2009-03-03 Robert Ayrapetian Buffered crossbar switch with a linear buffer to port relationship that supports cells and packets of variable size
US7672529B2 (en) 2005-05-10 2010-03-02 Intel Corporation Techniques to detect Gaussian noise
US7276934B1 (en) 2005-06-14 2007-10-02 Xilinx, Inc. Integrated circuit with programmable routing structure including diagonal interconnect lines
US7804719B1 (en) 2005-06-14 2010-09-28 Xilinx, Inc. Programmable logic block having reduced output delay during RAM write processes when programmed to function in RAM mode
US20080126690A1 (en) 2006-02-09 2008-05-29 Rajan Suresh N Memory module with memory stack
US7376782B2 (en) 2005-06-29 2008-05-20 Intel Corporation Index/data register pair for indirect register access
JP4410162B2 (ja) * 2005-07-05 2010-02-03 富士通株式会社 リコンフィギュアブルlsi
US7358872B2 (en) 2005-09-01 2008-04-15 Micron Technology, Inc. Method and apparatus for converting parallel data to serial data in high speed applications
FR2891075B1 (fr) 2005-09-21 2008-04-04 St Microelectronics Sa Circuit de memoire pour automate de reconnaissance de caracteres de type aho-corasick et procede de memorisation de donnees dans un tel circuit
US7750675B2 (en) 2005-12-23 2010-07-06 International Business Machines Corporation Method for running state machines
US7360063B2 (en) 2006-03-02 2008-04-15 International Business Machines Corporation Method for SIMD-oriented management of register maps for map-based indirect register-file access
US7512634B2 (en) 2006-06-05 2009-03-31 Tarari, Inc. Systems and methods for processing regular expressions
US7447107B2 (en) 2006-06-15 2008-11-04 Qimonda North America Corp. Random access memory including multiple state machines
US7725510B2 (en) 2006-08-01 2010-05-25 Alcatel-Lucent Usa Inc. Method and system for multi-character multi-pattern pattern matching
US8074022B2 (en) * 2006-09-28 2011-12-06 Virident Systems, Inc. Programmable heterogeneous memory controllers for main memory with different memory modules
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
US7890923B2 (en) 2006-12-01 2011-02-15 International Business Machines Corporation Configurable pattern detection method and apparatus
US7899977B2 (en) 2006-12-08 2011-03-01 Pandya Ashish A Programmable intelligent search memory
KR100866604B1 (ko) 2007-01-23 2008-11-03 삼성전자주식회사 전원제어 장치 및 전원제어 방법
US7797521B2 (en) 2007-04-12 2010-09-14 International Business Machines Corporation Method, system, and computer program product for path-correlated indirect address predictions
KR20080097573A (ko) 2007-05-02 2008-11-06 삼성전자주식회사 가상 메모리 접근 방법
US20080320053A1 (en) 2007-06-21 2008-12-25 Michio Iijima Data management method for accessing data storage area based on characteristic of stored data
US8417893B2 (en) 2008-02-04 2013-04-09 Apple Inc. Memory mapping techniques
US7886089B2 (en) 2008-02-13 2011-02-08 International Business Machines Corporation Method, system and computer program product for enhanced shared store buffer management scheme for differing buffer sizes with limited resources for optimized performance
JPWO2009104324A1 (ja) 2008-02-22 2011-06-16 日本電気株式会社 能動計量学習装置、能動計量学習方法およびプログラム
US7735045B1 (en) 2008-03-12 2010-06-08 Xilinx, Inc. Method and apparatus for mapping flip-flop logic onto shift register logic
US8015530B1 (en) 2008-08-05 2011-09-06 Xilinx, Inc. Method of enabling the generation of reset signals in an integrated circuit
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
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
US9639493B2 (en) 2008-11-05 2017-05-02 Micron Technology, Inc. Pattern-recognition processor with results buffer
US8402188B2 (en) 2008-11-10 2013-03-19 Micron Technology, Inc. Methods and systems for devices with a self-selecting bus decoder
US20100118425A1 (en) 2008-11-11 2010-05-13 Menachem Rafaelof Disturbance rejection in a servo control loop using pressure-based disc mode sensor
US9164945B2 (en) 2008-12-01 2015-10-20 Micron Technology, Inc. Devices, systems, and methods to synchronize parallel processing of a single data stream
US10007486B2 (en) * 2008-12-01 2018-06-26 Micron Technology, Inc. Systems and methods to enable identification of different data sets
US20100138575A1 (en) 2008-12-01 2010-06-03 Micron Technology, Inc. Devices, systems, and methods to synchronize simultaneous dma parallel processing of a single data stream by multiple devices
US9348784B2 (en) 2008-12-01 2016-05-24 Micron Technology, Inc. Systems and methods for managing endian mode of a device
DE102008060719B4 (de) 2008-12-05 2018-09-20 Siemens Healthcare Gmbh Verfahren zur Steuerung des Aufnahmebetriebs einer Magnetresonanzeinrichtung bei der Aufnahme von Magnetresonanzdaten eines Patienten sowie zugehörige Magnetresonanzeinrichtung
US8140780B2 (en) 2008-12-31 2012-03-20 Micron Technology, Inc. Systems, methods, and devices for configuring a device
US20100174887A1 (en) 2009-01-07 2010-07-08 Micron Technology Inc. Buses for Pattern-Recognition Processors
US8281395B2 (en) 2009-01-07 2012-10-02 Micron Technology, Inc. Pattern-recognition processor with matching-data reporting module
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
US8146040B1 (en) 2009-06-11 2012-03-27 Xilinx, Inc. Method of evaluating an architecture for an integrated circuit device
US20100325352A1 (en) 2009-06-19 2010-12-23 Ocz Technology Group, Inc. Hierarchically structured mass storage device and method
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
US8159900B2 (en) 2009-08-06 2012-04-17 Unisyn Medical Technologies, Inc. Acoustic system quality assurance and testing
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
US20110161620A1 (en) 2009-12-29 2011-06-30 Advanced Micro Devices, Inc. Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices
US8615629B2 (en) 2010-01-18 2013-12-24 Marvell International Ltd. Access scheduler
US20110208900A1 (en) 2010-02-23 2011-08-25 Ocz Technology Group, Inc. Methods and systems utilizing nonvolatile memory in a computer system main memory
JP5477810B2 (ja) * 2010-03-12 2014-04-23 沖電気工業株式会社 信号処理装置及びプログラム
GB2478727B (en) 2010-03-15 2013-07-17 Advanced Risc Mach Ltd Translation table control
KR101702374B1 (ko) * 2010-05-19 2017-02-06 삼성전자주식회사 멀티 프로세서 장치 및 그것의 인터 프로세스 통신 방법
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
US9195623B2 (en) 2010-06-23 2015-11-24 International Business Machines Corporation Multiple address spaces per adapter with address translation
US8294490B1 (en) 2010-10-01 2012-10-23 Xilinx, Inc. Integrated circuit and method of asynchronously routing data in an integrated circuit
US8726256B2 (en) 2011-01-25 2014-05-13 Micron Technology, Inc. Unrolling quantifications to control in-degree and/or out-degree of automaton
JP5763783B2 (ja) 2011-01-25 2015-08-12 マイクロン テクノロジー, インク. 正規表現をコンパイルするための方法および装置
JP5763784B2 (ja) 2011-01-25 2015-08-12 マイクロン テクノロジー, インク. 要素利用のための状態のグループ化
CN103547999B (zh) 2011-01-25 2017-05-17 美光科技公司 利用专用元件实施有限状态机
US8782624B2 (en) * 2011-12-15 2014-07-15 Micron Technology, Inc. Methods and systems for detection in a state machine
US9443156B2 (en) * 2011-12-15 2016-09-13 Micron Technology, Inc. Methods and systems for data analysis in a state machine
US8680888B2 (en) 2011-12-15 2014-03-25 Micron Technologies, Inc. Methods and systems for routing 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
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
US8536896B1 (en) 2012-05-31 2013-09-17 Xilinx, Inc. Programmable interconnect element and method of implementing a programmable interconnect element
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
US9524248B2 (en) 2012-07-18 2016-12-20 Micron Technology, Inc. Memory management for a hierarchical memory system
US9389841B2 (en) 2012-07-18 2016-07-12 Micron Technology, Inc. Methods and systems for using state vector data in a state machine engine
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
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1656471A (zh) * 2002-05-21 2005-08-17 华盛顿大学 使用可重编程硬件高速处理流数据以发现可重编程的模式并对其作出响应的方法、系统和装置
CN101208676A (zh) * 2005-04-29 2008-06-25 皇家飞利浦电子股份有限公司 使用状态机增强i2c从/主接口
CN101208681A (zh) * 2005-04-29 2008-06-25 皇家飞利浦电子股份有限公司 由单个i2c数据流对并行i2c从设备进行编程

Also Published As

Publication number Publication date
TWI625631B (zh) 2018-06-01
EP2972920A1 (en) 2016-01-20
US20160371215A1 (en) 2016-12-22
CN110825464A (zh) 2020-02-21
EP2972920B1 (en) 2022-07-20
US10372653B2 (en) 2019-08-06
KR102168930B1 (ko) 2020-10-23
US9448965B2 (en) 2016-09-20
WO2014150554A1 (en) 2014-09-25
US20180341612A1 (en) 2018-11-29
US10067901B2 (en) 2018-09-04
US9747242B2 (en) 2017-08-29
US10606787B2 (en) 2020-03-31
US20170351631A1 (en) 2017-12-07
US20190347233A1 (en) 2019-11-14
TW201506632A (zh) 2015-02-16
KR20150132226A (ko) 2015-11-25
US20140279776A1 (en) 2014-09-18
JP2016515266A (ja) 2016-05-26
EP2972920A4 (en) 2016-11-23
JP6177418B2 (ja) 2017-08-09
CN105051711A (zh) 2015-11-11

Similar Documents

Publication Publication Date Title
CN105051711B (zh) 用于提供由状态机引擎接收的数据的方法及设备
US11741014B2 (en) Methods and systems for handling data received by a state machine engine
CN104011736B (zh) 用于状态机中的检测的方法及系统
CN104603741B (zh) 在模式辨识处理系统中用于电力管理的方法及系统
CN104583935B (zh) 状态机引擎中的指令插入
CN103999035B (zh) 用于状态机中的数据分析的方法及系统
CN103988212B (zh) 用于在状态机中路由的方法及系统
CN104603742B (zh) 用于状态机引擎的结果产生
CN104487957B (zh) 用于编程状态机引擎的方法及装置
CN104487956B (zh) 用于使用状态机引擎中的状态向量数据的方法及系统
US10769099B2 (en) Devices for time division multiplexing of state machine engine signals

Legal Events

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