用于模式匹配的方法、设备和电路的制作方法

文档序号:6504809阅读:105来源:国知局
用于模式匹配的方法、设备和电路的制作方法
【专利摘要】根据本发明实施例的用于模式匹配的方法,所述模式匹配在模式流中寻找目标模式,所述模式流和目标模式均由元素组成,该方法包括:获取目标模式中的目标元素的出现次数;初始化暂存区,其中所述暂存区指示模式流中的一个区间;判断暂存区中所述目标元素的出现次数是否达到所述目标模式中的目标元素的出现次数;响应于暂存区中所述目标元素的出现次数未达到所述目标模式中的目标元素的出现次数,更新所述暂存区后返回所述判断步骤;响应于暂存区中所述目标元素的出现次数达到所述目标模式中的目标元素的出现次数,输出所述暂存区中的元素供后续处理。本申请还公开了用于模式匹配的设备和电路。根据本发明实施例的技术方案可以加快模式匹配的速度。
【专利说明】用于模式匹配的方法、设备和电路

【技术领域】
[0001]本发明涉及信息处理技术,更具体地说,涉及用于模式匹配的方法、设备和电路结构。

【背景技术】
[0002]模式匹配指的是在一个模式流中寻找某种特定模式。模式匹配是计算机应用中的一种基本技术。例如,在文本(text)中寻找目标字符串(string)就是一种模式匹配。在这一场景下,所要找到的目标字符串对应于上述特定模式,而所述文本对应于上述模式流。又例如,已被广泛应用于入侵检测/入侵防御、阻止垃圾邮件、防病毒、防数据泄漏、内容过滤等领域的深度包检测(DPI)技术,其检测数据流中是否存在具有攻击特征的数据包或数据包序列。在这一场景下,数据流对应于上述模式流,而具有攻击特征的数据包或数据包序列对应于上述特定模式。
[0003]一方面,已经针对模式匹配进行了长时间的研究,并且得到了大量的软件算法。另一方面,本领域技术人员可以理解,硬件平台中各电路组件是并行工作的,所以可以达到更快的速度。相应地,期望用硬件来实现这些软件算法,从而提高模式匹配的速度。然而,将整个软件算法移植到硬件平台上通常面临着成本高和复杂性高的问题。因此,可以考虑将软件算法中适合硬件实现的一部分移植到硬件平台上。


【发明内容】

[0004]本发明提供了用于模式匹配的方法、设备和电路。
[0005]根据本发明实施例的用于模式匹配的方法,所述模式匹配在模式流中寻找目标模式,所述模式流和目标模式均由元素组成,该方法包括:获取目标模式中的目标元素的出现次数;初始化暂存区,其中所述暂存区指示模式流中的一个区间;判断暂存区中所述目标元素的出现次数是否达到所述目标模式中的目标元素的出现次数;响应于暂存区中所述目标元素的出现次数未达到所述目标模式中的目标元素的出现次数,更新所述暂存区后返回所述判断步骤;响应于暂存区中所述目标元素的出现次数达到所述目标模式中的目标元素的出现次数,输出所述暂存区中的元素供后续处理。
[0006]根据本发明实施例的一种用于模式匹配的设备,所述模式匹配在模式流中寻找目标模式,所述模式流和目标模式均由元素组成,该设备包括:获取装置,配置为获取目标模式中的目标元素的出现次数;暂存区初始化装置,配置为初始化暂存区,其中所述暂存区指示模式流中的一个区间;比较装置,配置为判断暂存区中所述目标元素的出现次数是否达到所述目标模式中的目标元素的出现次数;更新装置,配置为响应于暂存区中所述目标元素的出现次数未达到所述目标模式中的目标元素的出现次数,更新所述暂存区后返回进行所述判断;输出装置,配置为响应于暂存区中所述目标元素的出现次数达到所述目标模式中的目标元素的出现次数,输出所述暂存区中的元素供后续处理。
[0007]根据本发明实施例的一种用于模式匹配的电路,包括:暂存模块,用于存储当前被处理的元素;元素解析模块,用于确定新加入暂存区的元素;暂存区特征表更新模块,用于根据所述元素解析模块的确定结果,更新暂存区中目标元素的出现次数;暂存区特征表存储模块,用于记录暂存区中各目标元素的出现次数;参考特征表存储模块,用于存储参考特征表;比较模块,用于比较所述暂存区特征表存储模块和所述参考特征表存储模块,以判断暂存区中各元素的出现次数是否达到目标模式中各元素的出现次数。
[0008]根据本发明实施例所提供的技术方案,可以加快模式匹配的速度。

