CN104603741A - 在模式辨识处理系统中用于电力管理的方法及系统 - Google Patents
在模式辨识处理系统中用于电力管理的方法及系统 Download PDFInfo
- Publication number
- CN104603741A CN104603741A CN201380044742.8A CN201380044742A CN104603741A CN 104603741 A CN104603741 A CN 104603741A CN 201380044742 A CN201380044742 A CN 201380044742A CN 104603741 A CN104603741 A CN 104603741A
- Authority
- CN
- China
- Prior art keywords
- piece
- data
- block
- fsm
- dot matrix
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/94—Hardware or software architectures specially adapted for image or video understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/94—Hardware or software architectures specially adapted for image or video understanding
- G06V10/955—Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Multimedia (AREA)
- Computer Hardware Design (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Logic Circuits (AREA)
- Power Sources (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明揭示一种装置,其包含状态机(14)。所述状态机(14)包含多个块(32),其中所述块(32)中的每一者包含多个行(38)。这些行(38)中的每一者包含多个可编程元件(34、36)。此外,所述可编程元件(34、36)中的每一者经配置以分析数据流的至少一部分并选择性地输出所述分析的结果。所述多个块(32)中的每一者还具有经配置以动态地供电给所述块(32)的对应块启动逻辑(248)。
Description
技术领域
本发明的实施例大体涉及电子装置,且更具体地说,在某些实施例中,涉及具有用于数据分析的并行装置的电子装置。
背景技术
在常规基于冯·诺伊曼(von Neumann)的计算机上执行复杂模式辨识可能效率低下。然而,生物大脑(尤其人类大脑)善于执行模式辨识。当前研究表明,人类大脑使用大脑新皮质中的一系列经阶层式组织的神经元层执行模式辨识。阶层的较低层中的神经元分析来自(例如)感觉器官的“原始信号”,而较高层中的神经元分析来自较低层级中的神经元的信号输出。大脑新皮质中的这种阶层式系统可能结合大脑的其它区域完成复杂模式辨识,这使人类能够执行例如空间推理、意识思考及复杂语言等高阶功能。
在计算领域中,模式辨识任务越来越具有挑战性。计算机之间传输的数据量不断增大,且用户希望识别的模式数目日益增加。例如,通常通过在数据流中搜索模式(例如,特定词组或代码段)来检测垃圾邮件或恶意软件。模式数目随着垃圾邮件及恶意软件的多样化而增加,这是因为可实施新模式以搜索新变体。在数据流中搜索这些模式中的每一者可形成计算瓶颈。通常,当接收到数据流时,在数据流中一次一个地搜索每一模式。在系统准备好搜索数据流的下一部分之前的延迟随模式数目而增加。因此,模式辨识可使数据的接收减慢。
硬件已经设计以在数据流中搜索模式,但是这种硬件通常不能在给定的时间量期间处理足够的数据量。经配置以搜索数据流的一些装置通过将数据流分布在多个电路之间以在给定的时间量期间处理足够的数据量。所述电路各自确定数据流是否匹配模式的一部分。通常,大量电路并行操作,其各自大体同时搜索数据流。然而,尚不存在有效地允许以与生物大脑的方式更相当的方式执行模式辨识的系统。开发这种系统是合乎需要的。
附图说明
图1说明根据本发明的各种实施例的具有状态机引擎的系统的实例。
图2说明根据本发明的各种实施例的图1的状态机引擎的FSM点阵的实例。
图3说明根据本发明的各种实施例的图2的FSM点阵的块的实例。
图4说明根据本发明的各种实施例的图3的块的行的实例。
图5说明根据本发明的各种实施例的图4的行的两成员群组的实例。
图6说明根据本发明的各种实施例的有限状态机图表的实例。
图7说明根据本发明的各种实施例的使用FSM点阵实施的二层级阶层的实例。
图8说明根据本发明的各种实施例的编译器将源代码转换为二进制文件以编程图2的FSM点阵的方法的实例。
图9说明根据本发明的各种实施例的状态机引擎。
图10说明根据本发明的各种实施例的图3的块的行的第二实例。
图11说明根据本发明的各种实施例的图10的块内交换元件。
图12说明根据本发明的各种实施例的图2的块的块启动逻辑。
图13是说明根据本发明的各种实施例的图12的块启动逻辑的操作的状态图。
具体实施方式
现在转到诸图,图1说明大体上由参考数字10标示的基于处理器的系统的实施例。系统10(例如,数据分析系统)可为例如台式计算机、膝上型计算机、传呼器、蜂窝电话、个人记事本、便携式音频播放器、控制电路、相机等等的多种类型中的任一者。系统10还可为网络节点,例如路由器、服务器或客户端(例如,先前描述的计算机类型中的一者)。系统10可为某个其它种类的电子装置,例如复印机、扫描仪、打印机、游戏控制台、电视机、机顶视频分布或记录系统、电缆箱、个人数字媒体播放器、工厂自动化系统、汽车计算机系统或医疗装置。(用以描述系统的这些各种实例的术语(如本文中使用的许多其它术语)可共享一些参照物,且因此不应通过所列出的其它项加以狭隘地理解)。
在典型的基于处理器的装置(例如系统10)中,例如微处理器等处理器12控制系统10中的系统功能及请求的处理。此外,处理器12可包括共享系统控制的多个处理器。处理器12可直接或间接地耦合到系统10中的元件中的每一者,使得处理器12通过执行可存储于系统10内或系统10外部的指令而控制系统10。
根据本文中描述的实施例,系统10包含可在处理器12的控制下操作的状态机引擎14。状态机引擎14可采用任何自动机理论。例如,状态机引擎14可采用数个状态机架构中的一者,包含(但不限于)米立(Mealy)架构、摩尔(Moore)架构、有限状态机(FSM)、确定性FSM(DFSM)、位并行状态机(BPSM)等等。虽然可使用多种架构,但是为讨论目的,本申请案提及FSM。然而,所属领域的技术人员应了解,可使用多种状态机架构中的任一者来采用所述技术。
如下文进一步讨论,状态机引擎14可包含数个(例如,一或多个)有限状态机(FSM)点阵(例如,芯片的核心)。为本申请案的目的,术语“点阵”是指元件(例如,布尔单元、计数器单元、状态机元件、状态转变元件)的组织框架(例如,路由矩阵、路由网络、框架)。此外,“点阵”可具有任何合适的形状、结构或阶层式组织(例如,栅格、立方体、球形、级联)。每一FSM点阵可实施各自并行接收及分析相同数据的多个FSM。此外,FSM点阵可布置成群组(例如,群集),使得FSM点阵的群集可并行分析相同输入数据。此外,状态机引擎14的FSM点阵的群集可布置在阶层式结构中,其中来自阶层式结构的较低层级上的状态机点阵的输出可用作到较高层级上的状态机点阵的输入。通过经由阶层式结构使状态机引擎14的并行FSM点阵的群集串联地级联,可分析(例如,评估、搜索等等)日益复杂的模式。
此外,基于状态机引擎14的阶层式并行配置,状态机引擎14可用于利用高处理速度的系统中的复杂数据分析(例如,模式辨识或其它处理)。例如,本文中描述的实施例可并入具有1千兆字节/秒的处理速度的系统中。因此,利用状态机引擎14,可迅速分析来自高速存储器装置或其它外部装置的数据。状态机引擎14可根据多个准则(例如,搜索项)大约同时(例如,在单个装置循环期间)分析数据流。状态机引擎14的层级上的FSM群集内的FSM点阵中的每一者可各自大约同时从数据流接收相同搜索项,且并行FSM点阵中的每一者可依处理准则确定所述项是否将状态机引擎14推进到下一状态。状态机引擎14可根据相对较大数目个准则(例如,大于100个、大于110个或大于10,000个准则)分析诸个项。因为FSM点阵并行操作,所以其可将准则应用于具有相对较高带宽的数据流(例如,大于或大体等于1千兆字节/秒的数据流)而不使数据流减慢。
在一个实施例中,状态机引擎14可经配置以辨识(例如,检测)数据流中的大量模式。例如,状态机引擎14可用以检测用户或其它实体可能希望分析的多种类型数据流中的一或多者中的模式。例如,状态机引擎14可经配置以分析经由网络接收的数据流,例如经由因特网接收的包或经由蜂窝网络接收的语音或数据。在一个实例中,状态机引擎14可经配置以分析垃圾邮件或恶意软件的数据流。数据流可被接收为串行数据流,其中以具有意义的顺序(例如以时间、词汇或语义显著的顺序)接收数据。或者,数据流可经并行或无序接收,且然后通过(例如)对经由因特网接收的包进行重新排序而转换为串行数据流。在一些实施例中,数据流可串行地呈现项,但是可并行接收表达所述项中的每一者的位。数据流可从系统10外部的源接收,或可通过询问例如存储器16等存储器装置且由存储于存储器16中的数据形成数据流而形成。在其它实例中,状态机引擎14可经配置以辨识拼写某一字的字符序列、指定基因的基因碱基对序列、形成图像的部分的图片或视频文件中的位序列、形成程序的部分的可执行文件中的位序列或形成歌曲或口语词组的部分的音频文件中的位序列。待分析的数据流可包含呈二进制格式或其它格式(例如,十进制、ASCII等等)的多个数据位。所述流可编码具有单个数字或多个数字(例如,多个二进制数字)的数据。
如应了解,系统10可包含存储器16。存储器16可包含易失性存储器,例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步DRAM(SDRAM)、双倍数据速率DRAM(DDR SDRAM)、DDR2 SDRAM、DDR3 SDRAM等等。存储器16还可包含非易失性存储器,例如只读存储器(ROM)、PC-RAM、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、金属-氧化物-氮化物-氧化物-硅(MONOS)存储器、基于多晶硅浮动栅极的存储器及/或结合易失性存储器使用的各种架构的其它类型快闪存储器(例如,NAND存储器、NOR存储器等等)。存储器16可包含可提供待由状态机引擎14分析的数据的一或多个存储器装置,例如DRAM装置。如本文中所使用,术语“提供”可大体是指引导、输入、插入、发出、路由、发送、传送、发射、产生、给出、输出、放置、写入等等。这些装置可被称为或包含固态驱动器(SSD)、多媒体卡(MMC)、安全数字(SD)卡、压缩闪存(CF)卡或任何其它合适的装置。此外,应了解,这些装置可经由任何合适的接口(例如通用串行总线(USB)、外围组件互连(PCI)、PCI Express(PCI-E)、小型计算机系统接口(SCSI)、IEEE 1394(Firewire)或任何其它合适的接口)耦合到系统10。为了促进存储器16(例如快闪存储器装置)的操作,系统10可包含存储器控制器(未说明)。如应了解,存储器控制器可为独立装置或其可与处理器12成一体。此外,系统10可包含外部存储装置18,例如磁性存储装置。外部存储装置还可将输入数据提供到状态机引擎14。
系统10可包含数个额外元件。例如,如关于图8更详细地描述,编译器20可用以配置(例如,编程)状态机引擎14。输入装置22还可耦合到处理器12以允许用户将数据输入到系统10中。例如,输入装置22可用以将数据输入到存储器16中以供状态机引擎14随后分析。例如,输入装置22可包含按钮、交换元件、键盘、光笔、尖笔、鼠标及/或语音辨识系统。例如显示器等输出装置24还可耦合到处理器12。例如,显示器24可包含LCD、CRT、LED及/或音频显示器。所述系统还可包含用于与网络(例如因特网)介接的网络接口装置26,例如网络接口卡(NIC)。如应了解,取决于系统10的应用,系统10可包含许多其它组件。
图2到5说明FSM点阵30的实例。在一实例中,FSM点阵30包括块32的阵列。如将描述,每一块32可包含对应于FSM中的多个状态的多个可选择性地耦合的硬件元件(例如,可配置元件及/或专用元件)。类似于FSM中的状态,硬件元件可分析输入流并基于输入流启动下游硬件元件。
可配置元件可经配置(例如,编程)以实施许多不同功能。例如,可配置元件可包含阶层式地组织成行38(图3及4中所示)及块32(图2及3中所示)中的状态机元件(SME)34、36(图5中所示)。SME还可被视为状态转变元件(STE)。为了在经阶层式组织的SME34、36之间路由信号,可使用可配置交换元件的阶层,包含块间交换元件40(图2及3中所示)、块内交换元件42(图3及4中所示)及行内交换元件44(图4中所示)。
如下文所述,交换元件可包含路由结构及缓冲器。SME 34、36可对应于由FSM点阵30实施的FSM的状态。SME 34、36可通过使用如下文描述的可配置交换元件而耦合在一起。因此,可通过以下操作在FSM点阵30上实施FSM:配置SME 34、36以对应于状态功能且选择性地将SME 34、36耦合在一起以对应于FSM中的状态之间的转变。
图2说明FSM点阵30的实例的整体视图。FSM点阵30包含可选择性地与可配置块间交换元件40耦合在一起的多个块32。块间交换元件40可包含导体46(例如,导线、迹线等等)以及缓冲器48及50。在一实例中,包含缓冲器48及50以控制信号往返于块间交换元件40的连接及时序。如下文进一步描述,缓冲器48可经提供以缓冲在块32之间发送的数据,而缓冲器50可经提供以缓冲在块间交换元件40之间发送的数据。此外,块32可选择性地耦合到用于接收信号(例如,数据)且将数据提供到块32的输入块52(例如,数据输入端口)。块32还可选择性地耦合到用于将信号从块32提供到外部装置(例如,另一FSM点阵30)的输出块54(例如,输出端口)。FSM点阵30还可包含编程接口56以(例如,经由图像、程序)配置FSM点阵30。图像可配置(例如,设定)SME 34、36的状态。例如,图像可配置SME 34、36以依某一方式对输入块52处的给定输入作出反应。例如,可设定SME 34、36以在输入块52处接收到字符“a”时输出高信号。
在一实例中,输入块52、输出块54及/或编程接口56可被实施为寄存器,使得到寄存器的写入或从寄存器的读取提供数据到相应元件或从相应元件提供数据。因此,可将来自存储于对应于编程接口56的寄存器中的图像的位加载于SME 34、36上。虽然图2说明块32、输入块52、输出块54及块间交换元件40之间的特定数目个导体(例如,导线、迹线),但应了解,在其它实例中,可使用更少或更多个导体。
图3说明块32的实例。块32可包含可选择性地与可配置块内交换元件42耦合在一起的多个行38。此外,行38可用块间交换元件40选择性地耦合到另一块32内的另一行38。行38包含组织成在本文中被称为两成员群组(GOT)60的元件对的多个SME34、36。在实例中,块32包括十六(16)个行38。
图4说明行38的实例。GOT 60可通过可配置行内交换元件44选择性地耦合到行38内的其它GOT 60及任何其它元件(例如,专用元件58)。GOT 60还可用块内交换元件42耦合到其它行38中的其它GOT 60,或用块间交换元件40耦合到其它块32中的其它GOT 60。在一实例中,GOT 60具有第一输入62及第二输入64以及输出66。如将参考图5进一步说明,第一输入62耦合到GOT 60的第一SME 34,且第二输入64耦合到GOT 60的第二SME 36。
在一实例中,行38包含第一多个行互连导体68及第二多个行互连导体70。在一实例中,GOT 60的输入62、64可耦合到一或多个行互连导体68、70,且输出66可耦合到一或多个行互连导体68、70。在一实例中,第一多个行互连导体68可耦合到行38内的每一GOT 60的每一SME 34、36。第二多个行互连导体70只可耦合到行38内的每一GOT 60的一个SME 34、36,但无法耦合到GOT 60的另一SME 34、36。在一实例中,如将关于图5更佳地说明,第二多个行互连导体70的第一半可耦合到行38内的SME 34、36的第一半(来自每一GOT 60的一个SME 34),且第二多个行互连导体70的第二半可耦合到行38内的SME 34、36的第二半(来自每一GOT 60的另一SME 34、36)。第二多个行互连导体70与SME 34、36之间的有限连接能力在本文中被称为“奇偶校验”。在一实例中,行38还可包含专用元件58,例如计数器、可配置布尔逻辑元件、查找表、RAM、现场可配置门阵列(FPGA)、专用集成电路(ASIC)、可配置处理器(例如,微处理器)或用于执行专用功能的其它元件。
在一实例中,专用元件58包括计数器(在本文中还被称为计数器58)。在一实例中,计数器58包括12位可配置递减计数器。12位可配置计数器58具有计数输入、重设输入及零计数输出。计数输入在经断言时使计数器58的值递减1。重设输入在经断言时使计数器58从相关联寄存器加载初始值。对于12位计数器58,可加载至多12位数字作为初始值。当计数器58的值递减到零(0)时,断言零计数输出。计数器58还具有至少两个模式:脉冲及保持。当将计数器58设定为脉冲模式时,零计数输出在计数器58达到零时被断言。例如,零计数输出在接下来的下一数据字节的处理期间被断言,导致计数器58在时间上偏离输入字符循环。在下一字符循环之后,不再断言零计数输出。以此方式,例如,在脉冲模式中,对一个输入字符处理循环断言零计数输出。当将计数器58设定为保持模式时,零计数输出在计数器58递减到零的时钟循环期间经断言,且保持断言直到通过正经断言的重设输入重设计数器58为止。
在另一实例中,专用元件58包括布尔逻辑。例如,布尔逻辑可用以执行逻辑函数,例如AND、OR、NAND、NOR、乘积之和(SoP)、否定输出乘积之和(NSoP)、否定输出和之乘积(NPoS)及和之乘积(PoS)函数。这种布尔逻辑可用以从FSM点阵30中的终端状态SME(如本文随后讨论,对应于FSM的终端节点)提取数据。所提取的数据可用以将状态数据提供到其它FSM点阵30及/或提供用以重配置FSM点阵30或重配置另一FSM点阵30的配置数据。
图5说明GOT 60的实例。GOT 60包含第一SME 34及第二SME 36,其具有输入62、64及其耦合到OR门76及3对1多路复用器78的输出72、74。3对1多路复用器78可经设定以将GOT 60的输出66耦合到第一SME 34、第二SME 36或OR门76。OR门76可用以将两个输出72、74耦合在一起以形成GOT 60的共同输出66。在一实例中,如上文讨论,第一SME 34与第二SME 36展现奇偶校验,在第一SME 34的输入62可耦合到一些行互连导体68且第二SME 36的输入64可耦合到其它行互连导体70的情况下,可产生可克服奇偶校验问题的共同输出66。在一实例中,GOT 60内的两个SME 34、36可通过设定交换元件79中的任一者或两者而级联及/或循环回到其自身。SME 34、36可通过将SME 34、36的输出72、74耦合到另一SME 34、36的输入62、64而级联。SME 34、36可通过将输出72、74耦合到其自身输入62、64而循环回到其自身。因此,第一SME 34的输出72可不耦合到第一SME 34的输入62及第二SME 36的输入64、耦合到第一SME 34的输入62及第二SME 36的输入64中的一者或两者。此外,因为输入62、64中的每一者可耦合到多个行路由线,OR门可用以从沿着输入62、64以及输出72、74的这些行路由线选择输入中的任一者。
在一实例中,状态机元件34、36包括并联耦合到检测线82的多个存储器单元80,例如通常用于动态随机存取存储器(DRAM)中的存储器单元。一个这样的存储器单元80包括可设定为数据状态(例如对应于高值或低值(例如,1或0)的数据状态)的存储器单元。存储器单元80的输出耦合到检测线82,且到存储器单元80的输入基于数据流线84上的数据接收信号。在一实例中,解码输入块52处的输入以选择存储器单元80中的一或多者。选定存储器单元80将其所存储的数据状态作为输出提供到检测线82上。例如,可将输入块52处接收的数据提供到解码器(未展示),且解码器可选择数据流线84中的一或多者。在一实例中,解码器可将8位ACSII字符转换到256个数据流线84的对应1。
因此,存储器单元80在存储器单元80被设定为高值且数据流线84上的数据选择所述存储器单元80时将高信号输出到检测线82。当数据流线84上的数据选择存储器单元80且存储器单元80被设定为低值时,存储器单元80将低信号输出到检测线82。检测线82上来自存储器单元80的输出是通过检测单元86加以感测。
在一实例中,输入线62、64上的信号将相应检测单元86设定为作用中状态或非作用中状态。当设定为非作用中状态时,不顾及相应检测线82上的信号,检测单元86在相应输出72、74上输出低信号。当设定为作用中状态时,检测单元86在从相应SME 34、36的存储器单元82中的一者检测到高信号时在相应输出线72、74上输出高信号。当处于作用中状态时,检测单元86在来自相应SME 34、36的所有存储器单元82的信号为低时在相应输出线72、74上输出低信号。
在一实例中,SME 34、36包含256个存储器单元80,且每一存储器单元80耦合到不同数据流线84。因此,SME 34、36可经编程以在数据流线84中选定的一或多者上具有高信号时输出高信号。例如,SME 34可使第一存储器单元80设定为高(例如,位0)且使所有其它存储器单元80设定为低(例如,位1到255)。当相应检测单元86处于作用中状态时,SME 34在对应于位0的数据流线84上具有高信号时在输出72上输出高信号。在其它实例中,SME 34可经设定以在多个数据流线84中的一者上具有高信号时通过将适当的存储器单元80设定为高值而输出高信号。
在一实例中,可通过从相关联寄存器读取位而将存储器单元80设定为高值或低值。因此,可通过将由编译器20产生的图像存储到寄存器中且将寄存器中的位加载到相关联存储器单元80中来配置SME 34。在一实例中,由编译器20产生的图像包含高及低(例如,1及0)位的二进制图像。图像可配置FSM点阵30以通过使SME 34、36级联而实施FSM。例如,可通过将检测单元86设定为作用中状态而将第一SME 34设定为作用中状态。第一SME 34可经设定以在对应于位0的数据流线84上具有高信号时输出高信号。第二SME 36最初可被设定为非作用中状态,但是在作用中时可经设定以在对应于位1的数据流线84上具有高信号时输出高信号。可通过设定第一SME 34的输出72以耦合到第二SME 36的输入64而使第一SME 34与第二SME 36级联。因此,当在对应于位0的数据流线84上感测到高信号时,第一SME 34在输出72上输出高信号且将第二SME 36的检测单元86设定为作用中状态。当在对应于位1的数据流线84上感测到高信号时,第二SME 36在输出74上输出高信号以启动另一SME 36或从FSM点阵30输出。
在一实例中,在单个物理装置上实施单个FSM点阵30,然而在其它实例中,可在单个物理装置(例如,物理芯片)上实施两个或两个以上FSM点阵30。在一实例中,每一FSM点阵30可包含相异数据输入块52、相异输出块54、相异编程接口56及相异可配置元件集合。此外,每一可配置元件集合可对其对应数据输入块52处的数据作出反应(例如,输出高或低信号)。例如,对应于第一FSM点阵30的第一可配置元件集合可对对应于第一FSM点阵30的第一数据输入块52处的数据作出反应。对应于第二FSM点阵30的第二可配置元件集合可对对应于第二FSM点阵30的第二数据输入块52处的数据作出反应。因此,每一FSM点阵30包含可配置元件集合,其中不同可配置元件集合可对不同输入数据作出反应。类似地,每一FSM点阵30及每一对应可配置元件集合可提供相异输出。在一些实例中,来自第一FSM点阵30的输出块54可耦合到第二FSM点阵30的输入块52,使得用于第二FSM点阵30的输入数据可包含来自一系列FSM点阵30的阶层式布置中的第一FSM点阵30的输出数据。
在一实例中,用于加载到FSM点阵30上的图像包括用于配置FSM点阵30内的可配置元件、可配置交换元件及专用元件的多个数据位。在一实例中,可将图像加载到FSM点阵30上以配置FSM点阵30以基于某些输入提供所要输出。输出块54可基于可配置元件对数据输入块52处的数据的反应而提供来自FSM点阵30的输出。来自输出块54的输出可包含指示给定模式的匹配的单个位、包括指示匹配及不匹配多个模式的多个位的字及对应于所有或某些可配置元件在给定时刻的状态的状态向量。如所述,状态机引擎(例如状态机引擎14)中可包含数个FSM点阵30以执行数据分析,例如模式辨识(例如,话音辨识、图像辨识等等)、信号处理、成像、计算机视觉、密码编译及其它。
图6说明可由FSM点阵30实施的有限状态机(FSM)的实例模型。FSM点阵30可配置(例如,编程)为FSM的物理实施方案。可将FSM表示为含有一或多个根节点92的图90(例如,有向图、无向图、伪图)。除了根节点92以外,FSM还可由通过一或多个边缘98连接到根节点92及其它标准节点94的若干标准节点94及终端节点96构成。节点92、94、96对应于FSM中的状态。边缘98对应于状态之间的转变。
节点92、94、96中的每一者可处于作用中或非作用中状态。当处于非作用中状态时,节点92、94、96并不对输入数据作出反应(例如,响应)。当处于作用中状态时,节点92、94、96可对输入数据作出反应。当输入数据匹配由上游节点92、94与下游节点94、96之间的边缘98指定的准则时,上游节点92、94可通过启动节点94、96而对输入数据作出反应。例如,当指定字符“b”的第一节点94处于作用中且接收字符“b”作为输入数据时,所述第一节点94将启动通过边缘98连接到所述第一节点94的第二节点94。如本文中使用,“上游”是指一或多个节点之间的关系,其中在一或多个其它节点上游(或在循环或反馈配置的情况中,在其自身上游)的第一节点是指其中第一节点可启动所述一或多个其它节点(或在循环的情况中,可启动其自身)的情境。类似地,“下游”是指其中在一或多个其它节点下游(或在循环的情况中,在其自身下游)的第一节点可通过所述一或多个其它节点启动(或在循环的情况中,可通过其自身启动)的关系。因此,术语“上游”及“下游”在本文中用以指一或多个节点之间的关系,但是这些术语并不排除使用循环或节点之间的其它非线性路径。
在图90中,根节点92可最初经启动且在输入数据匹配来自根节点92的边缘98时可启动下游节点94。当输入数据匹配来自节点94的边缘98时,节点94可启动节点96。在接收输入数据时,可以此方式启动贯穿图90的节点94、96。终端节点96对应于输入数据中的所关注序列的匹配。因此,启动终端节点96指示已接收所关注序列作为输入数据。在FSM点阵30实施模式辨识功能的上下文中,到达终端节点96可指示已在输入数据中检测到所关注的特定模式。
在一实例中,每一根节点92、标准节点94及终端节点96可对应于FSM点阵30中的可配置元件。每一边缘98可对应于可配置元件之间的连接。因此,转变到另一标准节点94或终端节点96(例如,具有连接到另一标准节点94或终端节点96的边缘98)的标准节点94对应于转变到(例如,将输出提供到)另一可配置元件的可配置元件。在一些实例中,根节点92不具有对应可配置元件。
如应了解,虽然节点92被描述为根节点且节点96被描述为终端节点,但是可无须存在特定“开始”或根节点,且可无须存在特定“结束”或输出节点。换句话说,任何节点均可为起始点,且任何节点可提供输出。
当编程FSM点阵30时,可配置元件中的每一者还可处于作用中或非作用中状态。给定可配置元件在非作用中时不对对应数据输入块52处的输入数据作出反应。作用中可配置元件可对数据输入块52处的输入数据作出反应,且当输入数据匹配可配置元件的设定时可启动下游可配置元件。当可配置元件对应于终端节点96时,可配置元件可耦合到输出块54以将匹配的指示提供到外部装置。
经由编程接口56加载到FSM点阵30上的图像可配置所述可配置元件及专用元件以及所述可配置元件与专用元件之间的连接,使得基于对数据输入块52处的数据作出的反应通过节点的循序启动实施所要FSM。在一实例中,除非通过上游可配置元件重新启动,否则可配置元件保持作用中达单个数据循环(例如,单个字符、字符集合、单个时钟循环)且然后变为非作用中。
可认为终端节点96存储经压缩的过去事件历史。例如,需要到达终端节点96的输入数据的一或多个模式可由所述终端节点96的启动来表示。在一实例中,由终端节点96提供的输出是二进制的,例如,输出指示是否已匹配所关注模式。在图90中终端节点96对标准节点94的比率可相当小。换句话说,虽然在FSM中存在高复杂度,但是比较而言,FSM的输出可为小的。
在一实例中,FSM点阵30的输出可包括状态向量。状态向量包括FSM点阵30的可配置元件的状态(例如,启动或未经启动)。在另一实例中,状态向量可包含可配置元件的全部或子集的状态(无论可配置元件是否对应于终端节点96)。在一实例中,状态向量包含对应于终端节点96的可配置元件的状态。因此,输出可包含由图90的全部终端节点96提供的指示的集合。可将状态向量表示为字,其中由每一终端节点96提供的二进制指示包括所述字的一个位。终端节点96的这种编码可对FSM点阵30提供检测状态(例如,是否已检测到所关注序列及已检测到何种所关注序列)的有效指示。
如上文提及,FSM点阵30可经编程以实施模式辨识功能。例如,FSM点阵30可经配置以辨识输入数据中的一或多个数据序列(例如,签名、模式)。当通过FSM点阵30辨识所关注数据序列时,可在输出块54处提供所述辨识的指示。在一实例中,模式辨识可辨识一串符号(例如,ASCII字符)以(例如)识别网络数据中的恶意软件或其它数据。
图7说明阶层式结构100的实例,其中FSM点阵30的两个层级串联耦合且用以分析数据。具体地说,在所说明的实施例中,阶层式结构100包含串联布置的第一FSM点阵30A及第二FSM点阵30B。每一FSM点阵30包含接收数据输入的相应数据输入块52、接收配置信号的编程接口块56及输出块54。
第一FSM点阵30A经配置以在数据输入块处接收输入数据,例如原始数据。第一FSM点阵30A对如上所述的输入数据作出反应并在输出块处提供输出。将来自第一FSM点阵30A的输出发送到第二FSM点阵30B的数据输入块。然后,第二FSM点阵30B可基于由第一FSM点阵30A提供的输出作出反应并提供阶层式结构100的对应输出信号102。两个FSM点阵30A及30B的这种阶层式串联耦合提供将关于经压缩字中的过去事件的数据从第一FSM点阵30A提供到第二FSM点阵30B的手段。所提供的数据实际上可为已由第一FSM点阵30A记录的复杂事件(例如,所关注序列)的概要。
图7中所示的FSM点阵30A、30B的两层级阶层100允许两个独立程序基于相同数据流而操作。所述两级阶层可类似于模型化为不同区域的生物大脑中的视觉辨识。在这种模型下,所述区域实际上是不同模式辨识引擎,其各自执行类似计算功能(模式匹配)但使用不同程序(签名)。通过将多个FSM点阵30A、30B连接在一起,可获得关于数据流输入的增加知识。
阶层的第一层级(由第一FSM点阵30A实施)可例如直接对原始数据流执行处理。例如,可在第一FSM点阵30A的输入块52处接收原始数据流,且第一FSM点阵30A的可配置元件可对所述原始数据流作出反应。阶层的第二层级(由第二FSM点阵30B实施)可处理来自第一层级的输出。例如,第二FSM点阵30B在第二FSM点阵30B的输入块52处接收来自第一FSM点阵30A的输出块54的输出,且第二FSM点阵30B的可配置元件可对第一FSM点阵30A的输出作出反应。因此,在此实例中,第二FSM点阵30B并不接收原始数据流作为输入,而是接收由如由第一FSM点阵30A确定的原始数据流匹配的所关注模式的指示。第二FSM点阵30B可实施辨识来自第一FSM点阵30A的输出数据流中的模式的FSM。应了解,除了接收来自FSM点阵30A的输出以外,第二FSM点阵30B还可接收来自多个其它FSM点阵的输入。同样地,第二FSM点阵30B可接收来自其它装置的输入。第二FSM点阵30B可组合这些多个输入以产生输出。
图8说明编译器将源代码转换为用于配置FSM点阵(例如点阵30)以实施FSM的图像的方法110的实例。方法110包含:将源代码剖析为语法树(方框112);将语法树转换为自动机(方框114);优化所述自动机(方框116);将所述自动机转换为接线对照表(netlist)(方框118);将所述接线对照表放置于硬件上(方框120);路由所述接线对照表(方框122)及发布所得图像(方框124)。
在一实例中,编译器20包含允许软件开发者产生图像以实施FSM点阵30上的FSM的应用编程接口(API)。编译器20提供将源代码中的正则表达式的输入集合转换为经配置以配置FSM点阵30的图像的方法。编译器20可通过用于具有冯·诺伊曼架构的计算机的指令加以实施。这些指令可使计算机上的处理器12实施编译器20的功能。例如,所述指令在由处理器12执行时可使处理器12对可由处理器12存取的源代码执行如方框112、114、116、118、120、122及124中描述的动作。
在一实例中,源代码描述用于识别符号群组内的符号模式的搜索字符串。为描述搜索字符串,源代码可包含多个正则表达式(regex)。正则表达式可为用于描述符号搜索模式的字符串。正则表达式广泛用于各种计算机领域中,例如编程语言、文本编辑器、网络安全及其它领域。在一实例中,由编译器支持的正则表达式包含用于分析未经结构化数据的准则。未经结构化数据可包含自由形式的数据且不具有应用于数据内的字的索引。字可包含数据内可打印及不可打印的字节的任何组合。在一实例中,编译器可支持多种不同源代码语言以用于实施包含Perl(例如,Perl可兼容正则表达式(PCRE))、PHP、Jave及.NET语言的正则表达式。
在方框112处,编译器20可剖析源代码以形成关系紧密的运算符的布置,其中不同类型的运算符对应于由源代码实施的不同函数(例如,由源代码中的正则表达式实施的不同函数)。剖析源代码可产生源代码的通用表示。在一实例中,通用表示包括呈称作语法树的树形图的形式的源代码中的正则表达式的经编码表示。本文中描述的实例引用作为语法树(亦称作“抽象语法树”)的布置,然而在其它实例中,可使用具体语法树或其它布置。
如上所述,因为编译器20可支持源代码的多种语言,所以剖析将源代码转换为非语言特定表示(例如语法树)而不顾及语言。因此,通过编译器20进行的进一步处理(方框114、116、118、120)可从共同输入结构发挥作用,而不顾及源代码的语言。
如上所述,语法树包含关系紧密的多个运算符。语法树可包含多种不同类型的运算符。例如,不同运算符可对应于由源代码中的正则表达式实施的不同函数。
在方框114处,将语法树转换为自动机。自动机包括FSM的软件模型,且因此可分类为确定性或非确定性。确定性自动机在给定时间具有单个执行路径,而非确定性自动机具有多个并行执行路径。自动机包括多个状态。为了将语法树转换为自动机,语法树中的运算符及运算符之间的关系转换为状态,其中所述状态之间具有转变。在一实例中,可部分基于FSM点阵30的硬件而转换自动机。
在一实例中,用于自动机的输入符号包含字母表的符号、数字0到9及其它可打印字符。在一实例中,输入符号是由字节值0到255(包含0及255)表示。在一实例中,自动机可表示为有向图,其中所述图的节点对应于状态集合。在一实例中,输入符号α上从状态p到状态q的转变(即,δ(p,α))是由从节点p到节点q的有向连接展示。在一实例中,自动机的反转产生新自动机,其中某个符号α上的每一转变p→q在相同符号上反转q→p。在反转中,开始状态变为最终状态,且最终状态变为开始状态。在一实例中,由自动机辨识(例如,匹配)的语言是在循序地输入到自动机中时将到达最终状态的全部可能字符串的集合。由自动机辨识的语言中的每一字符串追踪从开始状态到一或多个最后状态的路径。
在方框116处,在建构自动机之后,所述自动机经优化以减小其复杂度及大小等等。可通过组合冗余状态来优化自动机。
在方框118处,将经优化的自动机转换为接线对照表。将所述自动机转换为接线对照表将所述自动机的每一状态映射到FSM点阵30上的硬件元件(例如,SME 34、36、其它元件)并确定硬件元件之间的连接。
在方框120处,放置接线对照表以选择目标装置的对应于接线对照表的每一节点的特定硬件元件(例如,SME 34、36、专用元件58)。在一实例中,放置基于FSM点阵30的一般输入及输出约束来选择每一特定硬件元件。
在方框122处,路由所放置的接线对照表以确定用于可配置交换元件(例如,块间交换元件40、块内交换元件42及行内交换元件44)的设定,以将选定硬件元件耦合在一起以实现由接线对照表描述的连接。在一实例中,通过确定FSM点阵30的将用以连接选定硬件元件的特定导体及用于可配置交换元件的设定的特定导体来确定用于可配置交换元件的设定。与方框120处的放置相比,路由可考虑硬件元件之间的连接的更多特定限制。因此,给定FSM点阵30上的导体的实际限制,路由可调整如通过全局放置确定的一些硬件元件的位置以作出适当连接。
一旦放置及路由接线对照表,便可将所述经放置及路由的接线对照表转换为用于配置FSM点阵30的多个位。所述多个位在本文中被称为图像(例如二进制图像)。
在方框124处,通过编译器20发布图像。图像包括用于配置FSM点阵30的特定硬件元件的多个位。可将位加载到FSM点阵30上以配置SME 34、36、专用元件58及可配置交换元件的状态,使得经编程FSM点阵30实施具有由源代码描述的功能性的FSM。放置(方框120)及路由(方框122)可将FSM点阵30中的特定位置处的特定硬件元件映射到自动机中的特定状态。因此,图像中的位可配置特定硬件元件以实施(多个)所要功能。在一实例中,可通过将机器代码保存到计算机可读媒体来发布所述图像。在另一实例中,可通过在显示装置上显示所述图像来发布所述图像。在又一实例中,可通过将所述图像发送到另一装置(例如用于将所述图像加载到FSM点阵30上的配置装置)来发布所述图像。在又一实例中,可通过将所述图像加载到FSM点阵(例如,FSM点阵30)上来发布所述图像。
在一实例中,可通过将来自图像的位值直接加载到SME 34、36及其它硬件元件或通过将所述图像加载到一或多个寄存器中且然后将来自寄存器的位值写入到SME 34、36及其它硬件元件而将所述图像加载到FSM点阵30上。在一实例中,FSM点阵30的硬件元件(例如,SME 34、36、专用元件58、可配置交换元件40、42、44)经存储器映射使得配置装置及/或计算机可通过将图像写入到一或多个存储器地址而将图像加载到FSM点阵30上。
可至少部分用机器或计算机实施本文中描述的方法实例。一些实例可包含编码有指令的计算机可读媒体或机器可读媒体,所述指令可操作以配置电子装置以执行如上文实例中描述的方法。这些方法的实施方案可包含代码,例如微码、汇编语言代码、较高级语言代码或其类似物。这种代码可包含用于执行各种方法的计算机可读指令。代码可形成计算机程序产品的部分。此外,代码可在执行期间或在其它时间有形地存储在一或多个易失性或非易失性计算机可读媒体上。这些计算机可读媒体可包含(但不限于)硬盘、可装卸式磁盘、可装卸式光盘(例如,压缩光盘及数字视频光盘)、磁盒、存储卡或棒、随机存取存储器(RAM)、只读存储器(ROM)等等。
现在参考图9,说明状态机引擎14的实施例(例如,单个芯片上的单个装置)。如先前描述,状态机引擎14经配置以经由数据总线从源(例如存储器16)接收数据。在所说明的实施例中,数据可通过总线接口(例如第三代双倍数据速率(DDR3)总线接口130)发送到状态机引擎14。DDR3总线接口130可能够以大于或等于1千兆字节/秒的速率交换(例如,提供及接收)数据。这种数据交换速率可大于状态机引擎14分析数据的速率。如应了解,取决于待分析的数据的源,总线接口130可为用于将往返于数据源的数据交换到状态机引擎14的任何合适的总线接口,例如NAND快闪接口、外围组件互连(PCI)接口、千兆位媒体独立接口(GMMI)等等。如先前描述,状态机引擎14包含经配置以分析数据的一或多个FSM点阵30。每一FSM点阵30可被分为两个半点阵。在所说明的实施例中,每一半点阵可包含24K个SME(例如,SME 34、36),使得点阵30包含48K个SME。点阵30可包括如先前关于图2到5描述般布置的任何所要数目个SME。此外,虽然只说明一个FSM点阵30,但是状态机引擎14可包含多个FSM点阵30,如先前描述。
可在总线接口130处接收待分析的数据并通过数个缓冲器及缓冲器接口将数据提供到FSM点阵30。在所说明的实施例中,数据路径包含数据缓冲器132、指令缓冲器133、过程缓冲器134及排内(IR)总线及过程缓冲器接口136。数据缓冲器132经配置以接收并暂时存储待分析的数据。在一个实施例中,存在两个数据缓冲器132(数据缓冲器A及数据缓冲器B)。可将数据存储在所述两个数据缓冲器132中的一者中,而从另一数据缓冲器132清空数据以供FSM点阵30分析。总线接口130可经配置以将待分析的数据提供到数据缓冲器132直到数据缓冲器132已满为止。在数据缓冲器132已满之后,总线接口130可经配置以自由地用于其它目的(例如,提供来自数据流的其它数据直到数据缓冲器132可用于接收待分析的额外数据为止)。在所说明的实施例中,数据缓冲器132可各自为32千字节。指令缓冲器133经配置以经由总线接口130从处理器12接收指令,例如对应于待分析的数据的指令及对应于配置状态机引擎14的指令。IR总线及过程缓冲器接口136可促进将数据提供到过程缓冲器134。IR总线及过程缓冲器接口136可用以确保FSM点阵30按顺序处理数据。IR总线及过程缓冲器接口136可协调数据、时序数据、打包指令等等的交换,使得正确地接收并分析数据。一般来说,IR总线及过程缓冲器接口136允许通过FSM点阵30的逻辑排并行分析多个数据集合。例如,多个物理装置(例如,状态机引擎14、芯片、单独装置)可布置成排且可经由IR总线及过程缓冲器接口136相互提供数据。出于本申请案的目的,术语“排”是指连接到相同芯片选择的状态机引擎14的集合。在所说明的实施例中,IR总线及过程缓冲器接口136可包含32位数据总线。在其它实施例中,IR总线及过程缓冲器接口136可包含任何合适的数据总线,例如128位数据总线。
在所说明的实施例中,状态机引擎14还包含解压缩器138及压缩器140以帮助通过状态机引擎14提供状态向量数据。压缩器140连同解压缩器138一起工作,使得可压缩状态向量数据以最小化数据提供次数。通过压缩状态向量数据,可最小化总线利用时间。压缩器140及解压缩器138还可经配置以处置变化突发长度的状态向量数据。通过填补经压缩状态向量数据及包含关于每一压缩区域何时结束的指示符,压缩器140可通过状态机引擎14改善总体处理速度。压缩器140可用以在由FSM点阵30分析之后压缩匹配结果数据。在一个实施例中,可停用(例如,关闭)压缩器140及解压缩器138使得流动到压缩器140及解压缩器138及/或从压缩器140及解压缩器138流动的数据不被修改。
如先前描述,FSM点阵30的输出可包括状态向量。状态向量包括FSM点阵30的SME 34、36的状态(例如,启动或未经启动)及计数器58的动态(例如,当前)计数。状态机引擎14包含状态向量系统141,所述状态向量系统141具有状态向量高速缓冲存储器142、状态向量存储器缓冲器144、状态向量中间输入缓冲器146及状态向量中间输出缓冲器148。状态向量系统141可用以存储FSM点阵30的多个状态向量且将状态向量提供到FSM点阵30以使FSM点阵30恢复到对应于所提供的状态向量的状态。每一状态向量可暂时存储在状态向量高速缓冲存储器142中。例如,可存储每一SME 34、36的状态,使得状态可经恢复且随后用于进一步分析,同时释放SME 34、36以进一步分析新数据集合(例如,搜索项)。例如,如同典型高速缓冲存储器,状态向量高速缓冲存储器142允许存储状态向量以供快速检索及使用(此处由FSM点阵30快速检索及使用)。在所说明的实施例中,状态向量高速缓冲存储器142可存储至多512个状态向量。
如应了解,可在排中的不同状态机引擎14(例如,芯片)之间交换状态向量数据。可在不同状态机引擎14之间交换状态向量数据以用于以下各种目的,例如:同步化状态机引擎14的FSM点阵30的SME 34、36的状态;跨多个状态机引擎14执行相同功能;跨多个状态机引擎14重现结果;跨多个状态机引擎14级联结果;存储用以分析通过多个状态机引擎14级联的数据的SME 34、36的状态的历史等等。此外,应注意,在状态机引擎14内,状态向量数据可用以快速地配置FSM点阵30的SME 34、36。例如,状态向量数据可用以:将SME 34、36的状态恢复到初始化状态(例如,搜索新搜索项);将SME 34、36的状态恢复到先前状态(例如,搜索先前搜索的搜索项);以及将SME 34、36的状态改变为经配置用于级联配置(例如,以级联搜索来搜索搜索项)。在某些实施例中,可将状态向量数据提供到总线接口130使得可将状态向量数据提供到处理器12(例如,用于分析状态向量数据、重配置状态向量数据以应用修改、重配置状态向量数据以改善SME 34、36的效率,等等)。
例如,在某些实施例中,状态机引擎14可将经高速缓冲存储的状态向量数据(例如,由状态向量系统141存储的数据)从FSM点阵30提供到外部装置。外部装置可接收状态向量数据,修改状态向量数据并将经修改的状态向量数据提供到状态机引擎14以配置FSM点阵30。因此,外部装置可修改状态向量数据,以使得状态机引擎14可按需要略过(例如,跳过)状态。
状态向量高速缓冲存储器142可从任何合适的装置接收状态向量数据。例如,状态向量高速缓冲存储器142可从FSM点阵30、另一FSM点阵30(例如,经由IR总线及过程缓冲器接口136)、解压缩器138等等接收状态向量。在所说明的实施例中,状态向量高速缓冲存储器142可经由状态向量存储器缓冲器144从其它装置接收状态向量。此外,状态向量高速缓冲存储器142可将状态向量数据提供到任何合适的装置。例如,状态向量高速缓冲存储器142可将状态向量数据提供到状态向量存储器缓冲器144、状态向量中间输入缓冲器146及状态向量中间输出缓冲器148。
例如状态向量存储器缓冲器144、状态向量中间输入缓冲器146及状态向量中间输出缓冲器148等额外缓冲器可结合状态向量高速缓冲存储器142使用以适应状态向量的检索及存储,同时通过状态机引擎14处理具有交错分组的单独数据集合。在所说明的实施例中,状态向量存储器缓冲器144、状态向量中间输入缓冲器146及状态向量中间输出缓冲器148中的每一者可经配置以暂时存储状态向量。状态向量存储器缓冲器144可用以从任何合适的装置接收状态向量数据并将状态向量数据提供到任何合适的装置。例如,状态向量存储器缓冲器144可用以从FSM点阵30、另一FSM点阵30(例如,经由IR总线及过程缓冲器接口136)、解压缩器138及状态向量高速缓冲存储器142接收状态向量。作为另一实例,状态向量存储器缓冲器144可用以将状态向量数据提供到(例如,其它FSM点阵30的)IR总线及过程缓冲器接口136、压缩器140及状态向量高速缓冲存储器142。
同样地,状态向量中间输入缓冲器146可用以从任何合适的装置接收状态向量数据并将状态向量数据提供到任何合适的装置。例如,状态向量中间输入缓冲器146可用以从FSM点阵30(例如,经由IR总线及过程缓冲器接口136)、解压缩器138及状态向量高速缓冲存储器142接收状态向量。作为另一实例,状态向量中间输入缓冲器146可用以将状态向量提供到FSM点阵30。此外,状态向量中间输出缓冲器148可用以从任何合适的装置接收状态向量并将状态向量提供到任何合适的装置。例如,状态向量中间输出缓冲器148可用以从FSM点阵30及状态向量高速缓冲存储器142接收状态向量。作为另一实例,状态向量中间输出缓冲器148可用以将状态向量提供到FSM点阵30(例如,经由IR总线及过程缓冲器接口136)及压缩器140。
一旦由FSM点阵30提供所关注结果,便可将所述结果(例如匹配结果)存储在结果存储器150中。例如,可将指示匹配(例如,检测到所关注模式)的“匹配向量”存储在结果存储器150中。例如,然后可将匹配结果提供给匹配缓冲器152以经由总线接口130提供给处理器12。如先前描述,可压缩匹配结果。
还可在状态机引擎14中提供额外的寄存器及缓冲器。例如,状态机引擎14可包含控制及状态寄存器154。此外,可提供恢复缓冲器系统(例如,恢复及程序缓冲器156)以最初配置FSM点阵30的SME 34、36或在分析期间恢复FSM点阵30中的SME 34、36的状态。例如,可(例如,经由解压缩器138)将状态向量数据从恢复缓冲器156提供到状态向量系统141的状态向量中间输入缓冲器146。解压缩器138可用以解压缩提供到状态向量存储器缓冲器144及/或状态向量中间输入缓冲器146的状态向量数据。状态向量系统141可将状态向量数据提供到FSM点阵30以配置FSM点阵30的SME 34、36。类似地,还可提供保存缓冲器系统(例如,保存及修复映射缓冲器158)以存储保存及修复映射以供设定及使用。例如,可(例如,经由压缩器140)将状态向量数据从状态向量系统141的状态向量中间输出缓冲器148提供到保存缓冲器158。压缩器140可用以压缩从状态向量存储器缓冲器144及/或状态向量中间输出缓冲器148提供到保存缓冲器158的状态向量数据。
图10说明类似于上文关于图4讨论的行38的第二实例。行38可包含可编程行内交换元件44及行互连导体162、164、166、168、170、172、174、176、178、180、182、184、186、188、190及192(其还可被称为如下文所述的“行路由线162到192”且可为除图4的互连导体68及70以外的互连导体或可经使用代替图4的互连导体68及70)。
图10的行38还可包含8个GOT 60、专用元件58、输入62、输入64、输出66、匹配元件160及专用元件路由线194。图10中说明的GOT 60及专用元件58可实质上类似于先前关于图4讨论的GOT 60及专用元件58。因此,每一GOT 60具有输入62及64以启动其中的SME 34、36以允许通过每一GOT的相应SME 34、36执行分析(例如,经分析的数据流中的匹配),这可结合来自其它GOT 60的结果一起利用。
可从输出66上的GOT 60选择性地提供由GOT 60提供的结果。在一个实施例中,GOT 60的可能输出可不包含输出,包含来自GOT 60的SME 34的输出、来自GOT 60的SME 36的输出或第一SME 34的输出与第二SME 36的输出的逻辑组合(例如,OR)。因此,GOT 60可经配置以提供来自GOT 60的选定结果。此配置可基于(例如)在FSM点阵30的初始配置期间执行的初始编程而完成。来自GOT 60的结果可提供到匹配元件160,其可操作地提供来自行38的选定结果以进行给定数据流分析或数据流分析的一部分。
此外,行38可包含行路由线162到192。在本实施例中,存在能够选择性地耦合到8个GOT 60及专用元件58的16个行线162到192。然而,应了解,可结合行38利用更少或更多行路由线。
行路由线162到176中的每一者可用以将启动信号提供到行38中的GOT 60的SME34、36的任一者,而行路由线178、182、186及190中的每一者可用以将启动信号提供到GOT 60的SME 34的任一者,且行路由线180、184、188及192中的每一者可用以将启动信号提供到GOT 60的SME 36的任一者。因此,通过使用这些行路由线162到192,可启动任何特定SME(例如,SME 34)的任何特定检测单元86。这可通过(例如,根据加载图像)将相应行路由线162到192选择性地耦合到特定SME 34、36的统一启动输入62、64而完成。例如,GOT 60可将输出66传输到耦合到所述输出66的行路由线,例如行路由线162。然后,这可用于相同行38上的所有SME 34、36、专用元件58及(对于行路由线166、174、176而言)匹配元件160。此输出66信号还可传输到块内交换元件42中。所述信号可然后输出到(例如)多达3个块路由线(例如,图11中的路由线198到244中的3个路由线)。所述信号可通过额外的块内交换元件42从所述3个块路由线路由到相同块32中的不同行38。其还可通过块间交换元件40路由到不同块32。
如图10中说明,行路由线162到192中的每一者包含图3的多个行内交换元件44,其可用以将任何GOT 60选择性地耦合到任何其它GOT 60,或将任何GOT 60选择性地耦合到行38内(就此而言,或另一行及/或另一块内)的任何其它元件(例如,专用元件58)。然而,这些连接可受限于可用交换元件196。例如,行路由线162、164、166、168、170、172、174及176中的每一者可用以启动行38内的SME 34、36的任一者。然而,行路由线162、164、166、168、170、172、174及176中的每一者还可选择性地耦合到GOT60的相应不同者的输出。例如,来自GOT 60的任一者的输出在可耦合到所述输出的行路由线162、164、166、168、170、172、174及176的相应者上可只由所述GOT 60提供。因此,在一个实施例中,因为行路由线162、164、166、168、170、172、174及176可耦合到GOT 60的输出66,所以行路由线162、164、166、168、170、172、174及176可将信号提供(例如,输出)到块内交换元件42。相比之下,在一个实施例中,行路由线178、180、182、184、186、188、190及192可从块内交换元件42接收可接收自(例如)其它行38或块32的信号(例如,可通过所述信号驱动)。
除行路由线162到192以外,行38还可包含耦合到专用元件58的专用元件路由线194。类似于行路由线162、164、166、168、170、172、174及176,专用路由线194可将信号提供(例如,输出)到块内交换元件42,且在一个实施例中,专用元件路由线194还可耦合到匹配元件160。例如,如果专用元件58包括计数器,那么计数器的输出可提供到专用路由线194。类似地,如果专用元件58包含布尔逻辑元件(例如布尔单元),那么布尔逻辑元件的输出可提供到专用路由线194。通过使用这些专用元件,可将重复搜索(例如,寻找元件十次)或级联搜索(例如,寻找元件x、y及z)减化为可由专用路由线194提供到块内交换元件42及匹配元件160中的任一者或二者的单个输出。
图11中呈现块内交换元件42及其操作的更详细说明。如说明,块内交换元件42可接收行路由线162到192以及专用元件路由线194,且这些线可使各个块路由线198、200、202、204、206、208、210、212、214、216、218、220、222、224、226、228、230、232、234、236、238、240、242及244(在下文中统称为“块路由线198到244”)在多个交换元件246处交叉。这些交换元件246可用以(例如)将行路由线162到192选择性地耦合到块路由线198到244。在一个实施例中,行路由线162、164、166、168、170、172、174及176中的每一者可将信号提供(例如,输出、发送、传输、传送、传递等等)到块内交换元件42,而行路由线178、180、182、184、186、188、190及192则可从块内交换元件42接收信号(例如,输入所述信号)。因此,行路由线162、164、166、168、170、172、174及176可用以将信号从耦合到图10中的块内交换元件42的行38提供到例如图3中说明的相邻行38。此外或替代地,行路由线162、164、166、168、170、172、174及176可用以将信号从耦合到图10中的块内交换元件42的行38提供到块32中的其它行38及/或提供到块路由缓冲器48(图10或图11中未展示)。这可通过将信号从给定行38提供到耦合到所述给定行38的块路由线198到244中的一者而完成,这是因为块路由线198到244耦合到图3的各个块内交换元件42及块路由缓冲器48。这可允许行38将其中产生的任何结果提供到相邻行38或甚至其它块32。此外,虽然行路由线162、164、166、168、170、172、174及176主要可为输出线(例如,主要可将信号输出、发送、传输、传送、传递等等到块内交换元件42),但是在一些实施例中,行路由线162、164、166、168、170、172、174及176还可分别从块路由线230、232、234、236、238、240、242及244接收信号。
此外,在一个实施例中,行路由线178、180、182、184、186、188、190及192中的每一者可从块内交换元件42接收(例如,输入)信号。因此,行路由线178、180、182、184、186、188、190及192可用以将信号从例如图3中说明的相邻行38提供到耦合到图10中的块内交换元件42的行38。此外或替代地,行路由线178、180、182、184、186、188、190及192可用以将信号从块路由缓冲器48提供到耦合到图10中的块内交换元件42的行38。这可通过从图11的块路由线198到244中的一者接收外部块32或相邻行38中产生的信号而完成,这是因为块路由线198到244耦合到图3的各个块内交换元件42及块路由缓冲器48。这可允许行38从行路由线178、180、182、184、186、188、190及192以及行路由线162、164、166、168、170、172、174及176接收相邻行38或甚至其它块32中产生的任何结果(例如,当行路由线162、164、166、168、170、172、174及176从块路由线230、232、234、236、238、240、242及244接收信号时)。以此方式,块内交换元件42可使行38与相邻行38及其它块32耦合。
因此,在一些实施例中,块路由线230、232、234、236、238、240、242及244可用以将信号从第一块32提供到第二块32,因而所述信号可被用作基于第一块32中提供的结果供电给第二块32的信号。例如,当第一块32包含提供结果的行38时,此结果可用作另一块32的指示符:是时候供电以执行分析了。以此方式,一些块32在未使用时可处于断电状态以节约FSM点阵30的总耗电量,且因此节约系统10的总耗电量。以此方式,给定块32中的块路由线230、232、234、236、238、240、242及244可用以允许动态供电给FSM点阵30中的其它块32。
图12说明用于块32中的任一者的块启动逻辑248的方框图。块启动逻辑248可操作地静态及/或动态启动其对应的块32(例如,供电给所述块32)。应了解,块的此静态及/或动态供电大体上可被称为使块32自适应性地供电及或断电。如先前关于图11描述,块32的动态供电可包含从来自当前供电的块32的块路由线230、232、234、236、238、240、242及244接收信号。例如,块路由线230、232、234、236、238、240、242及244可提供来自当前供电的块32的结果(例如,指示在块32中发现匹配)。除从块路由线230、232、234、236、238、240、242及244接收信号以外,块启动逻辑248还可(例如,在动态供电部分中)接收块路由电力选择线250、252、254、256、258、260、262及264(在下文中统称为“块路由电力选择线250到264”)。这些块路由电力选择线250到264可耦合到最初使用沿块电力选择线250到264传输的值编程的配置寄存器并从所述配置寄存器接收信号。由块路由电力选择线250到264提供的信号可通过在FSM点阵30的初始配置期间执行的初始编程确定,因而所述信号可控制块路由线230、232、234、236、238、240、242及244是否将用以动态供电给给定块32。例如,块启动逻辑248可包含利用块路由电力选择线250到264及块路由线230、232、234、236、238、240、242及244作为输入线的多个AND门266、268、270、272、274、276、278及280(在下文中统称为“AND门266到280”)。因此,块路由电力选择线250到264可用作控制信号,这是因为即使块路由线230、232、234、236、238、240、242或244提供作用信号(例如,“1”)(例如在当前供电的块32处匹配的指示)且不具备亦提供作用信号(例如,“1”)的对应块路由电力选择线250到264,AND门266到280的相应者也将不会提供(例如,发出)作用(例如,“1”)信号。
由AND门266到280中的每一者提供的结果可提供到OR门282。因此,如果块路由线230、232、234、236、238、240、242及244中的任一者以及其对应块路由电力选择线250到264已提供正结果(即,“1”),那么8输入OR门282将在线284上提供作用信号(例如,“1”)作为供电块信号。此供电块信号由于其并有来自当前供电的块的结果而可构成动态启动信号。
块启动逻辑248中可提供第二动态启动信号。此第二动态信号可为线286上由AND门288提供的行作用指示信号。AND门288可为(例如)256输入AND门。例如,AND门288可为从对应于块启动逻辑248的块32的(例如,256个)SME中的每一者接收线290上的指示的块作用感测元件。在一些实施例中,可从(例如)来自行路由线162到192的线处或直接从块32的SME 34、36沿与行路由线分离的次级路径接收来自块32的SME的此指示。AND门288可允许确定块32中对应于块启动逻辑248的SME 34、36中的任一者是否正主动进行分析(例如,感测)。以此方式,AND门288操作地对块32提供行状态向量(作为线286上的作用指示信号)。线284及286上的动态信号可提供到OR门292,如果动态信号中的任一者在线294上作用(即,“1”),那么OR门292可提供作用信号(例如,“1”)。
块启动逻辑248可进一步包含静态供电部分。此静态供电部分可从(例如)全局电力分区寄存器(BPR)296接收信号,且可包含块电力分区指派寄存器(BAR)298。BPR 296及BAR 298中的每一者可为寄存器使得BPR 296可为编程接口56的部分,而BAR 298则存在于每一块32中。在一个实施例中,BPR 296可提供(例如)被提供到块32中的每一者的8位代码。此代码(其可为每一块32的相异代码)可引导FSM点阵30的块32中的每一者关于(例如)在开始分析数据流时哪些块32在作用中(例如,块32将何时在作用中)。替代地,可提供命令所有块32(例如,每一块32可读取与其有关的代码的部分)的单个代码。例如,代码可指示是否搜索新的数据流且可将启动信号传输到相关块32以允许供电给所述块32(例如,用信号通知数据的特定分析中是否涉及特定块32使得可供电给块32或块32仍保持在关闭状态)。以此方式,BPR 296可(例如)将全局启动信号提供到特定搜索中涉及的任何块。
BAR 298可为最初基于来自(例如)编程接口56的初始指令集、基于待执行的特定搜索(例如,待搜索的数据流)配置(例如,设定)的寄存器。这可在(例如)系统10的初始供电时加以执行。BAR 298最初可经配置以结合特定搜索提供启动值。例如,BAR 298最初可经配置以在线300、302、304、306、308、310、312及314上提供对应于由编程接口56预设的何种指派的信号。这些信号可被接收作为AND门316、318、320、322、324、326、328及330(在下文中统称为“AND门316到330”)处的相应输入。BAR 298可基于在某个时间是否使用块32(例如,基于处理的当前数据)提供信号。例如,当给定块32中首次搜索到待搜索的数据流时可利用BAR 298。因此,当所述块32中开始数据流搜索时,BAR可使块32通电。
AND门316到330处的第二输入可为对应于由BPR 296接收的信息(例如,代码)的信号。例如,在FSM点阵30的操作期间,BPR 296可从编程接口56接收指示执行何种分析(例如,搜索)的信息。BPR 296可将对应于此所接收的信息的信号提供到线332、334、336、338、340、342、344及346使得提供于线332、334、336、338、340、342、344及346上的信号对应于待执行的何种分析。如果BAR 298的预设值匹配BPR 296的值(即,如果在AND门316到330中的一或多者的输入处均接收到“1”值),那么将由已在AND门316到330的输入处接收到作用信号(即,“1”)的AND门316到330中的任一者提供作用信号。因此,当正进行的搜索将利用给定块32时,AND门316到330操作地提供(例如)启动信号(例如,确定正进行的搜索何时匹配块32经编程以正进行的搜索)。
此外,AND门316到330中的每一者可耦合到OR门348。因此,如果启动AND门316到330中的任一者(例如,提供“1”),那么8输入OR门348将在线350上提供作用电力分区启动信号。此电力分区启动信号由于其并有来自块启动逻辑248的初始设定的结果而可构成静态启动信号。
线294及350中的每一者可耦合到电力选择电路352,例如包含两个AND门354及356的电力选择电路。在一个实施例中,AND门354可为耦合到线350、358及360的三输入AND门。电力选择电路352的线358可提供启动SME信号。例如,如果特定块32中开始进行搜索,那么可设定BAR 298结合来自BPR 296的全局设定使相应块32通电。此外,如果通过特定块32分析第一数据位(例如,如果所述块是分析数据的第一块),那么沿线358的值可将此条件反映为起始SME信号。线360允许完全停用块32而不顾搜索的流。以此方式,线360用作全局越权。通常线360将提供高信号(例如,1),然而当特定应用程序永不使用块32中的编程时,线360可提供块关断信号(例如,0)。这允许基于正执行的当前搜索或待执行的即将来临的搜索使块32进行块特定启动。在一个实施例中,起始SME信号及块导通/关断信号可接收自编程接口56且可用作当(例如)在处理循环开始时需要块32时可能在作用中(例如,设定为“1”)的电力分区启动信号。例如,当确定在分析期间利用给定块32时,来自线358及360的起始SME信号及块导通/关断信号允许编程接口56直接存取块启动逻辑248。
在一个实施例中,电力选择电路352可集成块启动逻辑248的静态部分及动态部分。例如,电力选择电路352的AND门356可为耦合到线294(例如,提供动态信号)以及线350及360(例如,提供静态输入)的三输入AND门。此可允许通过编程接口56对每一块32的供电进行整体控制而不顾从当前供电的块32接收到的信号。取决于AND门354及356处接收的信号,可在线362及364上提供输出信号。因此,如果到AND门354的输入中的每一者在作用中(例如,“1”),那么线362上的输出值(例如,迫使块启动信号)将在作用中(例如,“1”)。类似地,如果到AND门356的输入中的每一者在作用中(例如,“1”),那么线364上的输出值(例如,条件块启动信号)将在作用中(例如,“1”)。最后,块启动逻辑248可包含耦合到线362及364的OR门366。因此,如果AND门354或356中的任一者在作用中(例如,“1”),那么OR门366将在线368上提供作用信号(例如,“1”)作为块启动信号以使对应于块启动逻辑248的块32通电。例如,线368上的此启动信号可以类似于通过允许(当启动信号为低时)停用块32的(例如)行解码器使得永不选择行来对动态只读存储器(DRAM)供电的方式操作。通过不驱动电力以选择行且不对块32的位线放电(再次类似于(DRAM)的操作),以类似于备用或休眠模式的方式节约电力。因此,通过利用块启动逻辑248,块32可保持在关断状态直到需要其进行数据分析为止,从而允许FSM点阵30的总耗电量大幅减小到(例如)小于40瓦特、30瓦特、25瓦特或20瓦特,同时仍允许进行全数据分析。
图13说明块启动逻辑248的操作的实例。状态图370展示当前供电的块32以及待供电的块32进行交互以搜索字符串“ABCDE”。在点372处,当前供电的块32中搜索到第一字符“A”。当在点374处发现此字符“A”时,当前供电的块32开始搜索第二字符“B”。此时,如路径376中说明,当前供电的块32还将结果提供到待供电的块32。例如,虽然待供电的块32无须搜索某个项直到搜索到字符“D”为止,但是初始化待供电的块32仍可能耗时。因此,已发现字符“A”的指示可触发通知块32供电,使得其能够顺畅地搜索字符“D”。因此,在当前供电的块32在点378处搜索到字符“B”、在点380处搜索到字符“B”、在点382处搜索到字符“C”且在点384处搜索到字符“C”时,可由块启动逻辑248供电给待供电的块32。因此,当由待供电的块32接收到字符“C”的指示时,待供电的块32将准备在点386处搜索字符“D”、在点388处搜索字符“D”、在点390处搜索字符“E”且在点392处搜索字符“E”。以此方式,在每一块在整个搜索期间不在作用中(例如,供电)的情况下,多个块32可用以执行单个搜索。
虽然本发明可具有各种修改及替代形式,但是已在图式中通过实例展示且在本文中详细描述特定实施例。然而,应了解,本发明并不旨在限于所揭示的特定形式。实情是,本发明涵盖落于如通过随附权利要求书界定的本发明的精神及范围内的所有修改、等效物及替代。
Claims (21)
1.一种状态机,其包括:
块,所述块中的每一者包括:
行,所述行中的每一者包括可编程元件,所述可编程元件中的每一者经配置以分析待分析的数据的至少一部分并选择性地提供所述分析的结果;及
块启动逻辑,其经配置以动态地供电给所述块。
2.根据权利要求1所述的装置,其中所述块启动逻辑经配置以接收所述块的所述可编程元件中的任一者是否在作用中的指示。
3.根据权利要求2所述的装置,其中所述块启动逻辑经配置以至少部分基于所述可编程元件中的任一者是否在作用中的所述指示动态地供电给所述块。
4.根据权利要求1所述的装置,其中所述块启动逻辑经配置以从所述块的另一者接收分析的结果的指示。
5.根据权利要求4所述的装置,其中所述块启动逻辑经配置以至少部分基于来自所述块的所述另一者的所述分析的所述结果的所述指示动态地供电给所述块。
6.根据权利要求1所述的装置,其中所述块启动逻辑包括寄存器,所述寄存器经配置以至少部分基于最初是否在所述块中分析待分析的所述数据部分的指示而提供第一信号。
7.根据权利要求6所述的装置,其中所述块启动逻辑经配置以接收与待分析的所述数据部分的分析中是否涉及所述块有关的第二信号。
8.根据权利要求7所述的装置,其中所述块启动逻辑包括AND门,所述AND门经配置以接收所述第一信号及所述第二信号且至少部分基于所述第一信号及所述第二信号提供输出。
9.根据权利要求8所述的装置,其中所述块启动逻辑经配置以至少部分基于所述输出自适应性地供电给所述块。
10.根据权利要求1所述的装置,其中所述块启动逻辑包括AND门,所述AND门经配置以:
接收所述块的所述可编程元件中的任一者是否在作用中或是否已接收到来自另一块的分析的结果的第一指示,
接收是否将由所述块分析待分析的数据流的第二指示;及
至少部分基于所述第一指示及所述第二指示提供块启动信号。
11.根据权利要求10所述的装置,其中所述块启动逻辑经配置以至少部分基于所述块启动信号自适应性地供电给所述块。
12.一种方法,其包括:
接收关于数据的至少一部分的分析中是否涉及块的第一指示;
从第二寄存器提供最初是否在所述块中分析待分析的所述数据部分的第二指示;及
至少部分基于所述第一指示与所述第二指示的比较而对所述块提供第一启动信号。
13.根据权利要求12所述的方法,其包括接收所述块的所述可编程元件中的任一者是否在作用中的第三指示。
14.根据权利要求13所述的方法,其包括从第二块接收待分析的所述数据的至少一部分的分析的结果的第四指示。
15.根据权利要求14所述的方法,其包括至少部分基于所述第三指示与所述第四指示的比较提供第二启动信号。
16.根据权利要求15所述的方法,其包括提供经配置以允许对所述块供电的块启动信号,其中所述块启动信号是至少部分基于所述第一启动信号与所述第二启动信号的比较。
17.一种状态机,其包括:
可编程元件的第一块,其中所述可编程元件中的至少一者经配置以分析待分析的数据的至少一部分并提供所述分析的结果;
可编程元件的第二块;及
块交换元件,其经配置以将由所述第一块提供的所述结果选择性地路由来作为供电给所述第二块的信号。
18.根据权利要求17所述的装置,其进一步包括经配置以从所述第一块接收所述结果的块启动逻辑。
19.根据权利要求18所述的装置,其中所述块启动逻辑经配置以至少部分基于所述结果自适应性地供电给所述第二块。
20.一种方法,其包括:
使用可编程元件的第一块的至少一部分分析数据;
至少部分基于使用可编程元件的第一块的所述至少一部分分析所述数据的结果将启动信号提供到可编程元件的第二块;及
使用可编程元件的所述第二块的至少一部分分析所述数据。
21.根据权利要求20所述的方法,其中所述启动信号包含供电给所述第二逻辑块的指示。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/601,621 US9501131B2 (en) | 2012-08-31 | 2012-08-31 | Methods and systems for power management in a pattern recognition processing system |
US13/601,621 | 2012-08-31 | ||
PCT/US2013/055434 WO2014035698A1 (en) | 2012-08-31 | 2013-08-16 | Methods and systems for power management in a pattern recognition processing system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104603741A true CN104603741A (zh) | 2015-05-06 |
CN104603741B CN104603741B (zh) | 2018-02-09 |
Family
ID=50184154
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380044742.8A Active CN104603741B (zh) | 2012-08-31 | 2013-08-16 | 在模式辨识处理系统中用于电力管理的方法及系统 |
Country Status (7)
Country | Link |
---|---|
US (4) | US9501131B2 (zh) |
EP (1) | EP2891054B1 (zh) |
JP (1) | JP6122121B2 (zh) |
KR (1) | KR101999590B1 (zh) |
CN (1) | CN104603741B (zh) |
TW (1) | TWI602120B (zh) |
WO (1) | WO2014035698A1 (zh) |
Families Citing this family (25)
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 |
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 |
US9703574B2 (en) | 2013-03-15 | 2017-07-11 | Micron Technology, Inc. | Overflow detection and correction in state machine engines |
US9448965B2 (en) | 2013-03-15 | 2016-09-20 | Micron Technology, Inc. | Receiving data streams in parallel and providing a first portion of data to a first state machine engine and a second portion to a second state machine |
WO2016109571A1 (en) * | 2014-12-30 | 2016-07-07 | Micron Technology, Inc | Devices for time division multiplexing of state machine engine signals |
US11366675B2 (en) | 2014-12-30 | 2022-06-21 | Micron Technology, Inc. | Systems and devices for accessing a state machine |
WO2016109570A1 (en) | 2014-12-30 | 2016-07-07 | Micron Technology, Inc | Systems and devices for accessing a state machine |
US10691964B2 (en) | 2015-10-06 | 2020-06-23 | Micron Technology, Inc. | Methods and systems for event reporting |
US10977309B2 (en) | 2015-10-06 | 2021-04-13 | Micron Technology, Inc. | Methods and systems for creating networks |
US10846103B2 (en) | 2015-10-06 | 2020-11-24 | Micron Technology, Inc. | Methods and systems for representing processing resources |
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 |
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 |
US11139256B2 (en) | 2019-08-21 | 2021-10-05 | Micron Technology, Inc. | Tamper-resistant integrated circuits, and related methods |
US11965032B1 (en) | 2022-06-01 | 2024-04-23 | Tg Therapeutics, Inc. | Anti-CD20 antibody compositions |
US11807689B1 (en) | 2022-06-01 | 2023-11-07 | Tg Therapeutics, Inc. | Anti-CD20 antibody compositions |
US11884740B1 (en) | 2022-06-01 | 2024-01-30 | Tg Therapeutics, Inc. | Anti-CD20 antibody compositions |
US11814439B1 (en) | 2022-06-01 | 2023-11-14 | Tg Therapeutics, Inc. | Anti-CD20 antibody compositions |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100138634A1 (en) * | 2008-12-01 | 2010-06-03 | Micron Technology, Inc. | Devices, systems, and methods to synchronize parallel processing of a single data stream |
US20110145271A1 (en) * | 2009-12-15 | 2011-06-16 | Micron Technology, Inc. | Methods and apparatuses for reducing power consumption in a pattern recognition processor |
US20110307433A1 (en) * | 2010-06-10 | 2011-12-15 | Paul Dlugosch | Programmable device, heirarchical parallel machines, methods for providing state information |
Family Cites Families (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US6865653B2 (en) * | 2001-12-18 | 2005-03-08 | Intel Corporation | System and method for dynamic power management using data buffer levels |
US7487542B2 (en) | 2004-01-14 | 2009-02-03 | International Business Machines Corporation | Intrusion detection using a network processor and a parallel pattern detection engine |
JP4633578B2 (ja) | 2004-10-22 | 2011-02-16 | ローム株式会社 | 集積回路およびそれを搭載した電子機器 |
US7392229B2 (en) | 2005-02-12 | 2008-06-24 | Curtis L. Harris | General purpose set theoretic processor |
US8065249B1 (en) | 2006-10-13 | 2011-11-22 | Harris Curtis L | GPSTP with enhanced aggregation functionality |
US7774286B1 (en) | 2006-10-24 | 2010-08-10 | Harris Curtis L | GPSTP with multiple thread functionality |
KR100866604B1 (ko) | 2007-01-23 | 2008-11-03 | 삼성전자주식회사 | 전원제어 장치 및 전원제어 방법 |
JP4834625B2 (ja) | 2007-07-31 | 2011-12-14 | 株式会社東芝 | 電源管理装置及び電源管理方法 |
JP5182792B2 (ja) | 2007-10-07 | 2013-04-17 | アルパイン株式会社 | マルチコアプロセッサ制御方法及び装置 |
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 |
US9639493B2 (en) | 2008-11-05 | 2017-05-02 | Micron Technology, Inc. | Pattern-recognition processor with results buffer |
US7970964B2 (en) | 2008-11-05 | 2011-06-28 | Micron Technology, Inc. | Methods and systems to accomplish variable width data input |
US20100118425A1 (en) | 2008-11-11 | 2010-05-13 | Menachem Rafaelof | Disturbance rejection in a servo control loop using pressure-based disc mode sensor |
KR101609250B1 (ko) * | 2008-11-26 | 2016-04-06 | 삼성전자주식회사 | 데이터스트림을 이용한 송수신 시스템의 인터페이스 방법 |
US10007486B2 (en) | 2008-12-01 | 2018-06-26 | Micron Technology, Inc. | Systems and methods to enable identification of different data sets |
US9348784B2 (en) | 2008-12-01 | 2016-05-24 | Micron Technology, Inc. | Systems and methods for managing endian mode of a device |
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 |
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 |
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 |
US8892931B2 (en) | 2009-10-20 | 2014-11-18 | Empire Technology Development Llc | Power channel monitor for a multicore processor |
US8489534B2 (en) | 2009-12-15 | 2013-07-16 | Paul D. Dlugosch | Adaptive content inspection |
US9323994B2 (en) | 2009-12-15 | 2016-04-26 | Micron Technology, Inc. | Multi-level hierarchical routing matrices for pattern-recognition processors |
KR101302563B1 (ko) | 2009-12-15 | 2013-09-02 | 한국전자통신연구원 | 개체명 사전 구축 시스템 및 구축 방법 |
US8601013B2 (en) | 2010-06-10 | 2013-12-03 | Micron Technology, Inc. | Analyzing data using a hierarchical structure |
JP5857072B2 (ja) | 2011-01-25 | 2016-02-10 | マイクロン テクノロジー, インク. | オートマトンの入次数および/または出次数を制御するための量化子の展開 |
US8788991B2 (en) | 2011-01-25 | 2014-07-22 | Micron Technology, Inc. | State grouping for element utilization |
KR101640295B1 (ko) | 2011-01-25 | 2016-07-15 | 마이크론 테크놀로지, 인크. | 정규 표현을 컴파일하기 위한 방법 및 장치 |
US8843911B2 (en) | 2011-01-25 | 2014-09-23 | Micron Technology, Inc. | Utilizing special purpose elements to implement a FSM |
US8782624B2 (en) | 2011-12-15 | 2014-07-15 | Micron Technology, Inc. | Methods and systems for detection in a state machine |
US8680888B2 (en) | 2011-12-15 | 2014-03-25 | Micron Technologies, Inc. | Methods and systems for routing in a state machine |
US8648621B2 (en) | 2011-12-15 | 2014-02-11 | Micron Technology, Inc. | Counter operation 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 |
US8593175B2 (en) | 2011-12-15 | 2013-11-26 | Micron Technology, Inc. | Boolean logic in a state machine lattice |
US9304968B2 (en) | 2012-07-18 | 2016-04-05 | Micron Technology, Inc. | Methods and devices for programming a state machine engine |
US9389841B2 (en) | 2012-07-18 | 2016-07-12 | Micron Technology, Inc. | Methods and systems for using state vector data in a state machine engine |
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 |
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 |
-
2012
- 2012-08-31 US US13/601,621 patent/US9501131B2/en active Active
-
2013
- 2013-08-16 EP EP13833680.5A patent/EP2891054B1/en active Active
- 2013-08-16 CN CN201380044742.8A patent/CN104603741B/zh active Active
- 2013-08-16 WO PCT/US2013/055434 patent/WO2014035698A1/en active Application Filing
- 2013-08-16 JP JP2015529851A patent/JP6122121B2/ja active Active
- 2013-08-16 KR KR1020157007411A patent/KR101999590B1/ko active IP Right Grant
- 2013-08-30 TW TW102131393A patent/TWI602120B/zh active
-
2016
- 2016-11-21 US US15/357,703 patent/US10909452B2/en active Active
-
2021
- 2021-01-28 US US17/161,210 patent/US11928590B2/en active Active
-
2024
- 2024-03-07 US US18/598,738 patent/US20240211761A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100138634A1 (en) * | 2008-12-01 | 2010-06-03 | Micron Technology, Inc. | Devices, systems, and methods to synchronize parallel processing of a single data stream |
US20110145271A1 (en) * | 2009-12-15 | 2011-06-16 | Micron Technology, Inc. | Methods and apparatuses for reducing power consumption in a pattern recognition processor |
US20110307433A1 (en) * | 2010-06-10 | 2011-12-15 | Paul Dlugosch | Programmable device, heirarchical parallel machines, methods for providing state information |
Also Published As
Publication number | Publication date |
---|---|
EP2891054A1 (en) | 2015-07-08 |
US20240211761A1 (en) | 2024-06-27 |
WO2014035698A1 (en) | 2014-03-06 |
EP2891054A4 (en) | 2016-08-03 |
TWI602120B (zh) | 2017-10-11 |
US20210158163A1 (en) | 2021-05-27 |
TW201423586A (zh) | 2014-06-16 |
US9501131B2 (en) | 2016-11-22 |
US20170124453A1 (en) | 2017-05-04 |
JP2015531934A (ja) | 2015-11-05 |
JP6122121B2 (ja) | 2017-04-26 |
KR101999590B1 (ko) | 2019-07-15 |
US11928590B2 (en) | 2024-03-12 |
KR20150052108A (ko) | 2015-05-13 |
US20140067736A1 (en) | 2014-03-06 |
US10909452B2 (en) | 2021-02-02 |
EP2891054B1 (en) | 2019-01-30 |
CN104603741B (zh) | 2018-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104603741A (zh) | 在模式辨识处理系统中用于电力管理的方法及系统 | |
US11741014B2 (en) | Methods and systems for handling data received by a state machine engine | |
CN104603742A (zh) | 用于状态机引擎的结果产生 | |
CN104583935A (zh) | 状态机引擎中的指令插入 | |
CN105051711B (zh) | 用于提供由状态机引擎接收的数据的方法及设备 | |
CN104487957B (zh) | 用于编程状态机引擎的方法及装置 | |
CN103999035B (zh) | 用于状态机中的数据分析的方法及系统 | |
CN104011736B (zh) | 用于状态机中的检测的方法及系统 | |
CN104011723B (zh) | 状态机晶格中的布尔逻辑 | |
CN104487956A (zh) | 用于使用状态机引擎中的状态向量数据的方法及系统 | |
CN104067282A (zh) | 状态机晶格中的计数器操作 | |
CN103988212A (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 |