CN107609644A - 用于状态机中的数据分析的方法及系统 - Google Patents
用于状态机中的数据分析的方法及系统 Download PDFInfo
- Publication number
- CN107609644A CN107609644A CN201710652791.XA CN201710652791A CN107609644A CN 107609644 A CN107609644 A CN 107609644A CN 201710652791 A CN201710652791 A CN 201710652791A CN 107609644 A CN107609644 A CN 107609644A
- Authority
- CN
- China
- Prior art keywords
- result
- state machine
- input
- data
- matching
- 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
- 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
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Multimedia (AREA)
- Neurology (AREA)
- Logic Circuits (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本申请涉及用于状态机中的数据分析的方法及系统。一种装置包含匹配元件(160),所述匹配元件(160)包含经配置以接收第一结果的第一数据输入,其中所述第一结果为状态机的元件对数据流的至少一部分执行的分析的结果。所述匹配元件(160)还包含经配置以接收第二结果的第二数据输入,其中所述第二结果为所述状态机的另一元件对所述数据流的至少一部分执行的分析的结果。所述匹配元件(160)进一步包含经配置以选择性地提供所述第一结果或所述第二结果的输出。
Description
分案申请的相关信息
本案是分案申请。该分案的母案是申请日为2012年12月5日、申请号为201280062293.5、发明名称为“用于状态机中的数据分析的方法及系统”的发明专利申 请案。
技术领域
本发明的实施例一般来说涉及电子装置,且更具体来说,在某些实施例中涉及具有 用于型式辨识的并行有限状态机的电子装置。
背景技术
在常规基于冯·诺伊曼(von Neumann)的计算机上执行复杂型式辨识可为低效的。然 而,生物大脑(特定来说,人脑)擅长执行型式辨识。当前研究表明,人脑使用新皮质中 的一系列以层次方式组织的神经元层执行型式辨识。层次的较低层中的神经元分析来自 (举例来说)感觉器官的“原始信号”,而较高层中的神经元分析来自较低层中的神经元的信号输出。新皮质中的此层次式系统(可能与大脑的其它区一起)实现复杂型式辨识, 此使得人类能够执行高级功能,例如空间推理、意识思考及复杂语言。
在计算领域中,型式辨识任务日益具挑战性。在计算机之间传输的数据量越来越大, 且用户希望识别的型式的数目日益增加。举例来说,通常通过搜索数据流中的型式(例如, 特定短语或代码片段)来检测垃圾邮件或恶意软件。型式的数目随垃圾邮件与恶意软件的 多样化而增加,因为新型式可经实施以搜索新变化形式。针对这些型式中的每一者搜索 数据流可形成计算瓶颈。通常,在接收数据流时,针对每一型式一次搜索一个数据流。在系统准备好搜索数据流的下一部分之前的延迟随型式的数目而增加。因此,型式辨识 可减慢数据的接收。
已设计用以针对若干型式搜索数据流的硬件,但此硬件通常不能在给定时间量内处 理充足数据量。经配置以搜索数据流的一些装置通过将数据流分布在多个电路当中而如 此进行。所述电路各自确定数据流是否匹配型式的一部分。通常,大量电路并行操作,从而各自大体同时搜索数据流。然而,尚未存在一种实际上允许以与生物大脑的方式更 相当的方式执行型式辨识的系统。此系统的开发是期望的。
发明内容
在一方面中,本申请涉及一种装置。所述装置包括:匹配元件,其包括:第一数据输入,其经配置以耦合到第一行路由线以接收第一结果,其中所述第一结果包括由第一 状态机元件通过对数据流的第一部分的分析产生的匹配,所述第一状态机元件包括耦合 到第一多个存储器单元的第一检测单元;第二数据输入,其经配置以耦合到第二行路由 线以接收第二结果,其中所述第二结果包括由第二状态机元件通过对所述数据流的第二 部分的分析产生的第二匹配,所述第二状态机元件包括耦合到第二多个存储器单元的第 二检测单元;及输出,其经配置以选择性地提供所述第一结果或所述第二结果。
在另一方面中,本申请涉及一种装置。所述装置包括:状态机,其包括:多个块, 所述多个块中的每一者包括:多个行,所述多个行中的每一者包括:第一元件,其包括 耦合到第一多个存储器单元的第一检测单元,其中所述第一元件经配置以产生第一结 果,所述第一结果包括通过对数据流的第一部分的分析产生的第一匹配;第二元件,其 包括耦合到第二多个存储器单元的第二检测单元,其中所述第二元件经配置以产生第二 结果,所述第二结果包括通过对所述数据流的第二部分的分析产生的第二匹配;及匹配 元件,其包括:第一输入,其经配置以接收所述第一结果;第二输入,其经配置以接收 所述第二结果;及输出,其经配置以选择性地提供所述第一结果或所述第二结果。
在另一方面中,本申请涉及一种方法。所述方法包括:在耦合到第一行路由线的匹配元件的第一数据输入处接收第一结果,所述第一结果包括由状态机的第一元件对数据流的至少一部分执行的分析而产生的匹配,其中所述状态机的所述第一元件包括第一多个检测单元,所述第一多个检测单元中的每一者耦合到相应的第一多个存储器单元;在 耦合到第二行路由线的匹配元件的第二数据输入处接收第二结果,所述第二结果包括由 所述状态机的第二元件对所述数据流的至少一部分执行的分析而产生的第二匹配,其中 所述状态机的所述第二元件包括第二多个检测单元,所述第二多个检测单元中的每一者 耦合到相应的第二多个存储器单元;及从所述匹配元件选择性地输出所述第一结果或所 述第二结果。
附图说明
图1图解说明根据本发明的各种实施例的具有状态机引擎的系统的实例。
图2图解说明根据本发明的各种实施例的图1的状态机引擎的FSM晶格的实例。
图3图解说明根据本发明的各种实施例的图2的FSM晶格的块的实例。
图4图解说明根据本发明的各种实施例的图3的块的行的实例。
图5图解说明根据本发明的各种实施例的图4的行的两个一群组的实例。
图6图解说明根据本发明的各种实施例的有限状态机图的实例。
图7图解说明根据本发明的各种实施例的借助FSM晶格实施的两层级层次的实例。
图8图解说明根据本发明的各种实施例的用于编译器将源代码转换成二进制文件以 用于编程图2的FSM晶格的方法的实例。
图9图解说明根据本发明的各种实施例的状态机引擎。
图10图解说明根据本发明的各种实施例的图3的块的行的第二实例。
图11图解说明根据本发明的各种实施例的图10的匹配元件的实例。
图12图解说明根据本发明的各种实施例的对应于图11的多路复用器的真值表。
具体实施方式
现在转到各图,图1图解说明通常由参考编号10指定的基于处理器的系统的实施例。系统10可为多种类型中的任一者,例如桌上型计算机、膝上型计算机、寻呼机、 蜂窝式电话、个人记事本、便携式音频播放器、控制电路、相机等。系统10也可为网 络节点,例如路由器、服务器或客户端(例如,先前所描述的类型的计算机中的一者)。 系统10可为某一其它种类的电子装置,例如复印机、扫描仪、打印机、游戏控制台、 电视机、机顶盒视频分配或记录系统、电缆盒、个人数字媒体播放器、工厂自动化系统、 汽车计算机系统或医疗装置。(用以描述系统的这各种实例的术语(如本文中所使用的许 多其它术语)可共享一些所指物,且如此不应按照所列举的其它物项来狭义地理解。)
在典型基于处理器的装置(例如系统10)中,处理器12(例如微处理器)控制系统10中的系统功能及请求的处理。此外,处理器12可包括共享系统控制的多个处理器。处 理器12可直接或间接耦合到系统10中的元件中的每一者以使得处理器12通过执行可 存储于系统10内或在系统10外部的指令来控制系统10。
根据本文中所描述的实施例,系统10包含可在处理器12的控制下操作的状态机引擎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个以上)分析项。由于其 并行操作,因此其可将准则应用于具有相对高带宽的数据流(例如,大于或通常等于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)存储器、基于多晶硅浮动栅极的存储器及/或各种架构的其它类型的快闪存 储器(例如,“与非”存储器、“或非”存储器等)。存储器16可包含可提供将由状态机 引擎14分析的数据的一或多个存储器装置,例如DRAM装置。此类装置可称为或包含 固态驱动器(SSD)、MultiMediaCard(MMC)、SecureDigital(SD)卡、CompactFlash(CF) 卡或任何其它适合装置。此外,应了解,此类装置可经由任何适合接口(例如通用串行总 线(USB)、外围组件互连(PCI)、高速PCI(PCI-E)、小型计算机系统接口(SCSI)、IEEE 1394 (火线(Firewire))或任何其它适合接口)耦合到系统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 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可选择性地耦合到用于接收信号(例如,数据)且将数据提供到块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的若干对元件的多个 SME 34、36。在一实例中,块32包括十六(16)个行38。
图4图解说明行38的实例。GOT 60可通过可编程行内交换元件44选择性地耦合 到其它GOT 60及行38内的任何其它元件(例如,专用元件58)。GOT 60也可借助块内 交换元件42耦合到其它行38中的其它GOT 60,或者借助块间交换元件40耦合到其它 块32中的其它GOT 60。在一实例中,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的每一SME 34、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包括布尔逻辑。在一些实例中,此布尔逻辑可用以从FSM晶格30中的终端状态SME(对应于FSM的终端节点,如本文中稍后所论述)提取 信息。所提取的信息可用以将状态信息传送到其它FSM晶格30及/或传送用以重新编程 FSM晶格30或重新编程另一FSM晶格30的编程信息。
图5图解说明GOT 60的实例。GOT 60包含具有输入62、64且使其输出72、74 耦合到“或”门76及3对1多路复用器78的第一SME 34及第二SME 36。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。在一实例中,可通过设定交换元件79中的任一者或两者而 使GOT 60内的两个SME 34、36级联及/或循环回到其自身。可通过将SME 34、36的 输出72、74耦合到另一SME 34、36的输入62、64而将SME 34、36级联。可通过将 输出72、74耦合到其自己的输入62、64而使SME 34、36循环回到其自身。因此,第 一SME 34的输出72可不耦合到第一SME 34的输入62及第二SME 36的输入64中的任一者、耦合到其中的一者或其中的两者。
在一实例中,状态机元件34、36包括并联耦合到检测线82的多个存储器单元80,例如通常用于动态随机存取存储器(DRAM)中的存储器单元。一种此类存储器单元80包 括可设定到一数据状态(例如对应于高值或低值(例如,1或0)的数据状态)的存储器单元。 存储器单元80的输出耦合到检测线82且到存储器单元80的输入基于数据流线84上的 数据而接收信号。在一实例中,数据流线84上的输入经解码以选择存储器单元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设定到作用或非作用状态。当设定到非作用状态时,检测单元86在相应输出72、74上输出低信号,而不管相应检 测线82上的信号如何。当设定到作用状态时,检测单元86在从相应SME 34、36的存 储器单元80中的一者检测到高信号时在相应输出线72、74上输出高信号。当处于作用 状态中时,检测单元86在来自相应SME 34、36的所有存储器单元80的信号为低时在 相应输出线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 上输出高信号。在其它实例中,当多个数据流线84中的一者在其上具有高信号时,可 通过将适当存储器单元80设定到高值来设定SME 34以输出高信号。
在一实例中,可通过从相关联寄存器读取位而将存储器单元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以耦合到第二SME36的输入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的输出可包含指示给定型式的匹配的单个位、包括指示与多个型式的匹配及不 匹配的多个位的字及对应于所有或某些可编程元件在给定时刻的状态的状态向量。如所 描述,若干个FSM晶格30可包含于状态机引擎(例如状态机引擎14)中以执行数据分析, 例如型式辨识(例如,语音辨识、图像辨识等)、信号处理、成像、计算机视觉、密码编 译及其它。
图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可在输入数据匹配由上游节点92、94 与在所述节点下游的节点94、96之间的边缘98规定的准则时通过激活下游节点94、96 而对所述输入数据做出反应。举例来说,规定字符‘b’的第一节点94将在第一节点94为 作用的且字符‘b’被接收为输入数据时激活通过边缘98连接到第一节点94的第二节点 94。如本文所使用,“上游”是指一或多个节点之间的关系,其中在一或多个其它节点 上游(或在循环或反馈配置的情况中,在其自身上游)的第一节点是指其中所述第一节点 可激活所述一或多个其它节点(或在循环的情况中,可激活其自身)的情形。类似地,“下 游”是指其中在一或多个其它节点下游(或在循环的情况中,在其自身下游)的第一节点 可由所述一或多个其它节点激活(或在循环的情况中,可由其自身激活)的关系。因此, 本文中使用术语“上游”及“下游”来指一或多个节点之间的关系,但这些术语不排除 循环或节点当中的其它非线性路径的使用。
在有限状态机图90中,可最初激活根节点92且根节点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不具有对应可编程元件。
当编程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的可编程元件的状态。因此,所述输出可包含有限状态机图90的所有 终端节点96所提供的指示的集合。所述状态向量可表示为字,其中每一终端节点96所 提供的二进制指示包括所述字的一个位。终端节点96的此编码可提供FSM晶格30的 检测状态(例如,是否已检测到所关注序列及已检测到何种所关注序列)的有效指示。在 另一实例中,状态向量可包含所有或一子组的可编程元件的状态,而不论所述可编程元 件是否对应于终端节点96。
如上文所提及,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。
图8图解说明用于编译器将源代码转换成经配置以编程FSM晶格(例如晶格30)的图像以实施FSM的方法110的实例。方法110包含将源代码剖析成语法树(框112),将 所述语法树转换成自动机(框114),优化所述自动机(框116),将所述自动机转换成网表 (框118),将所述网表放置于硬件上(框120),路由所述网表(框122)及公布所得图像(框 124)。
在一实例中,编译器20包含允许软件开发者创建用于在FSM晶格30上实施FSM 的图像的应用编程接口(API)。编译器20提供用以将源代码中的输入正则表达式集转换 成经配置以编程FSM晶格30的图像的方法。可通过用于具有冯·诺伊曼(von Neumann) 架构的计算机的指令来实施编译器20。这些指令可致使计算机上的处理器12实施编译 器20的功能。举例来说,所述指令在由处理器12执行时可致使处理器12对可由处理 器12存取的源代码执行如框112、114、116、118、120、122及124中所描述的动作。
在一实例中,源代码描述用于识别符号群组内的符号型式的搜索串。为了描述搜索 串,源代码可包含多个正则表达式(regex)。正则表达式可为用于描述符号搜索型式的串。 正则表达式广泛地用于各种计算机领域中,例如程序设计语言、文本编辑器、网络安全及其它领域。在一实例中,编译器所支持的正则表达式包含用于分析未结构化数据的准则。未结构化数据可包含自由形式的数据且不具有应用于所述数据内的字的索引。字可 包含所述数据内的可打印及不可打印的字节的任一组合。在一实例中,编译器可支持多 种不同源代码语言以用于实施包含Perl(例如,Perl兼容正则表达式(PCRE))、PHP、Java 及.NET语言的正则表达式。
在框112处,编译器20可剖析源代码以形成关系连接的运算符的布置,其中不同类型的运算符对应于源代码所实施的不同函数(例如,源代码中的正则表达式所实施的不同函数)。剖析源代码可创建所述源代码的类属表示。在一实例中,所述类属表示包括源 代码中的正则表达式的经编码表示,其呈称作语法树的树形图的形式。本文所述的实例 涉及作为语法树(还称作“抽象语法树”)的布置,然而在其它实例中可使用具体语法树 或其它布置。
如上文所提及,由于编译器20可支持源代码的多种语言,因此不管语言如何剖析均将源代码转换成非语言特定表示(例如,语法树)。因此,由编译器20进行的进一步处 理(框114、116、118、120)可从共同输入结构起作用而不管源代码的语言如何。
如上所述,语法树包含关系连接的多个运算符。语法树可包含多种不同类型的运算 符。也就是说,不同运算符可对应于源代码中的正则表达式所实施的不同函数。
在框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的特定 硬件元件的多个位。在其中所述图像包括多个位(例如,0及1)的实施例中,所述图像可 称为二进制图像。可将所述位加载到FSM晶格30上以编程SME 34、36、专用元件58 及可编程交换元件的状态,以使得经编程FSM晶格30实施具有源代码所描述的功能性 的FSM。放置(框120)及路由(框122)可将FSM晶格30中的特定位置处的特定硬件元件 映射到自动机中的特定状态。因此,所述图像中的位可编程特定硬件元件以实施所要功 能。在一实例中,可通过将机器代码保存到计算机可读媒体来公布所述图像。在另一实 例中,可通过在显示装置上显示所述图像来公布所述图像。在又一实例中,可通过将所 述图像发送到另一装置(例如用于将所述图像加载到FSM晶格30上的编程装置)来公布 所述图像。在再一实例中,可通过将所述图像加载到FSM晶格(例如,FSM晶格30)上 来公布所述图像。
在一实例中,可通过将位值从图像直接加载到SME 34、36及其它硬件元件或通过将图像加载到一或多个寄存器中且然后将所述位值从所述寄存器写入到SME 34、36及 其它硬件元件来将所述图像加载到FSM晶格30上。在一实例中,FSM晶格30的硬件 元件(例如,SME 34、36、专用元件58、可编程交换元件40、42、44)经存储器映射以 使得编程装置及/或计算机可通过将所述图像写入到一或多个存储器地址而将所述图像 加载到FSM晶格30上。
本文中所描述的方法实例可为至少部分地机器或计算机实施的。一些实例可包含用 指令编码的计算机可读媒体或机器可读媒体,所述指令可操作以配置电子装置以执行如 在以上实例中所述的方法。此类方法的实施方案可包含代码,例如微码、汇编语言代码、高级语言代码等。此代码可包含用于执行各种方法的计算机可读指令。所述代码可形成 计算机程序产品的部分。此外,所述代码可在执行期间或在其它时间有形地存储于一或 多个易失性或非易失性计算机可读媒体上。这些计算机可读媒体可包含(但不限于)硬盘、 可装卸磁盘、可装卸光盘(例如,压缩光盘及数字视频光盘)、盒式磁带、存储卡或存储 棒、随机存取存储器(RAM)、只读存储器(ROM)等。
现在参考图9,其图解说明状态机引擎14的实施例。如先前所描述,状态机引擎 14经配置以经由数据总线从源(例如存储器16)接收数据。在所图解说明的实施例中,数 据可经由总线接口(例如DDR3总线接口130)发送到状态机引擎14。DDR3总线接口130 可能够以大于或等于1千兆字节/秒的速率交换数据。如将了解,取决于将分析的数据的 源,总线接口130可为用于将数据交换到数据源及将数据从数据源交换到状态机引擎14 的任何适合总线接口,例如“与非”快闪接口、PCI接口等。如先前所描述,状态机引 擎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、过程缓冲器 134及排间(IR)总线与过程缓冲器接口136。数据缓冲器132经配置以接收且暂时存储将 分析的数据。在一个实施例中,存在两个数据缓冲器132(数据缓冲器A及数据缓冲器 B)。可将数据存储于两个数据缓冲器132中的一者中,而从另一数据缓冲器132清空数 据以供由FSM晶格30分析。在所图解说明的实施例中,数据缓冲器132可各自为32 千字节。IR总线与过程缓冲器接口136可促进到过程缓冲器134的数据传送。IR总线 与过程缓冲器136确保数据由FSM晶格30按次序处理。IR总线与过程缓冲器136可协 调数据交换、时序信息、打包指令等以使得按正确次序接收及分析数据。通常,IR总线 与过程缓冲器136允许经由FSM晶格30的逻辑排并行分析多个数据集。
在所图解说明的实施例中,状态机引擎14还包含解压缩器138及压缩器140以帮助经由状态机引擎14传送大量数据。压缩器140与解压缩器138协同工作以使得可将 数据压缩以最小化数据传送时间。通过压缩将分析的数据,可最小化总线利用时间。基 于由编译器20提供的信息,可将屏蔽提供到状态机引擎14以提供可能不对其使用状态 机的信息。压缩器140及解压缩器138还可经配置以处置变化的突发长度的数据。通过 填补经压缩数据及包含关于每一经压缩区域何时结束的指示符,压缩器140可经由状态 机引擎14改进总体处理速度。压缩器140及解压缩器138还可用以压缩及解压缩在由 FSM晶格30分析之后的匹配结果数据。
如先前所描述,FSM晶格30的输出可包括状态向量。所述状态向量包括FSM晶格 30的可编程元件的状态(例如,经激活或未经激活)。每一状态向量可暂时存储于状态向 量高速缓冲存储器142中以供进一步层次式处理及分析。也就是说,可存储每一状态机 的状态以使得最终状态可用于进一步分析,同时释放状态机以用于重新编程及/或新数据 集的进一步分析。如同典型高速缓冲存储器,状态向量高速缓冲存储器允许存储信息(此 处,状态向量)以供快速撷取及使用(此处,(例如)由FSM晶格30撷取及使用)。额外缓 冲器(例如状态向量存储器缓冲器、状态向量中间输入缓冲器146及状态向量中间输出缓 冲器148)可连同状态向量高速缓冲存储器142一起利用以适应状态向量的快速分析及存 储,同时遵守经由状态机引擎14的包传输协议。
一旦由FSM晶格30产生所关注结果,便可将匹配结果存储于匹配结果存储器150中。也就是说,可将指示匹配(例如,检测到所关注型式)的“匹配向量”存储于匹配结 果存储器150中。举例来说,然后可将匹配结果发送到匹配缓冲器152以供经由总线接 口130传输到处理器12。如先前所描述,可压缩匹配结果。
也可在状态机引擎14中提供额外寄存器及缓冲器。例如,状态机引擎14可包含控制与状态寄存器154。另外,可提供恢复与编程缓冲器156以便最初用于编程FSM晶格 30或在分析期间恢复FSM晶格30中的机器的状态。类似地,也可提供保存与修复映射 缓冲器158以用于存储用于设置及使用的保存与修复映射。
图10图解说明类似于上文关于图4所论述的行的行38的第二实例。行38可包含 可编程行内交换元件44及行互连/互连件导体68、70(其也可称为“行路由线”,如下 文所描述)。
图10的行38可包含八个GOT 60、专用元件58、输入62、输入64、输出66、匹 配元件160、多个行路由线162、164、166、168、170、172、174、176、178、180、182、 184、186、188、190及192(下文中统称为“行路由线162到192”)、专用元件路由线 194及多个结点196。
此外,除耦合到图5中的所图解说明SME 34、36之外,局部路由矩阵172也可耦 合到特定行38中的GOT 60的所有对的SME 34、36。因此,局部路由矩阵172可包含 可编程行内交换元件44及行互连/互连件导体68、70(其也可称为“行路由线”,如下 文所描述)。
图10中所图解说明的GOT 60及专用元件58实质上类似于先前关于图4所论述的GOT 60及专用元件58。因此,每一GOT 60接收输入62,输入62可为统一启用输入以 作为用于SME 34的检测单元86的启用信号而操作。同样,每一GOT 60也接收输入64, 输入64也可为统一启用输入以作为用于SME 36的检测单元86的启用信号而操作。这 些统一启用输入62、64可激活SME 34、36的检测单元86以输出由相应SME执行的分 析的相应结果(举例来说,来自单个SME 34的经分析数据流中的匹配),所述结果可连 同来自其它SME 34、36的结果一起用以(举例来说)搜索数据流中的型式。举例来说, 统一启用输入62及统一启用输入64允许选择性激活SME 34、36以使得由作用SME 34、 36中的每一者产生的结果可用作数据流的总体较宽广分析的部分。
可在输出66上从GOT 60选择性地提供由所述GOT的SME 34、36产生的结果。 在一个实施例中,GOT 60的可能输出可不包含任何输出,可包含第一SME 34的输出(即, 输出72)、第二SME 36的输出(即,输出74)或者第一SME 34的输出或第二SME 36的 输出(即,输出72或输出74)。因此,GOT 60可经编程以从GOT 60输出选定结果。此 编程可(举例来说)基于在FSM晶格30的初始编程阶段期间执行的经加载图像而实现。 来自GOT 60的结果可提供到匹配元件160,匹配元件160可操作以输出针对给定数据 流搜索或数据流搜索的一部分从行38产生的选定结果。
另外,行38可包含行路由线162到192(其也可称为行互连/互连件导体)。在本发明实施例中,存在可选择性地耦合到八个GOT 60及专用元件58的十六个行线162到 192。然而,应了解,可连同行38一起利用更少或更多行路由线。
行路由线162到192中的每一者可用以沿输入62、64为一或多个GOT 60的SME 34、36中的任一者提供启用信号。因此,通过使用这些行路由线162到192,可激活任何特 定SME(例如,SME 34)的任何特定检测单元86。此可通过将行路由线162到192选择 性地耦合(例如,根据经加载图像)到SME 34、36的统一启用输入62、64而实现。此外, 为了提供在将启用信号提供到SME 34、36中的进一步灵活性,可在给定GOT 60的两 个SME 34、36当中划分行路由线162到192。举例来说,可利用行路由线162、164、 166、168、170、172、174及176来激活行38中的SME 34、36中的任一者。举例来说, GOT 60可将输出66传输到耦合到其的行路由线(举例来说,行路由线162)。此信号可 传输到其中其可路由(举例来说,在行路由线164上)到行38中的额外GOT 60的块内交 换器中。另外,行路由线178、182、186及190可(举例来说)通过从块内交换器42接收 信号而激活行38中的SME 34,而行路由线180、184、188及192可经由(举例来说)从 块内交换器42接收的信号而激活行38中的SME 36。以此方式,可减小行路由线162 到192的总体数目,同时仍允许激活行38中的SME 34、36中的任一者的任何检测单元 86的总体灵活性及能力。
如图10中所图解说明,行路由线162到192中的每一者包含多个结点196。这些结点196可(举例来说)包含图3的行内交换元件44,因为结点196可用以将任何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中的每一者也可选择性地耦合到GOT 60中的相 应不同者的输出。举例来说,来自GOT60中的任一者的输出可仅在行路由线162、164、 166、168、170、172、174及176中的可耦合到其的相应者上从所述GOT 60提供。因 此,在一个实施例中,由于行路由线162、164、166、168、170、172、174及176可耦 合到GOT 60的输出66,因此行路由线162、164、166、168、170、172、174及176可 将信号提供(例如,驱逐)到块内交换器42。相比之下,在一个实施例中,行路由线178、 180、182、184、186、188、190及192可从块内交换器42接收信号(例如,由信号驱动), 所述信号可为从(举例来说)其它行38或块32接收的。
除行路由线162到192之外,行38也可包含耦合到专用元件58的专用元件路由线194。类似于行路由线162、164、166、168、170、172、174及176,专用路由线194可 将信号提供(例如,驱逐)到块内交换器42。在一个实施例中,专用元件路由线194也可 耦合到匹配元件160。举例来说,如果专用元件58包括计数器,那么可沿专用路由线 194提供计数器的输出。类似地,如果专用元件58包含布尔逻辑元件(例如布尔单元), 那么可沿专用路由线194提供布尔逻辑元件的输出。通过使用这些专用元件,可将重复 搜索(例如,找出一元素达十次)或经级联搜索(例如,找出元素x、y及z)简化成可沿专 用路由线194提供到块内交换器42及匹配元件160中的任一者或两者的单个输出。
图11中呈现匹配元件160的更详细图解说明。如所图解说明,匹配元件160可包 含四个数据输入198、200、202及204、两个输出以及六个控制输入210、212、214、 216、218及220。此外,所述匹配元件可包含两个2对1多路复用器222、224。尽管图 解说明2对1多路复用器222、224,但应注意,可在需要时(举例来说,为允许路由/输 出配置中的灵活性)或在硅空间允许时代替2对1多路复用器222、224而利用其它配置 (例如3对1多路复用器、4对1多路复用器或其它元件)。
在一个实施例中,匹配元件160的数据输入198耦合到行路由线176,数据输入200耦合到行路由线174,数据输入202耦合到专用路由线194且数据输入204耦合到行路 由线168。这些特定线的选择仅为说明性的且已经选择以证明从行38接收输出信号中的 灵活性。通过将行路由线168及行路由线176选择为连接到匹配元件160,可建立GOT 60之间的奇偶。举例来说,所有GOT 60的第一半部(GOT 60零到三)中的一个GOT 60 对数据流的至少一部分执行的第一分析的结果可在路由线168上提供到匹配元件160, 而所有GOT 60的第二半部(GOT 60四到七)中的另一GOT 60对数据流的至少一部分执 行的第二分析的结果可在路由线176上提供到匹配元件160。以此方式分裂输入200、 204可允许减少的路径将结果提供到匹配元件160。另外,通过在匹配元件160处沿专 用路由线194从专用元件58接收结果,可将经级联搜索的结果一次提供到匹配元件160。 最终,行路由线174的选择给行38的整个系统添加灵活性。然而,如所述,这些选择 仅为说明性的。
如所图解说明,匹配元件160的数据输入198、200可提供到2对1多路复用器222,而匹配元件160的数据输入202、204可提供到2对1多路复用器224。2对1多路复用 器222、224还可各自从可(举例来说)基于在FSM晶格30的初始编程阶段期间执行的经 加载图像而编程的控制输入210、212、214、216、218及220接收控制信号。在一个实 施例中,2对1多路复用器222可接收来自控制输入210的选择信号S0、来自控制输入 212的选择信号S1及来自控制输入214的输出启用信号。类似地,2对1多路复用器224 可接收来自控制输入216的选择信号S0、来自控制输入218的选择信号S1及来自控制 输入220的输出启用信号。选择信号S0、S1可用以选择将所述数据输入中的哪些数据 输入分别提供到输出206及208以用于将数据搜索的结果提供到(举例来说)输出块54。 此外,使用多个选择线载运选择信号S0、S1可允许在不借助反相器的情况下构建2对1 多路复用器222、224中的每一者,因此减少实施2对1多路复用器222、224所需的面 积。然而,在一个实施例中,可利用载运单个选择信号(例如,S0)的单个选择线。
另外,来自控制输入214的输出启用信号可为允许仅在数据输入198、200、202及204上的信号稳定时提供输出206及208的时钟信号或其它启用信号。图12图解说明陈 述来自控制输入210的选择信号S0、来自控制输入212的选择信号S1可如何以可编程 方式选择2对1多路复用器224的输出208的实例的真值表226。
如图12中所展示,图解说明对应于匹配元件160的输出208的真值表226。应注意,在真值表226中表示的输出208假定已在2对1多路复用器224处接收到来自控制输入 220的输出启用信号。如真值表226中所图解说明,当来自控制输入216的选择信号S0 及来自控制输入218的选择信号S1两者均为低(即,0)时,2对1多路复用器224的输 出208将为低的。举例来说,将不从匹配元件160提供来自行38的结果。当来自控制 输入216的选择信号S0为高(即,1)且来自控制输入218的选择信号S1为低时,2对1 多路复用器224的输出208将为行路由线168上的结果。相反地,当来自控制输入216 的选择信号S0为低且来自控制输入218的选择信号S1为高时,2对1多路复用器224 的输出208将为专用路由线194上的结果。最终,借以使来自控制输入216的选择信号 S0及来自控制输入218的选择信号S1两者均为高的条件被禁止。因此,在匹配元件160 的编程期间避免了此状态。以此方式,匹配元件160可以可编程方式不选择任何输出、 选择来自第一数据输入204的输出(行路由线168上的结果)或来自第二数据输入202的 输出(专用路由线194上的结果)。此外,应注意,匹配元件可以不限于图12中所图解说 明的特定实施例的其它可编程配置操作。
尽管可易于对本发明做出各种修改及替代形式,但已在图式中通过举例方式展示且 在本文中详细描述了特定实施例。然而,应理解,本发明并不意欲限于所揭示的特定形式。而是,本发明意欲涵盖如由以下随附申请专利范围定义的本发明的精神及范畴内的 所有修改形式、等效形式及替代方案。
Claims (20)
1.一种装置,其包括:
匹配元件,其包括:
第一数据输入,其经配置以耦合到第一行路由线以接收第一结果,其中所述第一结果包括由第一状态机元件通过对数据流的第一部分的分析产生的匹配,所述第一状态机元件包括耦合到第一多个存储器单元的第一检测单元;
第二数据输入,其经配置以耦合到第二行路由线以接收第二结果,其中所述第二结果包括由第二状态机元件通过对所述数据流的第二部分的分析产生的第二匹配,所述第二状态机元件包括耦合到第二多个存储器单元的第二检测单元;及
输出,其经配置以选择性地提供所述第一结果或所述第二结果。
2.根据权利要求1所述的装置,其中所述匹配元件经配置以经由所述输出沿着数据路径选择性地提供所述第一结果或所述第二结果,所述数据路径与包括所述第一行路由线和所述第二行路由线的任意多个行路由线分离。
3.根据权利要求2所述的装置,其中所述匹配元件经配置以经由所述输出沿着所述数据路径将所述第一结果或所述第二结果选择性地提供到有限状态机晶格的输出块,所述有限状态机晶格包括所述匹配元件、所述第一状态机元件及所述第二状态机元件。
4.根据权利要求1所述的装置,其中所述匹配元件包括经配置以接收第一控制信号的第一控制输入。
5.根据权利要求4所述的装置,其中所述匹配元件经配置以基于所述第一控制信号选择性地提供所述第一结果或所述第二结果。
6.根据权利要求4所述的装置,其中所述匹配元件包括经配置以接收输出启用信号的第二控制输入。
7.根据权利要求6所述的装置,其中所述匹配元件经配置以基于所述输出启用信号选择性地不提供结果。
8.根据权利要求1所述的装置,其中所述匹配元件包括多路复用器。
9.一种装置,其包括:
状态机,其包括:
多个块,所述多个块中的每一者包括:多个行,所述多个行中的每一者包括:
第一元件,其包括耦合到第一多个存储器单元的第一检测单元,其中所述第一元件经配置以产生第一结果,所述第一结果包括通过对数据流的第一部分的分析产生的第一匹配;
第二元件,其包括耦合到第二多个存储器单元的第二检测单元,其中所述第二元件经配置以产生第二结果,所述第二结果包括通过对所述数据流的第二部分的分析产生的第二匹配;及
匹配元件,其包括:
第一输入,其经配置以接收所述第一结果;
第二输入,其经配置以接收所述第二结果;及
输出,其经配置以选择性地提供所述第一结果或所述第二结果。
10.根据权利要求9所述的装置,其中所述状态机包括耦合到第二状态机的输出块。
11.根据权利要求10所述的装置,其中所述匹配元件经配置以选择性地将所述第一结果或所述第二结果提供到所述输出块。
12.根据权利要求9所述的装置,其中所述状态机包括第三元件,所述第三元件包括耦合到第三多个存储器单元的第三检测单元,其中所述第三元件经配置以产生第三结果,所述第三结果包括通过对所述数据流的第三部分的分析产生的第三匹配。
13.根据权利要求12所述的装置,其中所述状态机包括专用元件,所述专用元件经配置以基于所述第一结果、所述第二结果或所述第三结果中的至少一者产生第四结果。
14.根据权利要求13所述的装置,其中所述匹配元件包括:
第三输入,其经配置以接收所述第三结果;
第四输入,其经配置以接收所述第四结果;及
第二输出,其经配置以选择性地提供所述第三结果或所述第四结果。
15.根据权利要求14所述的装置,其中所述匹配元件包括:
第一多路复用器,其耦合到所述第一输入、所述第二输入及所述第一输出;及
第二多路复用器,其耦合到所述第三输入、所述第四输入及所述第二输出。
16.根据权利要求14所述的装置,其中所述匹配元件经配置以:
基于第一控制信号选择性地提供所述第一结果或所述第二结果;及
基于第二控制信号选择性地提供所述第三结果或所述第四结果。
17.一种方法,其包括:
在耦合到第一行路由线的匹配元件的第一数据输入处接收第一结果,所述第一结果包括由状态机的第一元件对数据流的至少一部分执行的分析而产生的匹配,其中所述状态机的所述第一元件包括第一多个检测单元,所述第一多个检测单元中的每一者耦合到相应的第一多个存储器单元;
在耦合到第二行路由线的匹配元件的第二数据输入处接收第二结果,所述第二结果包括由所述状态机的第二元件对所述数据流的至少一部分执行的分析而产生的第二匹配,其中所述状态机的所述第二元件包括第二多个检测单元,所述第二多个检测单元中的每一者耦合到相应的第二多个存储器单元;及
从所述匹配元件选择性地输出所述第一结果或所述第二结果。
18.根据权利要求17所述的方法,其包括在所述匹配元件处接收第一控制信号。
19.根据权利要求18所述的方法,其中从所述匹配元件选择性地输出所述第一结果或所述第二结果是基于所述控制信号。
20.根据权利要求17所述的方法,其包括:
在所述匹配元件处接收输出启用信号;及
基于所述输出启用信号选择性地不从所述匹配元件输出结果。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/327,591 | 2011-12-15 | ||
US13/327,591 US9443156B2 (en) | 2011-12-15 | 2011-12-15 | Methods and systems for data analysis in a state machine |
CN201280062293.5A CN103999035B (zh) | 2011-12-15 | 2012-12-05 | 用于状态机中的数据分析的方法及系统 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280062293.5A Division CN103999035B (zh) | 2011-12-15 | 2012-12-05 | 用于状态机中的数据分析的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107609644A true CN107609644A (zh) | 2018-01-19 |
CN107609644B CN107609644B (zh) | 2021-03-16 |
Family
ID=47561803
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280062293.5A Active CN103999035B (zh) | 2011-12-15 | 2012-12-05 | 用于状态机中的数据分析的方法及系统 |
CN201710652791.XA Active CN107609644B (zh) | 2011-12-15 | 2012-12-05 | 用于状态机中的数据分析的方法及系统 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280062293.5A Active CN103999035B (zh) | 2011-12-15 | 2012-12-05 | 用于状态机中的数据分析的方法及系统 |
Country Status (7)
Country | Link |
---|---|
US (4) | US9443156B2 (zh) |
EP (1) | EP2791781B1 (zh) |
JP (1) | JP6082753B2 (zh) |
KR (1) | KR101996961B1 (zh) |
CN (2) | CN103999035B (zh) |
TW (1) | TWI515669B (zh) |
WO (1) | WO2013090094A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113379047A (zh) * | 2021-05-25 | 2021-09-10 | 北京微芯智通科技合伙企业(有限合伙) | 一种实现卷积神经网络处理的系统及方法 |
Families Citing this family (37)
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 |
US8782624B2 (en) | 2011-12-15 | 2014-07-15 | Micron Technology, Inc. | Methods and systems for detection in a state machine |
US8593175B2 (en) | 2011-12-15 | 2013-11-26 | Micron Technology, Inc. | Boolean logic in a state machine lattice |
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 |
US8680888B2 (en) | 2011-12-15 | 2014-03-25 | Micron Technologies, Inc. | Methods and systems for routing in a state machine |
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 |
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 |
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 |
US9063532B2 (en) * | 2012-08-31 | 2015-06-23 | Micron Technology, Inc. | Instruction insertion in 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 |
FR3011659B1 (fr) * | 2013-10-04 | 2015-10-16 | Commissariat Energie Atomique | Circuit electronique, notamment apte a l'implementation d'un reseau de neurones, et systeme neuronal |
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 |
WO2016109571A1 (en) | 2014-12-30 | 2016-07-07 | Micron Technology, Inc | Devices for time division multiplexing of state machine engine signals |
CN104516820B (zh) * | 2015-01-16 | 2017-10-27 | 浪潮(北京)电子信息产业有限公司 | 一种独热码检测方法和独热码检测器 |
US10691964B2 (en) | 2015-10-06 | 2020-06-23 | Micron Technology, Inc. | Methods and systems for event reporting |
US10977309B2 (en) | 2015-10-06 | 2021-04-13 | Micron Technology, Inc. | Methods and systems for creating networks |
US10846103B2 (en) | 2015-10-06 | 2020-11-24 | Micron Technology, Inc. | Methods and systems for representing processing resources |
US10146555B2 (en) | 2016-07-21 | 2018-12-04 | Micron Technology, Inc. | Adaptive routing to avoid non-repairable memory and logic defects on automata processor |
US10268602B2 (en) | 2016-09-29 | 2019-04-23 | Micron Technology, Inc. | System and method for individual addressing |
US10019311B2 (en) | 2016-09-29 | 2018-07-10 | Micron Technology, Inc. | Validation of a symbol response memory |
US10929764B2 (en) | 2016-10-20 | 2021-02-23 | Micron Technology, Inc. | Boolean satisfiability |
US10592450B2 (en) | 2016-10-20 | 2020-03-17 | Micron Technology, Inc. | Custom compute cores in integrated circuit devices |
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 |
US10514914B2 (en) * | 2017-08-29 | 2019-12-24 | Gsi Technology Inc. | Method for min-max computation in associative memory |
US10826801B1 (en) | 2019-07-31 | 2020-11-03 | Bank Of America Corporation | Multi-level data channel and inspection architectures |
US11115310B2 (en) | 2019-08-06 | 2021-09-07 | Bank Of America Corporation | Multi-level data channel and inspection architectures having data pipes in parallel connections |
US11470046B2 (en) | 2019-08-26 | 2022-10-11 | Bank Of America Corporation | Multi-level data channel and inspection architecture including security-level-based filters for diverting network traffic |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020069379A1 (en) * | 2000-12-05 | 2002-06-06 | Cirrus Logic, Inc. | Servo data detection with improved phase shift tolerance |
CN1582533A (zh) * | 2001-10-29 | 2005-02-16 | 捷豹逻辑股份有限公司 | 用于现场可编程门阵列核心的可编程接口 |
US7366352B2 (en) * | 2003-03-20 | 2008-04-29 | International Business Machines Corporation | Method and apparatus for performing fast closest match in pattern recognition |
Family Cites Families (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04116475A (ja) | 1990-09-06 | 1992-04-16 | Hitachi Ltd | 半導体集積回路 |
US5357512A (en) * | 1992-12-30 | 1994-10-18 | Intel Corporation | Conditional carry scheduler for round robin scheduling |
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 |
US6097212A (en) * | 1997-10-09 | 2000-08-01 | Lattice Semiconductor Corporation | Variable grain architecture for FPGA integrated circuits |
US7333580B2 (en) * | 2002-01-28 | 2008-02-19 | Broadcom Corporation | Pipelined parallel processing of feedback loops in a digital circuit |
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 |
DE102004045527B4 (de) * | 2003-10-08 | 2009-12-03 | Siemens Ag | Konfigurierbare Logikschaltungsanordnung |
US7487542B2 (en) * | 2004-01-14 | 2009-02-03 | International Business Machines Corporation | Intrusion detection using a network processor and a parallel pattern detection engine |
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 |
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 |
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 |
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 |
US8938590B2 (en) | 2008-10-18 | 2015-01-20 | Micron Technology, Inc. | Indirect register access method and system |
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 |
US9639493B2 (en) | 2008-11-05 | 2017-05-02 | Micron Technology, Inc. | Pattern-recognition processor with results buffer |
US7970964B2 (en) | 2008-11-05 | 2011-06-28 | Micron Technology, Inc. | Methods and systems to accomplish variable width data input |
US7917684B2 (en) | 2008-11-05 | 2011-03-29 | Micron Technology, Inc. | Bus translator |
US20100118425A1 (en) | 2008-11-11 | 2010-05-13 | Menachem Rafaelof | Disturbance rejection in a servo control loop using pressure-based disc mode sensor |
US9164945B2 (en) | 2008-12-01 | 2015-10-20 | Micron Technology, Inc. | Devices, systems, and methods to synchronize parallel processing of a single data stream |
US20100138575A1 (en) | 2008-12-01 | 2010-06-03 | Micron Technology, Inc. | Devices, systems, and methods to synchronize simultaneous dma parallel processing of a single data stream by multiple devices |
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 |
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 |
US9836555B2 (en) | 2009-06-26 | 2017-12-05 | Micron Technology, Inc. | Methods and devices for saving and/or restoring a state of a pattern-recognition processor |
US9323994B2 (en) | 2009-12-15 | 2016-04-26 | Micron Technology, Inc. | Multi-level hierarchical routing matrices for pattern-recognition processors |
US8489534B2 (en) | 2009-12-15 | 2013-07-16 | Paul D. Dlugosch | Adaptive content inspection |
US9501705B2 (en) | 2009-12-15 | 2016-11-22 | Micron Technology, Inc. | Methods and apparatuses for reducing power consumption in a pattern recognition processor |
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 |
US8294490B1 (en) * | 2010-10-01 | 2012-10-23 | Xilinx, Inc. | Integrated circuit and method of asynchronously routing data in an integrated circuit |
EP2668577B1 (en) | 2011-01-25 | 2019-08-14 | Micron Technology, INC. | Unrolling quantifications to control in-degree and/or out degree of automaton |
JP5763784B2 (ja) * | 2011-01-25 | 2015-08-12 | マイクロン テクノロジー, インク. | 要素利用のための状態のグループ化 |
US8726253B2 (en) * | 2011-01-25 | 2014-05-13 | Micron Technology, Inc. | Method and apparatus for compiling regular expressions |
US8843911B2 (en) | 2011-01-25 | 2014-09-23 | Micron Technology, Inc. | Utilizing special purpose elements to implement a FSM |
US9443156B2 (en) | 2011-12-15 | 2016-09-13 | Micron Technology, Inc. | Methods and systems for data analysis in a state machine |
US8648621B2 (en) | 2011-12-15 | 2014-02-11 | Micron Technology, Inc. | Counter operation in a state machine lattice |
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 |
US8593175B2 (en) | 2011-12-15 | 2013-11-26 | Micron Technology, Inc. | Boolean logic in a state machine lattice |
US8536896B1 (en) * | 2012-05-31 | 2013-09-17 | Xilinx, Inc. | Programmable interconnect element and method of implementing a programmable interconnect element |
-
2011
- 2011-12-15 US US13/327,591 patent/US9443156B2/en active Active
-
2012
- 2012-12-05 JP JP2014547290A patent/JP6082753B2/ja active Active
- 2012-12-05 CN CN201280062293.5A patent/CN103999035B/zh active Active
- 2012-12-05 CN CN201710652791.XA patent/CN107609644B/zh active Active
- 2012-12-05 KR KR1020147018494A patent/KR101996961B1/ko active IP Right Grant
- 2012-12-05 EP EP12816168.4A patent/EP2791781B1/en active Active
- 2012-12-05 WO PCT/US2012/067999 patent/WO2013090094A1/en active Application Filing
- 2012-12-14 TW TW101147678A patent/TWI515669B/zh active
-
2016
- 2016-09-12 US US15/262,958 patent/US9870530B2/en active Active
-
2018
- 2018-01-15 US US15/871,660 patent/US10733508B2/en active Active
-
2020
- 2020-06-30 US US16/917,221 patent/US11977977B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020069379A1 (en) * | 2000-12-05 | 2002-06-06 | Cirrus Logic, Inc. | Servo data detection with improved phase shift tolerance |
CN1582533A (zh) * | 2001-10-29 | 2005-02-16 | 捷豹逻辑股份有限公司 | 用于现场可编程门阵列核心的可编程接口 |
US7366352B2 (en) * | 2003-03-20 | 2008-04-29 | International Business Machines Corporation | Method and apparatus for performing fast closest match in pattern recognition |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113379047A (zh) * | 2021-05-25 | 2021-09-10 | 北京微芯智通科技合伙企业(有限合伙) | 一种实现卷积神经网络处理的系统及方法 |
CN113379047B (zh) * | 2021-05-25 | 2024-04-05 | 北京微芯智通科技合伙企业(有限合伙) | 一种实现卷积神经网络处理的系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
US10733508B2 (en) | 2020-08-04 |
CN103999035B (zh) | 2017-09-22 |
US11977977B2 (en) | 2024-05-07 |
EP2791781B1 (en) | 2021-07-14 |
JP6082753B2 (ja) | 2017-02-15 |
US20180137416A1 (en) | 2018-05-17 |
KR20140104991A (ko) | 2014-08-29 |
CN103999035A (zh) | 2014-08-20 |
CN107609644B (zh) | 2021-03-16 |
JP2015507255A (ja) | 2015-03-05 |
US20160379114A1 (en) | 2016-12-29 |
TWI515669B (zh) | 2016-01-01 |
KR101996961B1 (ko) | 2019-07-05 |
TW201333838A (zh) | 2013-08-16 |
EP2791781A1 (en) | 2014-10-22 |
US9870530B2 (en) | 2018-01-16 |
US20200334533A1 (en) | 2020-10-22 |
WO2013090094A1 (en) | 2013-06-20 |
US9443156B2 (en) | 2016-09-13 |
US20130159239A1 (en) | 2013-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103999035B (zh) | 用于状态机中的数据分析的方法及系统 | |
CN104011736B (zh) | 用于状态机中的检测的方法及系统 | |
US11741014B2 (en) | Methods and systems for handling data received by a state machine engine | |
CN103988212B (zh) | 用于在状态机中路由的方法及系统 | |
CN104011723B (zh) | 状态机晶格中的布尔逻辑 | |
CN104067282B (zh) | 状态机晶格中的计数器操作 | |
CN105051711B (zh) | 用于提供由状态机引擎接收的数据的方法及设备 | |
CN104603742B (zh) | 用于状态机引擎的结果产生 | |
CN104487956B (zh) | 用于使用状态机引擎中的状态向量数据的方法及系统 | |
US10769099B2 (en) | Devices for time division multiplexing of state machine engine signals |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |