CN100511049C - 用于对任意大小的正则表达式估值的方法和装置 - Google Patents
用于对任意大小的正则表达式估值的方法和装置 Download PDFInfo
- Publication number
- CN100511049C CN100511049C CNB2004800064050A CN200480006405A CN100511049C CN 100511049 C CN100511049 C CN 100511049C CN B2004800064050 A CNB2004800064050 A CN B2004800064050A CN 200480006405 A CN200480006405 A CN 200480006405A CN 100511049 C CN100511049 C CN 100511049C
- Authority
- CN
- China
- Prior art keywords
- state
- valuation
- fsa
- node elements
- tectonic block
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Logic Circuits (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明的实施例提供可编程FSA构造块,其中实现有多个可编程寄存器和相关逻辑,这些寄存器和逻辑提供对照多个数据流对任意大小的复杂RE进行上下文估值的能力。本发明的实施例提供完全可编程的硬件,其中RE的所有状态都被实例化,并且所有状态都被完全连接。对于一个实施例,该构造块具有固定的状态数目,以促进在芯片上实现。对于这种实施例,状态数目过大的RE被实现在两个或更多个FSA构造块上,然后这些FSA构造块被缝合到一起,以实现RE的估值。对于一个实施例,状态数目小于构造块的固定的状态数目的两个或更多个RE可用单个构造块实现。
Description
优先权要求
本申请是2003年1月9日提交的美国临时专利申请号No.60/438,847的非临时申请,并且与2003年8月28日提交的美国专利申请号No.10/650,354相关,这里通过引用将这两个申请都包含进来。
技术领域
本发明的实施例一般地涉及信息处理领域,更具体地涉及内容分析和处理领域。
背景技术
计算和通信中的持续趋势导致了充满内容分析和处理的环境的出现。通常要求这种高性能内容分析和处理的典型领域包括内容感知(content-aware)网络、基于内容的安全系统、监视、分布式计算、无线通信、信息存储和检索系统以及许多其他领域。
这种领域中使用的计算机和通信环境将会要求高水平的内容分析和处理。这种环境将会需要高效和可编程的解决方案,用于对消息、文档或分组中的内容进行有状态和上下文检查、搜索、词法分析、解析、特征描述、解释、过滤和变换。这些内容处理功能的中心是高效地对照输入数据流对状态机估值的能力。
作为计算理论的中心的状态机在其最简单的表述中,是包括状态、状态间的转换和输入表示的形式模型。20世纪50年代,正则表达式(RE)被Kleene开发作为描述和刻画串集合的形式标志。有限状态自动机作为状态机模型被开发,该模型被发现是等价于RE的。非确定性自动机(NFA)被开发并被证明是等价于确定性自动机的。Thompson和其他人后来的工作导致了用于构造有限状态自动机以对RE求值的构造算法体。大量参考文献可供用于正则表达式和有限状态自动机的描述。关于该材料的参考文本,参见“Speech and Language Processing”(由Daniel Jurafsky和James H.Martin所著,Prentice-Hall Inc,2000)。RE已演变成用于模式匹配和识别的强大工具,有限状态自动机已经变成实现机器以对其估值的标准技术。
状态机和有限状态自动机处理通常按三种方式之一来执行。首先,这种处理是通过实现事前已知的固定和选中的状态机来执行的。这可用固定专用集成电路(ASIC)解决方案来实现。这种方法可提高性能,但缺乏可编程性。此外,这种实现的花费常常高得令人望而却步。
第二,状态机可利用现场可编程门阵列(FPGA)以可编程的方式实现。FPGA体系结构提供通用可编程逻辑,这种通用可编程逻辑可对多种应用程序配置。但是,此方法在一个芯片上只能容纳少量状态机,并且估值可进行的速率受限。因此,此方法对于多种新兴应用程序不充分。
第三,多种状态机可利用传统通用微处理器来实现。因为微处理器是完全可编程的,所以此方法能够针对解决发展中的需求,但就对状态机估值来说,微处理器有几个局限性。
图1(a)示出基于微处理器的方法在实现有限状态自动机(FSA)时的局限性。存在两种实现选择,确定性有限状态自动机(DFA)方法和非确定性有限状态自动机(NFA)方法。就其实现R字符的RE并对照N字节的输入数据流对该RE估值的能力来说,这两种方法是不相上下的。在任一种方法中,RE都被映射到具有一定数目的状态的状态机或有限状态自动机。容纳这些状态所需的存储量是用于评价基于微处理器的解决方案的一个衡量标准。第二个衡量标准是对N字节的输入数据流估值所需的总时间。
对于DFA方法,R字符的RE所需的存储的界限是2R。因此可能需要非常大的存储量来容纳这些状态。通常通过在存储器中构建状态转换表,并且在微处理器逐渐对输入数据估值的同时使其顺序经过该表,来实现DFA。状态转换表的大尺寸致使典型商业微处理器中的高速缓存子系统无效,并且要求微处理器就输入数据的每个新字节访问外部存储器以查找该表,以便确定下一状态。从而,状态机可对输入数据估值的速率被存储器访问循环所限。这在图1(b)中示出。对于N字节的输入流,对状态机估值所花的时间正比于对存储器的N次访问。典型系统具有约100纳秒(ns)的存储器访问等待时间。这把可对照状态机估值的数据速率限制为约100Mbps。
为了对多个RE并行估值,一个选择是在存储器中的不同表中实现RE,并且微处理器对它们逐一顺序估值。对于K个并行的RE,估值时间将约为K*N*100ns,而存储界限将增长到K*2R。另一个选择是将所有RE编译到单个DFA中,并且使微处理器单向顺序经过该表。对于K个并行RE,存储界限将增长到2(K*R),而估值时间将保持为N*100ns。这种方法所需的存储量可能大得令人望而却步。为了实现几千个RE,所需的存储量可能超过典型商业系统的存储器的物理限制。
对于NFA方法,R字符的RE所需的存储界限将正比于R。从而存储量不是紧要问题。但是,在NFA中,多个节点可同时做出独立的状态转换,每个节点都基于独立的估值标准。假定微处理器是标量引擎,能够按顺序执行单线程控制,则NFA的多个状态转换要求微处理器顺序迭代经过每个状态的估值。从而,对于每个输入数据字节,估值必须被重复R次。假定方案的存储要求是适中的,则所有处理都能被本地化到使用片上资源,从而保持没有存储器瓶颈。每个状态转换计算是用片上估值实现的,片上估值的性能受从高速缓存访问数据的等待时间和分支的等待时间所限。由于典型微处理器是高度流水线化的,因此由于分支招致的性能惩罚是相当大的。例如,对于以4GHz运行的典型商业微处理器,假设16周期循环,则单个状态转换的估值将花费4ns数量级。从而,参照R字符的RE的R状态NFA对N字节的输入流估值将要求N*R*4ns。对于K个并行RE,微处理器将顺序经过每个RE,花费K*N*R*4ns。因此,仅对于各自具有8个状态的4个并行RE,数据速度就将再一次被限为约100Mbps。这些示例表明典型传统微处理器可以在约100Mbps的输入数据速率上递送可编程状态机估值。但是,在短期内,在企业网络和环境中,1Gbps和10Gbps之间的数据速率将不会罕见。虽然可以采用多个并行微处理器来以这种速率执行某些所需的功能,但是这种方法将会大大增加系统成本。
这些数据点表明2003年或2004年的传统微处理器将能够在速率约为100Mbps范围的输入数据上递送可编程状态机估值。但是,在此期限内,在企业网络和环境中1Gbps至10Gbps之间的数据速率将不会罕见。显然,在传统微处理器可递送的性能和环境所需求的性能之间有一到二个数量级的严重失配。虽然可以采用多个并行微处理器系统来以目标速率执行某些所需的功能,但是这大大增加了系统的成本。显然需要用于这些目标功能的更高效的解决方案。
发明内容
根据本发明的一个方面,提供了一种用于实现有限状态自动机构造块的硬件结构,包括:多个节点元素,其存储有限状态自动机估值的当前状态;多个可编程互连,其完全连接所述多个节点元素;符号估值单元,其具有用于每个所述节点元素的相应的符号,所述符号估值单元对输入估值,以提供符号匹配确定;状态转换估值逻辑,其在接收到符号匹配确定和启用的互连时,将所述节点元素从一个状态集合转换到另一个状态集合;节点元素初始化机制,用于将所述节点元素初始化为指定的值;估值终止机制,用于确定所述节点元素是否达到指定的估值终止状态;以及缝合机制,其在检测到所述节点元素的特定状态时,激活一个或多个目标有限状态自动机构造块的编程的状态转换集合。
根据本发明的另一个方面,提供了一种用于实现有限状态自动机构造块的硬件结构,包括:多个节点元素,其存储有限状态自动机估值的当前状态;多个可编程互连,其完全连接所述多个节点元素;符号估值单元,其具有用于每个所述节点元素的相应的符号,所述符号估值单元对输入估值,以提供符号匹配确定;状态转换估值逻辑,其在接收到符号匹配确定和启用的互连时,将所述节点元素从一个状态集合转换到另一个状态集合;节点元素初始化机制,用于将所述节点元素初始化为指定的值;以及两个或更多个估值终止机制,其中每一个估值终止机制确定相应的节点元素集合是否达到相应的指定的估值终止状态。
根据本发明的又一个方面,提供了一种用于实现有限状态自动机构造块的硬件结构,包括:多个节点元素,其存储有限状态自动机估值的当前状态;多个可编程互连,其完全连接所述多个节点元素;符号估值单元,其具有用于每个所述节点元素的相应的符号,所述符号估值单元对输入估值,以提供符号匹配确定;状态转换估值逻辑,其在接收到符号匹配确定、启用的互连以及计数器时,将所述节点元素从一个状态集合转换到另一个状态集合,其中所述计数器对达到指定的计数器值的指定的状态集合的出现计数;节点元素初始化机制,用于将所述节点元素初始化为指定的值;以及估值终止机制,用于确定所述节点元素是否达到指定的估值终止状态。
附图说明
通过参考以下描述和附图将会最佳理解本发明,这些附图是用来例示本发明的实施例的。附图中:
图1(a)和1(b)示出基于微处理器的方法在根据现有技术实现FSA时的局限性;
图2从编程观点示出根据本发明的一个实施例的基本有限状态自动机构造块(FSA构造块);
图3示出根据本发明的一个实施例用于实现基本FSA构造块的逻辑电路;
图4示出根据本发明的一个实施例的FSA构造块,在该FSA构造块中多个附加寄存器和逻辑已被实现在基本FSA构造块之上,以提供解决复杂RE所需的功能;
图5示出用于缝合FSA构造块以适应状态数目过大的RE的过程;
图6a-6d示出用于缝合FSA构造块以适应状态数目过大的RE的过程的图示;
图7示出根据本发明的一个实施例用于提供FSA构造块的缝合的硬件体系结构;
图8示出根据本发明的一个实施例的FSA构造块互连,用于提供FSA构造块缝合;以及
图9示出单片RE处理器,该处理器根据本发明的一个实施例利用FSA构造块,对照多个不同数据流对任意大小的RE执行高速上下文估值。
具体实施方式
综述
本发明的实施例提供了状态机估值构造块,用于在硬件中实现NFA,并且用于利用这些构造块在输入数据上对多个RE并行估值。本发明的实施例提供了完全可编程的硬件,其中RE的所有状态都被实例化,并且所有状态都被完全连接。对于一个实施例,构造块具有固定数目的状态,以促进片上的高效实现。对于这种实施例,两个或更多个构造块可被连接(缝合),以适应状态数目大于构造块的固定的状态数目的RE。对于一个实施例,状态数目小于构造块的固定的状态数目的两个或更多个RE可在单个构造块内实现。
对于一个实施例,每个构造块实现多种寄存器以及相关控制逻辑,以有效解决复杂RE,并提供关于估值过程的信息。对于一个实施例,大量构造块与控制器以及规则存储器一起被实现在片上,以允许构造块的快速重编程。或者,或此外,上下文存储器可被实现在片上,以便如果在以高速对多个不同数据流进行上下文处理的同时发生输入数据中断,则为上下文信息提供可快速访问的存储装置。
在以下描述中,阐述了许多细节以提供对本发明的详尽理解。但是,对于本领域的技术人员将会很明显的是,可在没有这些特定细节的情况下实践本发明。在其他情况下,公知的结构和设备是以框图形式而不是详细示出的,以避免模糊本发明的主题。
在整个说明书中,提及“一个实施例”或“实施例”意味着联系该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。从而,在整个说明书中各种位置出现的短语“在一个实施例中”或“在实施例中”不必都是指相同实施例。此外,特定特征、结构或特性可以按任何适当的方式被组合在一个或多个实施例中。
此外,创造性方面存在于单个公开的实施例的少于全部特征中。从而所附的权利要求书被明确包含进此具体实施方式中,并且每条权利要求独立作为本发明的单独的实施例。
以下详细描述中的某些部分是按照计算机存储器内的数据比特上的操作的算法和符号表示给出的。这些算法描述和表示是数据处理领域的技术人员用于最有效地将其工作的实质传达给本领域的其他技术人员的手段。算法在这里一般被认为是导致期望的结果的步骤的首尾一致的序列。步骤是那些要求物理量的物理操作的步骤。通常,虽然不是必要地,这些量采取能够被存储、传送、合并、比较或者以其他方式操作的电或磁信号的形式。已经证明,有时主要由于公用的原因,将这些信号称为比特、值、元素、符号、字符、项、数字等是较方便的。
但是应该记住,所有这些和类似的术语都要与适当的物理量相关联并且仅为应用到这些量的方便标签。除非特别声明,否则正如以下讨论中显而易见的,要理解在整个说明书中,利用诸如“处理”或“计算(computing)”或“计算(calculating)”或“确定”或“显示”等术语的讨论都是指计算机系统或类似的电子计算设备的动作和过程,其将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操作和变换成同样表示成计算机系统存储器或寄存器或其他这种信息存储装置、传输或显示设备内的物理量的其他数据。
本发明还涉及用于执行这里的操作的装置。此装置可为所要求的用途特别构造,或者它可包括由存储在计算机中的计算机程序选择性激活或重配置的通用计算机。这种计算机程序可被存储在计算机可读存储介质上,例如但不限于任何类型的盘,包括软盘、光盘、CD-ROM以及磁光盘、只读存储器(ROM)、随机访问存储器(RAM)、EPROM、EEPROM、磁或光卡或适用于存储电子指令并且各自耦合到计算机系统总线的任何类型的媒体。
这里给出的算法和显示不内在涉及任何特定的计算机或其他装置。各种通用系统可用于根据这里的教导的程序,或者可能证明构造更专用的装置来执行所要求的方法步骤较为方便。用于多种这些系统的所要求的结构将出现在以下描述中。此外,本发明不是参考任何特定编程语言来描述的。将会理解多种编程语言可用于实现这里描述的本发明的教导。
机器可读介质包括任何用于以机器(例如计算机)可读的方式存储或传输信息的机制。例如,机器可读介质包括只读存储器(“ROM”);随机访问存储器(“RAM”);磁盘存储媒体;光存储媒体;闪存设备;电、光、声或其他形式的传播信号(例如载波、红外信号、数字信号等);等等。
图2从编程观点示出根据本发明的一个实施例的基本状态机估值构造块或有限状态自动机构造块(FSA构造块)。图2所示的FSA构造块200包括允许FSA构造块完全可编程的多个寄存器。寄存器201包含指定FSA的当前状态的节点元素。寄存器202包含状态转换估值符号,在匹配该符号时状态将被转换。寄存器203包含指定FSA的哪些状态被连接(即启用的状态连接)的状态转换连接控制矩阵。
最初,节点处于某个状态。对于每个估值周期,输入(例如输入字节)205被输入到状态转换动态触发计算210,它将输入与寄存器202中包含的状态转换估值符号相比较。比较信息被输入到状态转换互连和下一状态估值逻辑215。然后根据寄存器203中包含的节点连接,下一状态被计算和锁存,然后变成当前状态。即下一状态是用触发器、连接控制和当前状态比特来计算的。FSA构造块的体系结构允许每个时钟周期分析输入数据的一个字符,无需外部存储器。
图3示出根据本发明的一个实施例用于实现FSA构造块的逻辑电路。图3所示的逻辑电路300可用于实现状态机体系结构,以实现带R个节点、R个符号和R^2个弧的非确定性有限状态自动机。在图3中,R被设置为变量M,硬件组织被设计和布局为可对任何M缩放。通过固定M的值并且提供适当级别的硬件,可实现具体带M个实例化的节点的FSA构造块。
节点元素N1-NM与互连301完全连接。每个节点元素具有到其自身以及每个其他节点元素的弧或互连。因此,对于M=32,有32 x 32或1024个互连301。类似地,对于M=16,有16 x 16或256个互连301。
对于M=32,状态转换连接控制302包括组织为32比特x 32比特矩阵的1024比特。类似地,对于M=16,状态转换连接控制302包括组织为16比特x16比特矩阵的256比特。第Y行Z列的比特代表启用或禁用节点元素NY和节点元素NZ之间的互连的控制。状态转换连接控制302启用或禁用节点元素N1-NM之间的互连301的机制被实现为互连(例如导线)301上的开关,并且开关被该互连的相关控制比特门控。这也可用与(AND)门逻辑来实现。
在此实施例中,状态转换估值符号303的数目与机器中的状态的数目相同。对于M=32,有32个符号。对于M=16,有16个符号。每个符号可包括单个8比特字符值和比较操作符,以便输入数据被指定来与8比特字符值相比较来计算状态转换动态触发器304。在此实施例中,用于状态转换动态触发器304计算的逻辑如下。输入数据的新字节被同时馈送到所有M个比较器中。M个匹配线的集合充当状态转换动态触发器304。M再一次可以为16或32。
状态转换动态触发器304管理节点元素N1-NM之间的值的更新和传送(在已启用的互连301上)的机制在此实施例中被实现为单个与门逻辑。即,与门和或(OR)门协同起作用以启用和/或禁用互连301。
数据传送单元305对状态转换连接控制302和状态转换估值符号303进行动态配置和编程。这允许了控制流程图结构或配置的范围的动态实现。在此实施例中,对于M=32,状态转换连接控制302的比特矩阵可实现为各含32比特的32个寄存器。类似地,对于M=16,状态转换连接控制302的比特矩阵可实现为各含16比特的16个寄存器。在此实施例中,对于M=32,状态转换估值符号303的存储装置可实现为各含8比特的32个寄存器。类似地,对于M=16,状态转换估值符号303的存储装置可实现为各含8比特的16个寄存器。
数据传送单元305还提供对读写节点元素N1-NM的访问权限。对于M=32,节点元素可被视为32比特的逻辑寄存器。类似地,对于M=16,节点元素可被视为16比特的逻辑寄存器。数据传送单元305执行加载和存储操作以便从所有这些寄存器中读取值并向这些寄存器中写入值。读写节点元素N1-NM的这一能力可用于允许数据传送单元305与外部互连结构通信以把状态机构造块连接到其他这样的构造块,以便构造更大的状态机或图。数据传送单元305在专用信号线上输出来自选中的节点元素的值,这些值可被发送到例如其他状态机(例如另一个FSA构造块)或外部互连结构。类似地,它在专用信号线上接收来自外部互连结构的值。这些值可被传送到选中的节点元素。
单个复位信号307被馈送到装置的各种元件以将值清零。
在状态机估值开始之前,状态转换连接控制302和状态转换估值符号303应该已经被用期望的配置值编程。因此,分配给这些控制的存储装置中的信号值在状态机估值开始之前将会是稳定的。
在一个实施例中有控制状态机估值的开始的机制。在一个实施例中,对于M=32,开始状态选择控制309包括32比特的寄存器。在一个实施例中,对于M=16,开始状态选择控制309包括16比特的寄存器。此寄存器中的每个比特对应于一个节点元素。此寄存器中的任何数目的比特可被设为1(活动)。在状态机初始化时,对应于开始状态选择控制309中的活动比特的节点元素以活动状态作为开始。
在一个实施例中,状态机估值的过程被确定估值周期的时钟308调节。在一个实施例中,每个估值周期中输入数据的新字节被提供给装置,并且此字节被对照所有状态转换估值符号并行估值(在此实施例中,这是输入字节对8比特字符值的比较),这导致代表状态转换动态触发器304的M个匹配线的集合的更新。这M个触发器304以及对应于状态转换连接控制302的M^2比特,与节点元素N1-NM中的当前状态值结合,以计算每个节点元素的下一个状态值。用于每个节点元素的下一状态的计算的逻辑方程如下:
如果状态转换动态触发器为T1至TM
如果节点元素为N1至NM
如果状态转换连接控制是比特矩阵CI,J,其中I=1,M且J=1,M则,给定节点元素NK的前一状态PSK,下一状态NSK如下:
NSK=OR(
[PS1 AND T1 AND C1,K]
[PS2 AND T2 AND C2,K]
.............
.............
[PSI AND TI AND CI,K]
.............
.............
[PSM AND TM AND CM,K]
)
从效果上来说,对于每个节点元素,下一状态计算是M项的大型或函数。每个项是通过将3个值与在一起来计算的,这三个值即—节点元素的前一状态值,对应的动态触发器,以及指示特定互连301是否被启用的对应的连接控制比特。
一旦下一状态计算完成,节点元素就被用下一状态值更新,状态机完成单个估值周期。正如可由下一状态计算的逻辑方程所看到的,装置的估值周期时间是三级逻辑估值。第一级包括与门以计算触发器,第二级包括与门以把连接控制包括在内,最后是M个输入或门。此估值周期时间比管理商业微处理器的操作频率的周期时间短得多。
注意上述步骤序列代表单个逻辑估值周期中所需的计算。从物理上来说,附加流水线操作是可能的,以进一步提高操作频率。例如,状态转换动态触发的计算(给定输入数据的新字节)可与下一状态估值解耦。
在一个实施例中有控制状态机估值的停止的机制。对于M=32,接受状态选择控制310包括32比特的寄存器。对于M=16,接受状态选择控制310包括16比特的寄存器。此寄存器中的每个比特对应于一个节点元素。此寄存器中的任何数目的比特可被设置为1(活动)。一旦状态机进入这些状态中的任何一个(对应的节点元素变得活动),状态机即停止其估值。
前文提供了对单个FSA构造块的估值周期的描述。当这种FSA构造块经由外部互连结构耦合到其他状态机(例如另一个FSA构造块)时,将会导致额外的同步握手以允许各估值周期协作。
上述FSA构造块可用于在硬件中实现非确定性有限状态自动机(FSA)的迅速且高效的实现。NFA的规格自动映射到装置。由于正则表达式(RE)等价于有限状态自动机,因此FSA构造块对于正则表达式(RE)的高速估值尤其有用。
在现有技术中存在许多算法,用于将RE映射到NFA。[关于此材料存在几个来源和文本。关于各种算法的详细论述,参见以下参考文献:由Alfred V.Aho、Ravi Sethi、Jeffrey D.Ullman所著的“Complilers:Principles,Techniques,and Tools”]。值得注意的算法包括Thompson的构造和Berry-Sethi构造。这些算法将包括给定数目的字符和操作符的正则表达式映射到有限状态自动机。这些算法的优势衡量标准包括所构造的有限状态自动机的显著特性。这些特性包括实现状态机所需的状态数目、状态转换弧的数目以及状态转换估值符号的数目。指出以下事实是很重要的:一定种类的构造算法(通常称为左偏构造、右偏构造或者类Berry-Sethi构造)导致将R字符的正则表达式映射到具有R个状态、最多R^2个弧和R个符号的有限状态自动机。这种构造允许用于正则表达式处理的装置的设计中的硬件的进一步节省。不必构建具有R^2个估值符号的R-节点状态机(每个弧一个符号),只需要提供R个估值符号(每个节点一个)。从而,对每个节点只需要提供一个估值符号和相关动态触发计算硬件。从节点发射出或馈送进节点的所有弧由此触发器门控。在触发馈送进节点的所有弧和触发从节点发射出的所有弧之间的设计决定导致在左偏与右偏构造算法之间选择的决定。
利用右偏构造算法,RE可被映射到上述FSA构造块。因此,例如,RE可被指定为(a|b)c,这在字符“a”或“b”被接收到然后“c”被接收到时指示匹配(即ac和bc都导致匹配)。这种RE可用三个状态来编程到FSA构造块。状态转换估值符号303被编程如下:第一状态被编程为以符号“a”作为估值符号(S1=“a”),第二状态被编程为以符号“b”作为估值符号(S2=“b”),第三状态被编程为以符号“c”作为估值符号(S3=“c”)。状态转换连接控制302被编程如下:节点元素1和节点元素3之间的互连被启用(C13=1),节点元素2和节点元素3之间的互连被启用(C23=1),所有其他互连被禁用(对于其余Cij=0)。开始状态选择控制309被编程为将状态1和状态2都选择为开始状态。接受状态选择控制310被编程为将状态3选择为命中的接受状态。
如上所述的基本FSA构造块可以按多种方式实现。详细描述的剩余部分将讨论针对解决多个问题的特定实施例。
如上文所讨论的,本发明的实施例提供固定大小的FSA构造块(即具有固定数目的状态的FSA构造块)来促进高效实现。在其他实施例中可实现不同大小的FSA构造块。但是,固定大小的FSA构造块的规则的、可重复的结构允许了在芯片上高效实现大量(例如1000个)FSA构造块。
固定大小的FSA构造块虽然较易实现,但却引起了如何针对解决状态数目大于FSA构造块的固定大小的RE的问题。对于本发明的一个实施例,FSA构造块的固定大小是根据特定问题空间来确定的,并且两个或更多个FSA构造块被连接(缝合)以适应具有较大状态数目的RE。
对于一个实施例,按如下方式实现FSA构造块的缝合以解决状态数目过大的RE。RE被转换成句法树。然后句法树被分割成多个子树,每个子树的字符数目不超过FSA构造块的固定大小。句法树的这一划分可用多种公知的树划分算法来实现。然后每个子树被转换成具有固定大小的FSA构造块可适应的状态数目的NFA。然后每个子树的NFA被实现在单独的FSA构造块上,然后每个单独的FSA构造块被缝合到一起以实现RE的估值。用于缝合FSA构造块的方法的典型实施例在下文中更详细描述。
在一个实施例中,FSA构造块之间所需的互连可分级实现,以获得高效实现并且减小性能惩罚。在最高性能级别,较小数目的FSA构造块可被组织成群组,并且该群组中的所有FSA构造块通过专用导线直接且完全地连接到彼此,以便延时最小。在下一级别,只有相邻群组彼此连接,以便在连接性降低的代价下降低配线成本。
根据问题空间中的RE的大小,多个FSA构造块可被群集在一起。例如,对于16个状态的固定大小FSA构造块,将16个FSA构造块群集在一起将会适应具有256个状态的RE。对于本发明的一个实施例,片上的约1000个FSA构造块被划分成各含16个FSA构造块的群组,并且每个FSA构造块通过专用导线与其群组内的所有FSA构造块互连,从而避免缝合的时钟惩罚。
对于一个实施例,每个FSA构造块群组不与每个群组互连,相反群组被级联,并且某些群组“触发”一个或多个特定的其他群组。对于这种体系结构无法适应超大RE的一个实施例,采用了控制器来读取FSA构造块的状态并将转换状态显式地写入缝合后的FSA构造块。
如上所述,RE可能太大以至于不能被单个FSA构造块解决。相似地,有时RE小于FSA构造块的固定大小。对于一个实施例,两个或更多个RE是用单个FSA构造块来解决的,如下所述。
对于一个实施例,可解决的RE的数目不被FSA构造块内实例化的RE的数目所限制。对于一个实施例,RE可被从规则存储器(例如传统存储器)中加载到FSA构造块中,该存储器可存储比硬件中实现的多得多的RE。将FSA构造块耦合到规则存储器允许了RE被存储在存储器中并且被用于对FSA构造块动态编程。
有时,到FSA构造块的输入数据是分段的,即输入数据的第一部分之后紧跟的是无关数据,其后是输入数据的剩余部分。为了针对解决此情况,本发明的一个实施例提供将部分上下文存储到上下文存储器并且在适当的时候访问部分上下文的能力。
对于本发明的一个实施例,FSA构造块包括计数器、指针和状态寄存器,以提供附加信息(例如除是否辨认出了模式之外)。例如,计数器可用于指示特定RE匹配的次数或实现更复杂的RE;指针可用于指示RE匹配的开始和结束位置;状态比特可用于指示RE搜索期间的各种事件。
系统
图4示出根据本发明的一个实施例的FSA构造块,在该FSA构造块中多个特征已被实现,以提供用于解决复杂的现实RE的附加功能。图4所示的FSA构造块400是16状态FSA构造块。FSA构造块400包括由外部编程的开始偏置/结束偏置寄存器驱动的使能信号415。即当接收输入数据流时,不必在流开始处着手估值。估值的开始和结束点可被确定和编程以驱动FSA构造块400的使能。时钟信号408控制估值过程,重置信号407重置FSA构造块的状态(即将所有节点元素416和计数器值434设为零)。开始状态寄存器409被经由软件编程以指示16个状态中哪些最初是活动的。当初始时钟信号408被接收到时,如果使能信号415为高,则开始状态寄存器409中包含的值被锁存到节点元素416中。当输入字节406被接收到时,它被与符号估值单元(SEU)403的估值符号相比较。关于输入字节是否匹配的确定被转发到状态转换互连和下一状态估值逻辑(STINSEL)417。然后在匹配时,根据编程到状态转换连接控制(STCC)寄存器402中的节点连接,动态下一状态(DNS)425被启用并且被下一状态确定逻辑(NSDL)418用于确定下一状态。然后NSDL418在时钟周期结束时将下一状态锁存到节点元素416。然后锁存后的值变成FSA构造块的当前状态,下一个输入数据字节被接收,估值继续。
符号估值单元
根据本发明的一个实施例,SEU 403包含多个寄存器和附属逻辑,以允许复杂RE的高效估值。
RE可被定义为采用范围而不是单个字符符号。例如,RE可引用a-z或0-9范围中的字符。因此,例如,RE可被指定为[a-z]bc,这在范围a-z中的任何字符被接收到,然后是“b”的出现,然后是“c”(即xbc、Xbc等)时指示匹配。在硬件中没有范围检测支持的情况下,对于范围中的每个字符,范围a-z必须被编程为FSA构造块中的不同状态(即a的状态,b的状态,c的状态,直到z的状态)。在本发明的一个实施例中,可编程范围检测和匹配装置作为FSA构造块的一部分被提供,以用单个FSA状态支持范围。如图4所示,SEU 403包括两个范围寄存器,即低范围寄存器420和高范围寄存器421,以便为多个(例如达四个)范围分别指定低范围值和高范围值。输入字节406和高低范围值被提供给范围检测逻辑419,以确定输入是否在指定的范围内。此信息与输入字节406和来自符号寄存器450的编程的匹配符号一起被提供给符号匹配检测逻辑(SMDL)422,该检测逻辑对照符号本身对输入字节406估值。这允许了软件对范围、字符或其组合之上的状态转换编程。这是通过扩展字符定义(例如包括范围信息)并为字符定义提供额外空间来实现的。对于一个实施例,各含24比特的16个符号寄存器被实现,并且24比特中的12个被用于定义扩展字符,12个用于比特掩码(下文讨论)。在用于扩展字符的12比特中,8个被用于字符本身,四个被用于指定此状态的符号是否应该在一个或多个范围上匹配。
SEU 403包括符号掩码寄存器423,以指示不会被比较的一个或多个特定比特。对于某些应用程序,掩蔽输入数据的比特(即对估值逻辑编程以使得特定比特不被考虑)可能效率更高。例如,在ASCII中,小写小符(a-z)和大写字符(A-Z)在单个比特位置(比特5)上不同。因此,例如,RE可被指定为[a-z,A-Z]b c,这在范围a-z中的任何字符或范围A-Z中的任何字符被接收到,然后是“b”的出现,然后是“c”(即xbc、Xbc等)时指示匹配。对于A-Z,在没有掩码支持的情况下,这种RE将要求FSA构造块中的四个状态—一个用于范围a-z,一个用于范围A-Z,一个用于“b”,最后一个用于“c”。通过以在字符比较期间忽略大小写比特(即掩蔽第五比特)来使用掩码装置,可用FSA构造块中的三个状态来更高效地实现这种RE。即,通过掩蔽大小写比特(第五比特),将不必将范围a-z(小写)和范围A-Z(大写)安排到单独状态中,FSA中的单个状态就可完成比较。
SEU 403包括逻辑操作寄存器424,该寄存器可用于在出现匹配符号时结合逻辑操作符指示状态转换。例如,RE可被编程以使得转换发生在估值的负极性而不是估值的正极性上(例如转换发生在“非(NOT)”匹配而不是匹配时)。对于一个这样的实施例,逻辑操作寄存器提供16比特(即每个状态一比特),以指定逻辑操作符“NOT”。
接受状态检测单元
当DNS 425被启用时,下一状态被检查以确定是否已达到RE的接受状态。接受状态检测单元410包括接受状态寄存器426和接受状态检测逻辑(ASDL)427。接受状态寄存器426是用RE的接受状态编程的。ASDL 427使用DNS 425来确定是否到达了编程的接受状态,如果是的话,命中被记录在对应于接受状态寄存器426的命中寄存器428a中。此信息可作为RE估值的结果经由寄存器读/写总线451供外部所用。
根据本发明的一个实施例,ASDU 410包括两个接受状态寄存器426以帮助将两个RE封装到单个FSA构造块中。如上所述,状态总数不超过FSA构造块的固定的状态数目的两个或更多个RE可被封装到单个FSA构造块中。每个RE可具有唯一的接受状态,因此对于每个被封装的RE应该在FSA构造块上实现接受状态寄存器和对应的命中寄存器。对于图4所示的实施例,两个接受状态寄存器426与对应的命中寄存器428a和428b一起被实现,以帮助将两个RE封装到单个FSA构造块中。为了保持灵活性,每个寄存器是完整的16比特寄存器,这允许了封装不同大小的RE。例如,12状态RE可与4状态RE一起被封装,或者极端情况下15状态RE可与1状态RE一起被封装。如果特定FSA构造块不被封装,则附加的接受状态寄存器和相应的命中寄存器不被使用。
匹配位置指针
对于某些应用程序,确定匹配开始和结束的位置是有用的。为了实现这种确定,根据一个实施例,开始位置寄存器429和结束位置寄存器430以及字节计数431被实现在FSA构造块中。当在估值期间估值开始时,字节计数431被提供。当下一状态的第一转换从开始状态发生时(例如RE匹配被启动时),该点的字节计数431的值被锁存到开始位置寄存器429中。当随后DNS被启用时,确定是否达到接受状态(例如确定RE匹配),该点字节计数的值被锁存到结束位置寄存器430中,从而提供匹配的开始和结束位置。
状态转换计数器单元
FSA构造块400包括状态转换计数器单元(STCU)432,该单元包括多个寄存器和附属逻辑以允许复杂RE的高效估值。例如,计数器允许不仅在接收到指定符号时采用状态转换而且在接收到指定符号指定次数时也采用状态转换的RE被编程。因此,例如,RE可被编程为a b{2,4}c,它在a被接收到然后“b”出现二至四次然后是“c”(即abbc、abbbc和abbbbc)时指示匹配。通过将状态0用于“a”的比较,将状态1用于b{2,4}的比较,并将状态2用于“c”的比较,这种RE可被编程到FSA构造块中。计数器触发状态(CTS)寄存器433可用计数器434的触发状态(例如状态1,对应于“b{2,4}”的状态)来编程。对于此例,CTS寄存器433被编程为状态1,计数器下方值(CLV)寄存器435被编程为2(即为获得匹配的最少出现次数),并且计数器上方值(CUV)寄存器436被编程为4(为获得匹配的最大出现次数)。CTS 433、CLV 435和CUV 436的编程的值与计数器434的值一起,被输入到计数器逻辑437。当RE的条件被满足时,计数器逻辑输出438将被激活。从一个状态到下一状态1(对应于“b{2,4}”)到状态2(对应于“c”)的转换是由计数器逻辑输出438控制的,因此直到计数器逻辑输出为高才会发生转换。
对于一个实施例,CTS寄存器433可用多个触发状态来编程以实现更复杂的RE。例如编程为a(b|c){2,4}的RE将会要求把对应于“b”和“c”(即状态1和2)的状态编程为触发状态。
对于一个实施例,CTS 433的触发状态可被编程到RE的接受状态,以对RE命中的次数计数。
FSA构造块缝合
正如上文所讨论的,本发明的实施例提供了一种用于解决状态数目超过FSA构造块的状态数目的RE的方法。
对于一个实施例,固定大小M的n个FSA构造块被缝合到一起以适应状态数目为E的RE,其中M<E≤nM。
图5示出用于缝合FSA构造块以适应状态数目过多的RE的过程。对于一个实施例,图5所示的过程500开始于操作505处,其中RE被转换成相应的句法树。
在操作510处,相应的句法树被分割成一个父子树以及一个或多个儿子树,以使得所有子树都具有不大于FSA构造块的固定的状态数目的状态数目(即≤M)。可能需要对父子树和儿子树递归分割以实现此值。即,父子树可能具有一个或多个儿子树,而每个儿子树本身可能是父子树。一个或多个儿子树中的每一个在父子树中由特定字符表示,该字符指示子树的存在。
以上关于子树所使用术语父和子,帮助指示哪个子树呼叫另一个子树。为了清楚起见,因为每个子树可呼叫另一个子树,并且本身也可被呼叫,因此子树将被称为主叫或被叫。
在操作515处,每个子树被转换成NFA。每个NFA具有可由固定大小的FSA构造块所适应的状态数目。在适当时,每个NFA结合特定字符,该特定字符指示要被呼叫的子树的存在。
在操作520处,每个NFA被实现在单独的FSA构造块中,并且被缝合到一起以实现RE的解决方案。在对主叫NFA估值时,当达到缝合点(即指示子树的特定字符)时,估值按照特殊字符的指引继续。
图6a-6d示出图5的过程的图示。如图6a所示,等于“a(b|c|d)e*f”的RE由具有六个字符的句法树600表示。假定FSA构造块的硬件限制具有四个状态,则RE不能用一个FSA构造块来直接解决。
如图6b所示,句法树600被分割成了主叫子树605和被叫子树610。每个子树具有不多于四个字符。主叫子树605包括特定字符“#”,以指示子树的存在。硬件被编程,以在遇到特定字符时前进到子树。
如图6c所示,每个子树被转换成一个NFA。主叫子树605被转换成了主叫NFA 606,被叫子树610被转换成了被叫NFA 611。主叫NFA 606包括切换状态620(即状态1),该切换状态具有切换返回状态621(即状态2和状态3)。被叫NFA 611具有开始状态622(即状态0、状态1和状态2),以及接受状态623(即状态3)。
如图6d所示,主叫NFA 606与被叫NFA 611的缝合实现RE。两个NFA都在每个时钟周期中被同时估值。在估值时,当达到主叫NFA 606的缝合点620时,估值被用零周期转换引向被叫NFA 611,并且被叫NFA611的开始状态622被激活。当达到被叫NFA 611的接受状态623时,估值又被用零周期转换引回主叫NFA 611的返回状态621。
以上参考图5和图6描述的过程可按多种方式实现。硬件实现的基本要求是利用零周期转换将主叫FSA构造块的特定字符状态连接到被叫FSA构造块的开始状态,并且利用零周期转换将被叫FSA构造块的接受状态连接到特定字符指示的状态(例如切换返回状态)。
这意味着主叫FSA构造块应该包括按照需要将缝合状态和开始连接编程到一个或多个被叫FSA构造块的机制,以及对切换返回状态编程以在估值从被叫FSA构造块返回时启用下一个活动状态集合的机制。被叫FSA构造块应该包括在来自被叫FSA构造块的开始连接为活动时触发被叫FSA构造块的开始状态的机制,以及在被叫FSA构造块的接受状态被达到时激活到主叫FSA构造块的返回连接的机制。
正如以上所注意到的,每个FSA构造块可用作主叫FSA构造块或被叫FSA构造块,从而每个FSA构造块应该既具有对主叫FSA构造块描述的机制,又具有对被叫FSA构造块描述的机制。
再次参见图4,为了实现缝合,FSA构造块400包括缝合输出控制单元(SOCU)439,该单元带两个主叫呼出状态(COS)寄存器440和两个对应的主叫目标FSA(CTF)寄存器441。每个COS寄存器被以缝合到另一FSA构造块的状态编程。对应的CTF寄存器441指示缝合到哪个FSA构造块(即被叫FSA构造块)。缝合触发计算逻辑(STCL)442接收分别来自COS寄存器440和对应的CTF寄存器441的缝合状态信息和目标FSA构造块信息,并且利用该信息激活FSA开始输出443。FSA开始输出443连接到并激活被叫FSA构造块的FSA开始输入444。在被叫FSA构造块处,在接收到FSA开始输入444信号时,被指定为开始状态409的状态集合被激活。接收状态选择器(RSS)445被编程,以确定访问哪个被叫接收状态(CRS)寄存器446来获得被叫接收状态。然后NSDL 418使用选中的CRS寄存器446中的值、开始状态409和DNS 425来确定被叫FSA构造块的下一状态,然后该状态被锁存到节点元素416。对于一个实施例,选中的CRS寄存器446中的值、开始状态409和DNS 425被进行或运算以确定下一状态。
类似地,当被叫FSA构造块达到接受状态寄存器426中包含的接受状态时,它通过参考接受目标FSA(ATF)寄存器447来确定返回到哪个FSA构造块。ASDL 427使用接受状态寄存器426中的值和ATF寄存器447中的值来确定何时激活缝合返回输出(SRO)448。SRO 448连接到并激活目标FSA构造块的缝合返回输入(SRI)449,估值在目标FSA构造块处继续。在主叫FSA构造块处,接收状态选择器(RSS)445被编程,以确定访问哪个接收状态(RS)寄存器446来获得主叫接收状态。
然后每个FSA构造块(主叫和被叫)中的NSDL 418使用选中的RS寄存器446中的值、开始状态409、DNS 425和计数器输出438来确定FSA构造块的下一状态,然后该状态被锁存到节点元素416。对于一个实施例,选中的RS寄存器446中的值、开始状态409和DNS 425被进行或运算以确定下一状态。
图7示出根据本发明的一个实施例用于提供FSA构造块的缝合的硬件体系结构。图7所示的FSA体系结构700包括SOCU 739,该SOCU被用于对缝合点和到触发的FSA的连接性编程。SOCU 739包括COS寄存器740和CTF寄存器741。COS寄存器740被以FSA构造块应该缝合的所有状态编程,CTF寄存器741被以缝合到的相应的FSA构造块编程。当状态转换互连和下一状态确定NSDL逻辑718提供是切换状态的状态时(例如用于主叫FSA构造块),切换状态检测器742将检测切换状态,并启用连接,以切换到相应的FSA构造块。即,对于适当的被叫FSA构造块,FSA开始输出连接743被启用(被叫FSA构造块的FSA开始输入连接744被同样地启用)。
在被叫FSA构造块处,接收状态选择器745确定访问哪个CRS寄存器746a或746b来获得被叫接收状态。存储在开始状态寄存器709中的开始状态、选中的被叫接收状态以及动态下一状态被进行或操作,以确定被叫FSA构造块的下一状态。估值在被叫FSA构造块处继续,直到达到被叫FSA的接受状态,接受状态检测器727检测接受状态,并且ATF 747启用被叫FSA构造块的适当SRO 748连接(目标FSA构造块的返回连接(RSI)749被同样地启用)。接收状态选择器745确定访问哪个RS寄存器746a或746b来获得接收状态。此时目标主叫FSA构造块的缝合返回RS寄存器746a和746b被适当启用(即编程的返回状态被启用),这两个寄存器是以切换返回状态来编程的,以在返回时启用下一组活动状态。在主叫FSA构造块处,RS寄存器746a和746b以及动态下一状态被进行或操作,以确定主叫FSA构造块的下一状态。
在有缝合装置的情况下,通过在多个FSA构造块上实现RE的部分,并将FSA构造块缝合到一起以实现RE的估值,本发明的实施例提供了对状态数目过大的RE估值的能力。
图8示出根据本发明的一个实施例的FSA构造块的互连,用于提供FSA构造块缝合。如图8所示,构造块0-8彼此完全互连,正如以上参考图7所描述的那样。每个FSA构造块0-3可经由内部连接(未示出)连接到其自身。
单片RE处理器
图9示出根据本发明的一个实施例的片上RE处理器。图9所示的RE处理器900包括多个FSA构造块905,这些FSA构造块可如上所述被互连在群组中。对于一个实施例,FSA构造块905的数目可为约1000-2000。RE处理器900还包括提供输入数据给FSA构造块905的自动机控制器910。自动机控制器910将FSA构造块905耦合到规则存储器915和上下文存储器920以及片上外部总线和其他片外接口925,用于通过片外接口935与片外存储器930和其他系统设备通信。
自动机控制器910还启用了FSA构造块905(通过适当驱动如图4所示的到FSA构造块的使能415),用于在输入数据流上对FSA构造块905的全部或全部的子集同时估值,从而允许芯片对照数千个RE同时分析输入数据流。
对于不要求实现在片上的所有FSA构造块905都被编程的应用程序(例如如果应用程序只要求对照少量RE对输入数据流估值),对于一个实施例,大量片上FSA构造块905可被划分成多个分区,并且自动机控制器910向每个分区提供单独的输入数据、上下文存储器和规则存储器互连。这允许了通过不同分区同时分析多个不同输入数据流,以获得更高性能。例如,如果芯片实现1000个FSA构造块905,并且应用程序要求使用少于500个FSA构造块,则FSA构造块905可被划分成各包含500个FSA构造块的两个分区。自动机控制器910可向每个分区提供两个单独的输入数据、上下文存储器和规则存储器互连。每个分区中的FSA构造块是用同一RE集合编程的。这种芯片可对照FSA构造块中编程的RE同时分析两个单独的输入数据流,从而提供两倍的吞吐量。
上下文存储器
如上所述,如果输入数据被分段,则FSA构造块的状态(上下文)应该被保存以便在输入数据继续开始时继续开始适当的估值。FSA构造块的上下文包括节点元素值(图4中的节点元素416),计数器值(图4中的计数器值434),并且可能包括位置寄存器(图4中的开始位置寄存器429和结束位置寄存器430)。在继续开始输入数据时,来自上下文存储器的保存的上下文被加载到FSA构造块,以便估值可继续。根据一个实施例,在输入数据中断时,能够读写FSA构造块的自动机控制器910从FSA构造块的适当寄存器读取上下文,并且将上下文存储在片上上下文存储器920中。在输入数据继续开始时,自动机控制器910将来自上下文存储器920的上下文加载到FSA构造块。上下文数据的量相对于FSA构造块的编程的寄存器来说较小(例如对于具有16比特计数器的16状态FSA构造块,所需的最大上下文大小是用于节点元素值的2字节,用于计数器值的2字节,以及用于位置寄存器的4字节,或者总共8字节)。因此,通过实现片上上下文存储器920,可以高效处理多个同时发生的输入数据分段的RE估值。根据一个实施例,自动机控制器910用片外存储器930来存储大量活动上下文,并用片上上下文存储器920来高速缓存最频繁使用的上下文,以获得更高性能。因此,通过实现片外上下文存储器930以及片上上下文存储器920,可以高效处理大量同时发生的输入数据分段的RE估值。
对于不同时使用所有FSA构造块905的应用程序(例如在输入数据分析的不同阶段,应用程序可能只使用所有FSA构造块905的较小的子集),自动机控制器910只为活动构造块保存上下文,因为中断的数据流必须被保存并在数据流继续开始时被恢复。
规则存储器
最初,FSA构造块905是用定义有关RE的规则来编程的。在没有更多规则的情况下,FSA构造块905只能对那些特定RE估值。但是应用程序常包含比FSA构造块905实际能实现的更多的RE。本发明的实施例提供完全可编程和可重编程的FSA构造块。对于一个实施例,附加规则被存储在规则存储器915中。在需要规则的新数据流的估值开始时,这些规则可由自动机控制器910从规则存储器915动态加载到FSA构造块905。自动机控制器910将规则从规则存储器915移动到适当的FSA构造块中,反之亦然。即,根据外部提供的指令,或者在内部检测到需要新的规则集合时,自动机控制器910用存储在规则存储器915中的规则对特定FSA构造块重编程。在片上存储附加规则允许了FSA构造块905的快速重编程。可实际存储在片上的规则量至少是片上FSA构造块中实现的规则量的几倍。
对于一个实施例,自动机控制器可提供规则存储器915与FSA构造块905之间以及上下文存储器920与群组中的FSA构造块905之间的多个互连,允许上下文和规则信息被并行写入FSA构造块,或从FSA构造块并行读出,以获得高性能。这种互连还允许了通过同时对多个数据输入流估值来增加吞吐量。例如,如果应用程序只要求可用FSA构造块的一部分,则有关规则可通过多个数据输入流来重复加载到可用FSA构造块和被估值的RE中。
一般事项
本发明的实施例提供了完全可编程的FSA构造块,其中实现了多个寄存器,这些寄存器提供对任意大小的复杂RE估值的能力。对于一个实施例,状态数目超过FSA构造块的固定的状态数目的RE被实现在两个或更多个FSA构造块上,然后这些FSA构造块被缝合到一起以实现RE的估值。根据本发明的各种实施例,已经用例示性方式描述了FSA构造块。对于各种其他实施例,FSA构造块可包括这种实施例中描述的某些或全部特征,并且可包含附加特征,以获得额外的功能。例如,参考图4所描述的FSA 400包含单个时钟信号,但是,其他实施例可包括估值时钟,用于控制锁存到每个时钟周期的值(例如节点元素值、计数器值等),以及单独的规则更新时钟,用于控制对配置寄存器的更新。这一点通过分离不那么频繁的规则更新而节省了功率。
符号估值单元403是具有可实现达四个范围的范围寄存器的典型实施例。在其他实施例中,可实现适应任何适当的范围数目的寄存器和逻辑。此外,不仅可实现估值优先权标准,还可实现估值期间的关于符号比特和范围的其他逻辑操作。
FSA构造块400还包括两个接受状态寄存器和两个命中寄存器,以允许将两个RE封装到单个FSA构造块中,如上所述。在其他实施例中,可实现附加接受状态寄存器和命中寄存器,以允许将两个以上RE封装到单个FSA构造块中。
FSA构造块400提供寄存器以允许检测两个缝合状态,并且允许缝合到两个被叫FSA构造块(分别即是主叫/呼出状态寄存器和主叫目标FSA寄存器)。在其他实施例中,可植入附加寄存器,以允许检测两个以上接受状态,并且允许缝合到两个以上被叫FSA构造块。
类似地,参考图9描述的RE处理器包括单独的片上上下文存储器和规则存储器。对于一个实施例,规则存储器和片上上下文存储器可被合并到单个片上存储器中。但是,因为片上可实现的存储量是有限的,所以其他实施例可将某些或全部上下文以及某些或全部规则存储到片外存储器和系统存储器。对于一个实施例,片上存储器、片外存储器和系统存储器的组合被用于存储上下文和规则。
本发明的实施例包括各种操作。许多方法是按其最基本形式来描述的,但是在不脱离本发明的基本范围的情况下,操作可被添加到任何方法中,或从任何方法中删除。
虽然本发明是就几个实施例来描述的,但是本领域的技术人员将会认识到,本发明不限于所描述的实施例,而是可用所附权利要求书的精神和范围内的修改和变更来实践。从而描述将被视为例示性的而不是限制性的。
虽然本发明是就几个实施例来描述的,但是本领域的技术人员将会认识到,本发明不限于所描述的实施例,而是可用所附权利要求书的精神和范围内的修改和变更来实践。从而描述将被视为例示性的而不是限制性的。
Claims (12)
1.一种用于实现有限状态自动机构造块的硬件结构,包括:
多个节点元素,其存储有限状态自动机估值的当前状态;
多个可编程互连,其完全连接所述多个节点元素;
符号估值单元,其具有用于每个所述节点元素的相应的符号,所述符号估值单元对输入估值,以提供符号匹配确定;
状态转换估值逻辑,其在接收到符号匹配确定和启用的互连时,将所述节点元素从一个状态集合转换到另一个状态集合;
节点元素初始化机制,用于将所述节点元素初始化为指定的值;
估值终止机制,用于确定所述节点元素是否达到指定的估值终止状态;以及
缝合机制,其在检测到所述节点元素的特定状态时,激活一个或多个
目标有限状态自动机构造块的编程的状态转换集合。
2.如权利要求1所述的硬件结构,其中所述缝合机制包括一个或多个寄存器,用于指定所述特定状态。
3.如权利要求2所述的硬件结构,其中所述缝合机制包括一个或多个寄存器,用于标识所述一个或多个目标有限状态自动机构造块。
4.如权利要求1所述的硬件结构,其中激活编程的状态转换集合包括:
将所述编程的状态转换集合与目标的有限状态自动机估值的当前状态结合。
5.如权利要求1所述的硬件结构,其中所述有限状态自动机构造块经由互连集合连接到一个或多个目标有限状态自动机构造块。
6.一种用于实现有限状态自动机构造块的硬件结构,包括:
多个节点元素,其存储有限状态自动机估值的当前状态;
多个可编程互连,其完全连接所述多个节点元素;
符号估值单元,其具有用于每个所述节点元素的相应的符号,所述符号估值单元对输入估值,以提供符号匹配确定;
状态转换估值逻辑,其在接收到符号匹配确定和启用的互连时,将所述节点元素从一个状态集合转换到另一个状态集合;
节点元素初始化机制,用于将所述节点元素初始化为指定的值;以及
两个或更多个估值终止机制,其中每一个估值终止机制确定相应的节点元素集合是否达到相应的指定的估值终止状态。
7.如权利要求6所述的硬件结构,其中所述两个或更多个估值终止机制中的每一个包括寄存器,该寄存器包含所述相应的指定的估值终止状态。
8.如权利要求6所述的硬件结构,其中所述两个或更多个估值终止机制中的每一个包括寄存器,用于指示已达到所述相应的指定的估值终止状态已被达到。
9.一种用于实现有限状态自动机构造块的硬件结构,包括:
多个节点元素,其存储有限状态自动机估值的当前状态;
多个可编程互连,其完全连接所述多个节点元素;
符号估值单元,其具有用于每个所述节点元素的相应的符号,所述符号估值单元对输入估值,以提供符号匹配确定;
状态转换估值逻辑,其在接收到符号匹配确定、启用的互连以及计数器时,将所述节点元素从一个状态集合转换到另一个状态集合,其中所述计数器对达到指定的计数器值的指定的状态集合的出现计数;
节点元素初始化机制,用于将所述节点元素初始化为指定的值;以及
估值终止机制,用于确定所述节点元素是否达到指定的估值终止状态。
10.如权利要求9所述的硬件结构,其中所述指定的状态集合的出现是正则表达式定义的一部分。
11.如权利要求10所述的硬件结构,其中所述指定的状态集合被包含在状态指定寄存器中。
12.如权利要求10所述的硬件结构,其中所述指定的计数器值被包含在计数器值寄存器中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US43884703P | 2003-01-09 | 2003-01-09 | |
US60/438,847 | 2003-01-09 | ||
US10/755,048 | 2004-01-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1759354A CN1759354A (zh) | 2006-04-12 |
CN100511049C true CN100511049C (zh) | 2009-07-08 |
Family
ID=36704027
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004800064050A Expired - Fee Related CN100511049C (zh) | 2003-01-09 | 2004-01-09 | 用于对任意大小的正则表达式估值的方法和装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7085918B2 (zh) |
EP (1) | EP1581841B1 (zh) |
CN (1) | CN100511049C (zh) |
AT (1) | ATE514982T1 (zh) |
AU (1) | AU2004204933B2 (zh) |
CA (1) | CA2512862C (zh) |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1527390A2 (en) * | 2002-07-25 | 2005-05-04 | Koninklijke Philips Electronics N.V. | Source-to-source partitioning compilation |
US7451143B2 (en) * | 2002-08-28 | 2008-11-11 | Cisco Technology, Inc. | Programmable rule processing apparatus for conducting high speed contextual searches and characterizations of patterns in data |
US7119577B2 (en) * | 2002-08-28 | 2006-10-10 | Cisco Systems, Inc. | Method and apparatus for efficient implementation and evaluation of state machines and programmable finite state automata |
US7464254B2 (en) * | 2003-01-09 | 2008-12-09 | Cisco Technology, Inc. | Programmable processor apparatus integrating dedicated search registers and dedicated state machine registers with associated execution hardware to support rapid application of rulesets to data |
US7617091B2 (en) * | 2003-11-14 | 2009-11-10 | Xerox Corporation | Method and apparatus for processing natural language using tape-intersection |
US7379858B2 (en) * | 2004-02-17 | 2008-05-27 | Intel Corporation | Computation of all-pairs reaching probabilities in software systems |
US20060085389A1 (en) * | 2004-08-26 | 2006-04-20 | Sensory Networks, Inc. | Method for transformation of regular expressions |
WO2006031496A2 (en) * | 2004-09-10 | 2006-03-23 | The Regents Of The University Of California | Method and apparatus for deep packet inspection |
US8560475B2 (en) | 2004-09-10 | 2013-10-15 | Cavium, Inc. | Content search mechanism that uses a deterministic finite automata (DFA) graph, a DFA state machine, and a walker process |
US8392590B2 (en) * | 2004-09-10 | 2013-03-05 | Cavium, Inc. | Deterministic finite automata (DFA) processing |
US8301788B2 (en) * | 2004-09-10 | 2012-10-30 | Cavium, Inc. | Deterministic finite automata (DFA) instruction |
US7818806B1 (en) * | 2005-11-08 | 2010-10-19 | Nvidia Corporation | Apparatus, system, and method for offloading pattern matching scanning |
US7934255B1 (en) * | 2005-11-08 | 2011-04-26 | Nvidia Corporation | Apparatus, system, and method for offloading packet classification |
EP2060088B1 (en) * | 2006-09-05 | 2017-06-28 | Telefonaktiebolaget LM Ericsson (publ) | Adaptive choice for context source request |
US8296168B2 (en) * | 2006-09-13 | 2012-10-23 | University Of Maryland | System and method for analysis of an opinion expressed in documents with regard to a particular topic |
US9141557B2 (en) | 2006-12-08 | 2015-09-22 | Ashish A. Pandya | Dynamic random access memory (DRAM) that comprises a programmable intelligent search memory (PRISM) and a cryptography processing engine |
US7996348B2 (en) | 2006-12-08 | 2011-08-09 | Pandya Ashish A | 100GBPS security and search architecture using programmable intelligent search memory (PRISM) that comprises one or more bit interval counters |
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 |
US20110029549A1 (en) * | 2006-12-08 | 2011-02-03 | Pandya Ashish A | Signature search architecture for programmable intelligent search memory |
WO2008073824A1 (en) * | 2006-12-08 | 2008-06-19 | Pandya Ashish A | Dynamic programmable intelligent search memory |
US7890692B2 (en) * | 2007-08-17 | 2011-02-15 | Pandya Ashish A | FSA context switch architecture for programmable intelligent search memory |
US8207814B2 (en) * | 2007-03-09 | 2012-06-26 | Utc Fire & Security Americas Corporation, Inc. | Kit and system for providing security access to a door using power over ethernet with data persistence and fire alarm control panel integration |
US9021582B2 (en) * | 2007-04-24 | 2015-04-28 | Juniper Networks, Inc. | Parallelized pattern matching using non-deterministic finite automata |
US8448249B1 (en) * | 2007-07-31 | 2013-05-21 | Hewlett-Packard Development Company, L.P. | Methods and systems for using lambda transitions for processing regular expressions in intrusion-prevention systems |
US8819217B2 (en) * | 2007-11-01 | 2014-08-26 | Cavium, Inc. | Intelligent graph walking |
US7949683B2 (en) * | 2007-11-27 | 2011-05-24 | Cavium Networks, Inc. | Method and apparatus for traversing a compressed deterministic finite automata (DFA) graph |
US8180803B2 (en) * | 2007-11-27 | 2012-05-15 | Cavium, Inc. | Deterministic finite automata (DFA) graph compression |
US20090307175A1 (en) * | 2008-06-10 | 2009-12-10 | International Business Machines Corporation | Parallel pattern matching on multiple input streams in a data processing system |
US8473523B2 (en) | 2008-10-31 | 2013-06-25 | Cavium, Inc. | Deterministic finite automata graph traversal with nodal bit mapping |
US20100192225A1 (en) * | 2009-01-28 | 2010-07-29 | Juniper Networks, Inc. | Efficient application identification with network devices |
US9083740B1 (en) * | 2009-09-28 | 2015-07-14 | Juniper Networks, Inc. | Network traffic pattern matching using adaptive deterministic finite automata |
CN101901268B (zh) * | 2010-08-02 | 2011-12-21 | 华为技术有限公司 | 一种规则匹配方法及装置 |
FR2978573B1 (fr) * | 2011-07-27 | 2013-08-16 | Poste | Procede d'appariement de donnees et utilisation a la verification d'identite d'un destinataire d'un courrier |
US20130262492A1 (en) * | 2012-03-28 | 2013-10-03 | International Business Machines Corporation | Determination and Handling of Subexpression Overlaps in Regular Expression Decompositions |
US8990232B2 (en) * | 2012-05-15 | 2015-03-24 | Telefonaktiebolaget L M Ericsson (Publ) | Apparatus and method for parallel regular expression matching |
RU2608464C2 (ru) * | 2012-09-28 | 2017-01-18 | Телефонактиеболагет Лм Эрикссон (Пабл) | Устройство, способ и сетевой сервер для обнаружения структур данных в потоке данных |
US9268881B2 (en) | 2012-10-19 | 2016-02-23 | Intel Corporation | Child state pre-fetch in NFAs |
US9117170B2 (en) | 2012-11-19 | 2015-08-25 | Intel Corporation | Complex NFA state matching method that matches input symbols against character classes (CCLs), and compares sequence CCLs in parallel |
US9665664B2 (en) | 2012-11-26 | 2017-05-30 | Intel Corporation | DFA-NFA hybrid |
US9251440B2 (en) * | 2012-12-18 | 2016-02-02 | Intel Corporation | Multiple step non-deterministic finite automaton matching |
US9304768B2 (en) | 2012-12-18 | 2016-04-05 | Intel Corporation | Cache prefetch for deterministic finite automaton instructions |
US9268570B2 (en) | 2013-01-23 | 2016-02-23 | Intel Corporation | DFA compression and execution |
US10776427B2 (en) | 2014-09-26 | 2020-09-15 | British Telecommunications Public Limited Company | Efficient conditional state mapping in a pattern matching automaton |
EP3198474A1 (en) * | 2014-09-26 | 2017-08-02 | British Telecommunications Public Limited Company | Improved pattern matching |
CN108563629B (zh) * | 2018-03-13 | 2022-04-19 | 北京仁和诚信科技有限公司 | 一种日志解析规则自动生成方法和装置 |
US11210337B2 (en) | 2018-10-16 | 2021-12-28 | International Business Machines Corporation | System and method for searching audio data |
CN112035272A (zh) * | 2019-06-03 | 2020-12-04 | 华为技术有限公司 | 进程间通信的方法、装置以及计算机设备 |
US11782983B1 (en) * | 2020-11-27 | 2023-10-10 | Amazon Technologies, Inc. | Expanded character encoding to enhance regular expression filter capabilities |
CN114528997B (zh) * | 2022-02-18 | 2024-08-30 | 山东浪潮科学研究院有限公司 | 一种量子门弧度可进行表达式编辑的实现方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5163016A (en) * | 1990-03-06 | 1992-11-10 | At&T Bell Laboratories | Analytical development and verification of control-intensive systems |
CN1088011A (zh) * | 1993-12-13 | 1994-06-15 | 张节容 | 多文种电子文稿的模板校对方法和装置 |
US5905902A (en) * | 1995-09-28 | 1999-05-18 | Intel Corporation | Programmable state machine employing a cache-like arrangement |
US6253112B1 (en) * | 1998-09-17 | 2001-06-26 | Lucent Technologies Inc. | Method of and apparatus for constructing a complex control system and the complex control system created thereby |
US6266634B1 (en) * | 1997-11-21 | 2001-07-24 | At&T Corporation | Method and apparatus for generating deterministic approximate weighted finite-state automata |
US6327508B1 (en) * | 1998-12-10 | 2001-12-04 | Advanced Micro Devices, Inc. | Programmable state machine |
CN1368685A (zh) * | 2001-02-10 | 2002-09-11 | 深圳市中兴集成电路设计有限责任公司 | 带指令缓冲的总线接口装置及其访问外部存储器的方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4965472A (en) | 1988-08-11 | 1990-10-23 | Cypress Semiconductor Corp. | Programmable high speed state machine with sequencing capabilities |
DK0638187T3 (da) | 1993-02-23 | 2001-09-24 | Xerox Corp | Kategorisering af strenge ved tegngenkendelse |
US5623860A (en) * | 1994-12-15 | 1997-04-29 | Emerson Electric Co. | Adjustable/bypassable bevel stop for compound miter saw |
US5949251A (en) | 1997-08-01 | 1999-09-07 | Vlsi Technology, Inc. | Register-based programmable post-silicon system to patch and dynamically modify the behavior of synchronous state machines |
US6380924B1 (en) * | 1998-10-22 | 2002-04-30 | Young Yee | Mouse/keyboard capture recorder (MCR) apparatus and methodology |
US6212625B1 (en) | 1999-05-25 | 2001-04-03 | Advanced Micro Devices, Inc. | General purpose dynamically programmable state engine for executing finite state machines |
US7181386B2 (en) * | 2001-11-15 | 2007-02-20 | At&T Corp. | Systems and methods for generating weighted finite-state automata representing grammars |
US7119577B2 (en) | 2002-08-28 | 2006-10-10 | Cisco Systems, Inc. | Method and apparatus for efficient implementation and evaluation of state machines and programmable finite state automata |
-
2004
- 2004-01-08 US US10/755,048 patent/US7085918B2/en not_active Expired - Fee Related
- 2004-01-09 CA CA002512862A patent/CA2512862C/en not_active Expired - Fee Related
- 2004-01-09 AU AU2004204933A patent/AU2004204933B2/en not_active Ceased
- 2004-01-09 AT AT04701191T patent/ATE514982T1/de not_active IP Right Cessation
- 2004-01-09 EP EP04701191A patent/EP1581841B1/en not_active Expired - Lifetime
- 2004-01-09 CN CNB2004800064050A patent/CN100511049C/zh not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5163016A (en) * | 1990-03-06 | 1992-11-10 | At&T Bell Laboratories | Analytical development and verification of control-intensive systems |
CN1088011A (zh) * | 1993-12-13 | 1994-06-15 | 张节容 | 多文种电子文稿的模板校对方法和装置 |
US5905902A (en) * | 1995-09-28 | 1999-05-18 | Intel Corporation | Programmable state machine employing a cache-like arrangement |
US6266634B1 (en) * | 1997-11-21 | 2001-07-24 | At&T Corporation | Method and apparatus for generating deterministic approximate weighted finite-state automata |
US6253112B1 (en) * | 1998-09-17 | 2001-06-26 | Lucent Technologies Inc. | Method of and apparatus for constructing a complex control system and the complex control system created thereby |
US6327508B1 (en) * | 1998-12-10 | 2001-12-04 | Advanced Micro Devices, Inc. | Programmable state machine |
CN1368685A (zh) * | 2001-02-10 | 2002-09-11 | 深圳市中兴集成电路设计有限责任公司 | 带指令缓冲的总线接口装置及其访问外部存储器的方法 |
Also Published As
Publication number | Publication date |
---|---|
AU2004204933B2 (en) | 2008-11-06 |
US20050012521A1 (en) | 2005-01-20 |
CA2512862C (en) | 2009-03-17 |
EP1581841B1 (en) | 2011-06-29 |
CN1759354A (zh) | 2006-04-12 |
ATE514982T1 (de) | 2011-07-15 |
US7085918B2 (en) | 2006-08-01 |
CA2512862A1 (en) | 2004-07-29 |
EP1581841A2 (en) | 2005-10-05 |
AU2004204933A1 (en) | 2004-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100511049C (zh) | 用于对任意大小的正则表达式估值的方法和装置 | |
CN1759393B (zh) | 规则处理器和使用该规则处理器的方法 | |
US9886017B2 (en) | Counter operation in a state machine lattice | |
EP1532496B1 (en) | Method and apparatus for efficient implementation and evaluation of state machines and programmable finite state automata | |
Holzmann | Automated protocol validation in argos: Assertion proving and scatter searching | |
EP2875433B1 (en) | Methods and systems for handling data received by a state machine engine | |
US20080126739A1 (en) | Parallel Execution of Operations for a Partitioned Binary Radix Tree on a Parallel Computer | |
US20130156043A1 (en) | Methods and systems for routing in a state machine | |
US20210073004A1 (en) | Methods and systems for representing processing resources | |
CN103430148A (zh) | 用于元件利用的状态分组 | |
CN105512179A (zh) | 硬件实现的数据排序装置、方法及数据处理芯片 | |
US20220114103A1 (en) | Graph memory engine | |
US4021779A (en) | Microprogram control units | |
US6298433B1 (en) | Data flow computer incorporating von neumann processors | |
Stojmenović | An optimal algorithm for generating equivalence relations on a linear array of processors | |
Poikonen et al. | Implementation of nondeterministic finite automata in an autoassociative CAM circuit | |
Faudemay et al. | An associative accelerator for large databases | |
EP1018067A2 (en) | Computer | |
SCHMITZ | Games with Counters | |
JP2003308216A (ja) | 共有ライブラリ生成方法およびシステム | |
RU2216033C2 (ru) | Компьютер | |
Stanculescu | Switch-Level Modeling in VHDL |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090708 Termination date: 20180109 |