比较多个字节的数据与已存储的字符串段的方法及系统的制作方法

文档序号:6421311阅读:118来源:国知局
专利名称:比较多个字节的数据与已存储的字符串段的方法及系统的制作方法
技术领域
本发明的实施例涉及字符串查找领域,更具体地说,涉及多个字节的数据与已存储的字符串段的比较。
背景技术
一些网络加速及负载均衡技术需要在分组数据中查找一个或者多个字符串常量。这通常要求在分组中每次一个字节地进行检查直至找到期望的序列。如果一次对一个以上的字符串常量进行查找,则分组中的每一个字节都被测试一次以上,因此使得查找过程更加缓慢。

发明内容
本发明提供了一种比较多个字节的数据与已存储的字符串段的方法,该方法包括在存储器中存储一个或多个目标字符串的多个字符串段;读取多个字节的数据;以及并行地将所述多个字节的数据与所述已存储的字符串段进行比较以确定是否存在与所述目标字符串之一相对应的可能匹配。
本发明还提供了一种设备,包括存储器,用于存储一个或多个目标字符串的多个字符串段,以及并行地比较多个字节的扫描数据和所述已存储的字符串段;以及处理器,与所述存储器相连接,用于处理所述扫描数据,以及如果在所述扫描数据中发现了所述字符串段中的至少一个,则确定是否存在与所述目标字符串之一相对应的实际匹配。
本发明还提供了一种系统,包括动态随机访问存储器,用于存储源数据;内容可寻址存储器,与所述动态随机访问存储器相连接,用于存储一个或多个目标字符串的多个字符串段,以将所述已存储的字符串段与多个字节的所述源数据进行比较;以及处理器,与所述动态随机访问存储器以及内容可寻址存储器相连接,用于处理所述源数据,并且,如果所述已存储的字符串段中的至少一个匹配所述源数据,则确定是否存在与所述目标字符串之一相对应的实际匹配。
根据本发明提供的方法、设备和系统,可以加快目标字符串的查找过程。


通过参考下列描述以及用于图示本发明实施例的附图,可最好地理解本发明。其中图1是包含本发明的系统的一个一般化的实施例的方框图。
图2是示出了根据本发明实施例的方法的流程图。
图3是图示了根据本发明一个实施例的存储器中的示例性条目的表。
图4是图示了在其中可实施本发明某些方面的合适的计算环境的方框图。
具体实施例方式
本发明说明了一种比较多个字节的数据与已存储的字符串段的方法及系统的多个实施例。在下述说明中,阐述了大量具体细节。但即使没有这些具体细节,本发明的实施例也可以实施。在其他情形下,为了不致妨碍对本说明书的理解,没有详细说明公知的电路、结构以及技术。
整个说明书中提到的“一个实施例”或者“实施例”是指与该实施例相关的具体特征、结构或者特点包含于本发明的至少一个实施例中。因此,在整个说明书的不同地方出现的词组“在一个实施例中”或者“在实施例中”不必是指同一个实施例。此外,所述具体特征、结构或者特点可以在一个或多个实施例中以任意合适的方式进行组合。
参考图1,示出了根据本发明的一个实施例的系统100的方框图。本领域内的普通技术人员会发现系统100可包括不止图1所示的组件。但是,不必示出全部的常规组件以公开用于实施本发明的说明性实施例。
系统100包括用于处理数据的处理器104和存储器102。存储器102存储一个或多个要查找的目标字符串的多个字符串段106。存储器102还包括比较器108,用于并行地比较已存储的字符串段和数据。在一个实施例中,存储器102是一个内容可寻址存储器(CAM)。处理器104扫描多个字节的数据。一次扫描的数据字节数是可变的并可被预先设定。被扫描的数据110通过存储器102并行地与存储的字符串段106相比较,以确定是否存在与目标字符串之一相对应的可能匹配。该比较的结果112被提供给处理器104。如果结果显示没有与目标字符串之一相对应的可能匹配,则处理器扫描更多的数据。如果发现了可能匹配,处理器就检查该数据以确定是否存在实际匹配。在一个实施例中,存储器向处理器提供关于数据可能匹配哪个目标字符串的指示。处理器然后将该可能匹配的目标字符串与数据相比较,以确定是否存在实际匹配。
图2图示了根据本发明一个实施例的方法。在200中,在存储器内存储一个或者多个目标字符串的多个字符串段。在一个实施例中,该存储器是CAM。在一个实施例中,该字符串段是整个目标字符串。在一个实施例中,一个或多个通配符字节与字符串段一起存储在存储器内。所述通配符字节能够匹配任何数据字节。在202中,从数据源中读出多个字节的数据。在一个实施例中,源数据的字节数超过所述一个或多个已存储的字符串段的字节数。在204中,所述多个字节的数据被并行地与已存储的字符串段进行比较。在206中,基于比较的结果确定是否存在与目标字符串之一相对应的可能匹配。如果没有可能匹配,则所述处理接着从202重复进行并从数据源中读出更多的数据。如果存在可能匹配,那么在208中,检查该数据以确定是否存在与目标字符串之一相对应的实际匹配。在一个实施例中,检查发现可能匹配的位置周围的区域以确定是否存在实际匹配。在一个实施例中,使用有限状态自动机(FSA)来检查数据以确定是否存在与目标字符串之一相对应的实际匹配。如果没有实际匹配,则所述处理接着从202重复进行并从数据源中读出更多的数据。如果存在实际匹配,则完成所述处理。
为了进行说明,下面将讨论一个例子。假设要查找的目标字符串是“telephone”和“lightbulb”。如图3所示,这两个目标字符串的段被存储在存储器102中。假设将在其中查找目标字符串的源数据包含下述数据“wheel=no,telephone=yes”。假设所述处理器一次扫描四个字节的源数据。最先扫描的四个字节的数据将是“whee”。这四个字节的数据被并行地与存储器102中存储的字符串段相比较。没有发现匹配,因而扫描接着的四个字节的数据。该四个字节的数据“1=no”被并行地与已存储的字符串段相比较。没有发现匹配,因而扫描接着的四个字节的数据。该四个字节的数据“,tel”被并行地与已存储的字符串段相比较。没有发现匹配,因而扫描接着的四个字节的数据。该四个字节的数据“epho”被并行地与已存储的字符串段相比较。存在与存储器102中的第四条目相对应的匹配。检查字符串段匹配周围的源数据以确定是否存在与目标字符串之一相对应的匹配。存在与目标字符串“telephone”相对应的匹配。因此,所述处理结束。
在一个实施例中,并行地进行的比较不必对存储器中的每个条目比较相同数目的位数。在存储器中的一些条目可能有或多或少的用于比较的数据。例如,假设处理器一次扫描四个字节的源数据,并且要查找的目标字符串是“CAT”。存储器中的已存储的字符串段或字符串可能如下所示在条目0中为“AT??”,在条目1中为“CAT?”,在条目2中为“?CAT”,在条目3中为“??CA”。“?”是一个表示“任何字节”的通配符,也就是说它不用匹配任何特定的源数据。如果被扫描的源数据匹配条目1或条目2,那么就发现了目标字符串“CAT”,而且不需要做进一步的确认。如果被扫描的源数据匹配条目0或条目3,那么只发现了目标字符串的一个字符串段。因此,需要检查源数据以确定是否存在与目标字符串对应的实际匹配。
图4图示了在其中可实施本发明的某些方面的合适的计算环境的方框图。在一个实施例中,上述方法可以在计算机系统400中实现,计算机系统400具有组件402-412,包括处理器402、存储器404、输入/输出设备406、数据存储器412以及网络接口410,所述组件通过总线408相互连接。所述组件执行它们在本领域内公知的常规功能,并提供用于实现系统100的装置。总体地,这些组件代表多种的硬件系统,包括但不局限于通用计算机系统和专用分组转发设备。应该理解到,计算机系统400的各组件可以被重新安排,并且本发明的某些实现可以不需要也不包括所有上述组件。此外,系统400中也可以包括其他组件,如附加处理器(例如数字信号处理器)、存储设备、内存、以及网络或通信接口。
如本领域内的技术人员所知,用于实现本发明的方法的实施例的内容例如计算机程序指令,可以由任何能够存储数据、可由系统100访问的介质提供,并作为存储器的一部分或者附加部分,所述介质包括但不局限于录音带、磁带、闪存卡、数字视频光盘、随机访问存储器(RAM)和只读存储器(ROM)等等。在这点上,系统100用来以一种本领域内公知的方式与所述机器可读介质进行通信。
本领域内的技术人员可进一步得知,用于实现本发明的方法的实施例的内容可以从任何能够存储该内容并将该内容发送到系统100的外部设备提供给系统100。例如,在本发明的一个实施例中,系统100可以连接到网络上,并且该内容可以存储在网络中的任何设备上。
尽管已用几个实施例来描述了本发明,但是,本领域内的技术人员将会认识到本发明并不限于所述实施例,而是可在所附权利要求的精神和范围内带有改进或变更地实施。因此本说明书应该被看成是说明性的而不是限制性的。
权利要求
1.一种方法,包括在存储器中存储一个或多个目标字符串的多个字符串段;读取多个字节的数据;以及并行地将所述多个字节的数据与所述已存储的字符串段进行比较以确定是否存在与所述目标字符串之一相对应的可能匹配。
2.如权利要求1所述的方法,还包括如果确定存在可能匹配,则将所述目标字符串中的一个或多个与所述数据进行比较,以确定是否存在实际匹配。
3.如权利要求2所述的方法,其中,将所述目标字符串中的一个或多个与所述数据进行比较以确定是否存在实际匹配包括检查发现所述可能匹配的位置附近的数据,以确定是否存在与所述目标字符串之一相对应的实际匹配。
4.如权利要求2所述的方法,其中,将所述目标字符串中的一个或多个与所述数据进行比较以确定是否存在实际匹配包括利用有限状态自动机来检查所述数据,以确定是否存在与所述目标字符串之一相对应的实际匹配。
5.如权利要求1所述的方法,其中,将所述多个字节的数据与所述已存储的字符串段并行地进行比较包括通过所述存储器将所述多个字节的数据与所述已存储的字符串段并行地进行比较,以确定是否存在与所述目标字符串之一相对应的可能匹配。
6.如权利要求1所述的方法,其中,在存储器中存储一个或多个目标字符串的多个字符串段包括在内容可寻址存储器中存储一个或多个目标字符串的多个字符串段。
7.如权利要求1所述的方法,还包括向与所述存储器相连接的处理器报告所述并行比较的结果。
8.如权利要求7所述的方法,还包括向所述处理器指出所述数据可能匹配所述目标字符串中的哪一个。
9.如权利要求1所述的方法,其中,所读取的多个字节的数据的字节数超过所述已存储的字符串段中的一个或多个的字节数。
10.如权利要求9所述的方法,其中,在存储器中存储一个或多个目标字符串的多个字符串段包括存储一个或多个可以匹配任何数据字节的通配符字节。
11.如权利要求10所述的方法,其中,在存储器中存储一个或多个目标字符串的多个字符串段包括在所述存储器中存储所述目标字符串以及所述目标字符串的一个或多个字符串段。
12.如权利要求11所述的方法,其中,将所述多个字节的数据与所述已存储的字符串段并行地进行比较包括将所述多个字节的数据与所述已存储的字符串段并行地进行比较,以确定是否存在与所述目标字符串之一相对应的可能匹配或者实际匹配。
13.一种设备,包括存储器,用于存储一个或多个目标字符串的多个字符串段,以及并行地比较多个字节的扫描数据和所述已存储的字符串段;和处理器,与所述存储器相连接,用于处理所述扫描数据,以及如果在所述扫描数据中发现了所述字符串段中的至少一个,则确定是否存在与所述目标字符串之一相对应的实际匹配。
14.如权利要求13所述的设备,其中,所述存储器是一个内容可寻址存储器。
15.如权利要求13所述的设备,其中,所述存储器包含向所述处理器报告所述并行比较的结果的逻辑。
16.如权利要求13所述的设备,其中,所述存储器包括下述逻辑,如果所述字符串段中的至少一个匹配所述多个字节的扫描数据,则指出所述扫描数据可能匹配所述目标字符串中的哪一个。
17.一种制品,包括机器可访问介质,该介质包括这样的内容,当被机器访问时,可以使得所述机器在存储器中存储一个或多个目标字符串的多个字符串段;扫描多个字节的数据;使得所述存储器进行所述多个字节的数据与所述已存储的字符串段之间的并行比较;以及接收来自所述存储器的结果,所述结果指示所述并行比较是否得到了至少一个匹配。
18.如权利要求17所述的制品,其中,所述机器可访问介质还包括如下内容,如果从存储器接收到的结果指示所述并行比较得到了至少一个匹配,则所述内容使得所述机器将所述目标字符串中的一个或多个与所述扫描数据相比较以确定是否存在匹配。
19.如权利要求18所述的制品,其中,所述机器可访问介质包括如下内容,当被机器访问时,所述内容使得该机器将所述目标字符串中的一个或多个与所述扫描数据进行比较以确定是否存在匹配,该机器可访问介质包括具有如下内容的机器可访问介质,当被该机器访问时,所述内容使得所述机器检查发现与所述已存储的字符串段之一相对应的匹配的位置附近的数据,以确定是否存在与所述目标字符串之一相对应的匹配。
20.如权利要求17所述的制品,其中,所述机器可访问介质还包括如下内容,如果所述并行比较得到了至少一个匹配,则该内容使得机器从所述存储器接收一个指示,指示哪个目标字符串可能匹配所述扫描数据。
21.如权利要求20所述的制品,其中,所述机器可访问介质还包括如下内容,使得所述机器将所述可能匹配的目标字符串与所述扫描数据进行比较以确定是否存在实际匹配。
22.如权利要求17所述的制品,其中,所述机器可访问介质包括如下内容,当被机器访问时,该内容使得该机器在存储器中存储一个或多个目标字符串的多个字符串段,该机器可访问介质包括具有如下内容的机器可访问介质,当被机器访问时,所述内容使得所述机器在内容可寻址存储器中存储一个或多个目标字符串的多个字符串段。
23.一种系统,包括动态随机访问存储器,用于存储源数据;内容可寻址存储器,与所述动态随机访问存储器相连接,用于存储一个或多个目标字符串的多个字符串段,以将所述已存储的字符串段与多个字节的所述源数据进行比较;和处理器,与所述动态随机访问存储器以及内容可寻址存储器相连接,用于处理所述源数据,并且,如果所述已存储的字符串段中的至少一个匹配所述源数据,则确定是否存在与所述目标字符串之一相对应的实际匹配。
24.如权利要求23所述的系统,其中,如果所述字符串段中的至少一个匹配所述源数据,则所述内容可寻址存储器还指出所述源数据可能匹配所述目标字符串中的哪一个。
25.如权利要求24所述的系统,其中,所述处理器将所述可能匹配的目标字符串与所述源数据进行比较,以确定是否存在实际匹配。
全文摘要
本发明描述了一种比较多个字节的数据与已存储的字符串段的方法及系统。所述方法包括在存储器中存储一个或多个目标字符串的多个字符串段,扫描多个字节的数据,以及将所述多个字节的扫描数据与所述已存储的字符串段并行地进行比较以确定是否存在与目标字符串之一相对应的可能匹配。在发现可能匹配后,可以将目标字符串中的一个或多个与所述扫描数据进行比较以确定是否存在实际匹配。
文档编号G06F17/30GK1573714SQ20031012305
公开日2005年2月2日 申请日期2003年12月23日 优先权日2003年6月4日
发明者肯尼思·A·赫夫林格尔 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1