用于在状态机中路由的方法及系统的制作方法

文档序号:6497694阅读:192来源:国知局
用于在状态机中路由的方法及系统的制作方法
【专利摘要】一种装置包含路由缓冲器(48)。所述路由缓冲器(48)包含经配置以接收与数据流的至少一部分的分析相关的信号的第一端口。所述路由缓冲器(48)还包含经配置以在第一时间将所述信号选择性地提供到状态机的块(32)的第一路由线的第二端口。所述路由缓冲器(48)进一步包含经配置以在所述第一时间将所述信号选择性地提供到所述状态机的所述块(32)的第二路由线的第三端口。
【专利说明】用于在状态机中路由的方法及系统
【技术领域】
[0001]本发明的实施例一股来说涉及电子装置,且更具体来说,在某些实施例中涉及具有用于型式辨识的并行有限状态机的电子装置。
【背景技术】
[0002]在常规基于冯.诺伊曼(von Neumann)的计算机上执行复杂型式辨识可为低效的。然而,生物大脑(特定来说,人脑)擅长执行型式辨识。当前研究表明,人脑使用新皮质中的一系列以层次方式组织的神经元层执行型式辨识。层次的较低层中的神经元分析来自(举例来说)感觉器官的“原始信号”,而较高层中的神经元分析来自较低层中的神经元的信号输出。新皮质中的此层次式系统(可能与大脑的其它区一起)实现复杂型式辨识,此使得人类能够执行高级功能,例如空间推理、意识思考及复杂语言。
[0003]在计算领域中,型式辨识任务日益具挑战性。在计算机之间传输的数据量越来越大,且用户希望识别的型式的数目日益增加。举例来说,通常通过搜索数据流中的型式(例如,特定短语或代码片段)来检测垃圾邮件或恶意软件。型式的数目随垃圾邮件与恶意软件的多样化而增加,因为新型式可经实施以搜索新变化形式。针对这些型式中的每一者搜索数据流可形成计算瓶颈。通常,在接收数据流时,针对每一型式一次搜索一个数据流。在系统准备好搜索数据流的下一部分之前的延迟随型式的数目而增加。因此,型式辨识可减慢数据的接收。
[0004]已设计用以针对若干型式搜索数据流的硬件,但此硬件通常不能在给定时间量内处理充足数据量。经配置以搜索数据流的一些装置通过将数据流分布在多个电路当中而如此进行。所述电路各自确定数据流是否匹配型式的一部分。通常,大量电路并行操作,从而各自大体同时搜索数据流。然而,尚未存在一种实际上允许以与生物大脑的方式更相当的方式执行型式辨识的系统。此系统的开发是期望的。
【专利附图】

【附图说明】
[0005]图1图解说明根据本发明的各种实施例的具有状态机引擎的系统的实例。
[0006]图2图解说明根据本发明的各种实施例的图1的状态机引擎的FSM晶格的实例。
[0007]图3图解说明根据本发明的各种实施例的图2的FSM晶格的块的实例。
[0008]图4图解说明根据本发明的各种实施例的图3的块的行的实例。
[0009]图5图解说明根据本发明的各种实施例的图4的行的两个一群组的实例。
[0010]图6图解说明根据本发明的各种实施例的有限状态机图的实例。
[0011]图7图解说明根据本发明的各种实施例的借助FSM晶格实施的两层级层次的实例。
[0012]图8图解说明根据本发明的各种实施例的用于编译器将源代码转换成二进制文件以用于编程图2的FSM晶格的方法的实例。
[0013]图9图解说明根据本发明的各种实施例的状态机引擎。[0014]图10图解说明根据本发明的各种实施例的图3的块的行的第二实例。
[0015]图11图解说明根据本发明的各种实施例的图10的块内交换器。
[0016]图12图解说明根据本发明的各种实施例的图3的第一缓冲器。
[0017]图13图解说明根据本发明的各种实施例的图3的第二缓冲器。
【具体实施方式】
[0018]现在转到各图,图1图解说明通常由参考编号10指定的基于处理器的系统的实施例。系统10可为多种类型中的任一者,例如桌上型计算机、膝上型计算机、寻呼机、蜂窝式电话、个人记事本、便携式音频播放器、控制电路、相机等。系统10也可为网络节点,例如路由器、服务器或客户端(例如,先前所描述的类型的计算机中的一者)。系统10可为某一其它种类的电子装置,例如复印机、扫描仪、打印机、游戏控制台、电视机、机顶盒视频分配或记录系统、电缆盒、个人数字媒体播放器、工厂自动化系统、汽车计算机系统或医疗装置。(用以描述系统的这各种实例的术语(如本文中所使用的许多其它术语)可共享一些所指物,且如此不应按照所列举的其它物项来狭义地理解。)
[0019]在典型基于处理器的装置(例如系统10)中,处理器12(例如微处理器)控制系统10中的系统功能及请求的处理。此外,处理器12可包括共享系统控制的多个处理器。处理器12可直接或间接耦合到系统10中的元件中的每一者以使得处理器12通过执行可存储于系统10内或在系统10外部的指令来控制系统10。
[0020]根据本文中所描述的实施例,系统10包含可在处理器12的控制下操作的状态机引擎14。状态机引擎14可采用若干种状态机架构中的任一者,包含(但不限于)Mealy架构、Moore架构、有限状态机(FSM)、确定性FSM(DFSM)、位并行状态机(BPSM)等。虽然可使用多种架构,但出于论述目的,本申请案是指FSM。然而,所属领域的技术人员将了解可使用多种状态机架构中的任一者来米用所描述技术。
[0021]如下文所进一步论述,状态机引擎14可包含若干个(例如,一或多个)有限状态机(FSM)晶格。每一 FSM晶格可包含各自并行接收及分析同一数据的多个FSM。此外,FSM晶格可布置成若干群组(例如,群集),以使得FSM晶格的群集可并行分析同一输入数据。此外,状态机引擎14的FSM晶格的群集可布置成层次式结构,其中来自所述层次式结构的较低层级上的状态机晶格的输出可用作到较高层级上的状态机晶格的输入。通过经由层次式结构串行地级联状态机引擎14的并行FSM晶格的群集,可分析(例如,评估、搜索等)日益复杂的型式。
[0022]此外,基于状态机引擎14的层次式并行配置,状态机引擎14可用于利用高处理速度的系统中的型式辨识。例如,本文中所描述的实施例可并入于具有I千兆字节/秒的处理速度的系统中。因此,利用状态机引擎14,可针对各种型式快速地分析来自高速存储器装置或其它外部装置的数据。状态机引擎14可根据数种准则约同时(例如,在单个装置循环期间)及其相应搜索项分析数据流。状态机引擎14的层级上的FSM群集内的FSM晶格中的每一者可各自约同时接收来自数据流的同一搜索项,且并行FSM晶格中的每一者可确定所述项是否将状态机引擎14推进到处理准则中的下一状态。状态机引擎14可根据相对大量准则(例如,100个以上、110个以上或10,000个以上)分析项。由于其并行操作,因此其可将准则应用于具有相对高带宽的数据流(例如,大于或通常等于I千兆字节/秒的数据流)而不减慢所述数据流。
[0023]在一个实施例中,状态机引擎14可经配置以辨识(例如,检测)数据流中的大量型式。例如,状态机引擎14可用以检测用户或其它实体可希望分析的多种类型的数据流中的一或多者中的型式。举例来说,状态机引擎14可经配置以分析经由网络接收的数据流,例如经由因特网接收的包或者经由蜂窝式网络接收的话音或数据。在一个实例中,状态机引擎14可经配置以针对垃圾邮件或恶意软件分析数据流。数据流可作为串行数据流接收,其中以具有意义的次序(例如以时间、词汇或语义重要性次序)接收数据。或者,数据流可经并行或无序地接收且然后转换成串行数据流,例如,通过将经由因特网接收的包重新排序。在一些实施例中,数据流可串行地呈现项,但表达所述项中的每一者的位可被并行接收。数据流可从系统10外部的源接收或可通过询问存储器装置(例如存储器16)且由存储于存储器16中的数据形成数据流而形成。在其它实例中,状态机引擎14可经配置以辨识拼写某一字的字符序列、规定基因的遗传碱基对序列、图片或视频文件中形成图像的一部分的位序列、可执行文件中形成程序的一部分的位序列或者音频文件中形成歌曲或口语短语的一部分的位序列。将分析的数据流可包含呈二进制格式或其它格式(例如,十进制、ASCII等)的多个数据位。所述流可编码具有单个数字或多个数字(例如,数个二进制数字)的数据。
[0024]如将了解,系统10可包含存储器16。存储器16可包含易失性存储器,例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步DRAM (SDRAM)、双倍数据速率DRAM (DDR SDRAM)、DDR2 SDRAM、DDR3 SDRAM等。存储器16还可包含用以连同易失性存储器一起使用的非易失性存储器,例如只读存储器(ROM)、PC-RAM、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、金属-氧化物-氮化物-氧化物-硅(MONOS)存储器、基于多晶硅浮动栅极的存储器及/或各种架构的其它类型的快闪存储器(例如,“与非”存储器、“或非”存储器等)。存储器16可包含可提供将由状态机引擎14分析的数据的一或多个存储器装置,例如DRAM装置。此类装置可称为或包含固态驱动器(SSD)、MultimediaMediaCard(MMC)、SecureDigital (SD)卡、CompactFlash (CF)卡或任何其它适合装置。此外,应了解,此类装置可经由任何适合接口(例如通用串行总线(USB)、外围组件互连(PCI)、高速PCI (PC1-E)、小型计算机系统接口(SCSI)、IEEE1394(火线(Firewire))或任何其它适合接口)耦合到系统10。为促进存储器16 (例如快闪存储器装置)的操作,系统10可包含存储器控制器(未图解说明)。如将了解,所述存储器控制器可为独立装置或者其可与处理器12成整体。另外,系统10可包含外部存储装置18,例如磁性存储装置。所述外部存储装置也可将输入数据提供到状态机引擎14。
[0025]系统10可包含若干个额外元件。例如,编译器20可用以编程状态机引擎14,如关于图8所更详细描述。输入装置22也可耦合到处理器12以允许用户将数据输入到系统10中。例如,输入装置22可用以将数据输入到存储器16中以供稍后由状态机引擎14分析。输入装置22可包含(例如)按钮、交换元件、键盘、光笔、手写笔、鼠标及/或话音辨识系统。输出装置24(例如显示器)也可耦合到处理器12。显示器24可包含(举例来说)IXD、CRT、LED及/或音频显示器。所述系统还可包含用于与网络(例如因特网)介接的网络接口装置26,例如网络接口卡(NIC)。如将了解,系统10可取决于系统10的应用而包含许多其它组件。[0026]图2到5图解说明FSM晶格30的实例。在一实例中,FSM晶格30包括块32的阵列。如将描述,每一块32可包含对应于FSM中的多个状态的多个可选择性耦合硬件元件(例如,可编程元件及/或专用元件)。类似于FSM中的状态,硬件元件可分析输入流且基于所述输入流而激活下游硬件元件。
[0027]可编程元件可经编程以实施许多不同功能。例如,所述可编程元件可包含以层次方式组织成若干行38 (展示于图3及4中)及若干块32 (展示于图2及3中)的状态机元件(SME) 34、36 (展示于图5中)。为了在以层次方式组织的SME34、36之间路由信号,可使用可编程交换元件的层次,其包含块间交换元件40 (展示于图2及3中)、块内交换元件42 (展示于图3及4中)及行内交换元件44 (展示于图4中)。
[0028]如下文所描述,交换元件可包含路由结构及缓冲器。SME34、36可对应于由FSM晶格30实施的FSM的状态。可通过使用如下文所描述的可编程交换元件而将SME34、36耦合在一起。因此,可通过编程SME34、36以对应于状态的功能且通过将SME34、36选择性地耦合在一起以对应于FSM中的状态之间的转变而在FSM晶格30上实施FSM。
[0029]图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上。所述图像可编程(例如,设定)SME34、36的状态。也就是说,所述图像可将SME34、36配置为以某一方式对输入块52处的给定输入做出反应。举例来说,SME34、36可经设定以在于输入块52处接收到字符‘a’时输出高信号。
[0030]在一实例中,可将输入块52、输出块54及/或编程接口 56实施为寄存器以使得向所述寄存器的写入将数据提供到相应元件或从所述寄存器的读取从所述相应元件提供数据。因此,来自存储于对应于编程接口 56的寄存器中的图像的位可加载于SME34、36上。虽然图2图解说明块32、输入块52、输出块54与块间交换元件40之间的某一数目个导体(例如,导线、迹线),但应理解在其它实例中可使用更少或更多导体。
[0031]图3图解说明块32的实例。块32可包含可与可编程块内交换元件42选择性地耦合在一起的多个行38。另外,行38可借助块间交换元件40选择性地耦合到另一块32内的另一行38。行38包含组织成本文中称为两个一群组(GOT) 60的若干对元件的多个SME34、36。在一实例中,块32包括十六(16)个行38。
[0032]图4图解说明行38的实例。G0T60可通过可编程行内交换元件44选择性地耦合到其它G0T60及行38内的任何其它元件(例如,专用元件58)。G0T60也可借助块内交换元件42耦合到其它行38中的其它G0T60,或者借助块间交换元件40耦合到其它块32中的其它G0T60。在一实例中,G0T60具有第一输入62及第二输入64以及输出66。第一输入62耦合到G0T60的第一 SME34且第二输入62耦合到G0T60的第二 SME34,如将参考图5进一步图解说明。[0033]在一实例中,行38包含第一多个行互连导体68及第二多个行互连导体70。在一实例中,G0T60的输入62、64可耦合到一或多个行互连导体68、70,且输出66可耦合到一个行互连导体68、70。在一实例中,第一多个行互连导体68可耦合到行38内的每一 G0T60的每一 SME34、36。第二多个行互连导体70可耦合到行38内的每一 G0T60的仅一个SME34、36,但无法耦合到G0T60的另一 SME34、36。在一实例中,第二多个行互连导体70的第一半部可耦合到行38内的SME34、36的第一半部(来自每一 G0T60的一个SME34),且第二多个行互连导体70的第二半部可耦合到行38内的SME34、36的第二半部(来自每一 G0T60的另一 SME34、36),如将关于图5更佳地图解说明。第二多个行互连导体70与SME34、36之间的有限连接性在本文中称为“奇偶”。在一实例中,行38还可包含专用元件58,例如计数器、可编程布尔逻辑元件、查找表、RAM、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、可编程处理器(例如,微处理器)或用于执行专用功能的其它元件。
[0034]在一实例中,专用元件58包括计数器(在本文中也称为计数器58)。在一实例中,计数器58包括12位可编程递减计数器。12位可编程计数器58具有计数输入、复位输入及零计数输出。计数输入在被断言时使计数器58的值递减I。复位输入在被断言时致使计数器58从相关联寄存器加载初始值。对于12位计数器58来说,可加载多达12位的数目作为所述初始值。当计数器58的值递减到零(O)时,断言零计数输出。计数器58也具有至少两种模式,脉冲及保持。当将计数器58设定为脉冲模式时,在时钟循环期间当计数器58递减到零时断言零计数输出,且在下一时钟循环处不再断言零计数输出。当将计数器58设定为保持模式时,在时钟循环期间当计数器58递减到零时断言零计数输出,且其保持经断言直到计数器58由断言复位输入而被复位为止。
[0035]在另一实例中,专用元件58包括布尔逻辑。在一些实例中,此布尔逻辑可用以从FSM晶格30中的终端状态SME (对应于FSM的终端节点,如本文中稍后所论述)提取信息。所提取的信息可用以将状态信息传送到其它FSM晶格30及/或传送用以重新编程FSM晶格30或重新编程另一 FSM晶格30的编程信息。
[0036]图5图解说明G0T60的实例。G0T60包含具有输入62、64且使其输出72、74耦合至IJ“或”门76及3对I多路复用器78的第一 SME34及第二 SME36。3对I多路复用器78可经设定以将G0T60的输出66耦合到第一 SME34、第二 SME36或者“或”门76。“或”门76可用以将输出72、74两者耦合在一起以形成G0T60的共同输出66。在一实例中,如上文所论述,第一 SME34及第二 SME36展现奇偶,其中第一 SME34的输入62可耦合到行互连件导体68中的一些行互连件导体且第二 SME36的输入64可耦合到其它行互连件导体70。在一实例中,可通过设定交换元件79中的任一者或两者而使G0T60内的两个SME34、36级联及/或循环回到其自身。可通过将SME34、36的输出72、74耦合到另一 SME34、36的输入62、64而将SME34、36级联。可通过将输出72、74耦合到其自己的输入62、64而使SME34、36循环回到其自身。因此,第一 SME34的输出72可不耦合到第一 SME34的输入62及第二 SME36的输入64中的任一者、耦合到其中的一者或其中的两者。
[0037]在一实例中,状态机元件34、36包括并联耦合到检测线82的多个存储器单元80,例如通常用于动态随机存取存储器(DRAM)中的存储器单元。一种此类存储器单元80包括可设定到一数据状态(例如对应于高值或低值(例如,I或O)的数据状态)的存储器单元。存储器单元80的输出耦合到检测线82且到存储器单元80的输入基于数据流线84上的数据而接收信号。在一实例中,数据流线84上的输入经解码以选择存储器单元80中的一者。选定存储器单元80将其所存储数据状态作为输出提供到检测线82上。举例来说,在输入块52处所接收的数据可提供到解码器(未展示)且所述解码器可选择数据流线84中的一者。在一实例中,所述解码器可将8位ACSII字符转换为256个数据流线84中的对应I。
[0038]因此,当存储器单元80设定到高值且数据流线84上的数据对应于存储器单元80时,存储器单元80将高信号输出到检测线82。当数据流线84上的数据对应于存储器单元80且存储器单元80设定到低值时,存储器单元80将低信号输出到检测线82。检测线82上的来自存储器单元80的输出由检测单元86感测。
[0039]在一实例中,输入线62、64上的信号将相应检测单元86设定到作用或非作用状态。当设定到非作用状态时,检测单元86在相应输出72、74上输出低信号,而不管相应检测线82上的信号如何。当设定到作用状态时,检测单元86在从相应SME34、36的存储器单元82中的一者检测到高信号时在相应输出线72、74上输出高信号。当处于作用状态中时,检测单元86在来自相应SME34、36的所有存储器单元82的信号为低时在相应输出线72、74上输出低信号。
[0040]在一实例中,SME34、36包含256个存储器单元80且每一存储器单元80耦合到不同数据流线84。因此,SME34、36可经编程以在数据流线84中的选定一或多者在其上具有高信号时输出高信号。举例来说,SME34可将第一存储器单元80(例如,位O)设定为高且将所有其它存储器单元80 (例如,位I到255)设定为低。当相应检测单元86处于作用状态中时,SME34在对应于位O的数据流线84在其上具有高信号时在输出72上输出高信号。在其它实例中,当多个数据流线84中的一者在其上具有高信号时,可通过将适当存储器单元80设定到高值来设定SME34以输出高信号。
[0041]在一实例中,可通过从相关联寄存器读取位而将存储器单元80设定到高值或低值。因此,可通过将编译器20所创建的图像存储到寄存器中且将所述寄存器中的位加载到相关联存储器单元80中来编程SME34。在一实例中,编译器20所创建的图像包含高及低(例如,I及O)位的二进制图像。所述图像可编程FSM晶格30以通过级联SME34、36而使其作为FSM操作。举例来说,可通过将检测单元86设定到作用状态而将第一 SME34设定到作用状态。第一 SME34可经设定以在对应于位O的数据流线84在其上具有高信号时输出高信号。第二 SME36可最初设定到非作用状态,但可在作用时经设定以在对应于位I的数据流线84在其上具有高信号时输出高信号。可通过设定第一 SME34的输出72以耦合到第二 SME36的输入64来级联第一 SME34与第二 SME36。因此,当在对应于位O的数据流线84上感测到高信号时,第一 SME34在输出72上输出高信号且将第二 SME36的检测单元86设定到作用状态。当在对应于位I的数据流线84上感测到高信号时,第二 SME36在输出74上输出高信号以激活另一 SME36或以供从FSM晶格30输出。
[0042]在一实例中,在单个物理装置上实施单个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的输出数据。
[0043]在一实例中,用于加载到FSM晶格30上的图像包括用于配置FSM晶格30内的可编程元件、可编程交换元件及专用元件的多个信息位。在一实例中,所述图像可加载到FSM晶格30上以编程FSM晶格30以基于某些输入而提供所要输出。输出块54可基于可编程元件对数据输入块52处的数据的反应而提供来自FSM晶格30的输出。来自输出块54的输出可包含指示给定型式的匹配的单个位、包括指示与多个型式的匹配及不匹配的多个位的字及对应于所有或某些可编程元件在给定时刻的状态的状态向量。如所描述,若干个FSM晶格30可包含于状态机引擎(例如状态机引擎14)中以执行数据分析,例如型式辨识(例如,语音辨识、图像辨识等)、信号处理、成像、计算机视觉、密码编译及其它。
[0044]图6图解说明可由FSM晶格30实施的有限状态机(FSM)的实例性模型。FSM晶格30可配置(例如,编程)为FSM的物理实施方案。FSM可表示为含有一或多个根节点92的图90(例如,有向图、无向图、伪图)。除了根节点92之外,所述FSM还可由经由一或多个边缘98连接到根节点92及其它标准节点94的数个标准节点94及终端节点96构成。节点92、94、96对应于所述FSM中的状态。边缘98对应于所述状态之间的转变。
[0045]节点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。如本文所使用,“上游”是指一或多个节点之间的关系,其中在一或多个其它节点上游(或在循环或反馈配置的情况中,在其自身上游)的第一节点是指其中所述第一节点可激活所述一或多个其它节点(或在循环的情况中,可激活其自身)的情形。类似地,“下游”是指其中在一或多个其它节点下游(或在循环的情况中,在其自身下游)的第一节点可由所述一或多个其它节点激活(或在循环的情况中,可由其自身激活)的关系。因此,本文中使用术语“上游”及“下游”来指一或多个节点之间的关系,但这些术语不排除循环或节点当中的其它非线性路径的使用。
[0046]在图90中,可最初激活根节点92且根节点92可在输入数据匹配来自根节点92的边缘98时激活下游节点94。节点94可在输入数据匹配来自节点94的边缘98时激活节点96。可在接收到输入数据时以此方式激活贯穿图90的节点94、96。终端节点96对应于输入数据对所关注序列的匹配。因此,终端节点96的激活指示已接收到所关注序列作为输入数据。在实施型式辨识功能的FSM晶格30的情景中,到达终端节点96可指示已在输入数据中检测到特定所关注型式。
[0047]在一实例中,每一根节点92、标准节点94及终端节点96可对应于FSM晶格30中的可编程元件。每一边缘98可对应于所述可编程元件之间的连接。因此,转变到另一标准节点94或终端节点96 (例如,具有连接到另一标准节点94或终端节点96的边缘98)的标准节点94对应于转变到另一可编程元件(例如,将输出提供到另一可编程元件)的可编程元件。在一些实例中,根节点92不具有对应可编程元件。
[0048]当编程FSM晶格30时,可编程元件中的每一者也可处于作用或非作用状态中。给定可编程元件在非作用时不对对应数据输入块52处的输入数据做出反应。作用可编程元件可对数据输入块52处的输入数据做出反应且可在所述输入数据匹配所述可编程元件的设定时激活下游可编程元件。当可编程元件对应于终端节点96时,所述可编程元件可耦合到输出块54以将匹配的指示提供到外部装置。
[0049]经由编程接口 56加载到FSM晶格30上的图像可配置可编程元件及专用元件以及可编程元件与专用元件之间的连接,以使得基于对数据输入块52处的数据的反应而经由节点的循序激活来实施所要FSM。在一实例中,可编程元件保持作用达单个数据循环(例如,单个字符、一组字符、单个时钟循环)且然后变得非作用,除非被上游可编程元件重新激活。
[0050]可认为终端节点96存储经压缩过去事件历史。举例来说,到达终端节点96所需的输入数据的一或多个型式可由所述终端节点96的激活表示。在一实例中,终端节点96所提供的输出是二进制的,也就是说,所述输出指示是否已匹配所关注型式。图90中终端节点96对标准节点94的比率可相当小。换句话说,虽然在FSM中可存在高复杂度,但相比之下FSM的输出可为小的。
[0051]在一实例中,FSM晶格30的输出可包括状态向量。所述状态向量包括FSM晶格30的可编程元件的状态(例如,经激活或未经激活)。在一实例中,所述状态向量包含对应于终端节点96的可编程元件的状态。因此,所述输出可包含图90的所有终端节点96所提供的指示的集合。所述状态向量可表示为字,其中每一终端节点96所提供的二进制指示包括所述字的一个位。终端节点96的此编码可提供FSM晶格30的检测状态(例如,是否已检测到所关注序列及已检测到何种所关注序列)的有效指示。在另一实例中,状态向量可包含所有或一子组的可编程元件的状态,而不论所述可编程元件是否对应于终端节点96。
[0052]如上文所提及,FSM晶格30可经编程以实施型式辨识功能。举例来说,FSM晶格30可经配置以辨识输入数据中的一或多个数据序列(例如,签名、型式)。当FSM晶格30辨识出所关注数据序列时,可在输出块54处提供所述辨识的指示。在一实例中,型式辨识可辨识符号串(例如,ASCII字符)以;(举例来说)识别网络数据中的恶意软件或其它信肩、O
[0053]图7图解说明层次式结构100的实例,其中FSM晶格30的两个层级串行地耦合且用以分析数据。具体来说,在所图解说明的实施例中,层次式结构100包含串行布置的第一FSM晶格30A及第二 FSM晶格30B。每一 FSM晶格30包含用以接收数据输入的相应数据输入块52、用以接收编程信号的编程接口块56及输出块54。
[0054]第一 FSM晶格30A经配置以在数据输入块处接收输入数据(举例来说,原始数据)。第一 FSM晶格30A如上文所描述对所述输入数据做出反应且在输出块处提供输出。来自第一 FSM晶格30A的输出发送到第二 FSM晶格30B的数据输入块。第二 FSM晶格30B可然后基于由第一 FSM晶格30A提供的输出而做出反应且提供层次式结构100的对应输出信号102。两个FSM晶格30A与30B的此串行层次式耦合提供用以将关于过去事件的信息以经压缩字从第一 FSM晶格30A传送到第二 FSM晶格30B的手段。所传送的信息可实际上是由第一 FSM晶格30A记录的复杂事件(例如,所关注序列)的概要。
[0055]图7中所展示的FSM晶格30A、30B的两层级层次100允许两个独立程序基于同一数据流而操作。两级层次可类似于建模为不同区域的生物大脑中的视觉辨识。在此模型下,所述区域实际上是不同型式辨识引擎,每一型式辨识引擎执行类似计算功能(型式匹配)但使用不同程序(签名)。通过将多个FSM晶格30A、30B连接在一起,可获得关于数据流输入的增加的知识。
[0056]所述层次的第一层级(由第一 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。
[0057]图8图解说明用于编译器将源代码转换成经配置以编程FSM晶格(例如晶格30)的图像以实施FSM的方法110的实例。方法110包含将源代码剖析成语法树(框112),将所述语法树转换成自动机(框114),优化所述自动机(框116),将所述自动机转换成网表(框118),将所述网表放置于硬件上(框120),路由所述网表(框122)及公布所得图像(框124)。
[0058]在一实例中,编译器20包含允许软件开发者创建用于在FSM晶格30上实施FSM的图像的应用编程接口(API)。编译器20提供用以将源代码中的输入正则表达式集转换成经配置以编程FSM晶格30的图像的方法。可通过用于具有冯.诺伊曼(von Neumann)架构的计算机的指令来实施编译器20。这些指令可致使计算机上的处理器12实施编译器20的功能。举例来说,所述指令在由处理器12执行时可致使处理器12对可由处理器12存取的源代码执行如框112、114、116、118、120、122及124中所描述的动作。
[0059]在一实例中,源代码描述用于识别符号群组内的符号型式的搜索串。为了描述搜索串,源代码可包含多个正则表达式(regex)。正则表达式可为用于描述符号搜索型式的串。正则表达式广泛地用于各种计算机领域中,例如程序设计语言、文本编辑器、网络安全及其它领域。在一实例中,编译器所支持的正则表达式包含用于分析未结构化数据的准则。未结构化数据可包含自由形式的数据且不具有应用于所述数据内的字的索引。字可包含所述数据内的可打印及不可打印的字节的任一组合。在一实例中,编译器可支持多种不同源代码语言以用于实施包含Perl (例如,Perl兼容正则表达式(PCRE) )、PHP、Java及.NET语言的正则表达式。
[0060]在框112处,编译器20可剖析源代码以形成关系连接的运算符的布置,其中不同类型的运算符对应于源代码所实施的不同函数(例如,源代码中的正则表达式所实施的不同函数)。剖析源代码可创建所述源代码的类属表示。在一实例中,所述类属表示包括源代码中的正则表达式的经编码表示,其呈称作语法树的树形图的形式。本文所述的实例涉及作为语法树(还称作“抽象语法树”)的布置,然而在其它实例中可使用具体语法树或其它布置。
[0061]如上文所提及,由于编译器20可支持源代码的多种语言,因此不管语言如何剖析均将源代码转换成非语言特定表示(例如,语法树)。因此,由编译器20进行的进一步处理(框114、116、118、120)可从共同输入结构起作用而不管源代码的语言如何。
[0062]如上所述,语法树包含关系连接的多个运算符。语法树可包含多种不同类型的运算符。也就是说,不同运算符可对应于源代码中的正则表达式所实施的不同函数。
[0063]在框114处,将语法树转换成自动机。自动机包括FSM的软件模型且可因此分类为确定性或非确定性。确定性自动机在给定时间具有单个执行路径,而非确定性自动机具有多个同时执行路径。所述自动机包括多个状态。为了将语法树转换成自动机,将语法树中的运算符及运算符之间的关系转换成状态,其中所述状态之间具有转变。在一实例中,可部分地基于FSM晶格30的硬件而转换所述自动机。
[0064]在一实例中,用于自动机的输入符号包含字母、数字O到9及其它可打印字符的符号。在一实例中,输入符号由字 节值O到255 (包含O及255)表不。在一实例中,自动机可表示为有向图,其中所述图的节点对应于状态集。在一实例中,输入符号α (即,δ (ρ,α))上从状态P到状态q的转变由从节点P到节点q的有向连接展示。在一实例中,自动机的反转产生新的自动机,其中某一符号α上的每一转变P —q在同一符号上反转q —P。在反转中,开始状态变为最终状态且最终状态变为开始状态。在一实例中,自动机所辨识(例如,匹配)的语言是当依序输入到所述自动机中时将到达最终状态的所有可能字符串的集。所述自动机所辨识的语言中的每一串追踪从开始状态到一或多个最终状态的路径。
[0065]在框116处,在构造自动机之后,优化所述自动机以除其它之外还减小其复杂度及大小。可通过组合冗余状态来优化所述自动机。
[0066]在框118处,将经优化的自动机转换成网表。将所述自动机转换成网表将所述自动机的每一状态映射到FSM晶格30上的硬件元件(例如,SME34、36,其它元件)并确定所述硬件元件之间的连接。
[0067]在框120处,放置网表以选择对应于所述网表的每一节点的目标装置的特定硬件元件(例如,SME34、36,专用元件58)。在一实例中,放置基于FSM晶格30的一股输入及输出约束而选择每一特定硬件元件。
[0068]在框122处,路由所放置的网表以确定用于可编程交换元件(例如,块间交换元件40、块内交换元件42及行内交换元件44)的设定,以便将选定硬件元件耦合在一起以实现网表描述的连接。在一实例中,通过确定FSM晶格30的将用以连接选定硬件元件及用于可编程交换元件的设定的特定导体来确定用于可编程交换元件的设定。相比于框120处的放置,路由可能考虑硬件元件之间的连接的更特定限制。因此,假定有对FSM晶格30上的导体的实际限制,路由可调整如通过全局放置所确定的所述硬件元件中的一些硬件元件的位置以便做出适当连接。
[0069]一旦网表经放置及路由,便可将所述经放置及路由的网表转换成用于编程FSM晶格30的多个位。所述多个位在本文中称作图像。
[0070]在框124处,由编译器20公布图像。所述图像包括用于编程FSM晶格30的特定硬件元件的多个位。在其中所述图像包括多个位(例如,?及I)的实施例中,所述图像可称为二进制图像。可将所述位加载到FSM晶格30上以编程SME34、36、专用元件58及可编程交换元件的状态,以使得经编程FSM晶格30实施具有源代码所描述的功能性的FSM。放置(框120)及路由(框122)可将FSM晶格30中的特定位置处的特定硬件元件映射到自动机中的特定状态。因此,所述图像中的位可编程特定硬件元件以实施所要功能。在一实例中,可通过将机器代码保存到计算机可读媒体来公布所述图像。在另一实例中,可通过在显示装置上显示所述图像来公布所述图像。在又一实例中,可通过将所述图像发送到另一装置(例如用于将所述图像加载到FSM晶格30上的编程装置)来公布所述图像。在再一实例中,可通过将所述图像加载到FSM晶格(例如,FSM晶格30)上来公布所述图像。
[0071]在一实例中,可通过将位值从图像直接加载到SME34、36及其它硬件元件或通过将图像加载到一或多个寄存器中且然后将所述位值从所述寄存器写入到SME34、36及其它硬件元件来将所述图像加载到FSM晶格30上。在一实例中,FSM晶格30的硬件元件(例如,SME34、36、专用元件58、可编程交换元件40、42、44)经存储器映射以使得编程装置及/或计算机可通过将所述图像写入到一或多个存储器地址而将所述图像加载到FSM晶格30上。
[0072]本文中所描述的方法实例可为至少部分地机器或计算机实施的。一些实例可包含用指令编码的计算机可读媒体或机器可读媒体,所述指令可操作以配置电子装置以执行如在以上实例中所述的方法。此类方法的实施方案可包含代码,例如微码、汇编语言代码、高级语言代码等。此代码可包含用于执行各种方法的计算机可读指令。所述代码可形成计算机程序产品的部分。此外,所述代码可在执行期间或在其它时间有形地存储于一或多个易失性或非易失性计算机可读媒体上。这些计算机可读媒体可包含(但不限于)硬盘、可装卸磁盘、可装卸光盘(例如,压缩光盘及数字视频光盘)、盒式磁带、存储卡或存储棒、随机存取存储器(RAM)、只读存储器(ROM)等。
[0073]现在参考图9,其图解说明状态机引擎14的实施例。如先前所描述,状态机引擎14经配置以经由数据总线从源(例如存储器16)接收数据。在所图解说明的实施例中,数据可经由总线接口(例如DDR3总线接口 130)发送到状态机引擎14。DDR3总线接口 130可能够以大于或等于I千兆字节/秒的速率交换数据。如将了解,取决于将分析的数据的源,总线接口 130可为用于将数据交换到数据源及将数据从数据源交换到状态机引擎14的任何适合总线接口,例如“与非”快闪接口、PCI接口等。如先前所描述,状态机引擎14包含经配置以分析数据的一或多个FSM晶格30。每一 FSM晶格30可划分成两半晶格。在所图解说明的实施例中,每一半晶格可包含24K SME(例如,SME34、36)以使得晶格30包含48KSME。晶格30可包括如先前关于图2到5所描述而布置的任何所要数目个SME。此外,尽管图解说明了仅一个FSM晶格30,但状态机引擎14可包含多个FSM晶格30,如先前所描述。
[0074]将分析的数据可在总线接口 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的逻辑排并行分析多个数据集。
[0075]在所图解说明的实施例中,状态机引擎14还包含解压缩器138及压缩器140以帮助经由状态机引擎14传送大量数据。压缩器140与解压缩器138协同工作以使得可将数据压缩以最小化数据传送时间。通过压缩将分析的数据,可最小化总线利用时间。基于由编译器20提供的信息,可将屏蔽提供到状态机引擎14以提供可能不对其使用状态机的信息。压缩器140及解压缩器138还可经配置以处置变化的突发长度的数据。通过填补经压缩数据及包含关于每一经压缩区域何时结束的指示符,压缩器140可经由状态机引擎14改进总体处理速度。压缩器140及解压缩器138还可用以压缩及解压缩在由FSM晶格30分析之后的匹配结果数据。
[0076]如先前所描述,FSM晶格30的输出可包括状态向量。所述状态向量包括FSM晶格30的可编程元件的状态(例如,经激活或未经激活)。每一状态向量可暂时存储于状态向量高速缓冲存储器142中以供进一步层次式处理及分析。也就是说,可存储每一状态机的状态以使得最终状态可用于进一步分析,同时释放状态机以用于重新编程及/或新数据集的进一步分析。如同典型高速缓冲存储器,状态向量高速缓冲存储器允许存储信息(此处,状态向量)以供快速撷取及使用(此处,(例如)由FSM晶格30撷取及使用)。额外缓冲器(例如状态向量存储器缓冲器、状态向量中间输入缓冲器146及状态向量中间输出缓冲器148)可连同状态向量高速缓冲存储器142 —起利用以适应状态向量的快速分析及存储,同时遵守经由状态机引擎14的包传输协议。
[0077]—旦由FSM晶格30产生所关注结果,便可将匹配结果存储于匹配结果存储器150中。也就是说,可将指示匹配(例如,检测到所关注型式)的“匹配向量”存储于匹配结果存储器150中。举例来说,然后可将匹配结果发送到匹配缓冲器152以供经由总线接口 130传输到处理器12。如先前所描述,可压缩匹配结果。
[0078]也可在状态机引擎14中提供额外寄存器及缓冲器。例如,状态机引擎14可包含控制与状态寄存器154。另外,可提供恢复与编程缓冲器156以便最初用于编程FSM晶格30或在分析期间恢复FSM晶格30中的机器的状态。类似地,也可提供保存与修复映射缓冲器158以用于存储用于设置及使用的保存与修复映射。
[0079]图10图解说明类似于上文关于图4所论述的行的行38的第二实例。行38可包含可编程行内交换元件44及行互连/互连件导体68、70 (其也可称为“行路由线”,如下文所描述)。
[0080]图10的行38可包含八个G0T60、专用元件58、输入62、输入64、输出66、匹配元件160、多个行路由线 162、164、166、168、170、172、174、176、178、180、182、184、186、188、190及192 (下文中统称为“行路由线162到192”)、专用元件路由线194及多个结点196。
[0081]此外,除耦合到图11中的所图解说明SME34、36之外,局部路由矩阵172也可耦合到特定行38中的G0T60的所有对的SME34、36。因此,局部路由矩阵172可包含可编程行内交换元件44及行互连/互连件导体68、70 (其也可称为“行路由线”,如下文所描述)。
[0082]图10中所图解说明的G0T60及专用元件58实质上类似于先前关于图4所论述的G0T60及专用元件58。因此,每一 G0T60接收输入62,输入62可为统一启用输入以作为用于SME34的检测单兀86的启用信号而操作。同样,每一 G0T60也接收输入64,输入64也可为统一启用输入以作为用于SME36的检测单元86的启用信号而操作。这些统一启用输入62,64可激活SME34、36的检测单元86以输出由相应SME执行的分析的相应结果(举例来说,来自单个SME34的经分析数据流中的匹配),所述结果可连同来自其它SME34、36的结果一起用以(举例来说)搜索数据流中的型式。举例来说,统一启用输入62及统一启用输入64允许选择性激活SME34、36以使得由作用SME34、36中的每一者产生的结果可用作数据流的总体较宽广分析的部分。
[0083]可在输出66上从G0T60选择性地提供由所述GOT的SME34、36产生的结果。在一个实施例中,G0T60的可能输出可不包含任何输出,可包含第一 SME34的输出(即,输出72)、第二 SME36的输出(S卩,输出74)或者第一 SME34的输出或第二 SME36的输出(S卩,输出72或输出74)。因此,G0T60可经编程以从G0T60输出选定结果。此编程可(举例来说)基于在FSM晶格30的初始编程阶段期间执行的经加载图像而实现。来自G0T60的结果可提供到匹配元件160,匹配元件160可操作以输出针对给定数据流搜索或数据流搜索的一部分从行38产生的选定结果。
[0084]另外,行38可包含行路由线162到192 (其也可称为行互连/互连件导体)。在本发明实施例中,存在可选择性地耦合到八个G0T60及专用元件58的十六个行线162到192。然而,应了解,可连同行38 —起利用更少或更多行路由线。
[0085]行路由线162到192中的每一者可用以沿输入62、64为一或多个G0T60的SME34、36中的任一者提供启用信号。因此,通过使用这些行路由线162到192,可激活任何特定SME(例如,SME34)的任何特定检测单元86。此可通过将行路由线162到192选择性地耦合(例如,根据经加载图像)到SME34、36的统一启用输入62、64而实现。此外,为了提供在将启用信号提供到SME34、36中的进一步灵活性,可在给定G0T60的两个SME34、36当中划分行路由线162到192。举例来说,可利用行路由线162、164、166、168、170、172、174及176来激活行38中的SME34、36中的任一者。举例来说,G0T60可将输出66传输到耦合到其的行路由线(举例来说,行路由线162)。此信号可传输到其中其可路由(举例来说,在行路由线164上)到行38中的额外G0T60的块内交换器中。另外,行路由线178、182、186及190可(举例来说)通过从块内交换器42接收信号而激活行38中的SME34,而行路由线180、184、188及192可经由(举例来说)从块内交换器42接收的信号而激活行38中的SME36。以此方式,可减小行路由线162到192的总体数目,同时仍允许激活行38中的SME34、36中的任一者的任何检测单元86的总体灵活性及能力。
[0086]如图10中所图解说明,行路由线162到192中的每一者包含多个结点196。这些结点196可(举例来说)包含图3的行内交换元件44,因为结点196可用以将任何G0T60选择性地耦合到任何其它G0T60或将任何G0T60选择性地耦合到在行38内(或者,就此来说,在另一行及/或另一块内)的任何其它元件(例如,专用元件58)。然而,这些连接可受可用结点196限制。举例来说,行路由线162、164、166、168、170、172、174及176中的每一者可用以激活行38中的SME34、36中的任一者。然而,行路由线162、164、166、168、170、172、174及176中的每一者也可选择性地耦合到G0T60中的相应不同者的输出。举例来说,来自G0T60中的任一者的输出可仅在行路由线162、164、166、168、170、172、174及176中的可耦合到其的相应者上从所述G0T60提供。因此,在一个实施例中,由于行路由线162、164、166、168、170、172、174 及 176 可耦合到 G0T60 的输出 66,因此行路由线 162、164、166、168、170、172、174及176可将信号提供(例如,驱逐)到块内交换器42。相比之下,在一个实施例中,行路由线178、180、182、184、186、188、190及192可从块内交换器42接收信号(例如,由信号驱动),所述信号可为从(举例来说)其它行38或块32接收的。
[0087]除行路由线162到192之外,行38也可包含耦合到专用元件58的专用元件路由线194。类似于行路由线162、164、166、168、170、172、174及176,专用路由线194可将信号提供(例如,驱逐)到块内交换器42。在一个实施例中,专用元件路由线194也可耦合到匹配元件160。举例来说,如果专用元件58包括计数器,那么可沿专用路由线194提供计数器的输出。类似地,如果专用元件58包含布尔逻辑元件(例如布尔单元),那么可沿专用路由线194提供布尔逻辑元件的输出。通过使用这些专用元件,可将重复搜索(例如,找出一元素达十次)或经级联搜索(例如,找出元素x、y及z)简化成可沿专用路由线194提供到块内交换器42及匹配元件160中的任一者或两者的单个输出。
[0088]图11中呈现块内交换器42及其操作的更详细图解说明。如所图解说明,块内交换器42可接收行路由线162到192以及专用元件路由线194,且这些线可在多个结点230处与各种块路由线 198、200、202、204、206、208、210、212、214、216、218、220、222、224、226 及228 (下文中统称为“块路由线198到228”)相交。这些结点230可(举例来说)用以将行路由线162到192选择性地耦合到块路由线198到228。在一个实施例中,行路由线162、164、166、168、170、172、174及176中的每一者可将信号提供(例如,驱逐、发送、传输、传送、传递等)到块内交换器42,而行路由线178、180、182、184、186、188、190及192可从块内交换器42接收(例如,驱入)信号。因此,行路由线162、164、166、168、170、172、174及176可用以将信号从图10中的耦合到块内交换器42的行38提供到邻近行38(例如图3中所图解说明的那些行)。另外或替代地,行路由线162、164、166、168、170、172、174及176可用以将信号从图10中的耦合到块内交换器42的行38提供到块32中的其它行38及/或块路由缓冲器48。此可通过将在给定行38中产生的信号提供到块路由线198到228中的耦合到所述行的一者而实现,因为块路由线198到228耦合到图3的各种块内交换器42及块路由缓冲器48。此可允许行38将在其中产生的任何结果提供到邻近行38或甚至其它块32。
[0089]相反地,在一个实施例中,行路由线178、180、182、184、186、188、190及192中的每一者可从块内交换器42接收(例如,驱入)信号。因此,行路由线178、180、182、184、186、188、190及192可用以将信号从邻近行38(例如图3中所图解说明的那些行)提供到图10中的耦合到块内交换器42的行38。另外或替代地,行路由线178、180、182、184、186、188、190及192可用以将信号从块路由缓冲器48提供到图10中的耦合到块内交换器42的行38。此可通过从图11的块路由线198到228中的一者接收在外部块32中或在邻近行38中产生的信号而实现,因为块路由线198到228耦合到图3的各种块内交换器42及块路由缓冲器48。此可允许行38沿行路由线178、180、182、184、186、188、190及192接收在邻近行38或甚至其它块32中产生的任何结果。以此方式,块内交换器42可将行38与邻近行38及其它块32耦合。
[0090]如上文所论述,来自任何特定行38的结果可从一个块32传递到另一块32。块路由缓冲器48可促进块之间的此信息传送。图12图解说明块路由缓冲器48的一个实施例。
[0091]如图12中所图解说明,块路由缓冲器48可包含块路由端口 232、234以及结路由端口 236、238。如所图解说明,块路由端口 232可耦合到双向路径240以使得可在块路由端口 232处将信号提供到块32或从块32接收信号。另外,块路由端口 234可耦合到输出路径242以使得块路由端口 234可将信号提供到块32。因此,块路由缓冲器48可通过利用块路由端口 232、234中的一者或两者而在一时间(即,同时)将一个或两个信号提供到给定块。
[0092]块路由缓冲器48的结路由端口 236、238也可允许在同一时间(即,同时)提供一个或两个信号。如所图解说明,结路由端口 236可耦合到双向路径244以使得可将信号提供到块间交换元件40中的导体46(例如,导线、迹线等)及从导体46接收信号。另外,结路由端口 238可耦合到输出路径246以使得结路由端口 238可将信号提供到块间交换元件40的导体46。因此,块路由缓冲器48可通过利用结路由端口 236、238中的一者或两者而在一时间(即,同时)将一个或两个信号提供到给定组的导体46。如可了解,提供到块间交换元件40的导体46的信号可耦合到另一块路由缓冲器48以使得信号可从第一块32通过第一块路由缓冲器48跨越导体46提供到邻近块路由缓冲器48及邻近块32,如图2中所图解说明。
[0093]为实现此路由,块路由缓冲器48可包含双向驱动元件248及两个单向驱动元件250、252。如所图解说明,双向驱动元件248可沿双向路径240及244提供及接收信号,而单向驱动元件250、252分别沿输出路径242、246提供信号。
[0094]此外,在任何给定时间,块路由缓冲器48可起作用以接收信号或者提供一或多个信号。因此,块路由缓冲器48包含控制输入254、256、258及260。控制输入254、256、258及260可允许以可编程方式设定块路由缓冲器48以提供一或多个信号或接收信号。举例来说,控制输入254可接收控制信号并将所述控制信号提供到双向驱动元件248以激活双向驱动元件248以从结路由端口 236接收信号且将所述所接收信号从块路由端口 232提供到块32。类似地,控制输入256可接收控制信号并将所述控制信号提供到双向驱动元件248以激活双向驱动元件248以从块路由端口 232接收信号且经由结路由端口 236将所述信号提供到块间交换元件40。
[0095]另外,控制输入258可接收控制信号并将所述控制信号提供到单向驱动元件250以激活单向驱动元件250以从结路由端口 236接收信号且将所述所接收信号从块路由端口234提供到块32。类似地,控制输入260可接收控制信号并将所述控制信号提供到单向驱动元件252以激活单向驱动元件252以从块路由端口 234接收信号且经由结路由端口 238将所述信号提供到块间交换元件40。因此,控制输入254、256、258及260可允许块路由缓冲器48同时将信号提供到块32或块间交换元件40,因此使通过块路由缓冲器48提供信号的总体速度至少加倍。
[0096]通过块路由缓冲器48提供到块间交换元件40的导体46的信号可能并非始终立即提供到(举例来说)另一块路由缓冲器48。如图2中所图解说明,一些信号可在(举例来说)提供到邻近块间交换元件40中的另一块路由缓冲器48之前通过隔离缓冲器50。图13图解说明可用以将信号从一个块间交换元件40提供到另一块间交换元件40的隔离缓冲器50的实施例。
[0097]如图13中所图解说明,隔离缓冲器50包含结路由端口 262以及隔离路由端口264。如所图解说明,结路由端口 262可耦合到双向路径266以使得可在结路由端口 262处将信号提供到块间交换元件40的导体46及从导体46接收信号。另外,隔离路由端口 264可耦合到双向路径268以使得可在将信号提供到邻近块间交换元件40的导体46之前将所述信号提供到另一隔离缓冲器50及从另一隔离缓冲器50接收所述信号。如可了解,可经由隔离路由端口 264将信号从块间交换元件40的导体46提供到隔离缓冲器50、另一隔离缓冲器50及邻近块间交换元件的导体46,如图2中所图解说明。
[0098]为了实现此路由,隔离缓冲器50可包含两个单向驱动元件270、272。如所图解说明,单向驱动元件270、272分别沿输出路径266、268提供信号。此外,在任何给定时间,隔离缓冲器50可起作用以接收信号或提供信号。因此,隔离缓冲器50包含控制输入274、276。控制输入274、276可允许以可编程方式设定隔离缓冲器50以提供信号或接收信号。举例来说,控制输入274可接收控制信号并将所述控制信号提供到单向驱动元件270以激活单向驱动元件270以从结路由端口 262接收信号且将所述所接收信号从隔离路由端口 264提供到邻近隔离缓冲器50。类似地,控制输入276可接收控制信号并将所述控制信号提供到单向驱动元件272以激活单向驱动元件272以从邻近隔离缓冲器50接收信号且经由结路由端口 262将所述信号提供到块间交换元件40。另外,在至少一个实施例中,隔离缓冲器50可作为放大器而操作以放大从隔离路由端口 264提供到邻近隔离缓冲器50的信号以便在于邻近隔离缓冲器50之间提供信号时防止(举例来说)信号降级。
[0099]尽管可易于对本发明做出各种修改及替代形式,但已在图式中通过举例方式展示且在本文中详细描述了特定实施例。然而,应理解,本发明并不意欲限于所揭示的特定形式。而是,本发明意欲涵盖如由以下随附申请专利范围定义的本发明的精神及范畴内的所有修改形式、等效形式及替代方案。
【权利要求】
1.一种装置,其包括: 路由缓冲器,其包括: 第一端口,其经配置以接收与数据流的至少一部分的分析相关的信号; 第二端口,其经配置以在第一时间将所述信号选择性地提供到状态机的块的第一路由线 '及 第三端口,其经配置以在所述第一时间将所述信号选择性地提供到所述状态机的所述块的第二路由线。
2.根据权利要求1所述的装置,其中所述路由缓冲器包括耦合于所述第一端口与所述第二端口之间的双向驱动元件。
3.根据权利要求2所述的装置,其中所述路由缓冲器包括经配置以激活所述双向驱动元件以从所述第二端口提供所述信号的第一控制输入。
4.根据权利要求1所述的装置,其中所述路由缓冲器包括耦合于所述第一端口与所述第三端口之间的单向驱动元件。
5.根据权利要求4所述的装置,其中所述路由缓冲器包括经配置以激活所述单向驱动元件以从所述第三端口提供所述信号的第二控制输入。
6.根据权利要求1所述的装置,其中所述信号包括第一信号,且其中所述路由缓冲器进一步包括第四端口,所述第四端口经配置以在第二时间选择性地提供在所述第二端口处接收的与所述数据流的至少一部分的分析相关的第二信号,其中所述第一端口经配置以在所述第二时间选择性地提供所述第二信号。
7.根据权利要求6所述的装置,其中所述路由缓冲器包括经配置以激活双向驱动元件以从所述第一端口提供所述第二信号的第三控制输入。
8.根据权利要求7所述的装置,其中所述路由缓冲器包括耦合于所述第二端口与所述第四端口之间的单向驱动元件。
9.根据权利要求8所述的装置,其中所述路由缓冲器包括经配置以激活所述单向驱动元件以从所述第四端口提供所述第二信号的第四控制输入。
10.一种装置,其包括: 状态机,其包括: 多个块,所述块中的每一者包括: 多个行,所述行中的每一者包括多个可编程元件,所述可编程元件中的每一者经配置以分析数据流的至少一部分且选择性地输出所述分析的结果;及块内交换器,其经配置以选择性地路由所述结果 '及路由缓冲器,其耦合到所述块中的一者且经配置以: 在第一端口处从所述块内交换器接收所述结果;及 同时从所述路由缓冲器的第二端口及第三端口选择性地提供所述结果。 10.根据权利要求9所述的装置,其中所述块内交换器包括经配置以选择性地耦合到所述可编程元件且经配置以从所述可编程元件提供所述结果的多个行路由线。
11.根据权利要求10所述的装置,其中所述块内交换器包括经配置以选择性地耦合到所述多个行路由线的多个块路由线。
12.根据权利要求11所述的装置,其中所述块内交换器包括经配置以将所述块路由线选择性地耦合到所述多个行路由线的多个结点。
13.根据权利要求9所述的装置,其中所述路由缓冲器包括耦合于所述第一端口与所述第二端口之间的双向驱动元件。
14.根据权利要求13所述的装置,其中所述路由缓冲器包括经配置以激活所述双向驱动元件以从所述第二端口提供所述结果的控制输入。
15.根据权利要求9所述的装置,其中所述路由缓冲器包括耦合于所述第一端口与所述第三端口之间的单向驱动元件。
16.根据权利要求15所述的装置,其中所述路由缓冲器包括经配置以激活所述单向驱动元件以从所述第三端口提供第一信号的控制输入。
17.—种方法,其包括: 在路由缓冲器的第一端口处接收与数据流的至少一部分的分析相关的信号; 在第一时间将所述信号从所述路由缓冲器的第二端口提供到状态机的块的第一块路由线;及 在所述第一时间将所述信号从所述路由缓冲器的第三端口提供到所述状态机的所述块的第二块路由线。
18.根据权利要求17所述的方法,其包括:在所述状态机的所述块的块内交换器处从所述第一块路由线及所述第二块路由线两者接收所述信号。
19.根据权利要求18所述的方法,其包括: 将所述信号从所述第一块路由线提供到所述块内交换器中的第一行路由线;及 将所述信号从所述第二块路由线提供到所述块内交换器中的第二行路由线。
20.根据权利要求19所述的方法,其包括: 将所述信号从所述第一行路由线提供到第一可编程元件;及 将所述信号从所述第二行路由线提供到第二可编程元件。
21.根据权利要求20所述的方法,其包括: 响应于所述信号而激活所述第一可编程元件;及 响应于所述信号而激活所述第二可编程元件。
【文档编号】G06F17/30GK103988212SQ201280062314
【公开日】2014年8月13日 申请日期:2012年12月5日 优先权日:2011年12月15日
【发明者】戴维·R·布朗, 哈罗德·B·诺伊斯, 艾琳·俊娟·许, 保罗·格伦迪宁 申请人:美光科技公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1