CN108256164B - 状态机晶格中的布尔逻辑 - Google Patents

状态机晶格中的布尔逻辑 Download PDF

Info

Publication number
CN108256164B
CN108256164B CN201711417499.6A CN201711417499A CN108256164B CN 108256164 B CN108256164 B CN 108256164B CN 201711417499 A CN201711417499 A CN 201711417499A CN 108256164 B CN108256164 B CN 108256164B
Authority
CN
China
Prior art keywords
boolean logic
logic cell
output
function
input
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201711417499.6A
Other languages
English (en)
Other versions
CN108256164A (zh
Inventor
哈罗德·B·诺伊斯
戴维·R·布朗
保罗·格伦迪宁
艾琳·J·许
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN108256164A publication Critical patent/CN108256164A/zh
Application granted granted Critical
Publication of CN108256164B publication Critical patent/CN108256164B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17704Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form the logic functions being realised by the interconnection of rows and columns
    • H03K19/17708Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form the logic functions being realised by the interconnection of rows and columns using an AND matrix followed by an OR matrix, i.e. programmable logic arrays
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/045Programme control other than numerical control, i.e. in sequence controllers or logic controllers using logic state machines, consisting only of a memory or a programmable logic device containing the logic for the controlled machine and in which the state of its outputs is dependent on the state of its inputs or part of its own output states, e.g. binary decision controllers, finite state controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4498Finite state machines
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17704Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form the logic functions being realised by the interconnection of rows and columns
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/20Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/20Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
    • H03K19/21EXCLUSIVE-OR circuits, i.e. giving output if input signal exists at only one input; COINCIDENCE circuits, i.e. giving output only if all input signals are identical
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/0175Coupling arrangements; Interface arrangements
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02TCLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
    • Y02T10/00Road transport of goods or passengers
    • Y02T10/80Technologies aiming to reduce greenhouse gasses emissions common to all road transportation technologies
    • Y02T10/82Elements for improving aerodynamics

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Automation & Control Theory (AREA)
  • Logic Circuits (AREA)

Abstract

本申请涉及状态机晶格中的布尔逻辑。在一个实施例中揭示若干方法及装置,其中存在一种包含有限状态机晶格(30)的装置。所述晶格(30)可包含可经编程以对数据流执行各种逻辑函数的可编程布尔逻辑单元(58B)。所述可编程性包含到所述布尔逻辑单元(58B)的第一输入的反相、所述布尔逻辑单元(58B)的最后输出的反相及“与”门或者“或”门作为所述布尔逻辑单元(58B)的最终输出的选择。所述布尔逻辑单元(58B)还包含经配置以致使所述布尔逻辑单元(58B)仅在于所述布尔逻辑单元(58B)处接收到表示数据流的结束的数据结束之后输出的数据结束电路。

Description

状态机晶格中的布尔逻辑
分案申请的相关信息
本案是分案申请。该分案的母案是申请日为2012年12月5日、申请号为201280062171.6、发明名称为“状态机晶格中的布尔逻辑”的发明专利申请案。
技术领域
本发明的实施例一般来说涉及电子装置,且更具体来说,在某些实施例中涉及用于型式辨识的平行有限状态机。
背景技术
在计算领域中,型式辨识任务日益具挑战性。在计算机之间传输的数据量越来越大,且用户希望检测的型式的数目日益增加。举例来说,通常通过搜索数据流中的型式(例如,特定短语或代码片段)来检测垃圾邮件及恶意软件。型式的数目随垃圾邮件及恶意软件的多样化而增加,因为新型式可经实施以搜索新变化形式。
辨识一型式可通常涉及确定是否满足了指示所述型式的所匹配条件的各种组合。可在型式辨识计算中实施布尔逻辑以确定所匹配条件的各种组合。举例来说,可使用“与”门、“或”门、“或非”门及“与非”门来确定所匹配条件的各种组合。发明人已确定通过增加可用于型式辨识计算的逻辑运算的数目来增加布尔逻辑的多功能性可为有用的。
发明内容
本申请的一个方面涉及一种装置。在一个实施例中,所述装置包括状态机晶格,其包括:多个块,每一块包括多个行,所述行中的每一者包括多个可编程元件,其中所述可编程元件中的特定一者经配置以基于条件的检测而输出信号;且所述块中的特定一者的所述行中的至少一者进一步包括布尔逻辑单元,所述布尔逻辑单元经配置以可选择性地耦合到所述块中的所述特定一者的所述多个行中的任一者中的所述可编程元件中的任一者,其中所述布尔逻辑单元经配置以输出逻辑函数的结果。
本申请的另一方面涉及一种在状态机晶格中的布尔逻辑单元处执行逻辑运算的方法。在一个实施例中,所述方法包括:在所述状态机晶格中处理数据流以检测多个条件;在所述状态机晶格中的可编程布尔逻辑单元中对所检测的所述条件执行逻辑函数;及输出所述逻辑函数的结果。
本申请的再一方面涉及一种对状态机晶格中的布尔逻辑单元编程的方法。在一个实施例中,所述方法包括对所述状态机晶格中的所述布尔逻辑单元编程以执行多个可编程逻辑函数中的特定逻辑函数。
本申请的又一方面涉及一种状态机晶格的布尔逻辑单元。在一个实施例中,所述布尔逻辑单元经配置以选择性地耦合到状态机晶格中的可编程元件,其中所述布尔逻辑单元经配置以从选择性地耦合到其的所述可编程元件的输出接收输入且可编程以对所述输入执行多个可能逻辑函数中的选定逻辑函数。
附图说明
图1图解说明根据本发明的各种实施例的具有状态机引擎的***的实例。
图2图解说明根据本发明的各种实施例的图1的状态机引擎的FSM晶格的实例。
图3图解说明根据本发明的各种实施例的图2的FSM晶格的块的实例。
图4图解说明根据本发明的各种实施例的图3的块的行的实例。
图5图解说明根据本发明的各种实施例的图4的行的两个一群组的实例。
图6图解说明根据本发明的各种实施例的有限状态机图的实例。
图7图解说明根据本发明的各种实施例的借助FSM晶格实施的两层级层次的实例。
图8图解说明根据本发明的各种实施例的用于编译器将源代码转换成二进制文件以用于编程图2的FSM晶格的方法的实例。
图9图解说明根据本发明的各种实施例的状态机引擎。
图10图解说明根据本发明的各种实施例的如图3中的块,所述块在所述块的行中具有布尔逻辑单元。
图11图解说明根据本发明的各种实施例的图10的布尔逻辑单元的电路表示。
图12图解说明根据本发明的各种实施例的可使用图11的布尔逻辑单元执行的“与”函数的电路表示。
图13图解说明根据本发明的各种实施例的可使用图11的布尔逻辑单元执行的积和(SoP)函数的电路表示。
图14图解说明根据本发明的各种实施例的可使用图11的布尔逻辑单元执行的“与非”函数的电路表示。
图15图解说明根据本发明的各种实施例的可使用图11的布尔逻辑单元执行的否定输出积和(NSoP)函数的电路表示。
图16图解说明根据本发明的各种实施例的可使用图11的布尔逻辑单元执行的“或非”函数的电路表示。
图17图解说明根据本发明的各种实施例的可使用图11的布尔逻辑单元执行的否定输出和积(NPoS)函数的电路表示。
图18图解说明根据本发明的各种实施例的可使用图11的布尔逻辑单元执行的“或”函数的电路表示。
图19图解说明根据本发明的各种实施例的可使用图11的布尔逻辑单元执行的和积(PoS)函数的电路表示。
具体实施方式
现在转到各图,图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的另一SME34、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。在一实例中,如上文所论述,第一SME34及第二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处于作用状态中时,SME34在对应于位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以耦合到第二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的输出可包含指示给定型式的匹配的单个位、包括指示与多个型式的匹配及不匹配的多个位的字及对应于所有或某些可编程元件在给定时刻的状态的状态向量。如所描述,若干个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的硬件元件(例如,SME34、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以用于存储用于设置及使用的保存与修复映射。
如所论述,在一些实施例中,块32中的行38中的每一者可包含一或多个专用元件58,例如计数器、可编程布尔逻辑单元、查找表RAM、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、可编程处理器(例如,微处理器)或用于执行专用功能的其它元件。专用元件58可借助每一行38中的一或多个GOT 60连接到行内交换元件。此外,来自每一行38的输出可连接到块内交换元件42,块内交换元件42可通过块间交换元件40连接。
图10是具有各自包含专用元件58的行38的块32的实例的图解说明。举例来说,块32中的专用元件58可包含计数器单元58A及布尔逻辑单元58B。尽管图10中仅图解说明行位置0到4中的行38(例如,标记为38A至38E),但每一块32可具有任何数目个行38(例如,16个行38)且一或多个专用元件58可配置于行38中的每一者中。举例来说,在一个实施例中,计数器单元58A可配置于某些行38中(例如,在行位置0、4、8及12中),而布尔逻辑单元58B可配置于16个行38中的剩余行中(例如,在行位置1、2、3、5、6、7、9、10、11、13、14、15及16中)。GOT60与专用元件58可经由行内交换元件44、块内交换元件42及/或块间交换元件40选择性地耦合到晶格中的元件。
应注意,尽管图10将每一行38描绘为具有一个计数器单元58A或一个布尔逻辑单元58B,但行38不限于具有仅一个专用元件58。举例来说,在一些实施例中,一或多个行38可具有一或多个计数器58A及额外专用元件58。包含计数器58A的专用元件58可能够经由(举例来说)行38内的行内交换元件44与其它专用元件58通信。此外,计数器58A不限于12位递减计数器。在一些实施例中,也可使用不同位大小的适合计数器及/或递增到初始值的计数器。
在一些实施例中,每一行38中的每一作用GOT 60可输出指示检测到一或多个条件的信号,且专用元件58可接收选择性地耦合到其的GOT 60的输出以执行各种可能函数中的至少一者。举例来说,布尔逻辑单元58B可用以执行逻辑函数,例如“与”函数、“或”函数、“与非”函数、“或非”函数、积和(SoP)函数、否定输出积和(NSoP)函数、否定输出和积(NPoS)函数及和积(PoS)函数。此外,来自计数器58A及/或布尔逻辑单元58B的输出可经由(举例来说)行内交换元件44及块内交换元件42通信以执行具有较大复杂度的计数或逻辑函数。在一些实施例中,可共同地使用不同专用元件58(例如计数器58A与布尔逻辑单元58B)。举例来说,可由块32中的一或多个计数器58A计数一或多个布尔逻辑单元58B的输出。
尽管图10中简化了布尔逻辑单元58B与块32的其它元件之间的可能连接,但布尔逻辑单元58B可具有可选择性地耦合到(举例来说)GOT 60的多个输入以及多个可编程输入。图11的逻辑图160中图解说明布尔逻辑单元58B的表示。逻辑图160是布尔逻辑单元58B中的逻辑元件的配置的一个实例。在一些实施例中,布尔逻辑单元58B可具有三个可编程位。第一可编程位包含将单元58B的第一输入反相,第二可编程位包含将单元58B的最后输出反相,且第三可编程位包含“与”门或者“或”门作为单元58B的最终输出门的选择。在一些实施例中,特定逻辑单元58B的三个可编程位可通过由编译器产生的图像而编程以对选择性地耦合到逻辑元件的GOT输出执行多种可能逻辑运算中的选定一者。取决于将执行的逻辑运算,可编程三个可编程位的任何组合以经由布尔逻辑单元58B产生不同逻辑运算。
如由逻辑图160所表示,在特定实施例中,举例来说,布尔逻辑单元58B可具有可经由编程晶格而选择性地耦合到其它元件(例如GOT 60)的输出的16个输入162。另外,布尔逻辑单元还可经由行内交换元件44、块内交换元件42及块间交换元件40选择性地耦合到其它行38中的其它元件或其它块32中的其它元件。不同元件之间的不同选择性耦合可至少部分地由通过编译器20加载的图像确定。可经由反相输入166施加第一可编程位(第一输入(即,输入162)的反相)。所述反相输入可将适合电压施加到可用作受控制反相器的“异或”门168的输入。在一些实施例中,如果反相输入166为低的,那么可使GOT输入162通过“异或”门168,且当反相输入166为高时,可在经由“异或”门168输出时将GOT输入162反相。
来自“异或”门168的输出可为到“或”门170中的第一输入。到“或”门170中的第二输入可为掩蔽输入线164。掩蔽输入线164可将高信号输入于与输入162相关联的一或多个“或”门170中以选择性地停用一或多个输入162或将低信号输入于一或多个“或”门170中以选择性地启用输入162中的一或多者。在一些实施例中,可(举例来说)通过寄存器设定或通过每一行38或块32中的选择性耦合来确定掩蔽输入线164。
如果掩蔽输入启用“或”门170以使来自“异或”门168的输出(GOT输入162或逆GOT输入)进行下去,那么可经由一系列“与”门172及176传输“或”门170的输出。第一组172的“与”门174可对与每一输入162相关联的“或”门170的两个或两个以上输出执行“与”运算,且第二组176的“与”门178可对第一组172的“与、”门174的输出执行“与”运算。
第二组176的“与”门的输出可输入到“与”门180或者“或”门182中。“与”门180或者“或”门182的选择可为布尔逻辑单元58B的第二可编程位。第三编程位包含可输入到可表示用于“与”门180或者“或”门182的输出的受控制反相器的“异或”门186的反相输出信号184。
在一些实施例中,布尔逻辑单元58B可用以确定是否已在已处理将评估的数据流中的所有数据之后发生匹配。举例来说,布尔逻辑单元58B可用以确定是否已检测到条件A与B的组合,其中可能的情况是,在可于数据流中检测到条件B之前可在所述数据流中检测到条件A(或反之亦然)。举例来说,布尔逻辑单元58B可用以确定“在数据结束处匹配”情形,其中可仅在数据流的结束处确定匹配。此外,布尔逻辑单元58B可用以确定“此且非彼”情形,其中匹配可在已发生条件A(此)且未发生条件B(彼)时发生。
在一些实施例中,布尔逻辑单元58B可包含可耦合到“或”门190的数据结束输入188(也称为锚点)。举例来说,数据结束输入188可用以确定“在数据结束处匹配”情形或“此且非彼情形”。数据结束输入188可阻挡布尔逻辑单元58B的输出直到数据结束输入188为高的。“或”门190的另一输入可为掩蔽输入165,掩蔽输入165可在掩蔽输入165为高时停用经由“或”门对数据结束信号188的传输或在掩蔽输入165为低时启用数据结束信号188的输出192。来自“或”门190的数据结束输出192可输入到“与”门194中。当数据结束输入188为低时,来自“与”门194的输出196为低的。如果数据结束输入188为高的且“异或”门186的输出也为高的,那么“异或”门186的输出可作为输出196通过“与”门194。因此,只有在“异或”门186的输出为高的且数据结束信号192已在“与”门194处输入从而指示数据流的处理完成的情况下,输出196才为高的。
三个可编程位(例如,反相输入信号166、反相输出信号184及最终输出“与”门180或者“或”门182之间的选择)的不同编程组合可产生可在每一布尔逻辑单元58B中执行的8(即,23)个可能逻辑函数。图12到19中表示等效逻辑电路图,其中图12到15的函数是未将第一反相输入信号166反相的结果,且图16到19的函数是将第一反相输入信号166反相的结果。图12、13、16及17是未将最后反相输出信号184反相的结果,且图14、15、18及19是将最后反相输出信号184反相的结果。此外,图12、14、16及18是选择“与”门180作为布尔逻辑单元58B的最终输出门的结果,且图13、15、17及19是选择“或”门182作为布尔逻辑单元58B的最终输出门的结果。
图12到19中所表示的逻辑函数中的每一者描绘对选择性地耦合到元件(例如行38中的GOT 60)的输出的输入162执行的函数。然而,可对选择性地耦合到一或多个元件(例如GOT)的输出的一或多个输入执行每一函数,且可通过每一行38中的布尔逻辑单元58B对输入162执行多于一个函数。此外,对于其中将在确定匹配之前处理整个数据集的运算,每一逻辑函数可包含在输入数据结束信号188时输出196的最后“与”门194。对于其中未考量数据结束信号的运算,可通过可能不将数据结束信号输出到“与”门194的掩蔽输入165掩蔽“或”门190。
图12是由非反相输入166、非反相输出184以及“与”门180的选择产生的经编程逻辑函数的等效逻辑电路图200。用于等效逻辑图200中的“与”门202可表示一或多个“与”门(例如,经由来自图11的“与”门组172及176)。等效逻辑图200可对输入162执行“与”函数。图13是由非反相输入166、非反相输出184及“或”门182的选择产生的经编程逻辑函数的等效逻辑电路图204。等效逻辑图204可对输入162执行积和(SoP)函数。
图14是由非反相输入166、反相输出184(由反相器208表示)以及“与”门180的选择产生的经编程逻辑函数的等效逻辑电路图206。等效逻辑图206可对输入162执行“与非”函数。由于等效逻辑图206中的最后反相输出184的反相,“与非”函数的输出可为等效逻辑图200中的“与”函数的输出的逆(非“与”)。图15是由非反相输入166、反相输出184(由反相器208表示)及“或”门182的选择产生的经编程逻辑函数的等效逻辑电路图210。等效逻辑图210可对输入162执行否定输出积和NSoP函数。由于等效逻辑图210中的最后反相输出184的反相,NSoP函数的输出可为等效逻辑图204中的SoP函数的输出的逆(否定SoP)。
图16是由反相输入166(由反相器208表示)、非反相输出184以及“与”门180的选择产生的经编程逻辑函数的等效逻辑电路图212。等效逻辑图212可对输入162执行“或非”函数。由于第一反相输入166的反相,负逻辑元件可用以表示“或非”函数212中的逻辑门。举例来说,“与”门214的输入及输出处的泡泡圈可表示所述输入及输出处的反相,此可使“与”门214成为“或”门(例如,“或”门170)的逻辑等效形式。“或”门216及218的输入及输出处的泡泡圈可表示所述输入及输出处的反相,此使“或”门216及218成为两个“与”门(例如,分别为“与”门202及180)的逻辑等效形式。如此,反相“或”门218可表示选定“与”门180。为了编程“或非”函数212以在反相输入(由208表示)的情况下具有非反相输出,门220的输入及输出处的反相(再次由泡泡圈表示)可产生非反相缓冲器门220。
图17是由反相输入166(由反相器208表示)、非反相输出184(由缓冲器门220表示)及“或”门182的选择产生的经编程逻辑函数的等效逻辑电路图222。等效逻辑图222可对输入162执行否定输出和积(NPoS)函数。由于第一反相输入166的反相,负逻辑元件可用以表示NPoS函数222中的逻辑门。举例来说,“与”门224的输入及输出处的泡泡圈可表示所述输入及输出处的反相,此可使“与”门224成为“或”门(例如,“或”门182)的逻辑等效形式。如此,反相“与”门224可表示选定“或”门182。
图18是由反相输入166(由反相器208表示)、反相输出184以及“与”门180(由负“或”门218表示)的选择产生的经编程逻辑函数的等效逻辑电路图226。等效逻辑图226可对输入162执行“或”函数。由于最后反相输出184(由反相器208表示)的反相,负逻辑元件可用以表示“或”函数226中的逻辑门。此外,由于将“或”函数226的输出反相,因此门230处的输入可依据第一输入(反相器208)的反相而反相,且门230可为低态有效输入。
图19是由反相输入166(由反相器208表示)、反相输出184(由低态有效输入门230表示)及“或”门182(由负“与”门224表示)的选择产生的经编程逻辑函数的等效逻辑电路图230。等效逻辑图232可对输入162执行和积(PoS)函数。
尽管可易于对本发明做出各种修改及替代形式,但已在图式中通过举例方式展示且在本文中详细描述了特定实施例。然而,应理解,本发明并不意欲限于所揭示的特定形式。而是,本发明意欲涵盖如由以下随附申请专利范围定义的本发明的精神及范畴内的所有修改形式、等效形式及替代方案。

Claims (27)

1.一种用于执行逻辑运算的装置,其包括:
状态机晶格,其包括:
多个块,每一块包括多个行,所述多个行中的每一者包括组织成两个一群组GOT的多个可编程元件,每一GOT包括所述多个可编程元件中的一对可编程元件,其中所述GOT中的每一GOT经配置以输出指示检测到一或多个条件的信号,其中所述信号包括来自所述GOT的所述一对可编程元件中的第一可编程元件的第一信号、来自所述GOT的所述一对可编程元件中的可编程元件的第二信号、或基于所述第一信号和所述第二信号的共同输出;以及
所述多个块中的特定一者的所述多个行中的至少一者进一步包括与所述多个可编程元件相异的专用元件,其中所述专用元件包括用于执行逻辑函数的布尔逻辑单元,其中所述布尔逻辑单元经配置以能选择性地耦合到所述多个块中的所述特定一者的所述多个行中的任一者中的所述GOT中的任一者以从所述GOT中的相应GOT接收指示检测到所述一或多个条件的所述信号,其中所述布尔逻辑单元经配置以输出所述逻辑函数的结果。
2.根据权利要求1所述的装置,其中所述逻辑函数是通过以下操作来确定:将所述布尔逻辑单元的输入编程为反相或非反相,将所述布尔逻辑单元的输出编程为反相或非反相,并将“与”门或者“或”门编程为所述布尔逻辑单元的最终输出。
3.根据权利要求2所述的装置,其中所述布尔逻辑单元经配置以在所述布尔逻辑单元的所述输入被编程为非反相、所述布尔逻辑单元的所述输出被编程为反相且所述“与”门被编程为所述布尔逻辑单元的所述最终输出时输出“与非”函数的结果。
4.根据权利要求2所述的装置,其中所述布尔逻辑单元经配置以在所述布尔逻辑单元的所述输入被编程为反相、所述布尔逻辑单元的所述输出被编程为非反相且所述“与”门被编程为所述布尔逻辑单元的所述最终输出时输出“或非”函数的结果。
5.根据权利要求2所述的装置,其中所述布尔逻辑单元经配置以在所述布尔逻辑单元的所述输入被编程为非反相、所述布尔逻辑单元的所述输出被编程为反相且所述“或”门被编程为所述布尔逻辑单元的所述最终输出时输出否定输出积和函数的结果。
6.根据权利要求2所述的装置,其中所述布尔逻辑单元经配置以在所述布尔逻辑单元的所述输入被编程为反相、所述布尔逻辑单元的所述输出被编程为非反相且所述“或”门被编程为所述布尔逻辑单元的所述最终输出时输出否定输出和积函数的结果。
7.根据权利要求2所述的装置,其中所述布尔逻辑单元经配置以在所述布尔逻辑单元的所述输入被编程为反相、所述布尔逻辑单元的所述输出被编程为反相且所述“或”门被编程为所述布尔逻辑单元的所述最终输出时输出和积函数的结果。
8.根据权利要求2所述的装置,其中所述输入包括16个输入中的一者。
9.根据权利要求1所述的装置,其中所述多个块中的所述特定一者的所述多个行中的每一者包括经配置以选择性地将所述行的所述GOT中的任一者与所述布尔逻辑单元耦合的行内电路。
10.根据权利要求9所述的装置,其中所述多个块中的每一者包括经配置以选择性地耦合所述块的所述多个行中的任一者的块内电路,其中所述块的所述多个行中的一者中的一布尔逻辑单元能耦合到所述块的所述多个行中的另一者中的另一布尔逻辑单元。
11.根据权利要求10所述的装置,其中所述状态机晶格包括经配置以选择性地耦合所述多个块中的任一者的块间电路,其中所述多个块中的所述特定一者中的所述布尔逻辑单元能经由所述行内电路、所述块内电路及所述块间电路选择性地耦合到所述多个块中的另一者中的可编程元件。
12.根据权利要求1所述的装置,其中所述多个块中的所述特定一者的所述多个行中不包括布尔逻辑单元的特定一者包括计数器,其中所述计数器经由行内电路及块内电路能选择性地耦合到所述布尔逻辑单元。
13.根据权利要求2所述的装置,其中所述布尔逻辑单元包括经配置以接收掩蔽所述布尔逻辑单元的所述输入的掩蔽输入信号的掩蔽输入。
14.根据权利要求1所述的装置,其中所述布尔逻辑单元包括数据结束电路,其中所述数据结束电路经配置以使得所述布尔逻辑单元在所述数据结束电路接收到指示已处理数据流中的所有数据的数据结束信号时输出。
15.根据权利要求14所述的装置,其中所述数据结束电路包括“或”门以及连接到输出“与”门的输出,所述“或”门包括掩蔽输入及数据结束输入,其中所述输出“与”门在所述数据结束电路接收到所述数据结束信号时输出所述逻辑函数的所述结果。
16.根据权利要求1所述的装置,其包括服务器、个人记事本、工作站、路由器、网络交换器、芯片测试设备、桌上型计算机、膝上型计算机、手机、媒体播放器、游戏控制台或包括所述状态机晶格的大型计算机。
17.一种在状态机晶格中的布尔逻辑单元处执行逻辑运算的方法,所述状态机晶格包括组织成两个一群组GOT的多个可编程元件,每一GOT包括所述多个可编程元件中的一对可编程元件和与所述多个可编程元件相异的专用元件,所述方法包括:
经由所述多个可编程元件在所述状态机晶格中处理数据流以检测多个条件;
在作为所述状态机晶格中的所述专用元件的可编程布尔逻辑单元中对所检测的所述条件执行逻辑函数;及
输出所述逻辑函数的结果。
18.根据权利要求17所述的方法,其中执行所述逻辑函数包括执行“与非”函数、“或非”函数、否定输出积和函数或否定输出和积函数中的一者。
19.根据权利要求17所述的方法,其包括在所述布尔逻辑单元处接收数据结束信号,其中所述数据结束信号表示已对整个所述数据流执行所述逻辑函数。
20.根据权利要求19所述的方法,其包括仅在于所述布尔逻辑单元处接收到所述数据结束信号时输出所述结果。
21.一种将布尔逻辑单元编程为状态机晶格中的专用元件的方法,所述状态机晶格包括组织成两个一群组GOT的多个可编程元件,每一GOT包括所述多个可编程元件中的一对可编程元件,其中所述专用元件与所述多个可编程元件相异,所述方法包括对所述状态机晶格中的所述布尔逻辑单元编程以执行多个可编程逻辑函数中的特定逻辑函数。
22.根据权利要求21所述的方法,其中对所述布尔逻辑单元编程以执行特定逻辑函数包括:对所述布尔逻辑单元编程以对数据流的一个部分执行第一逻辑函数,并对所述布尔逻辑单元编程以对所述数据流的另一部分执行第二逻辑函数。
23.根据权利要求21所述的方法,其中对所述布尔逻辑单元编程以执行特定逻辑函数包括:将所述布尔逻辑单元的第一输入编程为反相或非反相,将所述布尔逻辑单元的最后输出编程为反相或非反相,并将“与”门或者“或”门编程为所述布尔逻辑单元的最终逻辑输出。
24.一种作为状态机晶格的专用元件的布尔逻辑单元,所述状态机晶格包括组织成两个一群组GOT的多个可编程元件,每一GOT包括所述多个可编程元件中的一对可编程元件,其中所述专用元件与所述多个可编程元件相异,其中所述布尔逻辑单元经配置以选择性地耦合到所述状态机晶格中的所述多个可编程元件的可编程元件,其中所述布尔逻辑单元经配置以从选择性地耦合到其的所述可编程元件的输出接收输入且可编程以对所述输入执行多个可能逻辑函数中的选定逻辑函数。
25.根据权利要求24所述的布尔逻辑单元,其中所述布尔逻辑单元进一步经配置以:
接收表示整个数据流已由所述布尔逻辑单元处理的锚点信号;及
仅在接收到所述锚点信号之后输出所述选定逻辑函数的结果。
26.根据权利要求24所述的布尔逻辑单元,其中所述布尔逻辑单元经配置以选择性地耦合到计数器。
27.根据权利要求24所述的布尔逻辑单元,其中所述可能逻辑函数包括“与”函数、积和函数、“与非”函数、否定输出积和函数、“或非”函数、否定输出和积函数、“或”函数及和积函数。
CN201711417499.6A 2011-12-15 2012-12-05 状态机晶格中的布尔逻辑 Active CN108256164B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/327,510 US8593175B2 (en) 2011-12-15 2011-12-15 Boolean logic in a state machine lattice
US13/327,510 2011-12-15
CN201280062171.6A CN104011723B (zh) 2011-12-15 2012-12-05 状态机晶格中的布尔逻辑

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201280062171.6A Division CN104011723B (zh) 2011-12-15 2012-12-05 状态机晶格中的布尔逻辑

Publications (2)

Publication Number Publication Date
CN108256164A CN108256164A (zh) 2018-07-06
CN108256164B true CN108256164B (zh) 2022-01-21

Family

ID=47470171

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201711417499.6A Active CN108256164B (zh) 2011-12-15 2012-12-05 状态机晶格中的布尔逻辑
CN201280062171.6A Active CN104011723B (zh) 2011-12-15 2012-12-05 状态机晶格中的布尔逻辑

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201280062171.6A Active CN104011723B (zh) 2011-12-15 2012-12-05 状态机晶格中的布尔逻辑

Country Status (7)

Country Link
US (4) US8593175B2 (zh)
EP (1) EP2791835B1 (zh)
JP (1) JP6154824B2 (zh)
KR (1) KR101873619B1 (zh)
CN (2) CN108256164B (zh)
TW (1) TWI489779B (zh)
WO (1) WO2013090092A1 (zh)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100138575A1 (en) 2008-12-01 2010-06-03 Micron Technology, Inc. Devices, systems, and methods to synchronize simultaneous dma parallel processing of a single data stream by multiple devices
US20100174887A1 (en) 2009-01-07 2010-07-08 Micron Technology Inc. Buses for Pattern-Recognition Processors
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
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
US8593175B2 (en) * 2011-12-15 2013-11-26 Micron Technology, Inc. Boolean logic 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
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
US9448965B2 (en) 2013-03-15 2016-09-20 Micron Technology, Inc. Receiving data streams in parallel and providing a first portion of data to a first state machine engine and a second portion to a second state machine
US9703574B2 (en) 2013-03-15 2017-07-11 Micron Technology, Inc. Overflow detection and correction in state machine engines
WO2016109570A1 (en) 2014-12-30 2016-07-07 Micron Technology, Inc Systems and devices for accessing a state machine
US10769099B2 (en) 2014-12-30 2020-09-08 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
EP3259843B1 (en) * 2015-02-22 2022-03-02 Flex Logix Technologies, Inc. Mixed-radix and/or mixed-mode switch matrix architecture and integrated circuit, and method of operating same
CN105184365B (zh) * 2015-07-02 2018-02-09 清华大学 用于非精确计算的数模混合信号处理***
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
US10691964B2 (en) 2015-10-06 2020-06-23 Micron Technology, Inc. Methods and systems for event reporting
US9934826B2 (en) * 2016-04-14 2018-04-03 Semiconductor Energy Laboratory Co., Ltd. Semiconductor device
US10146555B2 (en) 2016-07-21 2018-12-04 Micron Technology, Inc. Adaptive routing to avoid non-repairable memory and logic defects on automata processor
US10097775B2 (en) * 2016-09-15 2018-10-09 Sensors Unlimited, Inc. Digital output binning
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
CA3079533A1 (en) * 2017-10-18 2019-04-25 Google Llc Simulation of quantum circuits
EP3874364A4 (en) * 2018-10-29 2022-08-03 Cryptography Research, Inc. TIME CONSTANT SAFE CONVERSION FROM ARITHMETIC TO BOOLEAN MASK
EP3672139A1 (en) * 2018-12-19 2020-06-24 Koninklijke Philips N.V. A circuit compiling device and circuit evaluation device
RU2713863C1 (ru) * 2019-03-22 2020-02-07 федеральное государственное бюджетное образовательное учреждение высшего образования "Ульяновский государственный технический университет" Ранговый селектор
US10715148B1 (en) * 2019-07-15 2020-07-14 Arm Limited Transient sensing circuitry
US10749528B2 (en) * 2019-08-20 2020-08-18 Intel Corporation Stacked programmable integrated circuitry with smart memory
CN116665308B (zh) * 2023-06-21 2024-01-23 石家庄铁道大学 双人交互时空特征提取方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5028821A (en) * 1990-03-01 1991-07-02 Plus Logic, Inc. Programmable logic device with programmable inverters at input/output pads
CN1284180A (zh) * 1997-12-16 2001-02-14 Ip半导体有限公司 利用布尔逻辑和可编程结构进行地址分析的方法和装置
US6700404B1 (en) * 2000-09-02 2004-03-02 Actel Corporation Tileable field-programmable gate array architecture
CN1648967A (zh) * 2004-01-07 2005-08-03 三星电子株式会社 加密装置、加密方法及其存储介质

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS626324A (ja) * 1985-07-03 1987-01-13 Ricoh Co Ltd デ−タ検出装置
DE69029390T2 (de) 1990-09-15 1997-06-12 Ibm Programmierbare Schaltung für eine neurale Logik
JPH05282362A (ja) * 1992-03-31 1993-10-29 Sharp Corp データ検索回路
US5455525A (en) * 1993-12-06 1995-10-03 Intelligent Logic Systems, Inc. Hierarchically-structured programmable logic array and system for interconnecting logic elements in the logic array
US5732246A (en) * 1995-06-07 1998-03-24 International Business Machines Corporation Programmable array interconnect latch
JP3196720B2 (ja) * 1998-03-20 2001-08-06 日本電気株式会社 連想メモリ制御回路及び制御方法
US6880087B1 (en) * 1999-10-08 2005-04-12 Cisco Technology, Inc. Binary state machine system and method for REGEX processing of a data stream in an intrusion detection system
US7860915B2 (en) 2003-12-29 2010-12-28 Xilinx, Inc. Digital signal processing circuit having a pattern circuit for determining termination conditions
US7487542B2 (en) 2004-01-14 2009-02-03 International Business Machines Corporation Intrusion detection using a network processor and a parallel pattern detection engine
JP4347087B2 (ja) * 2004-02-26 2009-10-21 日本電信電話株式会社 パターンマッチング装置および方法ならびにプログラム
US7392229B2 (en) 2005-02-12 2008-06-24 Curtis L. Harris General purpose set theoretic processor
TWI317486B (en) * 2006-09-15 2009-11-21 Univ Chung Yuan Christian Architecture for finite state machine decomposition
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
US20110049816A1 (en) * 2007-07-02 2011-03-03 Chung Jaan Industrial Co., Ltd. Quick connecting device structure
US7816943B2 (en) * 2008-06-16 2010-10-19 Microchip Technology Incorporated Programmable cycle state machine interface
US8209521B2 (en) 2008-10-18 2012-06-26 Micron Technology, Inc. Methods of indirect register access including automatic modification of a directly accessible address register
US8938590B2 (en) * 2008-10-18 2015-01-20 Micron Technology, Inc. Indirect register access method and system
US9639493B2 (en) 2008-11-05 2017-05-02 Micron Technology, Inc. Pattern-recognition processor with results buffer
US7970964B2 (en) 2008-11-05 2011-06-28 Micron Technology, Inc. Methods and systems to accomplish variable width data input
US7917684B2 (en) * 2008-11-05 2011-03-29 Micron Technology, Inc. Bus translator
US20100118425A1 (en) 2008-11-11 2010-05-13 Menachem Rafaelof Disturbance rejection in a servo control loop using pressure-based disc mode sensor
US10007486B2 (en) 2008-12-01 2018-06-26 Micron Technology, Inc. Systems and methods to enable identification of different data sets
US20100138575A1 (en) 2008-12-01 2010-06-03 Micron Technology, Inc. Devices, systems, and methods to synchronize simultaneous dma parallel processing of a single data stream by multiple devices
US9164945B2 (en) 2008-12-01 2015-10-20 Micron Technology, Inc. Devices, systems, and methods to synchronize parallel processing of a single data stream
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
US8281395B2 (en) * 2009-01-07 2012-10-02 Micron Technology, Inc. Pattern-recognition processor with matching-data reporting module
US20100174887A1 (en) 2009-01-07 2010-07-08 Micron Technology Inc. Buses for Pattern-Recognition Processors
US8214672B2 (en) 2009-01-07 2012-07-03 Micron Technology, Inc. Method and systems for power consumption management of a pattern-recognition processor
US8843523B2 (en) 2009-01-12 2014-09-23 Micron Technology, Inc. Devices, systems, and methods for communicating pattern matching results of a parallel pattern search engine
US9836555B2 (en) 2009-06-26 2017-12-05 Micron Technology, Inc. Methods and devices for saving and/or restoring a state of a pattern-recognition processor
US20110145934A1 (en) * 2009-10-13 2011-06-16 Miron Abramovici Autonomous distributed programmable logic for monitoring and securing electronic systems
US9501705B2 (en) 2009-12-15 2016-11-22 Micron Technology, Inc. Methods and apparatuses for reducing power consumption in a pattern recognition processor
US9323994B2 (en) 2009-12-15 2016-04-26 Micron Technology, Inc. Multi-level hierarchical routing matrices for pattern-recognition processors
US8489534B2 (en) 2009-12-15 2013-07-16 Paul D. Dlugosch Adaptive content inspection
US8601013B2 (en) 2010-06-10 2013-12-03 Micron Technology, Inc. Analyzing data using a hierarchical structure
US8766666B2 (en) * 2010-06-10 2014-07-01 Micron Technology, Inc. Programmable device, hierarchical parallel machines, and methods for providing state information
KR101551045B1 (ko) 2011-01-25 2015-09-07 마이크론 테크놀로지, 인크. 요소 이용을 위한 상태 그룹화
US8843911B2 (en) 2011-01-25 2014-09-23 Micron Technology, Inc. Utilizing special purpose elements to implement a FSM
US8726253B2 (en) * 2011-01-25 2014-05-13 Micron Technology, Inc. Method and apparatus for compiling regular expressions
WO2012103148A2 (en) 2011-01-25 2012-08-02 Micron Technology, Inc. Unrolling quantifications to control in-degree and/or out degree of automaton
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
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5028821A (en) * 1990-03-01 1991-07-02 Plus Logic, Inc. Programmable logic device with programmable inverters at input/output pads
CN1284180A (zh) * 1997-12-16 2001-02-14 Ip半导体有限公司 利用布尔逻辑和可编程结构进行地址分析的方法和装置
US6700404B1 (en) * 2000-09-02 2004-03-02 Actel Corporation Tileable field-programmable gate array architecture
CN1648967A (zh) * 2004-01-07 2005-08-03 三星电子株式会社 加密装置、加密方法及其存储介质

Also Published As

Publication number Publication date
CN104011723B (zh) 2018-01-26
JP2015508588A (ja) 2015-03-19
US20150365091A1 (en) 2015-12-17
US20140077838A1 (en) 2014-03-20
US20130154685A1 (en) 2013-06-20
US20170077930A1 (en) 2017-03-16
KR101873619B1 (ko) 2018-07-02
US8593175B2 (en) 2013-11-26
US9509312B2 (en) 2016-11-29
US9118327B2 (en) 2015-08-25
EP2791835A1 (en) 2014-10-22
CN108256164A (zh) 2018-07-06
WO2013090092A1 (en) 2013-06-20
US9866218B2 (en) 2018-01-09
KR20140102274A (ko) 2014-08-21
EP2791835B1 (en) 2021-06-30
TWI489779B (zh) 2015-06-21
CN104011723A (zh) 2014-08-27
JP6154824B2 (ja) 2017-06-28
TW201347409A (zh) 2013-11-16

Similar Documents

Publication Publication Date Title
CN108256164B (zh) 状态机晶格中的布尔逻辑
US11977977B2 (en) Methods and systems for data analysis in a state machine
US9886017B2 (en) Counter operation in a state machine lattice
CN107256156B (zh) 用于状态机中的检测的方法及***

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