背景技术
计算和通信领域的显著趋势导致大量内容分析学和处理的环境的出现。这些环境在某些类型的功能上要求高性能以及可编程性,即对消息、文档或者信息包中的内容进行搜索、剖析、分析、解释以及转化。强调所述的大容量内容分析学和处理的显著领域包括内容感知(content-aware)网络,基于内容的安全系统,监视,分布式计算,无线通信,人机接口,信息存储和检索系统,语义网络上的内容搜索,生物信息学以及其他等等。
内容感知网络领域要求对信息包或消息内的内容进行搜索和检查以确定这些信息包和消息将被发送或转发到哪里。所述检查必须以“线速”对传送中的消息进行操作,所述“线速”是网络连接的数据速率。假定当今网络中整个过程的线路速率范围从100Mbits/秒到40Gbits/秒,那么这对内容检查功能需要以这样的速率执行有巨大的压力。
基于内容的安全系统和监视以及监控系统被要求分析消息或信息包的内容并且应用一系列规则以确定是否存在安全缺口或者入侵的可能性。典型地,在当今的网络入侵检测系统中(NIDS),必须以线路速率对输入有效载荷应用大量模式、规则和语法以确保所有潜在的系统弱点被揭示出来。需要对所述网络和正在进行的操作的说明的上下文中应用和分析这样的规则和模式。因此精密的状态机需要被评估以此来作出适当的决定。由于网络和计算的基础结构在不断地演变,新的弱点不断出现。而且,入侵者采用了越来越复杂的攻击以避免被检测到。入侵检测系统需要能够检测系统中所有已知的攻击,并且还要足够智能化以检测预示新的攻击的不正常和可疑的行为。所有这些因素导致了同时对内容分析和处理的可编程性和极度高性能的需求。
随着分布式和聚集式计算的出现,现在工作被分配给彼此互相协作和通信的多台计算机或服务器以完成复合的任务。这种分配导致计算机通信的迅速增长,对这些消息的处理要求高性能。随着XML(扩展标记语言)作为通用数据交换的新的标准的出现,应用程序使用XML作为“应用层数据传输”进行互相通信。消息和文档现在被嵌入在XML标记中。所有的消息处理首先要求对XML文档进行解析以及提取相关内容并进行解释,接下来是任何所需的转化和过滤。由于这些功能需要以很高的消息速率进行操作,它们在计算性能上要求很苛刻。
随着无线化(untethered)通信和无线网络的发展,从无线设备对信息的访问在增长。对于给定的小型化(Iightform factor)客户端设备,对投递到该设备的数据进行过滤并保持较小的有效载荷是很重要的。未来的环境会将来自有线基础结构的XML内容过滤并转化为无线基础结构上的轻量内容(使用无线标记语言或者WML)。随着无线网络应用地不断增长,这种内容转化功能会变得很常见,从而对于其处理的有效解决方案将会很有必要。
出现的另一种重要需求是使用人机接口例如语音与计算机进行通信和交互的能力。语音处理和自然语言处理在内容搜索、词汇分析、内容解析以及语法处理中特别密集。一旦音频流被转换为文本,语音系统需要对进入的文本流应用大量词汇以及句法和语法规则以理解语音。这样的上下文和状态处理对计算性能要求会非常苛刻。
万维网的出现和发展给信息检索(IR)系统带来了巨大的计算负荷。信息被以高速持续添加到网络。这些信息典型地针对完备的词汇表进行完全索引化并且被添加到搜索引擎和IR系统的数据库中。由于信息不断产生并添加,索引编制器(indexer)需要一直工作。为了提供高效实时的上下文检索,用于索引功能的高性能模式匹配系统将会非常必要。
另一个强调大容量内容分析学和处理的领域是生物信息学领域。基因分析学和蛋白体学(proteomics)需要对基因序列和结构应用复杂的搜索和分析算法。同样地,这样的计算需要高性能的搜索、分析以及解释能力。
因此,未来出现的计算机和通信环境会强调大容量内容的分析和处理。这样的环境对以下功能提出高效率和可编程的解决方案的要求——对文档、消息或者信息包中的内容的状态和上下文检查、搜索、词汇分析、解析、特征描述、解释、过滤以及转化。这些大容量内容处理功能的核心是对输入数据流高效评估状态器的能力。
状态机的历史追溯到早期的计算机科学。在其最简单的陈述中,状态机是由状态、状态间的转换以及输入表述组成的规范模型。从图灵的算术计算模型(1936)开始,状态机即成为计算理论的核心。在二十世纪五十年代,Kleene提出了正则表达式作为描述和特征表示字符串集合的规范符号。有限状态自动机作为等价于正则表达式的状态机模型被提出。随后非确定自动机被提出并被证明与确定自动机等价。Thompson等人随后的工作产生了构建有限状态自动机以评估正则表达式的构建算法主体。大量参考文献被应用于描述正则表达式和有限状态自动机。对于这些材料的参考文献文本,见“Speech and Language Processing”(Daniel Jurafsky和James H.Martin,Prentice-Hall Inc,2000)。正则表达式演变成为模式匹配和识别的强大工具,并且有限自动机成为实现对其进行评估的机器的标准技术。
使用现有技术中的方法,状态机和有限状态自动机处理可以以三种方式之一进行。第一,所述处理使用固定的专用集成电路(ASIC)解决方案直接实现事先知道的固定且选定的状态机。尽管固定的ASIC方法可以提高性能,但其缺乏可编程性,并且因此其应用严重受限。而且,对各个目标解决方案设计和定制专用芯片的费用非常高昂。
第二,可以使用现场可编程门阵列(FPGA)以可编程方式实现状态机。本质上,FPGA架构提供了为适合广泛领域应用而配置的通用可编程逻辑,而不是针对状态机的实现进行专门优化。使用该方法,在单块芯片上只能容纳很少数量的状态机,并且可以进行的评估速度有限。该实现的密度和工作特性使得这种解决方案不适于正在出现的广泛领域的应用。
第三,传统的通用微处理器被用于实现各种状态机。微处理器是完全可编程设备并且通过重新对软件进行编程实现新的功能而能够解决不断增长的需求问题。然而,传统的微处理器在其实现和评估状态机的效率方面受限。现在将描述这些局限性。
图1(a)基于示例总结了微处理器在实现有限状态自动机时的局限性。存在两种实现选择——第一,确定性有限状态自动机方法(DFA),以及第二,非确定性有限状态自动机方法。对这两种选择在其实现R字符正则表达式并且对N字节输入数据流进行评估的能力方面进行比较。在两种方法中,正则表达式均以一定数量的状态被映射到状态机或者有限状态自动机中。对于基于微处理器的解决方案,容纳这些状态所需的存储量是该方法的一种优良性度量。第二种关键度量是评估N字节输入数据流所需的时间总量。
在DFA方法中,对于R字符正则表达式的状态所需的存储限度为2R。因此,需要大量存储空间以容纳这些状态。实现DFA的一般方法是构建状态转换表,并且在所述状态表递进地评估输入数据时使所述微处理器序列通过该表。所述状态转换表在存储器中建立。该表的巨大规模使得商用微处理器中的缓存子系统效率很低,并且需要微处理器在每个新的输入数据字节时访问外部存储器以查找该表从而确定下一个状态。因此状态机评估输入数据的速度受到存储器访问周期的限制。这显示在图1(b)中。对于输入流的N个字节,评估状态机所需时间与N次访问存储器成正比。在2003年普遍存在的典型商业计算机系统中,存储器访问延迟数量级为100纳秒。因此状态机评估的延迟数量级为N×100ns。这会将对状态机可能进行评估的数据速率限制在大约100Mbps。如果需要并行的评估多个正则表达式,一种选择是将这些表达式实现在存储器中的不同表中,微处理器将其一个接一个的连续地计算。对于K并行正则表达式,评估时间则会退变为K*N*100ns,同时存储量限度将会增加到K*2R。另一种可替换选择是将所有正则表达式汇编到单片集成电路DFA中并且使得微处理器序列在单次通行中通过该表。对于K并行正则表达式,存储量限度将会增加到2(K*R),同时评估时间仍为N*100ns。这种方法所需的存储量非常庞大。为了实现几千个正则表达式,所需的存储量超过了商业系统上可用的存储器的物理限制。
在NFA方法中,R字符正则表达式所需的存储量限度正比于R。因此不必担心存储量。然而,在NFA中,多个节点可以同时进行独立的状态转换,每个都基于独立的评估准则。假定微处理器是可以按先后次序执行单个线程控制的标量引擎(scalar engine),则NFA的多个状态转换需要微处理器顺次遍历每个状态的评估。因此,对于数据的每个输入字节,该评估必须重复R次。假定该方案所需的存储量适度,所有处理可以局限于使用芯片上的资源,因此保持不受存储器瓶颈的限制。每个状态转换计算通过芯片上评估而完成,所述芯片上计算的性能受到来自数据访问缓存延迟和分支延迟的限制。由于现代微处理器高度管道化(在位于加利福尼亚的圣塔克莱拉的Intel公司提供的奔腾三代和奔腾四代处理器等产品中大约有20-30级),由于分支造成的性能代价是巨大的。假定以4GHz运行的商业微处理器的16周期循环,单个状态转换的评估需要4纳秒。因此,对R字符正则表达式的R状态NFA评估N字节输入流需要N*R*4纳秒。对于K并行正则表达式,微处理器会顺次遍历每一者,需要K*N*R*4纳秒。注意对仅仅4并行正则表达式如果每个有8个状态,数据速率会再次被限制在100Mbps左右。
这些数据点表明2003或2004年的传统微处理器能够以大约100Mbps左右范围的数率提供对输入数据的可编程状态机评估。然而,到那个时限,1Gbps至10Gbps之间的数据速率在企业网络和环境中将并不少见。显然,在传统微处理器所能提供的性能和环境所需的性能之间存在着一到两个数量级的严重不匹配。尽管可以采用多个并行微处理器系统从而以目标速率执行某些需求功能,但是这样大大增加了系统的成本。显然存在对于这些目标功能的更有效的解决方案的需求。
具体实施方式
在此公开了一种可编程设备用于实现和评估状态机和有限状态自动机。所述设备采用了以可编程方式能够达到在硬件上几乎任意的控制流图的物理实现的方式,所述方式使用电路构建图的技术。该设备的实施例提供了一种高性能和简洁的解决方案用于多个复杂状态机的评估。该设备的实施例可以用于通过在数据上分级应用数千个规则树而进行高效解析和数据评估,以及对文档、消息或者其他内容中的任意长度模式进行高速上下文搜索。
在一个实施例中,所述硬件包括一组存储元件或者节点元件,用于保存表示控制流图节点或者状态机状态的值,节点之间的一组连线或者互连线,用于表示控制流图的弧或者状态机的状态转换,一组可编程连通性控制,可以用于设置和取消任何节点之间的任何互连线,对输入数据应用的一组可编程评估符号,其结果用于触发节点元件之间的值的传送或者节点元件之间的状态转换。在一个实施例中,还包括附加控制以初始化、评估和终止所述状态机评估。通过对所述控制和符号编程,所述设备可以配置以实现任何给定的状态机。
在一个实施例中,对于每个评估周期,新的数据流入到所述设备并且被应用到所述评估符号,触发节点元件间的状态转换。在一个实施例中,多个节点元件的每一个独立地对多个其他节点元件进行并行状态转换。所述设备可以用于实现有限状态自动机的快速和高效执行。非确定有限状态自动机(NFSA或NFA)规范自然地映射到所述设备。
在一个实施例中,控制流图的所有节点或者状态机的所有状态均实例化(instantiated)到硬件中的存储元件或者节点元件中,并且状态机的所有弧或者状态转换被实例化为节点之间的连线或者互连线。节点之间的连通性被假定为完全的(全部连接)或者部分连接。所述连通性通过可选择性开启/断开已有连接的设置/取消控制而进一步增强。在一个实施例中,这些控制是可编程的。通过在特定组的控制值中编程,可以设置选定的互连线,因此能够使任意控制流图实现。在此基本设置中,值可以通过在已设置的连线或互连线上传送而从一个节点传送到另一个,从而导致有效的状态转换。在一个实施例中,所述设备可以进一步增强由触发信号设定门限的通过连线或者互连线的状态转换。在此情况下,对于每个互连线,通过根据特定标准对输入数据进行评估而计算触发信号。在一个实施例中,这些标准(在此称为评估符号)是可编程的。通过对特定组的评估符号进行编程可以实现大量的任意状态机。
在一个实施例中,使用简单的双稳态多谐振荡器来实现存储元件,并且使用实现为逻辑门的简单开关来实现连通性控制。在一个实施例中,所述设备的实现映射到简单并且常见的结构,可以做得非常紧凑。
通过在硬件中削减大量节点,大型复杂的状态机可以使用在此描述的技术实现。可替换地,可以采用分级实现策略以进一步缩减整个控制流图中的任何稀疏处。目标状态机的整个控制流图可以分解为稀疏连接的紧凑子图组或者更小的状态机组。使用该方法,分级组织的规则树或者更小的状态机树可以在芯片上实例化。
传统实现方式是首先开发给定大小(节点数)的构建模块并且然后多次对其进行复制,产生多个更小的状态机。这些更小的状态机可以作为独立状态机集合使用或者组合在一起以构建更大的状态机。后者可以通过使用互连结构(interconnect fabric)连接所述更小的状态机而实现。所述结构可以遵循构造基本设备相同的方法,将每个更小的状态机自身视为更大的图中的一个节点。这种方法可以很有效率的给出改进的解决方案。通过选择足够满足选定目标范围的尺寸大小(即节点数量),可以集中于其实现并且使其很紧凑。在连接到互连结构时,更大更复杂并且因此具有更强大的状态机评估能力可以容纳于单块芯片上。例如,使用0.13μ硅工艺技术,一个实施例的第一实现可以在单块芯片上容纳数千个状态机(例如每个由16状态非确定有限状态自动机组成)。
图2显示了对于具有3个节点的状态机的状态机评估设备的一个示例实施例。该架构的实际实现会包括具有大量节点的状态机,但是选择3个节点是为了示例简化目的。现在将描述所述状态机评估架构的关键元件。
(1)元件N1、N2和N3表示一组被称为节点元件的存储元件(例如节点元件N1、N2和N3)。每个存储元件或者元件组可以用于保存表示状态机状态或者控制流图的节点的数值。多个节点在任何给定时间可以同时激活。
(2)一组连线或者互连线201被用于完全或者部分的互连节点元件N1、N2和N3,并且在所有节点元件N1、N2和N3之间读取、写入以及传送数据。每个连线或者互连线201可以用于表示控制流图中不同的弧,从而两个节点元件之间存在的互连线可以被认为是存在一条弧连接这两个节点。可替换地,每个连线或者互连线201可以用于表示状态机的不同状态转换。两个节点元件或者状态之间存在的互连线201可以被认为是这两个状态之间可能的状态转换。通过互连线从一个节点元件到另一个的值的实际传送可以被认为是实际状态转换。多个状态转换可以在任何给定时间同时发生。在图2中,节点元件N1、N2和N3互相之间完全连接。
(3)一组包含在此称为状态转换连通性控制202的值的存储元件。状态转换连通性控制202的这些值被用于设置或取消节点元件(例如节点元件N1、N2和N3)之间的特定互连。伴随这些控制的是一种机制,通过该机制,节点元件之间的互连可以通过所述状态转换连通性控制而设置或取消,下面将对此更加详细的描述。
(4)一组包含操作和数据的规范的存储元件。这些规范在此被称为状态转换评估符号203。伴随这些符号的是一种机制,通过该机制这些状态转换评估符号可以连接到输入数据。通过这种机制,这些符号被应用到输入数据以计算在此称为状态转换动态触发器204的输出。在一个实施例中,所述符号包括比较运算和单个8位字符值,从而输入数据被指定为与所述8位字符值进行比较以计算所述状态转换动态触发器204。在另一个实施例中,更丰富和更复杂的运算符可以与数据集结合以提供更丰富的计评估符号。例如,所述符号可以包括例如减法或范围计算的算术运算。
(5)状态转换动态触发器204控制被状态转换连通性控制202所设置的互连线上节点元件之间的值的升级和传送。
(6)提供了数据传送单元205,通过所述数据传送单元205可以将数据(例如动态计算数据)提供给包含状态转换连通性控制202的存储器。因此状态转换连通性控制202可以被动态编程和配置,使控制流图结构或配置范围能够动态实现。在一个实施例中,数据传送单元205还提供了一种机制,通过该机制可以将数据(例如动态计算数据)提供给包含状态转换评估符号203的存储器。因此状态转换评估符号203和状态转换动态触发器204的计算可以被动态编程和配置。数据传送单元205还提供了一种机制用于访问和采样所述节点元件并且以初始化值对其编程。数据传送单元205还提供了一种机制用于将所述设备连接到其他类似设备以构建更大的状态机或图。
(7)并且,所述设备可以具有专用机制用于复位整个设备,例如复位线207。
(8)输入数据流206提供了一种机制用于将输入流提供给整个设备。每个评估周期内,新的数据被提供给所述设备,并且被应用到评估符号,触发所有节点元件之间的状态转换。在一个实施例中,输入数据流206基于时钟208而将数据的输入流提供给状态机架构,所述时钟208还为状态机架构提供时钟。
(9)可选择地,所述状态机可以具有附加机制用于控制状态机评估的进度。起始状态选择控制209和接受状态选择控制210是比特向量,所述比特向量指定了待启动的特定节点元件和接受状态节点。所指定的起始状态在所述状态机初始化后开始激活。一旦所述状态机进入任何一个接受状态,则停止进一步评估。所述接受状态表明所述状态机被配置的任务已经完成。例如,在上下文搜索情况下,接受状态表明输入流中模式的匹配。
如同图2所示,具有R个节点的状态机设备具有R^2条弧,以及R^2个符号。在图2中,R=3。
评估正则表达式的架构的使用
所描述的状态机架构对于实现可编程有限状态自动机以评估正则表达式尤其有用。正则表达式等价于有限状态自动机。
图3(a)显示了示例正则表达式以及其映射到有限状态机规范。现有技术中存在大量算法用于这种映射以及用于构建所述有限状态自动机。[关于此材料存在若干资料和文本。对于各种算法的详细论述,请参见下面的参考文献:Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman所著的“Compilers:Principles,Techniques,and Tools”]。著名的算法包括Thompson构建和Berry-Sethi构建。这些算法将由给定数量的字符和运算符组成的正则表达式映射到有限状态自动机。这些算法的优劣度量包括所构建的有限状态自动机的重要特性。这些特性包括状态数量,状态转换弧数量,以及实现状态机所需的状态转换评估符号数量。有必要指出某种类型的构造算法(通常称为左偏构造,右偏构造或者Berry-Sethi构造)导致R个字符正则表达式映射到具有R+1个状态的有限状态自动机,最多有R^2条弧,以及R个符号。这样的构造允许进一步在所述设备的设计中的硬件里存储正则表达式处理。仅需要对R节点状态机提供R个评估符号(每个节点一个),而不用构造具有R^2评估符号(每条弧一个符号)的R节点状态机。因此仅需要对每个节点提供一个评估符号和相关的动态触发器计算硬件。从节点发出或者流入节点的所有弧均被该触发器进行门限。对流入节点的所有弧的触发相对于从节点发出的所有弧的触发之间的设计决策导致了在左偏构建算法对于右偏构建算法之间的选择决策。通过利用这种性质,减少了需要存储的符号数量,以及对输入流评估这些符号所需的硬件。同时还伴随着将状态转换动态触发器(例如204)连接到互连线201所需硬件的减少。
图3(b)显示了状态机如何利用特定构造算法的优点以实现每个节点元件一个符号的R节点状态机。这表明R节点状态机具有R个评估符号,以及R^2条弧。在图3(b)中所示的示例中,R=3。因此图3(b)显示了所述状态机架构如何高效率的实现非确定有限态自动机以评估正则表达式。
在下面的描述中,给出了大量细节以提供对本发明的全面的理解。然而很显然的是,对于本领域技术人员,本发明的实施可以不具有这些细节。在其他示例中,公知的结构和设备以结构图形式显示,而不是以细节形式,以避免模糊本发明。
下面的某些部分的详细描述是针对计算机存储器内数据比特操作的算法和符号表示而提出的。这些算法描述和表示是数据处理领域的技术人员使用的方式,以最有效的向本领域其他技术人员传达其工作的实质。一种算法在此一般被认为是导致所需结果的前后一致的步骤序列。这些步骤要求对物理量进行物理操作。通常而非必要的,这些量采取电或磁信号的形式,能够被存储、传送、组合、比较以及操作。主要由于通常使用的原因,以比特、数值、元素、符号、字符、项目、数字等等来提及这些信号被证实是方便的。
然而应当记住,所有这些和类似的术语均与适当的物理量相关联并且仅仅是应用到这些量的方便标记。除非在以下讨论中特别提及,可以认为在整个下面的描述中,使用例如“处理”或“计算”或“计算的”或“确定”或“显示”等等之类术语的讨论均是指计算机系统或者类似电子计算设备的动作和处理,其将在计算机系统的寄存器和存储器中表示为物理(电子)量的数据操作并转化为类似地表示为计算机存储器或寄存器或其他类似信息存储、传送或显示设备中的物理量的其他数据。
本发明还涉及一种用于进行此处运算的设备。该设备可以针对所需目的而特别构建,或者它可以包含通过存储在计算机中的计算机程序选择性地激活或者重新配置的通用计算机。所述计算机程序可以存储在计算机可读的存储介质中,例如但不限于任何类型的磁盘,包括软盘、光盘、CD-ROM、磁-光盘、只读存储器(ROM)、随机访问存储器(RAM)、EPROM、EEPROM、磁卡或光学卡或者适合存储电子指令的任何类型的介质,并且每个均连接到计算机系统总线。
此处提出的算法和显示并不固有的指定任何特定计算机或者其他设备。可以根据此处的指示而使用各种具有程序的通用系统,并且证实了构建更专门化的设备以执行所需方法步骤也是方便的。各种这类系统的所需结构将在下面进行描述。并且,本发明并不是关于任何特定编程语言进行描述。可以理解,各种编程语言均可以被用于实现在此描述的本发明的内容。
可用计算机处理的介质包括用于以机器(例如计算机)可读的形式存储或者传送信息的任何结构。例如,可用计算机处理介质包括只读存储器(“ROM”);随机访问存储器(“RAM”);磁盘存储器;光存储介器;闪速存储设备;电、光、声或其他形式的传播信号(例如载波、红外信号、数字信号等);等等。
示例的状态机计算架构
下面描述允许状态机以及有限状态自动机的高效实现和评估的状态机评估架构。在一个实施例中,所述设备采用了以能够通过可编程方式在硬件中物理实现任意控制流图的方式使用电路构建图的技术。所述设备提供了对于多样状态机的实现的高性能和紧凑解决方案,以及大型和复杂的状态机。所述设备可以用于通过对进入的数据流分级应用数千个正则表达式而对数据进行高效解析和评估。这样的设备可以是正则表达式处理器的核心评估引擎。
图4显示了状态机架构的一个实施例,定制为实现非确定有限状态自动机和对输入数据上的多个正则表达式的并行评估。图4显示了基本的状态机评估构建模块。图5是以简化和抽象形式的状态机架构的一个实施例的高层结构图。可以组合多个构建模块以实现对多个正则表达式的并行评估。
注意图3(b)显示了实现对于具有R个节点、R个符号以及R^2条弧的非确定有限状态自动机的状态机的架构的一个实施例。在图3(b)中,R=3。注意R是为了示例目的而设置成3个节点。同时应注意到在图3(b)中,对于每个节点元件N1、N2、N3均有一个评估符号。现在图4显示了用于实现具有R个节点、R个符号以及R^2条弧的非确定有限状态自动机的状态机架构的示例逻辑实现。在图4中,R设置为变量M,并且硬件组织被设计和布置为对于任意M都可以进行升级。通过固定M的值以及提供适当级别的硬件,可以实现具有特定的M个实例化节点的状态机。
在图4描述的实施例中,M的值被设置为16或是32。节点元件N1-NM实施为触发器。对于M=32,存在32个节点元件,因此实现了具有32个状态的状态机。
节点元件N1-NM完全连接到互连线401。每个节点元件具有一条弧或者互连线连接到其自身以及连接到每个其他节点元件。因此,对于M=32,存在32×32或者1024个互连线401。同样的,对于M=16,存在16×16或者256个互连线401。
对于M=32,状态转换连通性控制402包括由32比特×32比特矩阵组成的1024个比特。同样的,对于M=16,状态转换连通性控制402包括由16比特×16比特矩阵组成的256个比特。Y行和Z列的比特表示设置或取消节点元件NY和节点元件NZ之间的互连线的控制。这种通过状态转换连通性控制402可以设置或取消节点元件N1-NM之间的互连线401的机制实现为互连线(例如连线)401上的开关,所述开关通过对于该互连线的相关控制比特进行门限。这也可以使用“与门”逻辑实现。
在该实施例中存在和状态机中状态一样多的状态转换评估符号403。对于M=32,存在32个符号。对于M=16,存在16个符号。每个符号可以包括单个8比特字符值和比较运算符,从而输入数据被指定与所述8比特字符值进行比较以计算状态转换动态触发器404。在该实施例中,状态转换动态触发器404计算逻辑很简单——新的输入数据字节同时提供给所有的M个比较器。一组M条匹配线作为状态转换动态触发器。同样地,M可以为16或是32。
状态转换动态触发器404控制节点元件N1-NM之间值的升级和传送(通过已设置的互连线401)的机制在该实施例中实现为简单的“与门”逻辑。也就是说,“与门”和“或门”一起设置和/或取消互连线401。
数据传送单元405对状态转换连通性控制402和状态转换评估符号403进行动态配置和编程。这样能够动态实现一定范围的控制流图结构或配置。在该实施例中,对于M=32,状态转换连通性控制402的比特矩阵可以实现为每个有32个比特32位寄存器。同样的,对于M=16,状态转换连通性控制402的比特矩阵可以实现为每个有16个比特的16位寄存器。在该实施例中,对于M=32,状态转换评估符号403的存储可以实现为每个有8个比特的32位寄存器。同样的,对于M=16,状态转换评估符号403的存储可以实现为每个有8个比特的16位寄存器。
数据传送单元405还提供了对节点元件N1-NM的读取和写入访问。对于M=32,节点元件可以看作32比特的逻辑寄存器。同样的,对于M=16,节点元件可以看作16比特的逻辑寄存器。数据传送单元405执行载入和存储操作以从所有这些寄存器读取值以及写入值到这些寄存器。读取和写入节点元件N1-NM的能力可以用于使数据传送单元405与外部互连结构进行通信从而将所述状态机构建模块连接到其他类似构建模块,以构建更大的状态机或图。数据传送单元405在专用信号连线上输出来自选定的节点元件的值,所述值可以被发送到例如其他状态机或者外部互连结构。同样地,数据传送单元405可以在专用信号连线上接收来自外部互连结构的值。这些值可以传送到选定的节点元件。
单个复位信号407被提供给所述设备的各个元件以将所述值清零。
在状态机评估开始之前,状态转换连通性控制402和状态转换评估符号403应该以所需的配置值进行编程。因此在为这些控制指定的存储器中的信号值在状态机评估开始之前是稳定的。
在一个实施例中,存在一种机制用于控制状态机评估的开始。在一个实施例中,对于M=32,起始状态选择控制409由32位寄存器组成。在一个实施例中,对于M=16,起始状态选择控制409由16位寄存器组成。该寄存器中的每个比特对应于一个节点元件。该寄存器中的任何数量的比特可以被设置为1(激活)。一旦所述状态机初始化完毕,对应于起始状态选择控制409寄存器中激活位的节点元件会以激活状态被启动。
在一个实施例中,状态机评估的进程受到时钟408的限制,所述时钟408确定了评估周期。在一个实施例中,对每个评估周期,新的输入数据字节被提供给所述设备,并且该字节对于所有状态转换评估符号并行计算(在该实施例中,这是指将输入字节与8比特字符值进行比较),导致表示状态转换动态触发器404的一组M条匹配线的升级。这些M个触发器404以及对应于状态转换连通性控制402的M^2个比特与节点元件N1-NM中的当前状态值结合在一起以计算每个节点元件的下一个状态值。计算每个节点元件的下个状态的逻辑方程如下:
设状态转换动态触发器为T1至TM
设节点元件为N1至NM
设状态转换连通性控制为比特矩阵CI,J,其中I=1,M,并且J=1,M
则给定节点元件NK的前一个状态PSK,下一个状态NSK如下:
NSK=OR(
[PS1AND T1AND C1,K],
[PS2AND T2AND C2,K],
……………
……………
[PSIAND TIAND CI,K],
……………
……………
[PSM AND TM AND CM,K],
)
对于每个节点元件,下一个状态计算有效地为M项的很大的“或”函数。每项通过将3个值进行“与”而计算——节点元件的前一个状态值,对应的动态触发器,以及对应的指示特定互连线401是否被设置的连通性控制比特。
一旦下一个状态计算完成,节点元件即以下一个状态值进行升级,并且所述状态机完成单个评估周期。如同对于下一个状态计算的逻辑方程所示的,所述设备的计算周期时间是三级逻辑评估。第一级包括“与门”用于计算触发器,第二级包括“与门”用于加入连通性控制因子,并且最后为M个输入的“或门”。这样的计算周期时间大大短于控制商业微处理器工作频率的周期时间。
注意上述的步骤序列表示单个逻辑评估周期中所需的计算。就物理上而言,附加的管道是可能的,用于进一步提高工作频率。例如,状态转换动态触发器的计算(给定输入数据新的字节)可以从下一个状态计算中解耦。
在一个实施例中,存在一种机制用于控制状态机评估的中断。对于M=32,接受状态选择控制410由32位寄存器组成。对于M=16,接受状态选择控制410由16位寄存器组成。所述寄存器中的每一位对应于一个节点元件。该寄存器中任意数量的比特可以被设置为1(激活)。一旦状态机进入这些状态中的任何一者(对应的节点元件被激活),所述状态机中断其评估。
前述内容提供了对于单个状态机构建模块的评估周期的描述。当所述模块通过外部互连结构连接到其他状态机时,会产生附加的同步握手信号以实现待协调的各个状态机的评估周期。
图6显示了程序员角度的状态机设备的一个实施例。所述状态机架构对于程序员来说是一组寄存器。图6显示了下述寄存器:节点元件、状态转换评估符号、状态转换连通性控制、起始状态选择控制向量,以及接受状态选择控制向量。注意所述设备的实施例就表示状态机所需的存储量而言是高效的。对于16节点状态机,仅需要54字节的寄存器。
图7显示了在芯片上实现数千个有限状态自动机的实施例中所述设备的使用。单个状态机的规范且紧凑的数据路径被多次实例化,导致多行或并行的密集阵列。在单块芯片上可以容纳数千个自动机。
注意尽管对示例架构的说明描述了所述设备的一个实施例,但是多种替换实施例均是可能的。
所述示例设备采用了一种解决方案,其中提供了与节点元件数量一样多的状态转换评估符号。在状态机架构的另一个实施例中,具有与互连线数量一样多的符号,从而对于M=32,可以有32×32或1024个符号,每个控制1024种可能的状态转换中的一者。
使用状态机架构的构建模块构建更大的状态机
图8(a)显示了状态机架构的一个实施例,其中通过在更大的图中分级使用状态机构建模块而实现了更大的状态机。具有选定数量的实例化节点的状态机架构的一个实施例被选择为构建模块。在一个实施例中,所述构建模块可以如图2所示。在另一个实施例中,所述构建模块可以如图4所示。然后该构建模块被作为更大的图的超节点(supernode)。因此所述实现了更大的状态机的更大的图由多个超节点组成。这些超节点使用与特征化状态机架构相同的技术而连接。全局时钟或超节点时钟被作为控制所述更大图的评估的同步机制使用。使用该技术,可以通过分级使用状态机构建模块而构建更大的状态机。
图8(b)显示了能够通过使用互连所述构建模块的可替换方法而实现更大的状态机的状态机架构的一个实施例。所述具有选定数量的实例化节点的状态机架构的一个实施例被选择为构建模块。在一个实施例中,所述构建模块可以如图2所示。在另一个实施例中,所述构建模块可以如图4所示。然后该构建模块被作为更大的图的超节点。因此所述实现了更大的状态机的更大的图由多个超节点组成。图8(b)显示了互连所述构建模块以实现更大的状态机的两种可替换方法。在一个实施例中,所有超节点或者状态机被直接连接到全局通信总线,并且通过该总线互相通信。在另一个实施例中,所述超节点被组成为树状。使用该方法,可以实现分级地组成树状状态机并且对输入数据进行评估。
图9(a)显示了示例的状态机架构的一个实施例在状态机技术上超出现有技术的存储和性能优势。如同图9(a)中表格所示,所述示例架构同时提供了减少自动机状态存储量和非常高的评估速度的优点。由于所述示例状态机架构实现了NFA,所述状态机的状态存储量与自动机中节点数量成比例(对于R字符正则表达式,这正比于R)。评估速度大大快于商业微处理器所能实现的速度。
图9(b)显示了通过使用状态机架构一个实施例而消除存储器瓶颈。由于所述示例状态机架构实现了NFA,所述状态机的状态存储量与自动机中节点数量成比例(对于R字符正则表达式,这正比于R)。这远远小于基于DFA方法所需的存储量。所述存储量足够小,使其可以在单块芯片上容纳数千个这样的状态机。在所述示例的状态机设备的临界评估周期时间内不需要访问任何外部存储器。因此,该解决方案消除了限制基于微处理器方法的性能的存储器瓶颈。
尽管本发明的各种替换和修改对于本领域普通技术人员在阅读上述说明之后无疑是显然的,然而应当理解,以示例方式显示和描述的任何特定实施例决不应该认为是限制性的。因此,参考各种实施例的细节并无意限制权利要求的范围,权利要求自身叙述了本发明本质性的特征。