CN103430148B - 用于元件利用的状态分组 - Google Patents
用于元件利用的状态分组 Download PDFInfo
- Publication number
- CN103430148B CN103430148B CN201280013903.2A CN201280013903A CN103430148B CN 103430148 B CN103430148 B CN 103430148B CN 201280013903 A CN201280013903 A CN 201280013903A CN 103430148 B CN103430148 B CN 103430148B
- Authority
- CN
- China
- Prior art keywords
- state
- automat
- sme
- netlist
- group
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/31—Design entry, e.g. editors specifically adapted for circuit design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/323—Translation or migration, e.g. logic to logic, hardware description language [HDL] translation or netlist translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4498—Finite state machines
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Devices For Executing Special Programs (AREA)
- Logic Circuits (AREA)
- Image Processing (AREA)
- Image Analysis (AREA)
- Multi Processors (AREA)
- Stored Programmes (AREA)
Abstract
揭示一种系统及方法的实施例,所述系统及方法用于从源代码产生经配置以编程并行机的映像。一种此类并行机包括分组成对的多个状态机元件SME,使得一对中的SME具有共同输出。一种此类方法包括:将源代码转换成包含多个互连状态的自动机;及将所述自动机转换成包含实例的网表,所述实例对应于所述自动机中的状态,其中转换包括基于一对中的SME具有共同输出的事实而使对应于SME对的状态成对。可将所述网表转换成所述映像并加以发布。
Description
优先权主张
本专利申请案主张2011年1月25日申请的题为“用于元件利用的状态分组(STATEGROUPING FOR ELEMENT UTILIZATION)”的第61/436,075号美国临时专利申请案的优先权的利益,所述美国临时专利申请案的全文以引用方式特此并入本文中。
技术领域
背景技术
用于并行机的编译程序将源代码转换成用于配置(例如,编程)所述并行机的机器代码(例如,映像)。所述机器代码可在所述并行机上实施有限状态机。将源代码转换成机器代码的过程的一个阶段包括形成网表。网表描述所述并行机的硬件元件的实例之间的连接性。所述网表可描述所述硬件元件之间的连接,使得所述硬件元件实施所述源代码的功能性。
发明内容
本申请案涉及一种计算机实施的方法,其用于从源代码产生经配置以编程并行机的映像,所述方法包含:将源代码转换成包含多个互连状态的自动机;将所述自动机转换成网表,所述网表包含对应于所述自动机的状态的实例,其中所述实例对应于所述并行机的硬件元件,其中将所述自动机转换成网表包括基于所述并行机的物理设计来对状态一起分组;及将所述网表转换成所述映像。
本申请案进一步涉及一种计算机可读媒体,其包括指令,所述指令在由所述计算机执行时使所述计算机执行包含以下各者的操作:将源代码转换成包含多个互连状态的自动机;将所述自动机转换成网表,所述网表包含对应于所述自动机的状态的实例,其中所述实例对应于并行机的硬件元件,其中将所述自动机转换成网表包括基于所述并行机的物理设计来对状态一起分组;及将所述网表转换成所述映像。
本申请案揭示一种计算机,其包含:存储器,其上面存储有软件;及处理器,其通信地耦合到所述存储器,其中所述软件在由所述处理器执行时使所述处理器:将源代码转换成包含多个互连状态的自动机;将所述自动机转换成网表,所述网表包含对应于所述自动机的状态的实例,其中所述实例对应于所述并行机的硬件元件,其中所述实例包括多个第一实例及含有两个或两个以上第一实例的群组实例,其中将所述自动机转换成网表包括基于许多未用的第一实例来将状态一起分组在群组实例中;及将所述网表转换成所述映像。
本申请案进一步揭示一种系统,其包含:计算机,其经配置以:将源代码转换成包含多个互连状态的自动机;将所述自动机转换成网表,所述网表包含对应于所述自动机的状态的实例,其中所述实例对应于所述并行机的硬件元件,其中所述实例包括多个第一实例及含有两个或两个以上第一实例的群组实例,其中将所述自动机转换成网表包括基于许多未用的第一实例来将状态一起分组在群组实例中;及将所述网表转换成所述映像;及装置,其经配置以将所述映像加载到并行机上。
附图说明
图1说明根据本发明的各种实施例的并行机的实例。
图2说明根据本发明的各种实施例的实施为有限状态机引擎的图1的并行机的实例。
图3说明根据本发明的各种实施例的图2的有限状态机引擎的块的实例。
图4说明根据本发明的各种实施例的图3的块的行的实例。
图5说明根据本发明的各种实施例的图4的行的成对群组的实例。
图6说明根据本发明的各种实施例的供编译程序用以将源代码转换成经配置以编程图1的并行机的映像的方法的实例。
图7A及图7B说明根据本发明的各种实施例的实例自动机。
图8A及图8B说明根据本发明的各种实施例的实例网表。
图9说明根据本发明的各种实施例的用于执行图6的编译程序的实例计算机。
具体实施方式
以下描述及图式充分地说明使所属领域的技术人员能够实践的特定实施例。其它实施例可并入有结构、逻辑、电、过程及其它改变。一些实施例的部分及特征可包括于其它实施例中或可替代其它实施例的部分及特征。权利要求书中所陈述的实施例涵盖那些权利要求的所有可用等效物。
本文件尤其描述基于并行机的物理设计产生网表的编译程序。在一实例中,所述并行机的物理设计可包括所述并行机的状态机元件之间的连接性限制。举例来说,所述并行机中的状态机元件可分组成共享一共同输出的对。因此,所述编译程序可基于一物理设计产生网表,在所述物理设计中,SME对共享一共同输出。
图1说明实例并行机100。并行机100可接收输入数据并基于所述输入数据提供一输出。并行机100可包括用于接收输入数据的数据输入端口110及用于将输出提供到另一装置的输出端口114。数据输入端口110提供用于将输入到所述并行机100的数据的接口。
并行机100包括多个可编程元件,包括通用元件102及专用元件112。通用元件102可包括一个或一个以上输入104及一个或一个以上输出106。可将通用元件102编程为多个状态中的一者。通用元件102的状态确定所述通用元件102将基于给定输入提供哪一(些)输出。也就是说,通用元件102的状态确定可编程元件将基于给定输入如何起反应。输入到数据输入端口110的数据可提供到所述多个通用元件102以使所述通用元件102对其采取行动。通用元件102的实例可包括下文详细论述的状态机元件(SME)及一可配置逻辑块。在一实例中,SME可设定为给定状态以当在数据输入端口110处接收到给定输入时提供某一输出(例如,高或“1”信号)。当在数据输入端口110处接收到不同于所述给定输入的输入时,所述SME可提供不同输出(例如,低或“0”信号)。在一实例中,一可配置逻辑块可经设定以基于在数据输入端口110处接收到的输入来执行布尔逻辑函数(例如,“与(AND)”、“或(OR)”、“或非(NOR)”等)。
并行机100还可包括编程接口111以将程序(例如,映像)加载到并行机100上。所述映像可编程(例如,设定)通用元件102的状态。也就是说,所述映像可配置通用元件102以按某一方式对给定输入起反应。举例来说,一通用元件102可经设定,以当在数据输入端口110处接收到字符“a”时输出高信号。在一些实例中,并行机100可使用时钟信号来控制通用元件102的操作的时序。在某些实例中,并行机100可包括用于与通用元件102互动及用于执行专用功能的专用元件112(例如,RAM、逻辑门、计数器、查找表等)。在一些实施例中,在数据输入端口110处接收到的数据可包括随时间过去或一齐接收到的一组固定的数据或随时间过去而接收到的数据串流。数据可从耦合到并行机100的任何来源接收或通过耦合到并行机100的任何来源产生,所述任何来源例如数据库、传感器、网络等。
并行机100还包括用于将并行机100的不同元件(例如,通用元件102、数据输入端口110、输出端口114、编程接口111及专用元件112)选择性地耦合在一起的多个可编程开关108。因此,并行机100包含在所述元件间形成的可编程矩阵。在一实例中,可编程开关108可将两个或两个以上元件选择性地耦合到彼此,使得通用元件102的输入104、数据输入端口110、编程接口111或专用元件112可经由一个或一个以上可编程开关108而耦合到通用元件102的输出106、输出端口114、编程接口111或专用元件112。因此,所述元件之间的信号的路由可通过设定可编程开关108来控制。尽管图1说明给定元件与可编程开关108之间的某一数目的导体(例如,电线),但应理解,在其它实例中,可使用不同数目的导体。而且,尽管图1说明每一通用元件102个别地耦合到一可编程开关108,但在其它实例中,多个通用元件102可作为一群组(例如,块802,如图8中所说明)而耦合到一可编程开关108。在一实例中,数据输入端口110、数据输出端口114及/或编程接口111可实施为寄存器,以使得到寄存器的写入将数据提供到相应元件或从相应元件提供数据。
在一实例中,单一并行机100实施于物理装置上,然而,在其它实例中,两个或两个以上并行机100可实施于单一物理装置(例如,物理芯片)上。在一实例中,多个并行机100中的每一者可包括一不同的数据输入端口110、一不同的输出端口114、一不同的编程接口111,及一组不同的通用元件102。此外,每一组通用元件102可对其对应输入数据端口110处的数据起反应(例如,输出高或低信号)。举例来说,对应于第一并行机100的第一组通用元件102可对对应于第一并行机100的第一数据输入端口110处的数据起反应。对应于第二并行机100的第二组通用元件102可对对应于第二并行机100的第二数据输入端口110起反应。因此,每一并行机100包括一组通用元件102,其中通用元件102的不同集合可对不同输入数据起反应。类似地,每一并行机100及每一组对应的通用元件102可提供一不同输出。在一些实例中,来自第一并行机100的输出端口114可耦合到第二并行机100的输入端口110,使得用于第二并行机100的输入数据可包括来自第一并行机100的输出数据。
在一实例中,用于加载到并行机100上的映像包含用于在并行机100内设定通用元件102的状态、编程可编程开关108及配置专用元件112的多个信息位。在一实例中,所述映像可加载到并行机100上以编程所述并行机100以基于某些输入而提供所要输出。输出端口114可基于通用元件102对数据输入端口110处的数据所起的反应来提供来自并行机100的输出。来自输出端口114的输出可包括指示给定模式的匹配的单一位、包含指示与多个模式的匹配及不匹配的多个位的字,及对应于在给定时刻所有或某些通用元件102的状态的状态向量。
并行机100的实例用途包括模式识别(例如,语音识别、图像识别等)、信号处理、成像、计算机视觉、密码学及其它。在某些实例中,并行机100可包含有限状态机(FSM)引擎、现场可编程门阵列(FPGA)及其变体。此外,并行机100可为较大装置中的一组件,所述较大装置例如计算机、寻呼机、蜂窝式电话、个人管理器、便携型音频播放器、网络装置(例如,路由器、防火墙、交换机或其任何组合)、控制电路、照相机等。
图2至5说明实施为有限状态机(FSM)引擎200的另一并行机。在一实例中,FSM引擎200包含有限状态机的硬件实施方案。因此,FSM引擎200实施对应于FSM中的多个状态的多个可选择性地耦合的硬件元件(例如,可编程元件)。类似于FSM中的状态,硬件元件可分析输入串流且基于所述输入串流来激活下游硬件元件。
FSM引擎200包括多个可编程元件,包括通用元件及专用元件。通用元件可经编程以实施许多不同功能。这些通用元件包括SME204、205(展示于图5中),所述SME204、205阶层式组织成行206(展示于图3及4中)及块202(展示于图2及3中)。为了在经阶层式组织的SME204、205之间路由信号,使用可编程开关的阶层,所述阶层包括块间开关203(展示于图2及3中)、块内开关208(展示于图3及4中)及行内开关212(展示于图4中)。SME204、205可对应于通过FSM引擎200实施的FSM的状态。如下文所描述,可通过使用可编程开关将SME204、205耦合在一起。因此,可通过编程SME204、205以对应于状态的功能及通过将SME204、205选择性地耦合在一起以对应于FSM中的状态之间的转变来在FSM引擎200上实施FSM。
图2说明实例FSM引擎200的全图。FSM引擎200包括多个块202,所述块可与可编程块间开关203选择性地耦合在一起。另外,块202可选择性地耦合到用于接收信号(例如,数据)及将数据提供到块202的输入块209(例如,数据输入端口)。块202还可选择性地耦合到用于将来自块202的信号提供到外部装置(例如,另一FSM引擎200)的输出块213(例如,输出端口)。FSM引擎200还可包括用于将程序(例如,映像)加载到FSM引擎200上的编程接口211。所述映像可编程(例如,设定)SME204、205的状态。也就是说,所述映像可配置SME204、205以按某一方式来对输入块209处的给定输入起反应。举例来说,SME204可经设定,以当在输入块209处接收到字符“a”时输出高信号。
在一实例中,输入块209、输出块213及/或编程接口211可实施为寄存器,以使得到寄存器的写入将数据提供到相应元件或从相应元件提供数据。因此,来自存储于对应于编程接口211的寄存器中的映像的位可加载于SME204、205上。尽管图2说明块202、输入块209、输出块213及块间开关203之间的某一数目的导体(例如,电线、迹线),但应理解,在其它实例中,可使用更少或更多的导体。
图3说明块202的实例。块202可包括多个行206,所述行可与可编程块内开关208选择性地耦合在一起。另外,行206可通过块间开关203而选择性地耦合到另一块202内的另一行206。在一实例中,包括缓冲器201以控制去往/来自块间开关203的信号的时序。行206包括多个SME204、205,所述多个SME204、205组织成本文中被称作成对群组(group of two;GOT)210的元件对。在一实例中,块202包含十六(16)个行206。
图4说明行206的实例。GOT210可通过可编程行内开关212而选择性地耦合到其它GOT210及行206内的任何其它元件224。GOT210也可通过块内开关208而耦合到其它行206中的其它GOT210,或通过块间开关203而耦合到其它块202中的其它GOT210。在一实例中,GOT210具有第一输入214及第二输入216以及一输出218。第一输入214耦合到GOT210的第一SME204,且第二输入214耦合到GOT210的第二SME204。
在一实例中,行206包括第一多个行互连导体220及第二多个行互连导体222。在一实例中,GOT210的输入214、216可耦合到一个或一个以上行互连导体220、222,且输出218可耦合到一个行互连导体220、222。在一实例中,第一多个行互连导体220可耦合到行206内的每一GOT210的每一SME204。第二多个行互连导体222可耦合到行206内的每一GOT210的一SME204,但不可耦合到GOT210的另一SME204。在一实例中,所述第二多个行互连导体222的前一半可耦合到一行206内的SME204的前一半(来自每一GOT210的一SME204),且所述第二多个行互连导体222的后一半可耦合到一行206内的SME204的后一半(来自每一GOT210的另一SME204)。所述第二多个行互连导体222与SME204、205之间的有限连接性在本文中被称作“对等性”。
在一实例中,行206还可包括专用元件224,例如计数器、可编程布尔逻辑元件、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、可编程处理器(例如,微处理器)及其它元件。另外,在一实例中,所述专用元件224在不同行206中为不同的。举例来说,一块202中的行206中的四个可包括布尔逻辑作为专用元件224,且一块202中的其它八个行206可包括计数器作为专用元件224。
在一实例中,专用元件224包括计数器(本文中也被称作计数器224)。在一实例中,计数器224包含12位可编程递减计数器。所述12位可编程计数器224具有计数输入、复位输入,及零计数输出。所述计数输入在被断言时使计数器224的值递减一。所述复位输入在被断言时使计数器224加载来自相关联的寄存器的初始值。对于所述12位计数器224,可加载高达12位的数目作为初始值。当计数器224的值递减到零(0)时,断言所述零计数输出。计数器224还具有至少两种模式,脉冲及保持。当将计数器224设定为脉冲模式时,在计数器224递减到零时的第一频率循环期间断言零计数输出,且在接下来的频率循环处,即使断言了计数输入,仍不再断言零计数输出。此状态继续,直到通过复位输入被断言而复位计数器224为止。当将计数器224设定为保持模式时,在计数器224递减到零时的第一频率循环期间断言零计数输出,且在断言了计数输入时保持为经断言的,直到通过复位输入被断言而复位计数器224为止。
图5说明GOT210的实例。GOT210包括第一SME204及第二SME205,其具有输入214、216且具有其耦合到OR门230及3比1多路复用器242的输出226、228。所述3比1多路复用器242可经设定以将GOT210的输出218耦合到第一SME204、第二SME205或OR门230。可使用OR门230将输出226、228耦合在一起以形成GOT210的共同输出218。在一实例中,如上文所论述,第一SME204及第二SME205展现对等性,其中第一SME204的输入214可耦合到行互连导体222中的一些,且第二SME205的输入216可耦合到其它行互连导体222。在一实例中,可通过设定开关240中的任一者或两者来使GOT210内的两个SME204、205级联及/或循环回到其自身。可通过将SME204、205的输出226、228耦合到另一SME204、205的输入214、216而使SME204、205级联。可通过将输出226、228耦合到其自身的输入214、216而使SME204、205循环回到其自身。因此,第一SME204的输出226可不耦合到第一SME204的输入214及第二SME205的输入216中的任一者,或可耦合到所述输入中的一者或两者。
在一实例中,一状态机元件204、205包含与检测线234并联耦合的多个存储器单元232,例如动态随机存取存储器(DRAM)中所常用的那些存储器单元。一种此类存储器单元232包含可设定为一数据状态的存储器单元,所述数据状态例如对应于高或低值(例如,1或0)的状态。存储器单元232的输出耦合到检测线234,且存储器单元232的输入基于数据串流线236上的数据而接收信号。在一实例中,解码数据串流线236上的输入以选择所述存储器单元232中的一者。选定的存储器单元232将其所存储的数据状态作为输出提供到检测线234上。举例来说,在数据输入端口209处接收到的数据可提供到解码器(未图示),且所述解码器可选择所述数据串流线236中的一者。在一实例中,所述解码器可将ACSII字符转换成256位的1。
因此,当存储器单元232设定成高值且数据串流线236上的数据对应于存储器单元232时,存储器单元232输出高信号到检测线234。当数据串流线236上的数据对应于存储器单元232且存储器单元232设定成低值时,存储器单元232输出低信号到检测线234。在检测线234上的来自存储器单元232的输出通过检测电路238来感测。在一实例中,输入线214、216上的信号将相应检测电路238设定成作用中或非作用中状态。当设定成非作用中状态时,检测电路238在相应输出226、228上输出低信号,而不管相应检测线234上的信号。当设定成作用中状态时,当检测到来自相应SME204、205的存储器单元234中的一者的高信号时,检测电路238在相应输出线226、228上输出高信号。当在作用中状态时,当来自相应SME204、205的所有存储器单元234的信号为低时,检测电路238在相应输出线226、228上输出低信号。
在一实例中,SME204、205包括256个存储器单元232,且每一存储器单元232耦合到一不同的数据串流线236。因此,SME204、205可经编程以当数据串流线236中的选定的一者或一者以上上面具有高信号时输出高信号。举例来说,SME204可使第一存储器单元232(例如,位0)设定为高且使所有其它存储器单元232(例如,位1-255)设定为低。当相应检测电路238处于作用中状态时,当对应于位0的数据串流线236上面具有高信号时,SME204在输出226上输出高信号。在其它实例中,SME204可经设定,以当通过将适当的存储器单元232设定成高值而使多个数据串流线236中的一者上面具有高信号时输出高信号。
在一实例中,可通过从相关联的寄存器读取位来将存储器单元232设定成高值或低值。因此,可通过将由编译程序产生的映像存储到寄存器中且将寄存器中的位加载到相关联的存储器单元232中来编程SME204。在一实例中,由所述编译程序产生的映像包括高及低(例如,1及0)位的二进制映像。所述映像可通过将SME204、205级联而编程FSM引擎200以作为FSM操作。举例来说,可通过将检测电路238设定成作用中状态而将第一SME204设定成作用中状态。第一SME204可经设定,以当对应于位0的数据串流线236上面具有高信号时输出高信号。第二SME205最初可设定成非作用中状态,但可经设定以在作用中时当对应于位1的数据串流线236上面具有高信号时输出高信号。可通过设定第一SME204的输出226以耦合到第二SME205的输入216来将第一SME204与第二SME205级联。因此,当在对应于位0的数据串流线236上感测到高信号时,第一SME204在输出226上输出高信号且将第二SME205的检测电路238设定成作用中状态。当在对应于位1的数据串流线236上感测到高信号时,第二SME205在输出228上输出高信号以激活另一SME205或用于来自FSM引擎200的输出。
图6说明供编译程序用以将源代码转换成经配置以编程并行机的映像的方法600的实例。方法600包括:将所述源代码剖析成语法树(框602);将所述语法树转换成自动机(框604);最佳化所述自动机(框606);将所述自动机转换成网表(框608);将所述网表放置于硬件上(框610);对所述网表进行布线(框612);及发布所得映像(框614)。
在一实例中,所述编译程序包括应用编程接口(API),所述API允许软件开发者产生用于在FSM引擎600上实施FSM的映像。所述编译程序提供用以将所述源代码中的一组输入的正规表达式转换成经配置以编程FSM引擎600的映像的方法。所述编译程序可通过用于具有冯诺依曼架构的计算机的指令来实施。这些指令可使所述计算机上的处理器实施所述编译程序的功能。举例来说,所述指令在通过所述处理器执行时可使所述处理器对可由所述处理器存取的源代码执行如框602、604、606、608、610、612及614中所描述的动作。具有冯诺依曼架构的实例计算机展示于图9中且在下文描述。
在一实例中,源代码描述用于识别一群符号内的符号的模式的搜索字符串。为了描述所述搜索字符串,所述源代码可包括多个正规表达式(regex)。正规表达式可为用于描述符号搜索模式的字符串。正规表达式广泛用在各种计算机领域中,例如编程语言、文字编辑器、网络安全及其它领域。在一实例中,由编译程序支持的正规表达式包括用于无结构数据的搜索的搜索准则。无结构数据可包括以下数据,其为自由形式的且无索引施加于数据内的字。字可包括数据内的任何字节组合,可打印及不可打印的。在一实例中,编译程序可支持用于实施正规表达式的多种不同的源代码语言,包括Perl(例如,Perl兼容正规表达式(PCRE))、PHP、Java及.NET语言。
返回参看图6,在框602处,编译程序可剖析源代码以形成有关系连接的运算符的布置,其中不同类型的运算符对应于通过源代码实施的不同功能(例如,通过源代码中的正规表达式实施的不同功能)。剖析源代码可产生所述源代码的一般表示。在一实例中,所述一般表示包含所述源代码中的呈被称为语法树的树形图形式的正规表达式的经编码表示。本文中所描述的实例将所述布置称为语法树(也被称为“抽象语法树”)。然而,在其它实例中,可使用具体语法树或其它布置。
由于如上文所提及,编译程序可支持多种语言的源代码,因此,不管是何种语言,剖析将所述源代码转换成非语言特定表示,例如语法树。因此,通过编译程序进行的其它处理(框604、606、608、610)可从共同输入结构来起作用,而不管源代码的语言。
如上所述,所述语法树包括有关系连接的多个运算符。语法树可包括多种不同类型的运算符。也就是说,不同运算符可对应于通过源代码中的正规表达式实施的不同功能。
在框604处,将所述语法树转换成自动机。自动机(也被称作有限状态自动机、有限状态机(FSM)或简称为状态机)为状态、状态之间的转变及动作的表示,且可分为确定性或非确定性的。确定性自动机在给定时间具有单一执行路径,而非确定性自动机具有多个同时的执行路径。所述自动机包含多个状态。为了将语法树转换成自动机,将语法树中的运算符及运算符之间的关系转换成状态及状态之间的转变。在一实例中,可部分基于FSM引擎200的硬件来转换所述自动机。
在一实例中,用于自动机的输入符号包括字母、数字0-9及其它可打印字符的符号。在一实例中,所述输入符号通过字节值0至255(包括在内)来表示。在一实例中,自动机可表示为有向图,其中所述图的节点对应于状态集合。在一实例中,在输入符号α时从状态p到状态q的转变(即,δ(p,α))通过从节点p到节点q的有向连接展示。在一实例中,被自动机接受(例如,匹配)的语言为在按顺序地输入到所述自动机中时将达到最终状态的所有可能字符字符串的集合。被所述自动机接受的语言中的每一字符串沿从开始状态到一个或一个以上最终状态的路径而行。
在一实例中,在所述自动机中可使用输入符号范围外的特殊转变符号。这些特殊转变符号可用以(例如)使得能够使用专用元件224。此外,特殊转变符号可用以提供在不同于输入符号的其它者上发生的转变。举例来说,一特殊转变符号可指示当启用第二状态及第三状态时将启用(例如,转变到)第一状态。因此,当激活第二状态及第三状态时激活第一状态,且到所述第一状态的转变并非直接取决于输入符号。显著地,指示在启用第二状态及第三状态时将启用第一状态的特殊转变符号可用以将(例如)通过布尔逻辑执行的布尔AND函数表示为专用元件224。在一实例中,可使用特殊转变符号来指示计数器状态已达到零,且因此转变成下游状态。
在一实例中,所述自动机包含通用状态以及专用状态。所述通用状态及专用状态对应于通过目标装置支持的通用元件及专用元件,编译程序为所述目标装置产生机器代码。不同类型的目标装置可支持不同类型的通用元件以及一种或一种以上不同类型的专用元件。通用元件通常可用以实施广泛范围的功能,而专用元件通常可用以实施更窄范围的功能。然而,在一实例中,专用元件可在其窄范围的功能内实现(例如)较大效率。因此,专用元件可用以(例如)减少在目标装置中实施某些功能所需的机器循环或机器资源。在一些实例中,所述目标装置仅支持专用元件,其中支持多种不同类型的专用元件。
在编译程序产生用于FSM引擎200的机器代码的实例中,通用状态可对应于SME204、205,且通用状态因此在本文中被称作“SME状态”。此外,当编译程序产生用于FSM引擎200的机器代码时,专用状态的实例可对应于计数器224且因此在本文中被称作“计数器状态”。专用状态的另一实例可对应于一逻辑元件(例如,可编程逻辑、布尔逻辑)且因此在本文中被称作“逻辑状态”。在一实例中,自动机中的SME状态1∶1映射到FSM引擎200中的SME(例如,SME204、205),不映射到SME的自动机的开始状态除外。专用元件224可或可不1∶1映射到专用状态。
在一实例中,可使用例如Glushkov的方法的标准技术中的一者来建构自动机。在一实例中,所述自动机可为无ε的均齐自动机(homogeneous automaton)。均齐自动机为对一般自动机定义的限制。所述限制要求进入一状态的所有转变必须发生在同一(些)输入符号上。均齐自动机满足以下条件:对于任何两个状态,q1及q2,如果r∈δ(q1)∩δ(q2),则表示S1={a|a∈∑,r∈δ(q1,a)}、S2={a|a∈∑,r∈δ(q2,a)}。S1为允许q1转变成r的符号的集合;且S2为允许q2转变成r的符号的集合。在此,S1=S2,即,如果状态q1及状态q2均转变成状态r,则均齐限制为转变必须发生在同一(些)符号上。
图7A及7B说明从语法树产生的实例自动机。图7A说明均齐自动机700,且图7B说明非均齐自动机702。
均齐自动机700在开始状态704处开始,开始状态704在输入符号“a”时转变成状态706。在输入符号“b”时状态706转变成状态708,且在输入符号“b”时,状态708转变成状态710。在输入符号“c”时,状态710转变成状态712。状态712在输入符号“b”时转变成状态710,且在输入符号“d”时转变成状态714。状态714为最终状态且通过双圆来识别为最终状态。在一实例中,最终状态可为重要的,因为最终状态的激活指示对应于所述自动机的正规表达式的匹配。自动机700为均齐自动机,因为给定状态的所有内转变(例如,到状态的转变)发生在同一(些)符号上。显著地,状态710具有两个内转变(从状态708及状态712),且所述两个内转变均发生在同一符号“b”上。
非均齐自动机702包括与均齐自动机700相同的状态704、706、708、710、712及714,然而,状态712在输入符号“e”时转变成状态710。因此,自动机702为非均齐的,因为状态710在两个不同符号时具有内转变;符号“b”时从状态708且符号“e”时从状态712。
在框606处,在建构了自动机之后,最佳化所述自动机以尤其减少其复杂性及大小。可通过组合冗余状态来最佳化所述自动机。
在框608处,将所述自动机转换成网表。将所述自动机转换成网表将所述自动机的状态映射到FSM引擎200的硬件元件(例如,SME204、205、GOT210、专用元件224)的实例,且确定所述实例之间的连接。在一实例中,所述网表包含多个实例,每一实例对应于(例如,表示)FSM引擎200的一硬件元件。每一实例可具有用于连接到另一实例的一个或一个以上连接点(本文中也被称作“端口”)。所述网表还包含所述实例的端口之间的多个连接,所述多个连接对应于(例如,表示)用以耦合对应于所述实例的硬件元件的导体。在一实例中,所述网表包含对应于不同类型的硬件元件的不同类型的实例。举例来说,所述网表可包括对应于通用硬件元件的通用实例及对应于专用硬件元件的专用实例。作为一实例,通用状态可转换成通用实例,且专用状态可转换成专用实例。在一实例中,所述通用实例可包括用于一SME204、205的一SME实例及用于包含一群SME的硬件元件的一SME群组实例。在一实例中,所述SME群组实例包括对应于GOT210的GOT实例;然而,在其它实例中,所述SME群组实例可对应于包含一群三个或三个以上SME的硬件元件。专用实例可包括用于计数器224的计数器实例及用于逻辑元件224的逻辑实例。由于GOT210包括两个SME204、205,因此GOT实例含有两个SME实例。
为产生网表,将自动机中的状态转换成网表中的实例,除了开始状态不具有对应实例之外。将SME状态转换成GOT实例,且将计数器状态转换成计数器实例。另外,针对从对应于第一实例的状态到对应于第二实例的状态的转变产生从第一实例到第二实例的对应连接。由于FSM引擎200中的SME204、205分组到被称作GOT210的对中,因此编译程序可将SME状态分组到GOT实例中的对中。归因于GOT210的物理设计,并非所有SME实例可一起成对以形成GOT210。因此,编译程序确定可将哪些SME状态一起映射在GOT210中,且接着基于所述确定将SME状态成对到GOT实例中。
如图5中所示,GOT210具有对SME204、205的输出限制。确切地说,GOT210具有由两个SME204、205共享的单一输出218。因此,GOT210中的每一SME204、205不可独立地驱动输出218。此输出限制限制了在GOT实例中哪些SME状态可一起成对。显著地,驱动(例如,转变到、激活)外部SME状态(例如,对应于GOT实例外的SME的SME状态)的不同集合的两个SME状态在一GOT实例中不可一起成对。然而,此限制不限制所述两个SME状态是否驱动彼此或自循环,因为GOT210可在内部通过开关240提供此功能性。尽管将FSM引擎200描述为具有对应于SME204、205的某一物理设计,但在其它实例中,SME204、205可具有其它物理设计。举例来说,SME204、205可一起分组到SME204、205的三个或三个以上集合中。另外,在一些实例中,可存在对到SME204、205的输入214、216的限制,对来自SME204、205的输出226、228可具有或不具有限制。
然而,在任一种情况下,编译程序基于FSM引擎200的物理设计来确定哪些SME状态可一起分组。因此,对于GOT实例,编译程序基于GOT210中的SME204、205的输出限制来确定哪些SME状态可一起成对。在一实例中,存在五种情形,其中两个SME状态可基于GOT210的物理设计而一起成对以形成GOT210。
在第一SME状态及第二SME状态可在GOT210中一起成对时的第一种情形出现在第一SME状态或第二SME状态均非最终状态时,及出现在第一SME状态及第二SME状态中的一者不驱动不同于第一SME状态或第二SME状态的任何状态时。作为一实例,当第一状态转变成第二状态时,认为所述第一状态驱动所述第二状态。当此第一种情形出现时,至多第一SME状态及第二SME状态中的一者驱动一(些)外部状态。因此,第一SME状态及第二SME状态可一起成对,而不受GOT210的输出限制影响。然而,归因于GOT210在内部将SME204、205耦合到彼此的能力,允许第一SME状态及第二SME状态驱动彼此及自循环以驱动自身。在自动机项中,当q1或q2均非最终状态,且δ(q1)-{q1,q2}为空时,或当δ(q2)-{q1,q2}为空时,第一SME状态(对应于状态q1)及第二SME状态(对应于状态q2)可一起成对。
在第一SME状态及第二SME状态可在GOT210中一起成对时的第二种情形出现在第一或第二SME状态均非自动机中的最终状态时,及出现在第一SME状态及第二SME状态驱动相同的外部状态时。如本文中所使用,外部状态对应于GOT实例外部的状态,例如,不管GOT实例中的第一SME状态及第二SME状态是否驱动彼此或自循环。再次,GOT210的输出限制不影响第一SME状态及第二SME状态,因为第一SME状态及第二SME状态驱动相同的外部状态。而且,归因于GOT210在内部将SME204、205耦合到彼此的能力,对驱动相同状态的限制不包括第一状态及第二状态是否驱动彼此或自循环。使用自动机项,当q1或q2均非最终状态,且δ(q1)-{q1,q2}=δ(q2)-{q1,q2}时,第一SME状态(对应于状态q1)及第二SME状态(对应于状态q2)可一起成对。
第一SME状态及第二SME状态可在GOT210中一起成对的第三及第四种情形出现在第一SME状态及第二SME状态中的一者为最终状态且第一SME状态及第二SME状态中的另一者并不驱动任一外部状态时。也就是说,当q1为最终状态且δ(q2)-{q1,q2}为空时,或当q2对应于最终状态且δ(q1)-{q1,q2}为空时,第一SME状态(对应于状态q1)及第二SME状态(对应于状态q2)可一起成对。由于最终状态输出与正规表达式匹配的指示,因此对应于最终状态的SME状态应能够独立使用GOT210的输出218以便指示所述匹配。因此,不允许GOT210中的另一SME状态使用输出218。
在第一SME状态及第二SME状态可在GOT210中一起成对时的第五种情形出现在第一SME状态及第二SME状态均对应于一自动机中的最终状态且第一SME状态及第二SME状态均驱动相同的外部状态时。使用自动机项,当q1及q2均为最终状态,且δ(q1)-{q1,q2}=δ(q2)-{q1,q2}时,第一状态(对应于状态q1)及第二SME状态(对应于状态q2)可一起成对。
一旦编译程序确定一个或一个以上SME状态是否可一起成对,编译程序便将所述SME状态成对为GOT实例。在一实例中,编译程序按SME状态被确定为能够成对以形成GOT实例的次序来将SME状态成对为GOT实例。也就是说,一旦两个特定SME状态被确定为能够一起成对,此两个SME状态便可成对为一GOT实例。一旦两个SME状态已成对以形成GOT实例,这些成对的SME状态不可用于与其它SME状态成对。此过程可继续,直到不再有任何SME状态留待成对为止。
在一实例中,编译程序使用图论来确定哪些SME一起成对为GOT实例。由于仅某些SME可一起成对,因此一些SME成对可导致其它SME必须在其自身的GOT实例中实施,以致GOT实例中的其它SME位置未用且因此被浪费。可使用图论来通过减少网表的GOT实例中的未用SME实例的数目来最佳化GOT210中的SME利用(例如,减少未用SME的数目)。为了使用图论,编译程序首先根据上文所论述的FSM引擎200的物理设计来确定SME状态之间的所有可能成对。编译程序接着产生一图,其中所述图的顶点对应于SME状态,且所述图的边对应于SME状态的可能成对。也就是说,如果确定两个SME状态能够在GOT实例中一起成对,则用一条边连接两个对应的顶点。因此,所述图含有SME状态的所有可能成对。
编译程序可接着找出所述图的匹配顶点以识别哪些SME状态在GOT210中一起成对。也就是说,编译程序识别边(且因此识别顶点对),使得所述图的匹配顶点之间的两条边不会共享一个共同顶点。在一实例中,编译程序可找出所述图的最大匹配。在另一实例中,编译程序可找出所述图的最大匹配。最大匹配为含有最大的可能数目的边的匹配。可存在许多最大匹配。可以多项式时间来解决找出一般图的最大匹配的问题。
一旦已识别了所有匹配顶点(例如,作为最大匹配),则将对应于匹配顶点的每一对SME状态映射到一GOT实例。将对应于未匹配顶点的SME状态映射到其自身的GOT实例。也就是说,将对应于未匹配顶点的SME状态映射到GOT实例中的SME位置中的一者中,且GOT实例中的其它SME位置未用。因此,假定网表N及其匹配顶点M的对应集合,所使用的N的GOT实例的数目等于|Q|-1-|M|,其中Q为自动机的状态集合,且“-1”是因为在此实例中自动机的开始状态并不对应于SME状态。
在一实例中,网表N是使用最少数目的GOT实例由G的最大匹配M来建构。此可通过以下事例证明:如果存在使用更少数目的GOT实例的另一网表N′,则将所述对应匹配表示为M′。由于N′的GOT实例的数目等于|Q|-1-|M′|,因此我们得到|M|<|M′|。此与M为最大匹配的事实冲突。因此,网表N使用最少数目的GOT实例。
一旦SME状态成对为GOT实例,便根据自动机中的状态之间的转变来连接GOT实例、计数器实例及逻辑实例。由于每一GOT210具有单一输出,因此网表中的每一GOT实例具有单一输出端口以供连接到其它实例。因此,如果第一GOT实例中的任一SME状态驱动第二GOT实例中的一SME状态,则第一GOT实例的输出端口耦合到第二GOT实例的输入。
图8A及8B说明从图7A的均齐自动机700产生的实例网表800、802。SME实例806、808、810、812及814对应于自动机700中的状态706、708、710、712及714。如上文所论述,所述自动机的开始状态704不对应于一实例。
网表800为非最佳网表的一实例。网表800使用四个GOT实例816,同时留下三个SME实例818未用。然而,网表802为使用图论识别最大匹配而产生的最佳网表的实例。网表802使用三个GOT实例816且具有单一未用SME实例818。在网表802中,可通过GOT实例内部的连接(例如,经由开关240)将实例810连接到实例812。
在框610处,一旦已产生网表,便放置所述网表以针对所述网表的每一实例选择所述目标装置的特定硬件元件(例如,SME204、205、其它元件224)。根据本发明的一实施例,放置基于针对硬件元件的一般输入及输出约束来选择硬件元件。
在框612处,对经全局放置的网表进行布线以确定可编程开关(例如,块间开关203、块内开关208及行内开关212)的设定以便将选定硬件元件耦合在一起以实现网表所描述的连接。在一实例中,所述可编程开关的设定通过确定FSM引擎200的将用以连接选定的硬件元件的特定导体及所述可编程开关的设定来确定。布线可调整在放置期间针对网表实例中的一些选择的特定硬件元件,例如以便耦合硬件元件,给定FSM引擎200上的导体及/或开关的物理设计。
一旦对网表进行放置及布线,便可将所放置及经布线的网表转换成用于编程FSM引擎200的多个位。所述多个位在本文中被称作映像。
在框614处,通过编译程序发布映像。所述映像包含用于编程FSM引擎200的特定硬件元件及/或可编程开关的多个位。在所述映像包含多个位(例如,0及1)的实施例中,所述映像可被称作二进制映像。所述位可加载到FSM引擎200上以编程SME204、205、专用元件224及可编程开关的状态,以使得经编程的FSM引擎200实施具有通过源代码描述的功能性的FSM。放置(框610)及布线(框612)可将在FSM引擎200中的特定位置处的特定硬件元件映像到自动机中的特定状态。因此,所述映像中的位可编程所述特定硬件元件及/或可编程开关以实施所要功能。在一实例中,可通过将机器代码存储到计算机可读媒体来发布所述映像。在另一实例中,可通过在显示装置上显示所述映像来发布映像。在又一实例中,可通过将所述映像发送到另一装置(例如,用于将所述映像加载到FSM引擎200上的编程装置)来发布映像。在再一实例中,可通过将所述映像加载到并行机(例如,FSM引擎200)上来发布映像。
在一实例中,可通过将来自映像的位值直接加载到SME204、205及其它硬件元件224或通过将映像加载到一个或一个以上寄存器中且接着将来自寄存器的位值写入到SME204、205及其它硬件元件224来将映像加载到FSM引擎200上。在一实例中,可编程开关(例如,块间开关203、块内开关208及行内开关212)的状态。在一实例中,FSM引擎200的硬件元件(例如,SME204、205、其它元件224、可编程开关203、208、212)经存储器映射,以使得编程装置及/或计算机可通过将映像写入到一个或一个以上存储器地址而将映像加载到FSM引擎200上。
本文中所描述的方法实例可至少部分为机器或计算机实施的。一些实例可包括编码有指令的计算机可读媒体或机器可读媒体,所述指令可操作以配置电子装置以执行如上述实例中所描述的方法。这些方法的实施方案可包括代码,例如微码、汇编语言代码、高级语言代码或其类似者。此类代码可包括用于执行各种方法的计算机可读指令。代码可形成计算机程序产品的部分。另外,代码在执行期间或在其它时间时可有形地存储于一个或一个以上易失性或非易失性计算机可读媒体上。这些计算机可读媒体可包括(但不限于)硬盘、可装卸磁盘、可装卸光盘(例如,压缩光盘及数字视频光盘)、磁带、存储器卡或存储器棒、随机存取存储器(RAM)、只读存储器(ROM)及其类似者。
图9大体上说明具有冯诺依曼架构的计算机900的实例。在阅读及理解了本发明的内容之后,一般所属领域的技术人员将理解,在基于计算机的系统中可从计算机可读媒体加载软件程序以使其执行以软件程序定义的功能的方式。一般所属领域的技术人员将进一步理解,可使用各种编程语言来产生经设计以实施并执行本文所揭示的方法的一个或一个以上软件程序。可使用面向对象的语言(例如,Java、C++或一种或一种以上其它语言)以面向对象的格式来结构化所述程序。或者,可使用程序语言(例如,汇编语言、C等)以面向程序的格式来结构化所述程序。软件组件可使用一般所属领域的技术人员所众所周知的许多方案中的任一者来通信,例如应用编程接口或过程间通信技术,包括远程过程调用或其它。各个实施例的教示不限于任何特定编程语言或环境。
因此,可实现其它实施例。举例来说,一制造对象(例如,计算机、存储器系统、磁盘或光盘、某其它存储装置,或任何类型的电子装置或系统)可包括一个或一个以上处理器902,所述一个或一个以上处理器902耦合到上面存储有指令924(例如,计算机程序指令)的计算机可读媒体922,例如存储器(例如,可装卸存储媒体,以及包括电、光或电磁导体的任何存储器),所述指令在通过所述一个或一个以上处理器902执行时导致执行相对于上述方法所描述的动作中的任一者。
计算机900可采取具有处理器902的计算机系统的形式,所述处理器908直接及/或使用总线908来耦合到许多元件。这些元件可包括主存储器904、静态或非易失性存储器906及大容量存储装置916。耦合到处理器902的其它元件可包括输出装置910(例如,视频显示器)、输入装置912(例如,键盘)及光标控制装置914(例如,鼠标)。用以将处理器902及其它元件耦合到网络926的网络接口装置920还可耦合到总线908。指令924可利用许多众所周知的传送协议(例如,HTTP)中的任一者经由网络接口装置920跨越网络926来进一步传输或接收。耦合到总线908的这些元件中的任一者可不存在,单独地存在,或以复数形式存在,此取决于待实现的特定实施例。
在一实例中,处理器902、存储器904、906或存储装置916中的一者或一者以上可各自包括指令924,所述指令924在执行时可使计算机900执行本文所描述的方法中的任何一者或一者以上。在替代实施例中,计算机900作为单独装置操作或可连接(例如,网络连接)到其它装置。在网络环境中,计算机900可以服务器-客户端网络环境中的服务器或客户端装置的能力来操作,或操作为对等(或分布式)网络环境中的对等装置。计算机900可包括个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、web器具、网络路由器、交换机或桥接器,或能够执行一组指令(顺序的或其它)的任何装置,所述组指令指定将由所述装置采取的行动。另外,虽然仅说明了单一计算机900,但术语“计算机”还应被视为包括个别地或共同地执行一组(或多组)指令以执行本文中所论述的方法中的任何一者或一者以上的装置的任何集合。
计算机900还可包括用于使用一个或一个以上通信协议(例如,通用串行总线(USB)、IEEE1394等)与外围装置通信的输出控制器928。输出控制器928可(例如)将映像提供到通信地耦合到计算机900的编程装置930。编程装置930可经配置以编程并行机(例如,并行机100、FSM引擎200)。在其它实例中,编程装置930可与计算机900集成且耦合到总线908或可经由网络接口装置920或另一装置与计算机900通信。
虽然计算机可读媒体924展示为单一媒体,但术语“计算机可读媒体”应被视为包括存储所述一组或一组以上指令924的单一媒体或多个媒体(例如,集中式或分布式数据库,或相关联的高速缓存及服务器,及或各种存储媒体,例如处理器902寄存器、存储器904、906及存储装置916)。术语“计算机可读媒体”还应被视为包括以下任何媒体,其能够存储、编码或载运供计算机执行的一组指令且使所述计算机执行本发明的方法中的任何一者或一者以上,或能够存储、编码或载运供此组指令利用或与此组指令相关联的数据结构。术语“计算机可读媒体”因此应被视为包括(但不限于)有形媒体,例如固态存储器、光媒体及磁性媒体。
提供摘要以遵照需要摘要的37C.F.R.章节1.72(b),此将允许读者确定技术揭示内容的性质及要旨。在理解到摘要将不用以限制或解释权利要求书的范畴或涵义的情况下提交摘要。以下权利要求书借此并入详细描述中,其中每一权利要求依赖于其自身而作为一单独实施例。
实例实施例
实例1包括一种计算机实施方法,其用于从源代码产生经配置以编程并行机的映像。所述方法包括:将源代码转换成包含多个互连状态的自动机;将所述自动机转换成网表,所述网表包含对应于所述自动机的状态的实例,其中所述实例对应于所述并行机的硬件元件,其中将所述自动机转换成网表包括基于所述并行机的物理设计来对状态一起分组;及将所述网表转换成所述映像。
实例2包括一种计算机可读媒体,其包括指令,所述指令在由所述计算机执行时使所述计算机执行操作。所述操作包括:将源代码转换成包含多个互连状态的自动机;将所述自动机转换成网表,所述网表包含对应于所述自动机的状态的实例,其中所述实例对应于所述并行机的硬件元件,其中将所述自动机转换成网表包括基于所述并行机的物理设计来对状态一起分组;及将所述网表转换成所述映像。
实例3包括一种计算机,其包括:存储器,其上面存储有软件;及处理器,其通信地耦合到所述存储器。其中所述软件在由所述处理器执行时使所述处理器:将源代码转换成包含多个互连状态的自动机;将所述自动机转换成网表,所述网表包含对应于所述自动机的状态的实例,其中所述实例对应于所述并行机的硬件元件,其中所述实例包括多个第一实例及含有两个或两个以上第一实例的一群组实例,其中将所述自动机转换成网表包括基于许多未用的第一实例来将状态一起分组在一群组实例中;及将所述网表转换成所述映像。
实例4包括一种系统,其包括计算机,所述计算机经配置以:将源代码转换成包含多个互连状态的自动机;将所述自动机转换成网表,所述网表包含对应于所述自动机的状态的实例,其中所述实例对应于所述并行机的硬件元件,其中所述实例包括多个第一实例及含有两个或两个以上第一实例的一群组实例,其中将所述自动机转换成网表包括基于许多未用的第一实例来将状态一起分组在一群组实例中;及将所述网表转换成所述映像。所述系统还包括经配置以将所述映像加载到并行机上的装置。
在实例5中,实例1至4中任一者的主题可任选地包括,其中所述实例包括对应于状态机元件(SME)硬件元件的SME实例及对应于包含一群SME的硬件元件的SME群组实例,且其中分组包括将状态分组到SME群组实例中。
在实例6中,实例1至5中任一者的主题可任选地包括,其中所述物理设计包括包含一群SME的所述硬件元件的物理设计。
在实例7中,实例1至6中任一者的主题可任选地包括,其中所述物理设计包括对包含一群SME的所述硬件元件中的所述SME的输入或输出限制中的一者。
在实例8中,实例1至7中任一者的主题可任选地包括,其中所述物理设计包括包含一群SME的所述硬件元件中的所述SME共享输出的限制。
在实例9中,实例1至8中任一者的主题可任选地包括,其中SME群组实例包括含有两个SME实例的成对群组(GOT)实例,且其中所述物理设计包括每一GOT中的所述SME耦合到共同输出。
在实例10中,实例1至9中任一者的主题可任选地包括,其中将所述自动机转换成网表包含:确定所述状态中的哪些可一起分组在GOT实例中;及基于所述确定来使所述状态成对。
在实例11中,实例1至10中任一者的主题可任选地包括,其中当第一状态或第二状态均非所述自动机的最终状态,且所述第一状态及所述第二状态中的一者不驱动不同于所述第一状态或所述第二状态的任何状态时,所述第一状态及所述第二状态可在GOT实例中一起成对。
在实例12中,实例1至11中任一者的主题可任选地包括,其中当第一状态或第二状态均非所述自动机的最终状态,且所述第一状态及所述第二状态均驱动相同的外部状态时,所述第一状态及所述第二状态可在GOT实例中一起成对。
在实例13中,实例1至12中任一者的主题可任选地包括,其中当第一状态及第二状态中的一者为所述自动机的最终状态,且所述第一状态及所述第二状态中的另一者不驱动任何外部状态时,所述第一状态及所述第二状态可在GOT实例中一起成对。
在实例14中,实例1至13中任一者的主题可任选地包括,其中当第一状态及第二状态均为所述自动机的最终状态,且所述第一状态及所述第二状态均驱动相同的外部状态时,所述第一状态及所述第二状态可在GOT实例中一起成对。
在实例15中,实例1至14中任一者的主题可任选地包括,其中确定所述状态中的哪些可一起分组在GOT实例中包含使用图论来确定所述状态中的哪些可一起分组在GOT实例中。
在实例16中,实例1至15中任一者的主题可任选地包括,其中使用图论来确定所述状态中的哪些可一起分组在GOT实例中包含使用图论识别最大匹配来确定所述状态中的哪些可一起分组在GOT实例中。
在实例17中,实例1至16中任一者的主题可任选地包括发布所述映像。
在实例18中,实例1至17中任一者的主题可任选地包括,其中所述实例包含通用实例及专用实例,其中所述通用实例对应于所述自动机的通用状态,且所述专用实例对应于所述自动机的专用状态。
在实例19中,实例1至18中任一者的主题可任选地包括,其中对应于所述通用实例的所述硬件元件包括状态机元件(SME)及成对群组(GOT),且其中对应于所述专用实例的所述硬件元件包括计数器及逻辑元件。
在实例20中,实例1至19中任一者的主题可任选地包括,其中所述自动机为均齐自动机。
在实例21中,实例1至20中任一者的主题可任选地包括,其中将所述自动机转换成网表包含将所述自动机的所述状态中的每一者映像到对应于所述硬件元件的实例及确定所述实例之间的连接性。
在实例22中,实例1至21中任一者的主题可任选地包括,其中所述网表进一步包含表示所述硬件元件之间的导体的所述实例之间的多个连接。
在实例23中,实例1至22中任一者的主题可任选地包括,其中将所述自动机转换成网表包含将所述自动机转换成包含实例的网表,所述实例对应于所述自动机的除了开始状态之外的状态。
在实例24中,实例1至23中任一者的主题可任选地包括确定对应于所述网表的实例的所述硬件元件在所述并行机中的位置。
在实例25中,实例1至24中任一者的主题可任选地包括,其中对状态一起分组包括基于包含一群通用元件的硬件元件的物理设计来对状态一起分组。
在实例26中,实例1至25中任一者的主题可任选地包括确定将使用所述并行机的哪些导体来连接所述硬件元件;及确定所述并行机的可编程开关的设定,其中所述可编程开关经配置以选择性地将所述硬件元件耦合在一起。
在实例27中,实例1至26中任一者的主题可任选地包括,其中所述群组实例包括成对群组(GOT)实例,且其中分组状态包括根据成对的状态驱动哪些状态来使状态成对。
在实例28中,实例1至27中任一者的主题可任选地包括,其中基于许多未用的第一实例将状态分组在群组实例中包括:基于以下条件确定第一状态与第二状态是否可成对:所述第一状态或所述第二状态均非所述自动机中的最终状态,且所述第一状态及所述第二状态中的一者不驱动不同于所述第一状态或所述第二状态的任何状态;所述第一状态或所述第二状态均非所述自动机中的最终状态,且所述第一状态及所述第二状态均驱动相同的外部状态;所述第一状态或所述第二状态中的任一者为最终状态,且并非最终状态的所述第一状态或所述第二状态不驱动除了所述第一状态或所述第二状态的外的任何状态;及所述第一状态及所述第二状态均为最终状态,且所述第一状态及所述第二状态均驱动相同的外部状态。
在实例29中,实例1至28中任一者的主题可任选地包括,其中将所述自动机转换成网表包括:将所述状态模型化为一图,其中所述图的顶点对应于状态,且所述图的边对应于所述状态的可能成对;确定所述图的匹配顶点;及使对应于所述匹配顶点的状态成对。
在实例30中,实例1至29中任一者的主题可任选地包括,其中将所述自动机转换成网表包括:确定所述图的最大匹配。
在实例31中,实例1至30中任一者的主题可任选地包括,其中将所述自动机转换成网表包括:使对应于匹配顶点的每一组状态成对;及将对应于未匹配顶点的每一状态映像到GOT实例,其中所述GOT实例中的SME实例将为未用的。
在实例32中,实例1至31中任一者的主题可任选地包括,其中对状态一起分组包括:根据成对的状态驱动哪些状态来使状态成对。
在实例33中,实例1至32中任一者的主题可任选地包括,其中基于许多未用的第一实例将状态一起分组在群组实例中包括:基于以下条件确定第一状态与第二状态是否可成对:所述第一状态或所述第二状态均非所述自动机中的最终状态,且所述第一状态及所述第二状态中的一者不驱动不同于所述第一状态或所述第二状态的任何状态;所述第一状态或所述第二状态均非所述自动机中的最终状态,且所述第一状态及所述第二状态均驱动相同的外部状态;所述第一状态或所述第二状态中的任一者为最终状态,且并非最终状态的所述第一状态或所述第二状态不驱动除了所述第一状态或所述第二状态之外的任何状态;及所述第一状态及所述第二状态均为最终状态,且所述第一状态及所述第二状态均驱动相同的外部状态。
在实例34中,实例1至33中任一者的主题可任选地包括,其中基于许多未用的第一实例将状态一起分组在群组实例中包括:将所述状态模型化为一图,其中所述图的顶点对应于状态,且所述图的边对应于所述状态的可能成对;确定所述图的匹配顶点;及使对应于所述匹配顶点的状态成对。
在实例35中,实例1至34中任一者的主题可任选地包括,其中基于许多未用的第一实例将状态一起分组在群组实例中:确定所述图的最大匹配。
在实例36中,实例1至35中任一者的主题可任选地包括,其中基于许多未用的第一实例将状态一起分组在群组实例中包括:使对应于匹配顶点的每一组状态成对;及将对应于未匹配顶点的每一状态映射到一GOT实例,其中所述GOT实例中的SME实例将为未用的。
在实例37中,实例1至36中任一者的主题可任选地包括,其中装置经配置以将每一对状态实施为所述并行机中的两个硬件元件的一群组。
实例38包括通过用实例1至37中任一者的过程产生的映像来编程的并行机。
Claims (38)
1.一种计算机实施的方法,其用于从源代码产生经配置以编程并行机的映像,所述方法包含:
将未编译可执行软件应用程序的源代码转换成包含多个互连状态的自动机;
将所述自动机转换成网表,所述网表包含对应于所述自动机的状态的实例,其中所述实例对应于所述并行机的硬件元件,其中将所述自动机转换成网表包括基于所述并行机的物理设计来对所述自动机的状态一起分组;及
将所述网表转换成所述映像,所述映像包括经编译二进制数据以对所述并行机进行编程以与所述网表的所述实例相对应,从而所述经编译二进制数据经安排以编程所述并行机以在所述映像被装载到所述并行机时提供所述未编译可执行应用程序的所述源代码限定的功能性。
2.根据权利要求1所述的方法,其中所述网表的所述实例包括对应于状态机元件SME硬件元件的SME实例及对应于包含一群SME的硬件元件的SME群组实例,且其中对所述自动机的所述状态一起分组包括将所述自动机的所述状态分组到SME群组实例中。
3.根据权利要求2所述的方法,其中在对所述自动机的所述状态一起分组中使用的所述物理设计包括包含一群SME的所述硬件元件的物理设计。
4.根据权利要求3所述的方法,其中在对所述自动机的所述状态一起分组中使用的所述物理设计包括对包含一群SME的所述硬件元件中的所述SME的输入或输出限制中的一者。
5.根据权利要求4所述的方法,其中在对所述自动机的所述状态一起分组中使用的所述物理设计包括包含一群SME的所述硬件元件中的所述SME共享输出的限制。
6.根据权利要求2所述的方法,其中SME群组实例包括含有两个SME实例的成对群组GOT实例,且其中在对所述自动机的所述状态一起分组中使用的所述物理设计包括每一GOT中的所述SME耦合到共同输出的限制。
7.根据权利要求6所述的方法,其中将所述自动机转换成网表包含:
确定所述自动机的所述状态中的哪些可一起分组在GOT实例中;及
基于所述确定使所述自动机的所述状态成对。
8.根据权利要求7所述的方法,其中当所述自动机的第一状态或第二状态均非所述自动机的最终状态,且所述自动机的所述第一状态及所述第二状态中的一者不驱动不同于所述自动机的所述第一状态或所述第二状态的任何状态时,所述自动机的所述第一状态及所述第二状态可在GOT实例中一起成对。
9.根据权利要求7所述的方法,其中当所述自动机的第一状态或第二状态均非所述自动机的最终状态,且所述自动机的所述第一状态及所述第二状态均驱动相同的外部状态时,所述自动机的所述第一状态及所述第二状态可在GOT实例中一起成对。
10.根据权利要求7所述的方法,其中当所述自动机的第一状态及第二状态中的一者为所述自动机的最终状态,且所述自动机的所述第一状态及所述第二状态中的另一者不驱动任何外部状态时,所述自动机的所述第一状态及所述第二状态可在GOT实例中一起成对。
11.根据权利要求7所述的方法,其中当所述自动机的第一状态及第二状态均为所述自动机的最终状态,且所述自动机的所述第一状态及所述第二状态均驱动相同的外部状态时,所述自动机的所述第一状态及所述第二状态可在GOT实例中一起成对。
12.根据权利要求7所述的方法,其中确定所述自动机的所述状态中的哪些可一起分组在GOT实例中包含:使用图论来确定所述自动机的所述状态中的哪些可一起分组在GOT实例中。
13.根据权利要求12所述的方法,其中使用图论来确定所述自动机的所述状态中的哪些可一起分组在GOT实例中包含:使用图论识别最大匹配来确定所述自动机的所述状态中的哪些可一起分组在GOT实例中。
14.根据权利要求1所述的方法,其进一步包含:
发布所述映像。
15.根据权利要求1所述的方法,其中所述网表的所述实例包含通用实例及专用实例,其中所述通用实例对应于所述自动机的通用状态,且所述专用实例对应于所述自动机的专用状态。
16.根据权利要求15所述的方法,其中对应于所述通用实例的所述硬件元件包括状态机元件SME及成对群组GOT,且其中对应于所述专用实例的所述硬件元件包括计数器及逻辑元件。
17.一种计算机装置,其用于从源代码产生经配置以编程并行机的映像,所述计算机装置包括:
用于将未编译可执行软件应用程序的源代码转换成包含多个互连状态的自动机的装置;
用于将所述自动机转换成网表的装置,所述网表包含对应于所述自动机的状态的实例,其中所述实例对应于并行机的硬件元件,其中将所述自动机转换成网表包括基于所述并行机的物理设计来对所述自动机的状态一起分组;及
用于将所述网表转换成所述映像的装置,所述映像包括经编译二进制数据以对所述并行机进行编程以与所述网表的所述实例相对应,从而所述经编译二进制数据经安排以编程所述并行机以在所述映像被装载到所述并行机时提供所述未编译可执行应用程序的所述源代码限定的功能性。
18.根据权利要求17所述的计算机装置,其中所述网表的所述实例包括对应于状态机元件SME硬件元件的SME实例及对应于包含一群SME的硬件元件的SME群组实例,且其中对所述自动机的所述状态一起分组包括将所述自动机的所述状态分组到SME群组实例中。
19.根据权利要求18所述的计算机装置,其中在对所述自动机的所述状态一起分组中使用的所述物理设计包括包含一群SME的所述硬件元件的物理设计。
20.根据权利要求19所述的计算机装置,其中在对所述自动机的所述状态一起分组中使用的所述物理设计包括对包含一群SME的所述硬件元件中的所述SME的输入或输出限制中的一者。
21.根据权利要求20所述的计算机装置,其中在对所述自动机的所述状态一起分组中使用的所述物理设计包括包含一群SME的所述硬件元件中的所述SME共享输出的限制。
22.根据权利要求18所述的计算机装置,其中SME群组实例包括含有两个SME实例的成对群组GOT实例,且其中在对所述自动机的所述状态一起分组中使用的所述物理设计包括每一GOT中的所述SME耦合到共同输出的限制。
23.根据权利要求22所述的计算机装置,其中将所述自动机转换成网表包含:
确定所述自动机的所述状态中的哪些可一起分组在GOT实例中;及
基于所述确定使所述自动机的所述状态成对。
24.根据权利要求17所述的计算机装置,其进一步包含:
发布所述映像。
25.一种计算机,其包含:
存储器,其上面存储有软件;及
处理器,其通信地耦合到所述存储器,其中所述软件在由所述处理器执行时使所述处理器:
将未编译可执行软件应用程序的源代码转换成包含多个互连状态的自动机;
将所述自动机转换成网表,所述网表包含对应于所述自动机的状态的实例,其中所述实例对应于并行机的硬件元件,其中所述实例包括多个第一实例及含有两个或两个以上第一实例的群组实例,其中将所述自动机转换成网表的操作包括基于许多未用的第一实例来将所述自动机的状态一起分组在群组实例中的操作;及
将所述网表转换成映像,所述映像包括经编译二进制数据以对所述并行机进行编程以与所述网表的所述实例相对应,从而所述经编译二进制数据经安排以编程所述并行机以在所述映像被装载到所述并行机时提供所述未编译可执行应用程序的所述源代码限定的功能性。
26.根据权利要求25所述的计算机,其中所述群组实例包括成对群组GOT实例,且其中对所述自动机的状态分组的操作包括根据成对的状态驱动哪些状态来使所述自动机的状态成对的操作。
27.根据权利要求26所述的计算机,其中基于许多未用的第一实例将所述自动机的状态分组在群组实例中的操作包括操作以:
基于以下条件确定所述自动机的第一状态与第二状态是否可成对:
所述第一状态或所述第二状态均非所述自动机中的最终状态,且所述第一状态及所述第二状态中的一者不驱动不同于所述第一状态或所述第二状态的任何状态;
所述第一状态或所述第二状态均非所述自动机中的最终状态,且所述第一状态及所述第二状态均驱动相同的外部状态;
所述第一状态或所述第二状态中的任一者为最终状态,且并非最终状态的所述第一状态或所述第二状态不驱动除了所述第一状态或所述第二状态之外的任何状态;及
所述第一状态及所述第二状态均为最终状态,且所述第一状态及所述第二状态均驱动相同的外部状态。
28.根据权利要求25所述的计算机,其中将所述自动机转换成网表的操作包括操作以:
将所述自动机的所述状态模型化为图,其中所述图的顶点对应于状态,且所述图的边对应于所述自动机的所述状态的可能成对;
确定所述图的匹配顶点;及
使对应于所述匹配顶点的所述自动机的状态成对。
29.根据权利要求28所述的计算机,其中将所述自动机转换成网表的操作包括操作以:
确定所述图的最大匹配。
30.根据权利要求29所述的计算机,其中将所述自动机转换成网表的操作包括操作以:
使对应于匹配顶点的所述自动机的每一组状态成对;及
将对应于未匹配顶点的所述自动机的每一状态映射到一GOT实例,其中所述GOT实例中的一个SME实例将为未用的。
31.一种用于从源代码产生经配置以编程并行机的映像的系统,其包含:
计算机,其经配置以:
将未编译可执行软件应用程序的源代码转换成包含多个互连状态的自动机;
将所述自动机转换成网表,所述网表包含对应于所述自动机的状态的实例,其中所述实例对应于并行机的硬件元件,其中所述实例包括多个第一实例及含有两个或两个以上第一实例的群组实例,其中将所述自动机转换成网表的操作包括基于许多未用的第一实例来将所述自动机的状态一起分组在群组实例中的操作;及
将所述网表转换成映像,所述映像包括经编译二进制数据以对所述并行机进行编程以与所述网表的所述实例相对应,从而所述经编译二进制数据经安排以编程所述并行机以在所述映像被装载到所述并行机时提供所述未编译可执行应用程序的所述源代码限定的功能性;及
装置,其经配置以将所述映像加载到所述并行机上。
32.根据权利要求31所述的系统,其中对状态一起分组的操作包括操作以:
根据成对的状态驱动哪些状态来使所述自动机的状态成对。
33.根据权利要求31所述的系统,其中基于许多未用的第一实例将所述自动机的状态一起分组在群组实例中的操作包括操作以:
基于以下条件确定所述自动机的第一状态与所述自动机的第二状态是否可成对:
所述第一状态或所述第二状态均非所述自动机中的最终状态,且所述第一状态及所述第二状态中的一者不驱动不同于所述第一状态或所述第二状态的任何状态;
所述第一状态或所述第二状态均非所述自动机中的最终状态,且所述第一状态及所述第二状态均驱动相同的外部状态;
所述第一状态或所述第二状态中的任一者为最终状态,且并非最终状态的所述第一状态或所述第二状态不驱动除了所述第一状态或所述第二状态之外的任何状态;及
所述第一状态及所述第二状态均为最终状态,且所述第一状态及所述第二状态均驱动相同的外部状态。
34.根据权利要求31所述的系统,其中基于许多未用的第一实例将所述自动机的状态一起分组在群组实例中的操作包括操作以:
将所述状态模型化为图,其中所述图的顶点对应于状态,且所述图的边对应于所述状态的可能成对;
确定所述图的匹配顶点;及
使对应于所述匹配顶点的状态成对。
35.根据权利要求34所述的系统,其中基于许多未用的第一实例将所述自动机的状态一起分组在群组实例中的操作包括操作以:
确定所述图的最大匹配。
36.根据权利要求35所述的系统,其中基于许多未用的第一实例将所述自动机的状态一起分组在群组实例中的操作包括操作以:
使对应于匹配顶点的所述自动机的每一组状态成对;及
将对应于未匹配顶点的所述自动机的每一状态映射到一GOT实例,其中所述GOT实例中的一个SME实例将为未用的。
37.根据权利要求31所述的系统,其中所述装置经配置以将所述自动机的每一对状态实施为所述并行机中的硬件元件的成对群组GOT。
38.一种通过用根据权利要求1所述的方法产生的所述映像编程的并行机。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161436075P | 2011-01-25 | 2011-01-25 | |
US61/436,075 | 2011-01-25 | ||
PCT/US2012/022444 WO2012103151A2 (en) | 2011-01-25 | 2012-01-24 | State grouping for element utilization |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103430148A CN103430148A (zh) | 2013-12-04 |
CN103430148B true CN103430148B (zh) | 2016-09-28 |
Family
ID=46545132
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280013903.2A Active CN103430148B (zh) | 2011-01-25 | 2012-01-24 | 用于元件利用的状态分组 |
Country Status (7)
Country | Link |
---|---|
US (2) | US8788991B2 (zh) |
EP (1) | EP2668576B1 (zh) |
JP (1) | JP5763784B2 (zh) |
KR (1) | KR101551045B1 (zh) |
CN (1) | CN103430148B (zh) |
TW (1) | TWI512625B (zh) |
WO (1) | WO2012103151A2 (zh) |
Families Citing this family (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
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 |
US8402188B2 (en) | 2008-11-10 | 2013-03-19 | Micron Technology, Inc. | Methods and systems for devices with a self-selecting bus decoder |
US20100138575A1 (en) | 2008-12-01 | 2010-06-03 | Micron Technology, Inc. | Devices, systems, and methods to synchronize simultaneous dma parallel processing of a single data stream by multiple devices |
US9348784B2 (en) | 2008-12-01 | 2016-05-24 | Micron Technology, Inc. | Systems and methods for managing endian mode of a device |
US9164945B2 (en) | 2008-12-01 | 2015-10-20 | Micron Technology, Inc. | Devices, systems, and methods to synchronize parallel processing of a single data stream |
US8140780B2 (en) | 2008-12-31 | 2012-03-20 | Micron Technology, Inc. | Systems, methods, and devices for configuring a device |
US8214672B2 (en) | 2009-01-07 | 2012-07-03 | Micron Technology, Inc. | Method and systems for power consumption management of a pattern-recognition processor |
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 |
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 |
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 |
US8601013B2 (en) | 2010-06-10 | 2013-12-03 | Micron Technology, Inc. | Analyzing data using a hierarchical structure |
KR101640295B1 (ko) | 2011-01-25 | 2016-07-15 | 마이크론 테크놀로지, 인크. | 정규 표현을 컴파일하기 위한 방법 및 장치 |
US8788991B2 (en) | 2011-01-25 | 2014-07-22 | Micron Technology, Inc. | State grouping for element utilization |
US8843911B2 (en) | 2011-01-25 | 2014-09-23 | Micron Technology, Inc. | Utilizing special purpose elements to implement a FSM |
JP5857072B2 (ja) | 2011-01-25 | 2016-02-10 | マイクロン テクノロジー, インク. | オートマトンの入次数および/または出次数を制御するための量化子の展開 |
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 |
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 |
US9524248B2 (en) | 2012-07-18 | 2016-12-20 | Micron Technology, Inc. | Memory management for a hierarchical memory system |
US9304968B2 (en) | 2012-07-18 | 2016-04-05 | Micron Technology, Inc. | Methods and devices for programming a state machine engine |
US9235798B2 (en) | 2012-07-18 | 2016-01-12 | Micron Technology, Inc. | Methods and systems for handling data received by a state machine engine |
US9389841B2 (en) | 2012-07-18 | 2016-07-12 | Micron Technology, Inc. | Methods and systems for using state vector data in a state machine engine |
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 |
US9501131B2 (en) | 2012-08-31 | 2016-11-22 | Micron Technology, Inc. | Methods and systems for power management in a pattern recognition processing system |
GB2511072A (en) * | 2013-02-22 | 2014-08-27 | Ibm | Non-deterministic finite state machine module for use in a regular expression matching system |
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 |
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 |
US10846103B2 (en) | 2015-10-06 | 2020-11-24 | Micron Technology, Inc. | Methods and systems for representing processing resources |
US10977309B2 (en) | 2015-10-06 | 2021-04-13 | Micron Technology, Inc. | Methods and systems for creating networks |
US10691964B2 (en) | 2015-10-06 | 2020-06-23 | Micron Technology, Inc. | Methods and systems for event reporting |
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 |
US10481881B2 (en) * | 2017-06-22 | 2019-11-19 | Archeo Futurus, Inc. | Mapping a computer code to wires and gates |
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 |
DE102018100423A1 (de) * | 2018-01-10 | 2019-07-11 | Dspace Digital Signal Processing And Control Engineering Gmbh | Inkrementelles Generieren einer FPGA Implementierung mit Graphen-basierter Ähnlichkeitssuche |
TWI755112B (zh) * | 2020-10-23 | 2022-02-11 | 財團法人工業技術研究院 | 電腦程式碼之優化方法、優化系統及應用其之電子裝置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5784298A (en) * | 1993-10-15 | 1998-07-21 | International Business Machines Corporation | Apparatus and method for using finite state machines (FSMs) to monitor a serial data stream for characteristic patterns |
US6262594B1 (en) * | 1999-11-05 | 2001-07-17 | Ati International, Srl | Apparatus and method for configurable use of groups of pads of a system on chip |
CN1759393A (zh) * | 2003-01-09 | 2006-04-12 | 思科系统公司 | 一种将专用搜索寄存器和专用状态机寄存器与相关执行硬件集成以支持规则集合对数据的快速应用的可编程处理器装置 |
Family Cites Families (73)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5081608A (en) | 1988-04-18 | 1992-01-14 | Matsushita Electric Industrial Co., Ltd. | Apparatus for processing record-structured data by inserting replacement data of arbitrary length into selected data fields |
JP3130326B2 (ja) | 1991-03-20 | 2001-01-31 | 富士通株式会社 | 階層ネットワーク構成演算素子 |
US5537580A (en) | 1994-12-21 | 1996-07-16 | Vlsi Technology, Inc. | Integrated circuit fabrication using state machine extraction from behavioral hardware description language |
US5831853A (en) | 1995-06-07 | 1998-11-03 | Xerox Corporation | Automatic construction of digital controllers/device drivers for electro-mechanical systems using component models |
US5729678A (en) | 1996-03-04 | 1998-03-17 | Ag Communication Systems Corporation | Bus monitor system |
WO1998021651A1 (en) * | 1996-11-14 | 1998-05-22 | Alcatel Usa Sourcing, L.P. | Generic software state machine and method of constructing dynamic objects for an application program |
US5966534A (en) | 1997-06-27 | 1999-10-12 | Cooke; Laurence H. | Method for compiling high level programming languages into an integrated processor with reconfigurable logic |
US6748588B1 (en) | 1999-03-31 | 2004-06-08 | Microsoft Corporation | One-pass greedy-pattern-matching finite-state-machine code generation |
US6564336B1 (en) | 1999-12-29 | 2003-05-13 | General Electric Company | Fault tolerant database for picture archiving and communication systems |
US7140018B1 (en) | 2000-06-20 | 2006-11-21 | International Business Machines Corporation | Method of using a distinct flow of computational control as a reusable abstract data object |
US6832378B1 (en) | 2000-06-20 | 2004-12-14 | International Business Machines Corporation | Parallel software processing system |
US6507903B1 (en) | 2000-06-20 | 2003-01-14 | International Business Machines Corporation | High performance non-blocking parallel storage manager for parallel software executing on coordinates |
GB2367917A (en) | 2000-10-12 | 2002-04-17 | Qas Systems Ltd | Retrieving data representing a postal address from a database of postal addresses using a trie structure |
US7020850B2 (en) | 2001-05-02 | 2006-03-28 | The Mathworks, Inc. | Event-based temporal logic |
JP4846924B2 (ja) | 2001-05-31 | 2011-12-28 | キヤノン株式会社 | パターン認識装置 |
US7546354B1 (en) | 2001-07-06 | 2009-06-09 | Emc Corporation | Dynamic network based storage with high availability |
JP2003044184A (ja) | 2001-08-01 | 2003-02-14 | Canon Inc | データ処理装置及び電力制御方法 |
US7170891B2 (en) | 2001-08-30 | 2007-01-30 | Messenger Terabit Networks, Inc. | High speed data classification system |
US6957371B2 (en) | 2001-12-04 | 2005-10-18 | Intellitech Corporation | Method and apparatus for embedded built-in self-test (BIST) of electronic circuits and systems |
US6785872B2 (en) * | 2002-01-22 | 2004-08-31 | Hewlett-Packard Development Company, L.P. | Algorithm-to-hardware system and method for creating a digital circuit |
US20040127207A1 (en) | 2002-09-25 | 2004-07-01 | Interdigital Technology Corporation | Programmable radio interface |
US7171561B2 (en) | 2002-10-17 | 2007-01-30 | The United States Of America As Represented By The Secretary Of The Air Force | Method and apparatus for detecting and extracting fileprints |
CN1894559A (zh) | 2003-03-17 | 2007-01-10 | 索尼电子有限公司 | 执行使命引擎的方法和装置 |
JP4620944B2 (ja) | 2003-10-16 | 2011-01-26 | キヤノン株式会社 | 積和演算回路及びその方法 |
US7487542B2 (en) | 2004-01-14 | 2009-02-03 | International Business Machines Corporation | Intrusion detection using a network processor and a parallel pattern detection engine |
US20050268258A1 (en) * | 2004-06-01 | 2005-12-01 | Tera Systems, Inc. | Rule-based design consultant and method for integrated circuit design |
US20050283743A1 (en) | 2004-06-07 | 2005-12-22 | Mulholland Philip J | Method for generating hardware information |
WO2006013428A1 (en) | 2004-07-26 | 2006-02-09 | Nokia Corporation, | System and method for searching for content stored by one or more media servers |
US8135652B2 (en) | 2004-10-29 | 2012-03-13 | Nec Laboratories America, Inc. | Parallel support vector method and apparatus |
US7392229B2 (en) | 2005-02-12 | 2008-06-24 | Curtis L. Harris | General purpose set theoretic processor |
US7761851B2 (en) | 2005-05-31 | 2010-07-20 | International Business Machines Corporation | Computer method and system for integrating software development and deployment |
US7805301B2 (en) | 2005-07-01 | 2010-09-28 | Microsoft Corporation | Covariance estimation for pattern recognition |
WO2007055181A1 (ja) | 2005-11-11 | 2007-05-18 | Matsushita Electric Industrial Co., Ltd. | 対話支援装置 |
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 |
US20080168013A1 (en) | 2006-12-05 | 2008-07-10 | Paul Cadaret | Scalable pattern recognition system |
US8656381B2 (en) | 2006-12-07 | 2014-02-18 | International Business Machines Corporation | Presenting machine instructions in a machine-independent tree form suitable for post-link optimizations |
US8055601B2 (en) | 2006-12-08 | 2011-11-08 | Pandya Ashish A | Compiler for compiling content search rules comprising a regular expression using a programmable intelligent search memory (PRISM) and vectors |
CN101013452A (zh) | 2007-02-05 | 2007-08-08 | 江苏大学 | 一种符号化的模型检测方法 |
CN101360088B (zh) | 2007-07-30 | 2011-09-14 | 华为技术有限公司 | 正则表达式编译、匹配系统及编译、匹配方法 |
US8561037B2 (en) | 2007-08-29 | 2013-10-15 | Convey Computer | Compiler for generating an executable comprising instructions for a plurality of different instruction sets |
JP4957500B2 (ja) | 2007-10-12 | 2012-06-20 | 日本電気株式会社 | 文字列照合回路 |
CN101499065B (zh) | 2008-02-01 | 2011-11-02 | 华为技术有限公司 | 基于fa的表项压缩方法及装置、表项匹配方法及装置 |
CN101339501B (zh) | 2008-08-12 | 2012-07-18 | 北京航空航天大学 | 基于有向图的ws-bpel控制环路检测方法 |
WO2010018710A1 (ja) | 2008-08-13 | 2010-02-18 | 日本電気株式会社 | 有限オートマトン生成装置、パターンマッチング装置、有限オートマトン回路生成方法およびプログラム |
US8095494B2 (en) | 2008-10-16 | 2012-01-10 | International Business Machines Corporation | Rules-based cross-FSM transition triggering |
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 |
US8805686B2 (en) | 2008-10-31 | 2014-08-12 | Soundbound, Inc. | Melodis crystal decoder method and device for searching an utterance by accessing a dictionary divided among multiple parallel processors |
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 |
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 |
US20100138575A1 (en) | 2008-12-01 | 2010-06-03 | Micron Technology, Inc. | Devices, systems, and methods to synchronize simultaneous dma parallel processing of a single data stream by multiple devices |
US8140780B2 (en) | 2008-12-31 | 2012-03-20 | Micron Technology, Inc. | Systems, methods, and devices for configuring a device |
US8214672B2 (en) | 2009-01-07 | 2012-07-03 | Micron Technology, Inc. | Method and systems for power consumption management of a pattern-recognition processor |
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 |
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 |
US20100325633A1 (en) | 2009-06-19 | 2010-12-23 | Microsoft Corporation | Searching Regular Expressions With Virtualized Massively Parallel Programmable Hardware |
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 |
US8843911B2 (en) | 2011-01-25 | 2014-09-23 | Micron Technology, Inc. | Utilizing special purpose elements to implement a FSM |
US8788991B2 (en) | 2011-01-25 | 2014-07-22 | Micron Technology, Inc. | State grouping for element utilization |
KR101640295B1 (ko) | 2011-01-25 | 2016-07-15 | 마이크론 테크놀로지, 인크. | 정규 표현을 컴파일하기 위한 방법 및 장치 |
JP5857072B2 (ja) | 2011-01-25 | 2016-02-10 | マイクロン テクノロジー, インク. | オートマトンの入次数および/または出次数を制御するための量化子の展開 |
-
2012
- 2012-01-24 US US13/357,511 patent/US8788991B2/en active Active
- 2012-01-24 WO PCT/US2012/022444 patent/WO2012103151A2/en active Application Filing
- 2012-01-24 CN CN201280013903.2A patent/CN103430148B/zh active Active
- 2012-01-24 KR KR1020137021925A patent/KR101551045B1/ko active IP Right Grant
- 2012-01-24 JP JP2013550672A patent/JP5763784B2/ja active Active
- 2012-01-24 EP EP12739650.5A patent/EP2668576B1/en active Active
- 2012-01-30 TW TW101102989A patent/TWI512625B/zh active
-
2014
- 2014-07-18 US US14/335,537 patent/US9104828B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5784298A (en) * | 1993-10-15 | 1998-07-21 | International Business Machines Corporation | Apparatus and method for using finite state machines (FSMs) to monitor a serial data stream for characteristic patterns |
US6262594B1 (en) * | 1999-11-05 | 2001-07-17 | Ati International, Srl | Apparatus and method for configurable use of groups of pads of a system on chip |
CN1759393A (zh) * | 2003-01-09 | 2006-04-12 | 思科系统公司 | 一种将专用搜索寄存器和专用状态机寄存器与相关执行硬件集成以支持规则集合对数据的快速应用的可编程处理器装置 |
Also Published As
Publication number | Publication date |
---|---|
TWI512625B (zh) | 2015-12-11 |
EP2668576A4 (en) | 2016-05-18 |
EP2668576B1 (en) | 2024-04-24 |
EP2668576A2 (en) | 2013-12-04 |
WO2012103151A3 (en) | 2012-11-15 |
US8788991B2 (en) | 2014-07-22 |
CN103430148A (zh) | 2013-12-04 |
WO2012103151A2 (en) | 2012-08-02 |
US20120192166A1 (en) | 2012-07-26 |
US20150046889A1 (en) | 2015-02-12 |
JP5763784B2 (ja) | 2015-08-12 |
KR101551045B1 (ko) | 2015-09-07 |
US9104828B2 (en) | 2015-08-11 |
TW201239765A (en) | 2012-10-01 |
KR20140005258A (ko) | 2014-01-14 |
JP2014508996A (ja) | 2014-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103430148B (zh) | 用于元件利用的状态分组 | |
CN103547998B (zh) | 用于编译正则表达式的方法和设备 | |
CN103547999B (zh) | 利用专用元件实施有限状态机 | |
CN104011736B (zh) | 用于状态机中的检测的方法及系统 | |
CN103443767B (zh) | 展开量化以控制自动机的入度和/或出度 | |
CN105051711B (zh) | 用于提供由状态机引擎接收的数据的方法及设备 | |
CN103999035B (zh) | 用于状态机中的数据分析的方法及系统 | |
CN104067282B (zh) | 状态机晶格中的计数器操作 | |
US10366009B2 (en) | Methods and systems for handling data received by a state machine engine | |
CN104011723B (zh) | 状态机晶格中的布尔逻辑 | |
CN104487957B (zh) | 用于编程状态机引擎的方法及装置 | |
CN103988212A (zh) | 用于在状态机中路由的方法及系统 | |
US20130212363A1 (en) | Machine transport and execution of logic simulation | |
CN103026332B (zh) | 可编程装置、层次并行机、用于提供状态信息的方法 | |
Keating et al. | SystemVerilog Extensions | |
Kulkani et al. | Custom Memory Organization and Data Transfer: Architectural Issues and Exploration Methods |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |