CN1723454A - 用于执行高速上下文检索和数据模式特征描述的可编程规则处理设备 - Google Patents
用于执行高速上下文检索和数据模式特征描述的可编程规则处理设备 Download PDFInfo
- Publication number
- CN1723454A CN1723454A CN 03824493 CN03824493A CN1723454A CN 1723454 A CN1723454 A CN 1723454A CN 03824493 CN03824493 CN 03824493 CN 03824493 A CN03824493 A CN 03824493A CN 1723454 A CN1723454 A CN 1723454A
- Authority
- CN
- China
- Prior art keywords
- search
- array
- pattern
- rule processor
- byte
- 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.)
- Granted
Links
- 238000012545 processing Methods 0.000 title description 19
- 238000000034 method Methods 0.000 claims abstract description 24
- 230000004044 response Effects 0.000 claims abstract description 7
- 230000008878 coupling Effects 0.000 claims description 53
- 238000010168 coupling process Methods 0.000 claims description 53
- 238000005859 coupling reaction Methods 0.000 claims description 53
- 230000008569 process Effects 0.000 claims description 15
- 230000001174 ascending effect Effects 0.000 claims description 11
- 239000013598 vector Substances 0.000 claims description 10
- 238000003860 storage Methods 0.000 claims description 8
- 230000000295 complement effect Effects 0.000 claims description 6
- 238000006243 chemical reaction Methods 0.000 claims description 5
- 230000009467 reduction Effects 0.000 claims 6
- 230000000873 masking effect Effects 0.000 claims 2
- 230000013011 mating Effects 0.000 claims 2
- 230000006870 function Effects 0.000 description 27
- 238000004458 analytical method Methods 0.000 description 19
- 238000004422 calculation algorithm Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 6
- 238000011282 treatment Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 230000018109 developmental process Effects 0.000 description 4
- 238000006073 displacement reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000012512 characterization method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013480 data collection Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- ZPUCINDJVBIVPJ-LJISPDSOSA-N cocaine Chemical compound O([C@H]1C[C@@H]2CC[C@@H](N2C)[C@H]1C(=O)OC)C(=O)C1=CC=CC=C1 ZPUCINDJVBIVPJ-LJISPDSOSA-N 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000012252 genetic analysis Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000009545 invasion Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 108090000623 proteins and genes Proteins 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
在此公开了一种用于进行上下文搜索的规则处理器的方法和设备,所述处理器包括多个输入载荷搜索寄存器,连接到所述多个搜索寄存器的用于响应于执行规则而通过并行模式匹配对所述搜索寄存器中的内容执行一个或多个上下文搜索的搜索执行引擎,所述规则指定一个或多个搜索并向所述搜索寄存器中内容提交一个或多个模式。
Description
相关申请
本申请是2002年8月28日提交的美国临时专利申请序号No.60/406,834的非临时申请。
技术领域
本发明涉及信息处理领域,尤其是内容分析学和处理领域。
背景技术
计算和通信领域的显著趋势导致充斥着内容分析学和处理的环境的出现。这些环境在某些类型的功能上要求高性能以及可编程性,即对消息、文档或者信息包中的内容进行搜索、剖析、分析、解释以及转化。强调所述的大容量内容分析学和处理的显著领域包括内容识别(content-aware)网络,基于内容的安全系统,监视,分布式计算,无线通信,人机接口,信息存储和检索系统,语义网络上的内容搜索,生物信息学以及其他等等。
内容识别网络领域需要对信息包或消息中的内容进行搜索和检查以确定将会把这些信息包和消息发送或转发到哪里。所述检查必须在以“线速”传送中的消息上进行操作,所述“线速”是指网络连接的数据速率。假定当今网络中整个过程的线路速率范围从100Mbits/S到40Gbits/S,这对内容检查功能被执行时所需要的速率有巨大的压力。
基于内容的安全系统和监视与监控系统需要用来分析消息或信息包的内容并且应用一系列规则以确定是否存在安全缺口或者入侵的可能性。典型地,在当今的网络入侵检测系统中(NIDS),必须以线路速率对输入有效载荷应用大量模式、规则和语法以确保所有潜在的系统弱点被揭示出来。倘若网络和计算的基础结构在不断地发展,新的弱点就会不断出现。而且,入侵者采用了越来越复杂的攻击以避免被检测到。入侵检测系统需要能够检测到系统中所有已知的攻击,并且还要足够智能化以检测不正常的和可疑的预示新的攻击的行为。所有这些因素导致了对内容分析和处理的可编程性与极度高性能两方面的需求。
随着分布式和聚集式计算的出现,现今任务被分配给互相协作与通信的多台计算机或服务器以完成综合工作。这种分配导致计算机通信的迅速增长,对这些消息的处理要求高性能。随着作为通用数据交换的新标准的XML(扩展标记语言)的出现,应用程序使用XML作为“应用层数据传输”进行互相通信。消息和文档现在被嵌入在XML标记中。所有的消息处理首先要求对XML文档进行解析,并且提取和解释相关内容,接下来是任何所需的转化和过滤。由于这些功能需要以很高的信息速率进行,它们在计算性能上要求很苛刻。
随着无线(untethered)通信和无线网络的发展,从无线设备对信息的访问有一定增长。对于给定的小型化(light form factor)客户端设备,对投递到该设备的数据进行过滤并保持有效载荷较低是很重要的。未来的环境会将来自有线基础结构的XML内容过滤并转化为无线基础结构上的轻量内容(使用无线标记语言或者WML)。随着无线网络应用的不断增长,这种内容转化功能会变得很常见,从而需要对其进行处理的有效解决方案。
另一种重要的新兴需求是使用人机接口例如语音与计算机进行通信和交互的能力。语音处理和自然语言处理在内容搜索、词汇分析、内容解析以及语法处理中特别密集。一旦音频流被转换为文本,语音系统需要对进入的文本流应用大量词汇以及句法和语法规则以理解语音。
万维网的出现和发展给信息检索(IR)系统带来了巨大的计算负荷。信息继续被高速添加到网络。这些信息典型地针对完备的词汇表进行完全索引并且被添加到搜索引擎和IR系统的数据库。由于信息不断产生并添加,索引编制器(indexer)需要“一直在线”。为了提供高效实时的上下文检索,需要高性能的模式匹配系统用于索引功能。
另一个强调大容量内容分析学和处理的领域是生物信息学领域。基因分析学和蛋白体学(proteomics)需要对基因序列和结构应用复杂的搜索和分析算法。同样地,这样的计算需要高性能的搜索、分析以及解释能力。
因此,未来出现的计算机和通信环境会强调大容量内容分析和处理。这样的环境对于以下功能需要高效率和可编程的解决方案——对文档、消息或者信息包中的内容的搜索、词汇分析、解析、特征描述、解释、过滤以及转化。
这些大容量内容处理功能的核心是进行上下文和基于内容的搜索和导航以及大量相关查找的操作。
在以前的技术中,搜索和查找处理典型地以两种方式中的一者进行。在第一种方式中,这样的处理使用由内容可寻址存储器(CAM)、比较器硬件和专用逻辑组成的固定的专用集成电路(ASIC)解决方案进行。例如,搜索规则存储在内容可寻址存储器中,并且数据流过该结构,每次将其移位1个字节或者1个字长。可选择地,特定比较器被设置在固定位置以识别输入数据中的特定值。匹配的出现通过专用逻辑由目标应用的需要进行记录和使用。尽管固定ASIC方法可以增加性能,但是它缺乏简易的可编程性,因此其应用被严重限制。而且,对于每个目标解决方案的与设计和定制特定芯片相关的费用也受到限制。
在第二种方式中,使用了传统的通用微处理器以处理大量搜索和查找功能以及相关的内容处理。微处理器是完全可编程器件并且能够处理不断变化的问题的需求——通过对软件简单的重新编程,新的功能可以重新设置。然而,传统微处理器在其可以提供的大容量内容分析和处理的性能级别上受到限制。
对于内容分析的性能局限性是微处理器架构的设计和演化所固有的。微处理器作为计算单元而产生,对1、2、4、8字节字长进行算术运算。接着,随着计算领域的发展,更多的功能不断添加到微处理器以应用于不断出现的领域。最终,通用微处理器可以使用于非常广泛范围内的应用,但是对于特殊的任何一者并不是非常协调。基本地,在它应用到内容分析学的需求上时,微处理器架构具有两种关键的局限性——(1)它缺乏对大型数据集同时进行大规模并行而且精细的模式匹配以及比较运算的能力,以及(2)它缺乏基于输入数据进行快速的多状态转换和高效的多方向控制流改变的能力。
微处理器的指令组是标量(scalar)指令组,从而指令需要在单个有序序列中执行。典型的微处理器的指令组可以对存储在寄存器中的单个64位数值与存储在不同的寄存器中的64位数值进行比较。这种比较在两个运算数对齐时进行。如果为了模式搜索而进行比较,那么需要在每次对操作数中的一者或两者移位可变数量的字节后重复调用比较。通常地,这样的重复移位以控制流改变在循环中进行,所述控制流改变在每次循环中将控制从循环底部的代码传送到循环顶部的代码。微处理器中的控制流改变通过分支到新的代码序列而完成。由于当今的微处理器高度流水线化(pipelined)(在位于加利福尼亚圣塔克莱拉的Intel公司提供的奔腾三代和奔腾四代处理器等产品中达到20-30级),由于分支带来的性能损失是巨大的。整个微处理器流水线需要在采用的分支上被刷新(flushed)。因此需要对这样的处理器应用复杂的分支预测技术从而紧跟控制流改变之后保持流水线被来自所需路径的指令充分地供应。然而,多数分支预测技术仅仅提供经验和统计上的性能改进,从而控制流改变在极大程度上带来了所能提供的性能级别上的减缓以及非确定性。
大量搜索和模式匹配算法被发展以最好地利用微处理器。Boyer-Moore算法被广泛的认为是微处理器上采用的用于寻找给定数据集中的模式发生的最著名的技术之一。该算法每次仅处理一个模式并且如果在数据集中有多于一个的模式需要搜索时则必须反复调用。对于每个将要搜索的模式,它在数据集中顺次前进以基于从特征化模式过程中所获得的观测数据进行选择性的比较。该算法通过减少在给定数据集内进行的比较总次数从而提供了相对于其他模式匹配算法更优的性能。然而,由于该算法的有序性质,其性能受到微处理器架构的基本约束的限制,即标量指令组和分支时的损失。
由于前面所述的微处理器的架构的局限性,传统微处理器的效率和性能受到前面描述的新兴的计算和通信环境的激烈地挑战。可以提供几项数据点以支持该观点。例如,在网络入侵检测系统(NIDS)例如Snort中,已经需要对进入的信息包应用数百个字符串的签名检测。在采用Boyer-Moore模式匹配算法改进版本的商业化的基于微处理器系统中的3GHz奔腾IV处理器中以8字节签名模式执行该工作量会将信息包速率限制在50Mbps以下。同样地,在这样的平台上的XML文档的解析限制在10MB/s的范围内,并且语音处理限制于对于受限语法和词汇的1个实时流。这些数据点表明2003年或者2004年的传统微处理器可以在100Mbps左右的速率范围内进行大容量内容分析和处理。然而,到那个时候,1Gbps至10Gbps的数据速率在企业网络和环境中将并不少见。显然,在传统微处理器所能提供的性能和环境所需的性能之间存在着一到两个数量级的严重不匹配。尽管可以采用多个并行微处理器系统从而以目标速率执行某些需求功能,但是这样大大增加了系统的成本。显然需要对于这些目标功能的更有效的解决方案。
需要一种对于可编程处理设备的更适合内容分析和处理的新的解决方案,并且在一系列功能上很有成效,所述功能包括对于消息、信息包或者文档中的上下文检索、词汇分析、解析、解释以及内容转化。
发明内容
在此公开了一种用于进行上下文搜索的针对规则处理器的方法和设备。在一个实施例中,所述处理器包括多个输入有效载荷搜索寄存器和连接到所述搜索寄存器的搜索执行硬件从而响应于指定一个或多个模式搜索并表示一个或多个对于所述搜索寄存器中内容的模式的指令的执行而通过并行模式匹配对所述搜索寄存器中的内容进行一个或多个上下文搜索。
附图说明
本发明可以通过下面给出的详细描述和本发明各种实施例的附图而更全面的理解,然而,不应认为是将本发明限制在特定实施例,而仅是用于解释和理解。
图1是具有搜索设备的规则处理器的一个实施例的结构图;
图2A是搜索寄存器和搜索执行硬件的一个实施例的结构图;
图2B是搜索阵列的一个实施例的结构图;
图3A是分类器的一个实施例的结构图;
图3B是分类器中类别选择构件的一个实施例的结构图;
图4是搜索阵列的一个实施例的电路示意图;
图5显示了包含四个处理阶段的规则处理器的示例微结构;
图6显示了复杂模式匹配规则集的示例伪码和对应的示例规则处理器的微码;
图7显示了图6所示的微码的时钟顺序流水线执行。
具体实施方式
在此描述了一种对文档、消息或者其他内容中的任意长度模式进行高速上下文搜索的可编程规则处理设备。所述规则处理器提供了一种为内容搜索和分析定制的架构。在一个实施例中,所述规则处理器针对内容有效载荷考虑到规则的高速并行以及递归顺序,从而对密集的规则语法工作量进行高效处理。
在架构上,所述规则处理器采用了一组输入有效载荷搜索寄存器。搜索寄存器文件保存了将要呈递给多种搜索规则的输入数据(或者内容有效载荷)。数据可以从存储器加载到搜索寄存器中,或者从规则处理器中的其他来源移入到搜索寄存器以及从搜索寄存器移出到这些来源。在一个实施例中,可以对搜索寄存器中的内容进行多种的搜索。这些搜索是以向有效载荷数据提出的搜索指令或搜索规则的形式而指定的。搜索执行硬件连接到搜索寄存器。所述硬件执行模式匹配和计算搜索函数结果所需的处理功能。
图1是包括搜索寄存器101和搜索执行硬件102的规则处理器的一个实施例的结构图。搜索指令103发送给搜索寄存器101和搜索执行硬件102。所述处理器进一步包括作为规则/指令存储器104的指令存储装置和控制指令流的装置,所述装置在一个实施例中包括指令序列发生器105和指令指示器106。
在一个实施例中,搜索寄存器101包括寄存器文件,所述寄存器文件具有2K个条目,每个占一字节,其中搜索寄存器101中的值通过11位寄存器地址进行寻址。因此,待搜索的2KB内容数据可以被加载到搜索寄存器101中。
典型的搜索需要将指令或规则发送给搜索寄存器。所述规则指定了一个模式以及一个或多个附加搜索参数。在一个实施例中,搜索函数返回多个结果。这些结果包括关于是否建立模式和搜索寄存器中内容之间的匹配的提示,以及指明在有效载荷搜索寄存中何处产生了匹配的匹配位置。
附加搜索控制参数通过规则处理器提供给搜索执行硬件102。搜索指令可以提供掩码向量(mask vector)以及包含目标搜索模式的一组字节。所述掩码向量可以由对应于目标模式字节或字节组的比特位组成。在一个实施例中,在搜索操作期间将要忽略的目标模式中的特定字节是通过在掩码向量中将对应的比特位设置为预定逻辑值0或1而选择的。因此,在搜索中使用的目标模式可以减少。并且,规则处理指令可以指定组成搜索被限制的搜索寄存器101中的搜索窗或者字节范围的起始和终止位置。
搜索指令的附加参数可以包括在如果搜索失败时规则处理器使用的分支地址。该特性可以在比搜索执行硬件102的搜索数据路径宽度长很多的字节串进行的搜索没有得到任何匹配而失败或者在仅仅匹配搜索寄存器101中内容的前面少数字节之后而失败的情况下提高规则处理器的性能。规则处理器可以通过分支到紧跟当前字符串的最末搜索指令的指令而跳过对于当前字符串的剩下的搜索指令。
一个搜索指令的示例为窗口式前向寻首(windowed-find-first-forward)指令。在一个实施例中,在窗口式前向寻首搜索中,给定规则指定的8字节模式,8位掩码,指向搜索寄存器101中的2KB内容数据(例如文档数据)的起始字节的起始位置偏移地址,以及指向搜索寄存器101中的2KB内容数据(例如文档数据)的结束字节的结束位置偏移地址,所述搜索在指定与所述掩码模式相匹配的起始位置地址之后返回第一个字符串在搜索寄存器101中的起始地址(例如11位向量),假定该地址起始于所述终止位置偏移地址之前。在另一个示例中,可以进行窗口式反向寻首搜索(windowed-find-first-reverse)。在一个实施例中,在窗口式反向寻首搜索中,在所述规则中给定8字节模式,8位掩码,指向搜索寄存器101中的2KB内容的起始字节的起始位置偏移地址,以及指向搜索寄存器101中的2KB内容的结束字节的结束位置偏移地址,所述搜索在指定的与所述掩码模式相匹配的终止位置地址之前返回最末字符串的起始地址(例如11位向量),假定该地址起始于所述起始位置偏移地址之后。
规则处理器还提供包含将要应用到载荷数据的规则或者规则集的控制存储器或者规则存储器104。在一个实施例中,存储器104保存了描述需要在搜索寄存器101中应用并检测的模式、规则、表达式或者语法的规则集或者指令或代码序列。规则词汇表可以指定运算范围,包括但不限于具有精确匹配或部分匹配并传送单个或者多个匹配信息到某些寄存器的全局或局部(窗口的)搜索、在规则处理器的输出载荷中产生偏移和地址的原语(primitives),以及待应用到搜索结果的逻辑和算术操作符。这些规则可以由上述指定的多种参数的多个域组成。每个参数可以直接在所述规则中指定或者可选择的通过使用包含待使用的数值的寄存器或存储器位置的指针间接指定。在所述直接和间接指定均被允许的实施例中,每个所述域可以包含指示直接或者间接指定正在被使用的附加子域。
在下面的描述中,提出了大量细节以提供对本发明地完全理解。然而很显然,对于熟悉本领域技术人员,本发明可以不通过这些特定细节被实施。在其他实例中,公知的结构和设备以结构图形式给出而不详细描述,以避免模糊本发明。
下面的详细描述的某些部分根据计算机存储器内的数据位上的操作的算法和符号表示而给出。这些算法描述和表示被熟悉数据处理领域的技术人员所使用以向熟悉本领域的其他人员高效的传达他们工作的实质。此处的算法一般情况下被认为是导致所需结果的前后一致的步骤序列。这些步骤需要进行物理量的物理操作。通常而非必要地,这些量采取能够被存储、传送、组合、比较以及其他操作的电信号或磁信号的形式。主要由于通常使用的原因,以比特、数值、元素、符号、字符、项目、数字等等来提及这些信号被证实是方便的。
然而应当知道,所有这些和类似的术语均与适当的物理量相关联并且仅仅是应用到这些量的方便标记。除非特别在下面讨论中明显提及,可以认为在整个下面的描述中,使用例如“处理”或“计算”或“计算用的”或“确定”或“显示”等等之类术语的讨论均是指计算机系统或者类似电子计算设备的动作和处理,其将在计算机系统的寄存器和存储器中表示为物理(电子)量的数据操作并转化为类似地表示为计算机存储器或寄存器或其他类似信息存储、传送或显示设备中的物理量的其他数据。
本发明还涉及一种用于进行此处运算的设备。该设备可以针对所需目的而特别构建,或者它可以包含通过存储在计算机中的计算机程序选择性激活或者重新配置的通用计算机。所述计算机程序可以存储在计算机可读的存储介质中,例如但不限于任何类型的磁盘,包括软盘、光盘、CD-ROM、以及磁-光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光学卡或者适合存储电子指令的任何类型的介质,并且每个均连接到计算机系统总线。
此处提出的算法和显示并不固有的涉及任何特定计算机或者其他设备。可以根据此处的指示的程序使用各种通用系统,并且可以证明构建更专门化的设备以执行所需方法步骤是方便的。各种这类系统的所需结构将在下面进行描述。另外,本发明并不参考任何特定程序设计语言进行描述。可以理解,各种编程语言均可以用于实现在此描述的本发明的内容。
可用计算机处理的介质包括用于以机器(例如计算机)可读的形式存储或者传送信息的任何装置。例如,可用计算机处理的介质包括只读存储器(“ROM”);随机存取存储器(“RAM”);磁盘存储器;光存储器;闪存设备;电、光、产或其他形式的传播信号(例如载波、红外信号、数字信号等);等等。
示例的规则引擎架构
规则处理架构描述为在规则处理器中使用以进行针对内容载荷允许进行并行以及递归的顺序的内容分析。该架构提供了并行模式匹配能力以及进行多个快速的基于内容的状态转换的能力。
在一个实施例中,规则处理器包括指令或者规则序列发生器以将来自搜索寄存器中包含的内容上的程序存储的规则应用以执行。所述规则和内容被执行引擎所使用,所述执行引擎支持为一个或多个操作,例如模式匹配、词汇分析、解析和解释功能而特别定制的规则词汇表。
在一个实施例中,所述规则处理器对固定(anchored)或非固定(unanchored)模式执行按优先级排序并且定向的搜索序列和对从文档、流、消息或者信息包中任意位置开始的任意长度模式执行窗口式并且限定范围的(ranged)搜索序列。所述模式以及范围控制和程序控制流(例如分支地址)可以在包含在程序存储中的规则中静态指定或者使用规则中给出的指针或索引从寄存器文件中动态的间接选择。这样可以进行很有效的动态并且上下文的模式匹配。
规则处理器部分地使用连接到搜索寄存器的专用模式匹配硬件结构进行搜索。在一个实施例中,规则处理器支持大容量搜索、分类和优先级排序功能。在一个实施例中,规则处理硬件为由具有搜索阵列和分类器模块组成的四级流水线,直接对搜索寄存器中包含的2KB内容数据(例如文档数据)进行操作。这四级为:(1)从规则存储器获取规则并解码规则,(2)间接域的规则汇编,(3)对搜索寄存器中的值的搜索执行操作,以及(4)对搜索操作结果的分类操作,紧接着是发送结果。
规则处理器向搜索寄存器结构提出搜索的一个或多个规则。在一个实施例中,搜索寄存器是2KB的每个条目为一个字节宽度的寄存器文件。待搜索的数据被载入到该搜索寄存器文件。每个规则指定一个向所述搜索寄存器文件提出的模式以确定该模式是否存在于在此存储的数据中。还可以提供掩码以进一步配置所述模式和/或减少搜索中使用的模式数量。
图1是规则处理器一个实施例的结构图。参考图1,搜索寄存器101和搜索执行硬件102共同的接受搜索指令103。搜索指令103进一步显示在图2A中。参考图2A,搜索指令201包括描述搜索操作类型的操作码(opcode)201a,搜索模式201b,指定模式中与当前搜索指令相关的字节的掩码201c以及分别指定与当前搜索指令相关的搜索寄存器中位置的起始和终止边界的两个偏移201d和201e。搜索执行单元202输出结果203,所述结果203在一个实施例中包括指示搜索操作成功的标记并且另外还包括一个或多个参数,例如但不限于指示满足搜索操作的搜索指令的在搜索寄存器中的位置的索引。
搜索执行硬件202包括搜索寄存器202a和分类器202b,如图2A所示。搜索寄存器202a存储可搜索数据,可以是来自文档、消息、信息包或者任何其他公知的可以接受搜索的数据源的内容。搜索寄存器202a的大小可以为任意M字节,并且在一个实施例中是在更大的阵列中组成,称为搜索阵列202c,具有M行每行N字节。来自搜索寄存器202a的数据以复制方式被存储在所述搜索阵列中。搜索寄存器的该实施例因为包括其对在N个相邻字节的模式上的搜索具有更好的性能的多种原因而成为优选的。
在一个实施例中,待搜索数据基于地址发生器211产生的地址通过使用数据发生器213而存储在搜索寄存器202a中,所述地址发生器211产生的地址通过地址解码器212进行解码。该存储过程还需要记录搜索寄存器202a中的可搜索数据的数量。对于数量少于搜索寄存器202a的容量的数据集,搜索寄存器202a提供了一个机制来限制搜索操作到适当的数据。在一个实施例中,数据发生器213可以存储在搜索阵列202c的剩余位置中的搜索操作将要忽略的模式,或者在一个可替换实施例中,搜索寄存器202a使得搜索阵列202c的适当位置不能参与搜索操作。
除了对指定模式的定位能力外,搜索寄存器202a还可以提供执行例如对字符数据的大小写敏感搜索的特别搜索的能力。为了支持这些和其他特别搜索,搜索寄存器202a可以存储与可搜索数据的每个字节关联的附加信息。在一个实施例中,搜索寄存器202a可以存储与每个可搜索数据相关联的特别位向量,允许进行大小写敏感搜索或者搜索属于预定字符类别的字符。
不考虑在整个搜索阵列202c中可搜索数据组成的方式,搜索阵列202c接受模式201b和掩码201c。模式201b与搜索阵列202c中的条目进行比较。在一个实施例中,搜索阵列202c具有M行每行N个字节,其中N与模式201b中字节数量相同。掩码201c提供了模式201b中不作为参与搜索的模式的一部分的那些字节的标示。换句话说,如果模式201b是少于N个字节的模式,则掩码201c指定了搜索阵列202c将要忽略模式201b中的哪些字节。在一个实施例中,搜索阵列202c具有针对该搜索阵列202c中M行的每一行的输出行,以表明正在搜索的模式是否与该特定行中存储的内容数据相匹配。在一个实施例中,如果输出为1,则所述模式与该特定行中的内容数据匹配。搜索阵列202c的M个输出行连接到分类器202b的输入。
分类器202b还连接以接收偏移201d和201e,偏移201d和201e分别指示搜索寄存器202a中待搜索范围的起始和终止点。在一个实施例中,这些偏移为log2M位数字。在来自搜索阵列202c的匹配指示行和由偏移201d和201e指定的起始和终止范围的基础上,分类器202b处理搜索阵列202c的结果。这样的处理可以包括执行一个或多个操作。这些操作可以为索引解析函数,依照操作类型输出特定匹配索引。在一个实施例中,所述操作包括前向寻首(Find_First_Forward),反向寻首(Find_First_Reverse)和个体计数(Find_Population_Count)。这些操作由搜索指令201中的操作码201a指定。分类器202b可以存储先前操作的中间或者最终结果,所述结果可以与来自搜索阵列202c的匹配标示行结合在一起用于后续操作。在这种方式中,分类器202b可以通过产生一系列利用先前操作的结果的操作而用于累进地操作遍历所述可搜索数据集。并且,分类器202b还可以连接到寄存器文件以存储用于后续操作的先前操作结果,所述后续操作可以在执行任意数量的其他操作之后而执行。分类器202b的结果还可以连接到规则处理器指令序列发生器,例如图1的指令序列发生器105,以产生或辅助规则程序偏移(例如分支地址)的产生。
在处理之后,分类器202b产生表明是否存在匹配的输出,以及与该匹配相关联的索引。该索引可以表明搜索寄存器202a中第一次匹配发生或者相对于搜索寄存器202a顶部的最后一次匹配发生的位置(地址)。可替换地,所述索引可以表明由偏移指定的范围内发生的匹配的数量。
注意由偏移指定的范围可以动态改变。例如,第一搜索指令可以在由偏移201d和偏移201e指定的范围包括搜索阵列202c的所有行时被初始应用到搜索阵列202c。然而,在第一搜索指令和匹配被识别之后,起始和终止范围可以在随后的搜索指令中改变,从而所述搜索从如下包含在由先前搜索指令指定的范围内找到的匹配线的位置开始这种能力是通过使用允许规则或者指令的域引用通用寄存器文件中的值的间接功能而实现的。
在图2A中,在一个实施例中,搜索阵列202c由2K行每行8个字节组成。因此,搜索寄存器202a保存2K字节数据。搜索阵列202c保存复制数据。以搜索寄存器202a中特别字节开始的每个8字节串在搜索阵列202c中存储为特别行。这些串由来自搜索寄存器202a的特别字节和紧跟搜索寄存器202a中字节之后的附加的7个连续字节组成。因此,搜索阵列202c的每一行保存前一行的7个最高字节以及添加到这7个字节右侧的紧跟高位字节的一个附加字节。
数据通过数据发生器213被加载到搜索阵列202c中,所述数据发生器213在一个实施例中提供来自数据源的每行的适当的8个字节数据。
在一个实施例中,8字节搜索模式在每个搜索指令中提供。所述搜索模式与搜索阵列202c相结合,从而在该阵列中的8列中的每一列被提供特别字节。这在图2B中显示。参考图2B,状态字节1至8存储在搜索阵列1至2K行的每一行中。对于存储为图2B中所示的2K行和8列的搜索阵列的元素的每个字节,存在信号行310。例如,行1的字节1产生信号行31011,行1的字节2产生信号行31012,行2的字节1产生信号行31021,以此类推。每个字节的信号在搜索操作期间当所存储的字节与提供给该元素所属相同列的搜索模式的字节相匹配时被声明。在该实施例中,每行包含8个字节,8个信号行例如从31011到31018被用于标示行内的每个字节级匹配。所述每行的字节级匹配与来自行内掩码102c和掩码解析模块311的掩码一起作“与”运算。“与”函数的结果表明每行内是否发生了匹配。在该实施例中,其中搜索阵列包括2K行,2K个匹配线输出到分类器。该阵列中字节元素312的两个电路结构在图4中所示。该电路以通过在一个时钟周期内在其所有行内执行同时搜索而提供完全并行搜索操作的方式工作。当执行搜索操作时,一列内的所有字节级匹配线401同时指示其分别存储的字节的匹配。搜索操作在所有列上同时激活,允许每行内的掩码后缩减模块指示行级匹配。因此,在搜索阵列的该实施例中,在单个时钟内,执行了对搜索寄存器内由8个相邻字节组成的所有2K字符串的并行搜索并且结果在2K匹配线中表现。
图3A是分类器一个实施例的结构图。参考图3A,来自搜索阵列的匹配线310连接并输入到范围掩码和选择单元301。在一个实施例中,匹配线310包括匹配1至匹配2048。范围掩码和选择单元301接收一对指定来自搜索阵列的M个匹配线的行范围的偏移以进行进一步处理。在一个实施例中,所述偏移为11位数码,被转换为2K掩码位,所述2K掩码位可以与匹配线进行“与”运算以提供输出。这样的示例在图3B中显示,其中起始范围的偏移被转换为一个或多个零,而剩下的位均为1,同时范围终止的偏移被转换为从底部开始向上到某点均为0,而此后所有位均为1。通过将这些寄存器与匹配线进行“与”运算,在所指定的起始和终止范围内的发生的匹配被原封不动的输出,同时在所述范围之外的匹配线被屏蔽(be masked)(例如改变为预定逻辑电平)。
范围掩码和选择单元301的输出连接到索引解析函数单元302的输入。在一个实施例中,索引解析函数单元302包括一个或多个在范围掩码和选择单元301的输出上运算的函数。例如,如图所示,分类器包括升序优先编码器302A用于找到在指定的N字节模式和非掩码匹配线所指示的搜索阵列中的内容数据之间发生(相对于搜索阵列的顶部)的第一次匹配。也可以包括用于寻找在N字节模式和非掩码匹配线所指示的搜索阵列中的内容数据之间发生(相对于搜索阵列顶部)的最后一次匹配的降序优先编码器302B。个体计数器302C指示在N字节模式和非掩码匹配线所指示的搜索阵列中的数据之间发生的匹配的数量。也可以使用其他索引选择器。
索引解析函数单元302的输出被输入到索引组合和选择单元303,该单元303也被连接以接收操作码102a。操作码102a在搜索指令中指定并且选择一个索引解析函数输出作为分类器的输出。索引组合和选择单元303产生匹配指示器321以指示存在匹配以及索引322指示数据的搜索阵列中的位置,该位置在选择升序优先编码器302A的输出时为第一个匹配发生处,或者在选择降序优先编码器302B的输出时为最末一次匹配发生处,以及在选择个体计数器302C时指示非掩码匹配线中的匹配数量等等。紧接输出计算之后,匹配指示器321和索引322可以用于控制一个或多个搜索指令的执行,之后将输出存储到通用寄存器中并在随后指令中利用间接指定,分支到指令存储器(例如指令存储器104)中依赖于匹配指示器321或者其他类似技术的指定地址。
图5显示了包括搜索装置的规则处理器的微架构。参考图5,搜索指令存储在指令存储器501中。指令的选择是通过流控制使用指令获取指针寄存器502。指令由解码器503进行解码。每个指令的单个子集取自该指令或者通用寄存器文件504。然后每个指令的各个子集被应用到各个单元,即搜索阵列505,包含分类单元506a以及紧跟的特征化单元506b的分类器506,传统的算术逻辑单元(ALU)507,如上所述。在一个实施例中,每个指令的处理遵循四级流水线,如前所述的包括(i)指令获取级508,(ii)指令汇编级509,(iii)搜索/执行级510,以及(iv)结果的分类和发送和/或分支级511。
在一个实施例中,规则引擎指令格式包括128位规则格式。所述128规则被划分为包含向规则处理器上各种硬件引擎发出指示的各种域的子集。在一个实施例中,搜索子集包括搜索/分类操作码域(5比特),模式域(在一个实施例中为65比特,包括8字节值或者指向提供8字节值的位置的指针,以及指定指令中所述8字节值是否为指针的附加比特位),字节级掩码域(在一个实施例中为8比特),起始位置地址域(在一个实施例中该域为12比特,包括11比特值或者指向提供该11比特值的寄存器的指针,并且包括一个附加比特位指示是否所述起始位置地址包括11比特值或是所述指针),终止位置地址域(在一个实施例中,该域为12比特,包括11比特值或者指向提供该11比特值的寄存器的指针,以及指定所述终止位置地址信息是否为指针的一个附加比特位),指定搜索操作的结果返回何处的结果寄存器域(在一个实施例中,该域为6比特)以及分支地址域(在一个实施例中该域为20比特,包括19比特值或者指向提供该19比特值的寄存器的指针,以及指示所述分支地址信息是否为指针的一个附加比特位)。
图6显示了规则集的示例伪码601,所述伪码601可以通过上述的规则处理器的一个实施例进行处理。所述规则具有多个模式,以及某些这样的模式可以存在于消息或文档或信息包中的位置的特定约束。这些约束通过使用关键字例如BEFORE和AND而在伪码中表达。为了简化起见,在该示例中使用的601中的模式在字符串之间不具有任何附加分隔符,这可能与实际情况相符。并且,图6为针对示例的规则处理器的对应的微码的列表602。指令的格式如前所述。使用第一条指令603进行说明,它包含前向寻首(FIND_FIRST_FORWORD)操作码,其中所有8字节模式“cp/bin/”均与搜索相关(通过使用掩码0×FF),其中起始和终止偏移表示为常值(通过使用间接标记)以指示搜索寄存器中保存的可搜索载荷的起始和终止点。为了简化起见,所述常值的推导在此略去。该操作码的结果显示为加载到通用寄存器A中并且最后分支地址被指定为常值11,这是将紧跟图6中所示微码段之后的指令。该指令会导致搜索执行硬件在搜索寄存器202a的字节位置0×03D和0×800内搜索“cp/bin/”的产生。搜索阵列202c中所有匹配的行会在微架构流水线的搜索执行级510结束时声明其各自的匹配线310。在分类和分支级511中,分类器202b将0×03D和0×800转换为如图3B所示的位向量。所述位向量用于执行范围掩码和选择函数301以拒绝任何起始于从0×03D至0×800的位置窗口之外的匹配。在剩下的处于所述位置窗口之内的匹配中,该指令的操作码从索引解析函数302中选择升序优先编码器302a以将最低编号的匹配转换为11位二进制编码位置。如果找到这样的匹配,则匹配321会被声明并且索引322会保存所述11位位置。如果匹配321由于没有找到匹配而没有被声明,则指令序列发生器105会将分支地址0×B载入到指令指针106。索引322会被寄存器文件504的控制电路载入到通用寄存器A。如果可应用,则通用寄存器A中的所述加载和指令指针的加载将会在分类和分支执行级511结束时完成。第二条指令604,固定前向寻首(FIND_FORWARD_ANCHORED),进一步显示了示例规则引擎的大容量词汇表。它是前向寻首(FIND_FIRST_FORWARD)的一种变化,其中要成功搜索则匹配必须开始于起始偏移(start_offset)。
图7显示了在图5中所示的示例规则处理器的微架构内的如图6所示的微码的执行。表701显示了多个时钟周期内的执行。为了简化起见,假定所有搜索指令都成功的找到了搜索寄存器中指定的模式。所述执行通过图5所述的4级以流水线方式进行。通过使用间接指定,搜索指令的执行可以使用紧接先前指令中计算出的偏移。因此,指令1至8在连续周期内执行。指令8是依赖于通用寄存器A和通用寄存器B的内容的比较结果的分支,所述比较分别在时钟周期8和时钟周期9中计算。所述分支在时钟周期11中进行并且指令执行在时钟周期14中完成。因此,使用伪码601描述的复杂模式匹配表达式使用示例规则处理器的大容量指令词汇表仅在14个时钟周期内即执行完毕。该示例显示了示例规则处理器在执行包括动态和上下文的文档、消息或信息包搜索和分析等功能时的能力和效率。
尽管本发明的任何替换和修改对于本领域普通技术人员在理解前述说明后无疑是显然的,然而应当理解,以示例方式显示和描述的任何特定实施例不应被认为是限制性的。因此,各种实施例细节所涉及到的内容不是为了限制权利要求的范围,权利要求书自身仅仅描述了本发明的必要特征。
Claims (72)
1.一种进行上下文搜索的规则处理器,所述规则处理器包括:
多个输入有效载荷搜索寄存器;
连接到所述多个搜索寄存器的搜索执行引擎,响应于指定一个或多个模式搜索并向所述搜索寄存器中的内容提出一个或多个模式的一个或多个搜索指令的执行,通过并行模式匹配对所述搜索寄存器中的内容执行一个或多个上下文搜索。
2.根据权利要求1所述的规则处理器,其中所述一个或多个搜索指令的域连接到所述多个搜索寄存器和所述搜索执行引擎。
3.根据权利要求1所述的规则处理器,其中所述一个或多个搜索指令中的至少一个指定了将对所述多个搜索寄存器中的内容进行搜索的模式和零个或者更多搜索参数。
4.根据权利要求3所述的规则处理器,其中所述一个参数指定了所述模式中将被屏蔽的部分,以使得该模式的子集能够针对所述搜索寄存器中的内容进行搜索。
5.根据权利要求4所述的规则处理器,其中所述被屏蔽的部分模式是通过掩码向量指定以屏蔽该模式中的特定字节。
6.根据权利要求4所述的规则处理器,其中所述零个或更多参数指定了组成所述搜索寄存器中内容范围的起始和终止位置,所述搜索执行引擎将搜索限制在该内容范围内。
7.根据权利要求4所述的规则处理器,其中所述至少一个指令指定了窗口式前向寻首搜索。
8.根据权利要求4所述的规则处理器,其中所述至少一个指令指定了窗口式反向寻首搜索。
9.根据权利要求1所述的规则处理器,其中所述搜索执行引擎产生至少一个结果输出以表明对所述搜索寄存器中内容的搜索的成功。
10.根据权利要求4所述的规则处理器,其中所述至少一个结果输出包括表明在所述至少一个指令中指定的模式和所述多个搜索寄存器中内容之间是否产生了匹配的指示。
11.根据权利要求4所述的规则处理器,其中所述至少一个结果输出包括表明所述至少一个指令指定的模式和所述搜索寄存器中内容之间在所述多个搜索寄存器中发生了匹配的位置指示。
12.根据权利要求1所述的规则处理器,其中所述至少一个搜索指令包括如下域,所述域指定参数以用于控制搜索或者指定指针指向存储了用于控制搜索的参数的存储器。
13.根据权利要求12所述的规则处理器,其中所述指针指向通用寄存器。
14.根据权利要求12所述的规则处理器,其中所述指针指向的值是所述搜索执行硬件先前执行的搜索的结果。
15.根据权利要求12所述的规则处理器,其中所述值对应于一个包括掩码、搜索窗口参数以及控制参数的组。
16.根据权利要求1所述的规则处理器,其中所述多个输入有效载荷搜索寄存器包括寄存器文件。
17.根据权利要求16所述的规则处理器,其中所述寄存器文件包括2K个条目,每个条目为一个字节。
18.根据权利要求16所述的规则处理器,其中所述寄存器文件包括由11位寄存器地址进行寻址的多个条目。
19.根据权利要求1所述的规则处理器,其进一步包括用于存储一个或多个应用到所述搜索寄存器中数据的搜索指令的存储器。
20.根据权利要求1所述的规则处理器,其中所述搜索指令导致所述搜索执行引擎对所述搜索寄存器的内容中的任意长度模式执行搜索。
21.根据权利要求1所述的规则处理器,其进一步包括指令序列发生器用于应用一个或多个搜索指令到所述搜索执行引擎。
22.根据权利要求21所述的规则处理器,其中所述一个或多个搜索指令指定了至少一个模式、范围控制以及程序控制流。
23.根据权利要求21所述的规则处理器,其中所述一个或多个搜索指令包括用于指定存储了指定至少一个模式、范围控制以及程序控制流的信息的存储器位置的指针。
24.根据权利要求21所述的规则处理器,其中所述一个或多个搜索指令中的至少一个搜索指令包括指示搜索操作类型的操作码信息,指定待定位模式的模式信息,指定包括所述模式的部分模式信息的掩码,以及指定对于至少一个搜索指令进行搜索的搜索寄存器中位置的起始和终止边界的一对偏移。
25.根据权利要求1所述的规则处理器,其中所述搜索执行引擎包括表明一个搜索指令的执行的搜索成功的第一输出指示以及表明由一个搜索指令指定的模式的在所述搜索寄存器内的位置的第二输出指示。
26.根据权利要求1所述的规则处理器,其中所述搜索执行引擎包括:
连接到所述多个输入有效载荷搜索寄存器的搜索阵列,其中所述多个搜索寄存器中的内容被复制并存储到所述搜索阵列中;以及
连接到所述搜索阵列的分类器,用于响应由一个或多个搜索指令指定的信息执行一个或多个操作。
27.根据权利要求26所述的规则处理器,其中所述搜索阵列包括M个匹配线,所述M个匹配线中的每一个与存储在所述搜索阵列中的一组数据关联并且能够指示由一个或多个搜索指令中的一个所指定的模式是否与存储在所述搜索阵列中的与其相关联数据组中的数据相匹配。
28.根据权利要求27所述的规则处理器,其中所述分类器通过连接以用来接收所述M个匹配线以执行与由该M个匹配线所指示的匹配相关联的一个或多个操作。
29.根据权利要求28所述的规则处理器,其中所述信息指定了范围,并且所述分类器仅在所指定的范围内对所述M个匹配线进行分类。
30.根据权利要求29所述的规则处理器,其中所述范围在所述搜索指令中指定。
31.根据权利要求29所述的规则处理器,其中所述信息指定了存储器中所述范围被存储的位置。
32.根据权利要求31所述的规则处理器,其中所述存储器为寄存器文件。
33.根据权利要求26所述的规则处理器,其中所述搜索阵列包括第一输入用于接收包含模式的比特位,以及第二输入用于掩码,所述搜索阵列基于所述掩码而屏蔽对应于所述模式的零个或更多比特位。
34.根据权利要求33所述的规则处理器,其中所述包含模式的比特包括N个字节并且所述掩码包括N个比特,N个比特中的每一个关联到N个字节中不同的每个字节,其中所述搜索阵列在N比特掩码中一个比特处于第一状态时将该比特在所述模式的N个字节中关联的字节屏蔽。
35.根据权利要求26所述的规则处理器,其中所述分类器具有表明所述匹配线中的一个或多个是否匹配的第一输出以及表明执行所述一个或多个操作的结果的第二输出。
36.根据权利要求35所述的规则处理器,其中所述第二输出表明了所述搜索阵列内在所述模式和存储在所述搜索阵列中的数据之间第一次匹配发生的相对于所述搜索阵列一侧的位置。
37.根据权利要求35所述的规则处理器,其中所述第二输出表明了所述M个匹配线的范围内产生匹配的数量。
38.根据权利要求26所述的规则处理器,其中所述分类器响应于范围掩码进行操作以对搜索操作以屏蔽所述搜索阵列的一个或多个输出。
39.根据权利要求26所述的规则处理器,其中所述分类器进一步包括:
优先编码器,用于标示在所述搜索阵列中对应于所述模式和存储在所述搜索阵列中的数据之间第一次匹配发生的相对于所述搜索阵列一侧的对应于所述M个匹配线的位置。
40.根据权利要求39所述的规则处理器,其中所述优先编码器为升序优先编码器并且所述搜索阵列的一侧为该搜索阵列的顶部。
41.根据权利要求39所述的规则处理器,其中所述优先权编码器为降序优先编码器并且所述搜索阵列的一侧为该搜索阵列的底部。
42.根据权利要求26所述的规则处理器,其中所述分类器进一步包括计数器以确定所述搜索阵列中匹配的数量。
43.根据权利要求26所述的规则处理器,其中所述分类器进一步包括:
升序优先编码器,用于标示在所述搜索阵列中对应于所述模式和存储在所述搜索阵列中的数据之间第一次匹配发生的相对于所述搜索阵列顶部的对应于所述M个匹配线的位置;
降序优先编码器,用于标示所述搜索阵列中对应于所述模式和存储在所述搜索阵列中的数据之间第一次匹配发生的相对于所述搜索阵列底部的对应于所述M个匹配线的位置;
计数器,用于确定所述M个匹配线的范围内产生匹配的数量;以及
连接到所述升序优先编码器、降序优先编码器和计数器并且具有第一输出的选择器,所述选择器可以被操作以选择所述升序优先编码器、降序优先权编码器和计数器的一个输出作为所述分类器的第一输出。
44.根据权利要求43所述的规则处理器,其中所述选择器具有第二输出,指示在所述模式和所述搜索阵列中的数据之间是否产生了匹配。
45.根据权利要求26所述的规则处理器,其中所述搜索阵列包括:
多个存储器位置行,用于存储数据字节;
多个字节比较器行,用于将存储在所述多个存储器位置行中的数据字节与所述模式的字节进行比较,所述多个字节比较器行中的每一个比较器具有一个输出;
多个掩码缩减单元,所述多个掩码缩减单元中的每一个被连接以接收字节掩码和字节比较器一行内的比较器的比较输出,所述多个掩码缩减单元基于所述字节掩码而对各个比较器输出进行屏蔽操作并且将每行的未屏蔽的比较器输出组合为多个掩码线中的一个。
46.根据权利要求1所述的规则处理器,其进一步包括:
规则存储器,用于存储多个规则;
连接到所述规则存储器的规则序列发生器,用于选择一个或多个规则执行;以及
解码器,用于对所述规则序列发生器选择的一个或多个规则进行解码,所述解码器连接到所述搜索阵列和分类器以提供解码完成信息给所述搜索阵列和分类器。
47.一种规则引擎内容处理器,包括:
搜索阵列,用于执行所述搜索阵列中存储的数据和在第一输入接收到的来自搜索指令的N字节模式之间的模式匹配,所述搜索阵列具有M个匹配线作为输出,所述M个匹配线的每一个与存储在该阵列中的一个数据组相关联,并且能够指示所述N字节模式是否与存储在所述搜索阵列中的相关联数据组中的数据相匹配;以及
分类器,所述分类器被连接以接收所述M个匹配线从而执行一个或多个与所述M个匹配线指示的匹配相关联的操作,所述一个或多个操作响应于所述规则指定的信息而被执行,并且进而其中所述分类器输出指示所找到的任何匹配的数据。
48.根据权利要求47所述的规则引擎内容处理器,其中所述分类器具有指示所述一个或多个匹配线是否匹配的第一输出以及指示执行所述一个或多个操作的结果的第二输出。
49.根据权利要求47所述的规则引擎内容处理器,其中所述搜索阵列包括第二输入以接收N比特掩码从而应用到所述N字节模式。
50.根据权利要求47所述的规则引擎内容处理器,其中所述分类器包括范围掩码用于基于一定范围而屏蔽所述M个掩码线的一部分。
51.根据权利要求50所述的规则引擎内容处理器,其中所述范围掩码通过由所述搜索指令指定的一对偏移与所述M个掩码线进行逻辑“与”运算。
52.根据权利要求51所述的规则引擎内容处理器,其中所述规则包括所述的一对偏移。
53.根据权利要求50所述的规则引擎内容处理器,其中所述规则包括指向所述偏移在存储器中的存储位置的指针。
54.根据权利要求47所述的规则引擎内容处理器,其中所述分类器的数据输出是以供使用的反馈并且是在下一个周期中给该分类器的输入。
55.根据权利要求47所述的规则引擎内容处理器,其中所述分类器进一步包括:
优先编码器,用于标示所述搜索阵列中对应于所述模式和存储在所述搜索阵列中的数据之间第一次匹配发生的相对于所述搜索阵列一侧的对应于所述M个匹配线的位置。
56.根据权利要求55所述的规则引擎内容处理器,其中所述优先编码器为升序优先编码器并且所述搜索阵列的一侧为该搜索阵列的顶部。
57.根据权利要求55所述的规则引擎内容处理器,其中所述优先编码器为降序优先编码器并且所述搜索阵列的一侧为该搜索阵列的底部。
58.根据权利要求47所述的规则引擎内容处理器,其中所述分类器进一步包括计数器以确定所述M个匹配线范围内的匹配的数量。
59.根据权利要求47所述的规则引擎内容处理器,其中所述分类器进一步包括:
升序优先编码器,用于标示所述搜索阵列中对应于所述模式和存储在所述搜索阵列中的数据之间第一次匹配发生的相对于所述搜索阵列顶部的对应于所述M个匹配线的位置;
降序优先编码器,用于标示所述搜索阵列中对应于所述模式和存储在所述搜索阵列中的数据之间第一次匹配发生的相对于所述搜索阵列底部的对应于所述M个匹配线的位置;
计数器,用于确定所述M个匹配线的范围内的匹配的数量;以及
连接到所述升序优先编码器、降序优先编码器和计数器并且具有第一输出的选择器,所述选择器可以被操作以选择所述升序优先编码器、降序优先编码器和计数器的一个输出作为所述分类器的第一输出。
60.根据权利要求55所述的规则引擎内容处理器,其中所述选择器具有第二输出以指示在所述模式和所述搜索阵列中的数据之间是否产生了匹配。
61.根据权利要求47所述的规则引擎内容处理器,其中所述N个比特中的每一个关联到N个字节中不同的每个字节,其中所述搜索阵列在N比特掩码中一个比特处于第一状态时屏蔽该比特在所述模式的N个字节中关联的字节。
62.根据权利要求47所述的规则引擎内容处理器,其中所述信息指定了范围,并且所述分类器仅在所指定的范围内对所述M个匹配线进行分类。
63.根据权利要求62所述的规则引擎内容处理器,其中所述范围在所述搜索指令中指定。
64.根据权利要求62所述的规则引擎内容处理器,其中所述信息指定了存储器中所述范围被存储的位置。
65.根据权利要求47所述的规则引擎内容处理器,其中所述搜索阵列包括:
多个存储器位置行,用于存储数据字节;
多个字节比较器行,用于将存储在所述多个存储器位置行中的数据字节与所述模式的字节进行比较,所述多个字节比较器行中的每一个比较器具有一个输出;
多个掩码缩减单元,所述多个掩码缩减单元中的每一个被连接以接收字节掩码和字节比较器一行内的比较器的比较输出,所述多个掩码缩减单元基于所述字节掩码而对各个比较器输出进行屏蔽操作并且将每行的未屏蔽的比较器输出组合为M个掩码线中的一个。
66.根据权利要求47所述的规则引擎内容处理器,其进一步包括:
规则存储器,用于存储多个搜索指令;
连接到所述搜索指令存储器的规则序列发生器,以选择用于执行一个或多个搜索指令;以及
解码器,用于对所述规则序列发生器选择的一个或多个搜索指令进行解码,所述解码器连接到所述搜索阵列和分类器以提供解码完成信息给所述搜索阵列和分类器。
67.一种过程,包括:
为一组输入载荷搜索寄存器加载内容;
将由搜索指令指示的模式提交到所述搜索寄存器中进行搜索;
在所述模式和存储在所述搜索寄存器中的内容之间执行模式匹配;以及
输出表明执行所述模式匹配结果的指示。
68.根据权利要求67所述的过程,其进一步包括:
产生多个与所述搜索阵列的行相关联的匹配线,其中所述多个匹配线中的匹配线指示在所述模式和与该匹配线相关联的行中的数据之间是否产生了匹配;
至少在一组所述匹配线上响应于所述搜索指令指定的信息而执行一个或多个操作;
输出表明关于所述匹配线中的一个或多个是否与所述模式匹配的指示以及执行所述一个或多个操作的结果。
69.根据权利要求67所述的过程,其中所述加载搜索寄存器被执行为存储、复制以及插入数据,从而一行的数据以转移形式被存储在相邻行。
70.根据权利要求67所述的过程,其进一步包括:
将代码转换为搜索指令序列;
在连续周期内执行所述搜索指令序列从而对于所述多个搜索指令中的每一个执行模式匹配。
71.一种以流水线方式执行上下文搜索的过程,所述过程包括:
从规则存储器获取规则;
解码所述规则并且如果存在间接域则汇编间接域;
对多个存储内容的输入载荷搜索寄存器中的值执行一个或多个搜索操作;以及
对执行所述一个或多个搜索操作的结果执行分类操作。
72.根据权利要求71所述的过程,其中所述过程通过搜索阵列和分类器在四级流水线中执行。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US40683402P | 2002-08-28 | 2002-08-28 | |
US60/406,834 | 2002-08-28 | ||
US10/650,363 | 2003-08-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1723454A true CN1723454A (zh) | 2006-01-18 |
CN100483402C CN100483402C (zh) | 2009-04-29 |
Family
ID=35912869
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB038244934A Expired - Fee Related CN100483402C (zh) | 2002-08-28 | 2003-08-28 | 用于执行高速上下文检索和数据模式特征描述的可编程规则处理设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100483402C (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013033964A1 (zh) * | 2011-09-06 | 2013-03-14 | 海尔集团公司 | 普适计算环境下cbr的隐私策略的生成方法及系统 |
CN104205835A (zh) * | 2012-03-22 | 2014-12-10 | 高通股份有限公司 | 导出最末位置译码的上下文以供视频译码 |
CN107025093A (zh) * | 2011-12-23 | 2017-08-08 | 英特尔公司 | 在不同的粒度水平下对数据值进行广播和掩码的指令执行 |
CN107741861A (zh) * | 2011-12-23 | 2018-02-27 | 英特尔公司 | 用于混洗浮点或整数值的装置和方法 |
CN110765156A (zh) * | 2018-07-09 | 2020-02-07 | 慧荣科技股份有限公司 | 链表搜索装置及方法 |
CN111988444A (zh) * | 2020-08-19 | 2020-11-24 | 成都安可信电子股份有限公司 | 一种同步总线快速搜索终端地址搜索方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4760523A (en) * | 1984-06-29 | 1988-07-26 | Trw Inc. | Fast search processor |
-
2003
- 2003-08-28 CN CNB038244934A patent/CN100483402C/zh not_active Expired - Fee Related
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013033964A1 (zh) * | 2011-09-06 | 2013-03-14 | 海尔集团公司 | 普适计算环境下cbr的隐私策略的生成方法及系统 |
US11301580B2 (en) | 2011-12-23 | 2022-04-12 | Intel Corporation | Instruction execution that broadcasts and masks data values at different levels of granularity |
CN107025093A (zh) * | 2011-12-23 | 2017-08-08 | 英特尔公司 | 在不同的粒度水平下对数据值进行广播和掩码的指令执行 |
CN107741861A (zh) * | 2011-12-23 | 2018-02-27 | 英特尔公司 | 用于混洗浮点或整数值的装置和方法 |
CN107025093B (zh) * | 2011-12-23 | 2019-07-09 | 英特尔公司 | 用于指令处理的装置、用于处理指令的方法和机器可读介质 |
US10909259B2 (en) | 2011-12-23 | 2021-02-02 | Intel Corporation | Instruction execution that broadcasts and masks data values at different levels of granularity |
US11250154B2 (en) | 2011-12-23 | 2022-02-15 | Intel Corporation | Instruction execution that broadcasts and masks data values at different levels of granularity |
US11301581B2 (en) | 2011-12-23 | 2022-04-12 | Intel Corporation | Instruction execution that broadcasts and masks data values at different levels of granularity |
US11709961B2 (en) | 2011-12-23 | 2023-07-25 | Intel Corporation | Instruction execution that broadcasts and masks data values at different levels of granularity |
CN104205835A (zh) * | 2012-03-22 | 2014-12-10 | 高通股份有限公司 | 导出最末位置译码的上下文以供视频译码 |
CN110765156A (zh) * | 2018-07-09 | 2020-02-07 | 慧荣科技股份有限公司 | 链表搜索装置及方法 |
CN111988444A (zh) * | 2020-08-19 | 2020-11-24 | 成都安可信电子股份有限公司 | 一种同步总线快速搜索终端地址搜索方法 |
CN111988444B (zh) * | 2020-08-19 | 2022-10-18 | 成都安可信电子股份有限公司 | 一种同步总线快速搜索终端地址搜索方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100483402C (zh) | 2009-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230214282A1 (en) | Programmable device, hierarchical parallel machines, and methods for providing state information | |
CN1759393B (zh) | 规则处理器和使用该规则处理器的方法 | |
CN112733137B (zh) | 一种面向漏洞检测的二进制代码相似性分析方法 | |
CN1306449C (zh) | 并行模式检测引擎集成电路、相关方法及数据处理系统 | |
US20180096213A1 (en) | Analyzing data using a hierarchical structure | |
JP4555088B2 (ja) | データ内のパターンの高速文脈サーチ及び特徴付けを実行するためのプログラム可能な規則処理装置 | |
CN1886705A (zh) | 高效实现及评估状态机和可编程有限状态自动机的方法和设备 | |
CN110633366A (zh) | 一种短文本分类方法、装置和存储介质 | |
CN113157917B (zh) | 基于OpenCL的优化分类模型的建立、优化分类方法及系统 | |
CN116149669B (zh) | 一种基于二进制文件的软件成分分析方法、装置以及介质 | |
CN115098857B (zh) | 一种可视化恶意软件的分类方法及装置 | |
CN113987405A (zh) | 一种基于ast的数学表达式计算算法 | |
US20100174718A1 (en) | Indexing for Regular Expressions in Text-Centric Applications | |
CN100483402C (zh) | 用于执行高速上下文检索和数据模式特征描述的可编程规则处理设备 | |
CN109828785B (zh) | 一种采用gpu加速的近似代码克隆检测方法 | |
CN110928550A (zh) | 基于关键词Trie树消除GCC抽象语法树冗余的方法 | |
Agun et al. | An efficient regular expression inference approach for relevant image extraction | |
CN114218580A (zh) | 一种基于多任务学习的智能合约漏洞检测方法 | |
Su et al. | Modeling regex operators for solving regex crossword puzzles | |
Werner et al. | Automated composition and execution of hardware-accelerated operator graphs | |
Parisi et al. | Making the most of scarce input data in deep learning-based source code classification for heterogeneous device mapping | |
Louza et al. | Induced suffix sorting | |
Xu et al. | Stdnet: Spatio-temporal decomposed network for video grounding | |
Wang et al. | Regular expression matching on billion-nodes graphs | |
Rao et al. | String matching problems with parallel approaches-an evaluation for the most recent studies |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: CISCO SYSTEMS CO.,LTD. Free format text: FORMER OWNER: VIHANA INC. Effective date: 20061229 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20061229 Address after: California, USA Applicant after: Cisco Tech Ind Address before: California, USA Applicant before: Vihana Inc. |
|
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: 20090429 Termination date: 20200828 |