【专利附图】

【附图说明】
[0009]通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
[0010]图1是适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图;
[0011]图2是根据本发明实施例的用于模式匹配的方法的流程图;
[0012]图3是根据本发明实施例的用于模式匹配的设备的方框图;
[0013]图4是根据本发明实施例的用于模式匹配的方法的运行示意图;
[0014]图5是根据本发明实施例的用于模式匹配的电路的方框图;
[0015]图6A和图6B示出了两个时刻的单脉冲电流时域响应进行叠加的情况。

【具体实施方式】
[0016]下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
[0017]所属【技术领域】的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0018]可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0019]计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0020]计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括一但不限于一无线、电线、光缆、RF等等,或者上述的任意合适的组合。
[0021]可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言一诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0022]下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
[0023]也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruct1nmeans)的制造品(manufacture)。
[0024]也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
[0025]图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0026]如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
[0027]总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、时频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
[0028]计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
[0029]系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如⑶-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
[0030]具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
[0031]计算机系统/服务器12也可以与一个或多个外部设备14 (例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口 22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
[0032]根据本发明实施例的用于模式匹配的方法实际上是一种在精确地进行模式匹配之前进行预处理的方法。该方法既可以用软件实现,又可以用硬件实现。在下面的描述中,以在文本中寻找目标字符串为例。本领域技术人员很容易将下面以文本和目标字符串为例描述的根据本发明实施例的方法,扩展到一般的在模式流中寻找目标模式的模式匹配的场合。模式流是由连续的元素组成的,其中元素是最基本的单位。模式流中的元素形成各种模式。可能是一个元素形成一个模式,也可以是连续的多个元素形成一个模式。模式匹配即在模式流中的元素所能形成的各种模式中,寻找目标模式。文本是由连续的字符组成的,其中字符是最基本的单位。文本中的字符形成各种字符串。可能是一个字符形成一个字符串,也可能是连续的多个字符形成一个字符串。在文本中寻找目标字符串,就是在文本中的字符所形成的各种字符串中,寻找目标字符串。因此,文本是模式流的一种表现形式,目标字符串是目标模式的一种表现形式,字符是元素的一种表现形式。
[0033]下面接合图2描述根据本发明实施例的用于模式匹配的方法。
[0034]步骤201,获取目标模式中至少一部分元素的出现次数。
[0035]为了简单起见,假设只针对文本和目标字符串中的大写英文字母进行处理。假设所述目标字符串是“HELLO”。“HELLO”这一目标字符串中,H出现I次,E出现I次,L出现2次,O出现I次。在下面的描述中,用β表示目标字符串的长度。所述获取可以包括对输入的目标字符串进行计算从而得到所述出现次数,也可以直接接收所述出现次数进行获取。
[0036]如前所述,根据本发明实施例的方法既可以用软件实现,又可以用硬件实现。相应地,针对软件实现和硬件实现,可以对该方法进行不同的优化。
[0037]根据本发明另一个实施例,获取出现次数最多的若干个字符的出现次数。所要获取的字符的个数可以由字符个数阈值来指定。例如,可以将所述字符个数阈值设置为3。如果一个字符串中A出现5次,B出现4次,C出现3次,D和E各出现2次,则只获取A、B、C的出现次数。所获取的这一部分字符可以称为目标字符,所获取的目标字符串中所述目标字符的出现次数可以称为目标次数。在软件实现时,仅获取目标字符串中一部分字符的出现次数能够提高后续步骤的速度。以下将结合图2所示的其他步骤进行说明。
[0038]根据本发明一个实施例,获取目标字符串中所有属于目标字符集的字符的出现次数。目标字符集指的是所有可能的目标字符串中所包含的字符的集合。例如,对于所有可能的由大写英文字母构成的目标字符串而言,所述目标字符集就包括全部26个英文字母。相应地,获取“HELLO”中全部26个大写英文字母的出现次数,即除了上述四个大写英文字母以外,其他大写英文字母的出现次数均获取为O。用硬件实现时,获取目标字符集所有字符的出现次数能够降低硬件的复杂程度,从而提高硬件处理的速度。这将在结合其他附图描述根据本发明实施例的用于模式匹配的电路时进行阐述。
[0039]步骤203,初始化暂存区(buffer)。
[0040]所述暂存区通过暂存区起点指示器和暂存区终点指示器来指示文本中的一个区间,这个区间中包括一定数目的字符。暂存区起点指示器靠近文本的开头,而暂存区终点指示器靠近文本的结尾。暂存区起点指示器指示所述暂存区中最靠近文本开头的一个字符,暂存区终点指示器指示未放入所述暂存区中的最靠近文本开头的一个字符。暂存区从暂存区起点指示器所指示的字符开始,一直到暂存区终点指示器所指示的字符的前一个字符结束。在下面的描述中,在提到文本中的方向时,如果字符甲的位置比字符乙的位置更靠近文本开头,则字符甲在字符乙之前,并且从字符甲到字符乙的方向为正向(forward);相应地,字符乙在字符甲之后,并且字符乙到字符甲的方向为反向(backward)。
[0041]根据本发明一个实施例,暂存区终点指示器的初始值所指示的字符与暂存区起点指示器所指示的字符是同一字符。这种情况下,暂存区中不包括任何字符,即暂存区的长度为O。
[0042]根据本发明另一个实施例,假设文本开始处的字符是第O个字符,那么暂存区起点指示器的初始值所指示的字符是文本的第O个字符,暂存区终点指示器的初始值所指示的字符是β-1。此时暂存区的长度是β-1个字符。如前所述,根据本发明实施例的方法实际上是一种在精确地进行模式匹配之前进行预处理的方法。如果暂存区的长度过小,则暂存区所包含的字符中不可能包括所述目标字符串,因此没必要针对这些情况进行所述预处理。
[0043]步骤205,更新所述暂存区。
[0044]更新暂存区的结果是将所述暂存区终点指示器朝文本结尾移动一个字符,从而将一个新的字符加入到所述暂存区中。此时暂存区的长度为β。
[0045]将所述暂存区终点指示器朝文本结尾移动一个字符,则移动之前所述暂存区终点指示器所指示的字符被加入到暂存区中,其效果相当于将暂存区向文本结尾扩展一个字符。
[0046]更新所述暂存区的步骤也可以作为步骤209的一部分实现。
[0047]步骤207,判断暂存区中所述目标元素的出现次数是否达到所述目标次数。
[0048]如果在步骤203中暂存区终点指示器的初始值所指示的字符是文本中的第O个字符,暂存区起点指示器的初始值所指示的字符是文本中的第β-1个字符,则暂存区中包括β-l个字符。经过步骤205中,暂存区中包括β个字符。如下面所详细描述的,步骤205和步骤207可能会执行多次,则暂存区会向文本结尾的方向逐字符地延伸,即暂存区中的字符数目越来越多。因此,即使在第一次执行步骤207时暂存区中所述目标字符的出现次数未达到所述目标次数,只要文本足够长,暂存区中所述目标字符的出现次数最终会达到所述目标次数。
[0049]可以针对每个目标字符建立一个计数器,计数器的初始值根据所述长度为β的暂存区中的字符确定。每次当一个新的字符加入到暂存区中时,比较所述新的字符是否为目标字符中的一个,如果是,则更新相应的计数器。
[0050]如果在步骤201中只获取了目标字符串中一部分字符的出现次数,那么在本步骤中就只需要针对这一部分字符建立计数器,只需要将新的字符与这一部分字符进行比较,这样就可以节约比较的次数,加快软件的运行速度。
[0051]步骤209,响应于暂存区中所述目标元素的出现次数未达到所述目标次数,返回步骤 205。
[0052]步骤211,响应于暂存区中所述目标元素的出现次数达到所述目标次数,将所述暂存区输出进行后续处理。
[0053]暂存区中所述目标字符的出现次数达到所述目标次数,说明暂存区所包含的字符中有可能包括所述目标字符串。根据本发明一个实施例,将整个暂存区输出进行后续处理,例如精确模式匹配操作。
[0054]根据本发明另一个实施例,将所述暂存区输出进行后续处理包括将暂存区中的最靠近文本结尾的β个字符输出进行精确模式匹配操作。这是因为,如果目标字符串出现在暂存区中较为靠近文本开头的位置,则在该位置暂存区中所述目标字符的出现次数就会达到所述目标次数。因此,如果暂存区中包含所述目标字符串,那么必然是暂存区的最靠近文本结尾的β个字符构成所述目标字符串。
[0055]通过以上步骤,可以确定文本中的一个区间,该区间的长度大于目标字符串的长度。在进行精确模式匹配操作时,只需要考虑该区间最后的β个字符。假设该区间的长度为Y,则对文本中的Y个字符只需要进行一次精确模式匹配操作。而在传统的模式匹配方法中,对文本中的每一个字符均需要进行一次精确模式匹配操作。本领域技术人员可以理解,精确模式匹配操作消耗的资源最大,则减少精确模式匹配操作的次数可以大大地加快模式匹配的速度。
[0056]如果精确模式匹配操作发现暂存区中并不包含所述目标字符串,那么可以重设所述暂存区后返回步骤203。假设此时暂存区终点指示器所指示的字符是文本中的第α个字符,那么根据本发明一个实施例,将暂存区起点指示器更新为指示文本中的第α-β+l个字符。这种情况下,暂存区的长度恢复到β-1。也就是说,旧的暂存区的最后β-ι个字符与新的暂存区的最前β-l个字符是一样的。这是因为,虽然旧的暂存区的最后β个字符并未与所述目标字符串匹配,但是旧的暂存区的最后β-l个字符可能与所述目标字符串的前β-1个字符匹配,这种情况也会造成在旧的暂存区中并不包含所述目标字符串。这样,在继续执行步骤205从而向新的暂存区中加入一个字符后,新的暂存区就有可能包含所述目标字符串。本领域技术人员可以理解,β-1是旧的暂存区与新的暂存区的重叠量的最小值。
[0057]精确模式匹配操作也可能发现暂存区中包含所述目标字符串,即暂存区的最后β个字符构成所述目标字符串。如果要继续在文本的剩余部分寻找所述目标字符串,则将当前暂存区终点指示器所指示的字符作为新的文本起点,即文本中的第O个字符,然后按照步骤203所述初始化新的暂存区起点指示器和暂存区终点指示器。
[0058]下面接合图3的示例描述如图2所示的方法。
[0059]在图3中,假设所述文本是“HE IS CALLED JOE.HELLO, JOE! ”,所述目标字符串是“HELLO”并且不区分大小写。进一步假设在步骤201中获取所有字符的出现次数,则所述目标字符包括H、E、L和0,并且目标次数是H出现I次,E出现I次,L出现2次,O出现I次。β的值为5。
[0060]按照步骤203初始化后,暂存区起点指示器指示文本中第O个字符即“H”,暂存区终点指示器指示文本中第4个字符即“S”。
[0061 ] 在执行步骤205后,暂存区终点指示器指示文本中第5个字符,此时所述暂存区中的内容如图3中的第I列的灰色部分所示。在步骤207中,计算得到暂存区中所述目标字符的出现次数是H出现I次,E出现I次,L出现O次,O出现O次。从而进入步骤209,即返回步骤205。
[0062]在多次执行步骤205、207和209后,暂存区终点指示器指示文本中第14个字符即“O”。此时,再次执行步骤205,暂存区终点指示器指示文本中第15个字符,此时所述暂存区中的内容如图3中的第2列的灰色部分所示。在步骤207中,计算得到暂存区中所述目标字符的出现次数是H出现I次,E出现I次,L出现2次,O出现2次,即达到所述目标次数,则进入步骤211。可以看出,此时暂存区中最后5个字符是“ED J0”,显然并非所要寻找的目标字符串“HELLO”。
[0063]此时,返回步骤203,将暂存区起点指示器更新为指示文本中第15-5+1=11个字符,从而得到新的暂存区。在执行步骤205后,暂存区终点指示器指示文本中第16个字符,此时所述暂存区中的内容如图3中的第3列的灰色部分所示。在步骤207中,计算得到暂存区中所述目标字符的出现次数是H出现O次,E出现I次,L出现O次,O出现I次。这样,流程进入步骤209,即返回步骤205。
[0064]在多次执行步骤205、207和209后,暂存区终点指示器指示文本中第20个字符即“L”。此时,再次执行步骤205,暂存区终点指示器指示文本中第21个字符,此时所述暂存区中的内容如图3中的第4列的灰色部分所示。在步骤207中,计算得到暂存区中所述目标字符的出现次数是H出现I次,E出现I次,L出现2次,O出现2次,即达到所述目标次数,则进入步骤211。可以看出,此时暂存区中最后5个字符是“.HELL”,仍然并非所要寻找的目标字符串“HELL0”。
[0065]此时,返回步骤203,将暂存区起点指示器更新为指示文本中第21-5+1=17个字符,从而得到新的暂存区。在执行步骤205后,暂存区终点指示器指示文本中第22个字符,此时所述暂存区中的内容如图3中的第5列的灰色部分所示。在步骤207中,计算得到暂存区中所述目标字符的出现次数是H出现I次,E出现I次,L出现2次,O出现I次,即达到所述目标次数,则进入步骤211。可以看出,此时暂存区中最后5个字符是“HELLO”,即所要寻找的目标字符串。
[0066]如果要在剩余文本中继续寻找目标字符串“HELL0”,则将当前暂存区终点指示器所指示的字符即第22个字符“,”作为新的文本起点指示器,重复上面的步骤。
[0067]图4示出了根据本发明实施例的用于模式匹配的装置的框图。
[0068]根据本发明实施例的一种用于模式匹配的设备,所述模式匹配在模式流中寻找目标模式,该设备包括:
[0069]获取装置,配置为获取目标模式中的目标元素的出现次数;
[0070]暂存区初始化装置,配置为初始化暂存区,其中所述暂存区指示模式流中的一个区间;
[0071]比较装置,配置为判断暂存区中所述目标元素的出现次数是否达到所述目标模式中的目标元素的出现次数;
[0072]更新装置,配置为响应于暂存区中所述目标元素的出现次数未达到所述目标模式中的目标元素的出现次数,更新所述暂存区后返回进行所述判断;
[0073]输出装置,配置为响应于暂存区中所述目标元素的出现次数达到所述目标模式中的目标元素的出现次数,输出所述暂存区中的元素供后续处理。
[0074]其中所述暂存区的初始长度为所述目标模式的长度。
[0075]其中所述输出装置包括:将最后进入所述暂存区的β个元素输出供后续处理的模块。
[0076]所述设备进一步包括:暂存区重设装置,响应于所述后续处理发现暂存区中不包含所述目标字符串,重设所述暂存区后返回进行所述判断。
[0077]其中重设所述暂存区使得新暂存区的前β-1个元素与旧暂存区的最后β-1个元素重合。
[0078]其中所述目标元素是可能的目标模式所包含的全部元素。
[0079]下面参照图5描述根据本发明实施例的用于模式匹配的电路。
[0080]在描述图5所示的电路时,假设文本和目标字符串均只包括26个大写英文字母。
[0081]图5中,暂存模块用于存储当前被处理的字符,其对应于上述的暂存区。从硬件上说,存储模块的主体部分是一系列存储单元。如以上步骤211所述,暂存区中的字符会一次性地输出做后续处理。将存储文本中全部字符的模块称为文本存储模块。根据本发明一个实施例,暂存模块可以被实现为文本存储模块的一部分,用暂存区起点指示器和暂存区终点指示器指示上述暂存模块所包含的存储区域。如何设置暂存区起点指示器和暂存区终点指示器已经结合图2和图3进行了说明。根据本发明另一个实施例,暂存模块独立于所述文本存储模块。字符从文本存储模块中被逐个地读到所述暂存模块中从而形成所述暂存区。
[0082]字符解析模块用于判定新加入暂存区的字符对应于哪个字符。字符解析模块的输入连接到暂存模块,输出连接到特征更新模块。根据本发明一个实施例,字符解析模块输出一个26比特的特征向量,其中每个比特对应于一个大写英文字母。可以设置为如果特征向量中的某比特为0,则表示新加入暂存区的字符对应于与该比特对应的大写英文字母。本领域技术人员可以理解,对于特定的字符,其特征向量中只能有一个比特为O。
[0083]本领域技术人员可以理解,可以用二进制码来表示字符。例如根据ASCII码,用8个比特即一个字节来表示字符。根据本发明的一个实施例,可以用比较器来实现所述字符解析模块。分别存储26个大写英文字母所对应的ASCII码。当新的字符进入暂存区时,将该新字符的ASCII码与所存储的大写英文字母所对应的ASCII码进行比较,从而确定新进入暂存区的字符是哪个大写英文字母。本领域技术人员可以理解,用两输入的异或门可以实现两个比特之间的比较,其中若两个输入的电平相异,则输出为I ;若两个输入的电平相同,则输出为O。相应地,一个包括8个两输入的异或门加一个八输入的或门的比较器可以用来实现两个字节之间的比较,其中所述或门的输入连接到异或门的输出。当所述或门输出为逻辑O时,则两个字节相同。这样,可以直接将所述或门的输出作为所述特征向量中与该大写英文字母所对应的比特的值。可以理解,为了并行地生成特征向量中与每个大写英文字母所对应的比特的值,需要26个上述比较器。
[0084]根据本发明另一个实施例,可以用译码器来实现所述字符解析模块。由于所述26个大写英文字母的ASCII码是固定的,从而字符解析模块的输入和输出之间的映射关系也是固定的。在这种情况下,可以用固定的组合电路来实现这种映射关系。本领域技术人员所熟知的3-8译码器,就是将3比特输入映射到8比特输出,其中3比特输入的每一个组合对应于8比特输出中一个特定的比特取与其他比特不同的值,例如该特定比特取I而其他比特取O。基于相同的原理,也可以实现8-26译码器,用于将8比特输入映射到26比特输出,所述8比特输入即字符的ASCII码,26比特输出即上述特征向量。由于26个大写英文字母的ASCII码实际上只有5比特不同,因此也可以实现5-26译码器。
[0085]采用译码器的电路比采用比较器的电路更加简单,从而减小了电路面积。此外,由于信号在电路中所经过的门的级数更少,因此采用译码器的电路比采用比较器的电路具有更高的处理速度。
[0086]暂存区特征表存储模块用于记录暂存区中各字符的出现次数。暂存区特征表更新模块根据字符解析模块的输出来更新暂存区特征表存储模块。如前所述,字符解析模块的输出为一特征向量,其指示新进入暂存区的字符是26个大写英文字母中的哪一个。暂存区特征表更新模块根据所述特征向量来更新暂存区特征表存储模块中所记录的相应字符的出现次数。
[0087]需要确定在暂存区特征表存储模块中,针对每一个字符,用多少个比特来记录该字符的出现次数。所述比特的数目可以称为暂存特征表存储模块的深度。例如,如果用4比特记录一个字符的出现次数,则最多可以记录到该字符出现15次,此时暂存区特征表存储模块具有104 (26*4)比特;如果用I比特记录一个字符的出现次数,则最多可以记录到该字符出现I次,此时暂存区特征表存储模块具有26比特。
[0088]根据本发明另一个实施例,通过对不同目标字符串中各字符的出现次数进行统计来确定所述深度。例如,假设对于常用目标字符串而言,任何一个字符在任何一个常用目标字符串中的出现次数不超过3次,或者超过3次的概率不超过某概率门限,则可以确定所述深度为2比特。
[0089]所述比较模块用于判断暂存区中各字符的出现次数是否达到目标字符串中各字符的出现次数。
[0090]根据本发明一个实施例,暂存区特征表存储模块在初始化暂存区时所记录的每个字符的出现次数为O。随着字符逐个加入到暂存区中,对暂存区特征表存储模块中记录的出现次数进行递增。在这种情况下,图5中的参考特征表存储模块中存储目标字符串中各字符的出现次数。所述参考特征表存储模块与所述暂存区特征表存储模块具有相同的长度。所述比较模块将暂存区特征表存储模块与参考特征表存储模块进行比较,并且在两者相同时输出信号指示暂存模块将暂存区中的字符输出进行后续处理。
[0091]根据本发明另一个实施例,暂存区特征表存储模块在初始化暂存区时所记录的每个字符的出现次数为目标字符串中各字符的出现次数。随着字符逐个加入到暂存区中,对暂存区特征表存储模块中记录的出现次数进行递减。在这种情况下,图5中的参考特征表存储模块中存储O值。所述比较模块将暂存区特征表存储模块与O进行比较,并且在所述暂存区特征表存储模块为全O时输出信号指示暂存模块将暂存区中的字符输出进行后续处理。由于过零比较器更加容易实现,因此根据本实施例的电路具有相对简单的结构。
[0092]在前面的说明中提到过,用硬件根据本发明实施例的技术方案时,获取目标字符集所有字符的出现次数能够降低硬件的复杂程度,从而提高硬件处理的速度。这是因为,在这种情况下,电路的位宽即所要并行处理的比特数是固定的,从而免去了改变位宽所需要的控制电路。此外,只有在位宽固定的情况下,才能采用译码器来实现所述字符解析模块。
[0093]图6A和图6B示出了根据本发明实施例的实验结果。在该实验中,用一篇文章作为文本,分别搜索如“目标字符串”一列所示的各目标字符串。“长度”一列表示相应目标字符串的长度即β值。“匹配次数”一列表示在文本中找到该目标字符串的次数。“特征匹配次数” 一列表示在搜索该目标字符串的过程中,输出暂存区的次数。“平均跳跃距离” 一列表示在搜索该目标字符串的过程中,暂存区的平均长度。如前所述,对于每一个暂存区,只需要进行一次精确模式匹配操作;相应地,暂存区的平均长度越长,说明进行精确模式匹配操作的次数越少。从实验结果可以看出,暂存区的平均长度远远大于目标字符串长度,说明根据本发明实施例的算法大大减少了进行精确模式匹配操作的次数。
[0094]附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表I个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0095]以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本【技术领域】的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本【技术领域】的其它普通技术人员能理解本文披露的各实施例。
【权利要求】
1.一种用于模式匹配的方法,所述模式匹配在模式流中寻找目标模式,所述模式流和目标模式均由元素组成,该方法包括: 获取目标模式中的目标元素的出现次数; 初始化暂存区,其中所述暂存区指示模式流中的一个区间; 判断暂存区中所述目标元素的出现次数是否达到所述目标模式中的目标元素的出现次数; 响应于暂存区中所述目标元素的出现次数未达到所述目标模式中的目标元素的出现次数,更新所述暂存区后返回所述判断步骤; 响应于暂存区中所述目标元素的出现次数达到所述目标模式中的目标元素的出现次数,输出所述暂存区中的元素供后续处理。
2.如权利要求1所述的方法,其中所述暂存区的初始长度为所述目标模式的长度。
3.如权利要求1或2所述的方法,其中输出所述暂存区中的元素供后续处理包括: 将最后进入所述暂存区的β个元素输出供后续处理,其中β为所述目标模式的长度。
4.如权利要求1所述的方法,在输出所述暂存区中的元素供后续处理后进一步包括: 响应于所述后续处理发现暂存区中不包含所述目标模式,重设所述暂存区后返回所述判断步骤。
5.如权利要求4所述的方法,其中重设所述暂存区使得新暂存区的前β-l个元素与旧暂存区的最后β-1个元素重合。
6.如权利要求1所述的方法,其中所述目标元素是可能的目标模式所包含的全部元素。
7.一种用于模式匹配的设备,所述模式匹配在模式流中寻找目标模式,所述模式流和目标模式均由元素组成,该设备包括: 获取装置,配置为获取目标模式中的目标元素的出现次数; 暂存区初始化装置,配置为初始化暂存区,其中所述暂存区指示模式流中的一个区间; 比较装置,配置为判断暂存区中所述目标元素的出现次数是否达到所述目标模式中的目标元素的出现次数; 更新装置,配置为响应于暂存区中所述目标元素的出现次数未达到所述目标模式中的目标元素的出现次数,更新所述暂存区后返回进行所述判断; 输出装置,配置为响应于暂存区中所述目标元素的出现次数达到所述目标模式中的目标元素的出现次数,输出所述暂存区中的元素供后续处理。
8.如权利要求7所述的设备,其中所述暂存区的初始长度为所述目标模式的长度。
9.如权利要求7或8所述的设备,其中所述输出装置包括: 配置为将最后进入所述暂存区的β个元素输出供后续处理的装置,其中β为所述目标模式的长度。
10.如权利要求7所述的设备,进一步包括: 暂存区重设装置,响应于所述后续处理发现暂存区中不包含所述目标模式,重设所述暂存区后返回进行所述判断。
11.如权利要求10所述的设备,其中重设所述暂存区使得新暂存区的前β-1个元素与旧暂存区的最后β-l个元素重合。
12.如权利要求7所述的设备,其中所述目标元素是可能的目标模式所包含的全部元素。
13.—种用于模式匹配的电路,包括: 暂存模块,用于存储当前被处理的元素; 元素解析模块,用于确定新加入暂存区的元素; 暂存区特征表更新模块,用于根据所述元素解析模块的确定结果,更新暂存区中目标元素的出现次数; 暂存区特征表存储模块,用于记录暂存区中各目标元素的出现次数; 参考特征表存储模块,用于存储参考特征表; 比较模块,用于比较所述暂存区特征表存储模块和所述参考特征表存储模块,以判断暂存区中各元素的出现次数是否达到目标模式中各元素的出现次数。
14.如权利要求13所述的电路,其中所述元素解析模块为译码器。
15.如权利要求13或14所述的电路,其中所述暂存区特征表存储模块在初始化暂存区时所记录的每个元素的出现次数为O ; 暂存区特征表更新模块随着元素逐个加入到暂存区中,对暂存区特征表存储模块中记录的出现次数进行递增; 所述参考特征表存储模块中存储目标模式中各元素的出现次数。
16.如权利要求13或14所述的电路,其中所述暂存区特征表存储模块在初始化暂存区时所记录的每个元素的出现次数为目标模式中各元素的出现次数; 暂存区特征表更新模块随着元素逐个加入到暂存区中,对暂存区特征表存储模块中记录的出现次数进行递减; 所述参考特征表存储模块中存储O值。
【文档编号】G06F17/30GK104252469SQ201310260868
【公开日】2014年12月31日 申请日期:2013年6月27日 优先权日:2013年6月27日
【发明者】刘丹, 潘永峰, 刘洋, 陆泳, 英彦 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1