CN101572693A - 用于并行模式匹配的设备和方法 - Google Patents
用于并行模式匹配的设备和方法 Download PDFInfo
- Publication number
- CN101572693A CN101572693A CNA2008100955676A CN200810095567A CN101572693A CN 101572693 A CN101572693 A CN 101572693A CN A2008100955676 A CNA2008100955676 A CN A2008100955676A CN 200810095567 A CN200810095567 A CN 200810095567A CN 101572693 A CN101572693 A CN 101572693A
- Authority
- CN
- China
- Prior art keywords
- character
- pattern
- vector
- modal sets
- equipment
- 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.)
- Pending
Links
Images
Landscapes
- Document Processing Apparatus (AREA)
Abstract
本发明提供一种用于并行模式匹配的设备和方法,该设备包括:转换装置,用于将多个模式形成为模式组,并连接该模式组中的每个模式的第i个字符,形成第i字符向量,其中i=1,2,3,...N,N是该模式组中具有最多字符的模式所包含的字符数量;以及匹配装置,用于从第1字符向量开始,分别将第i字符向量中的每个字符与数据流中的第i字符进行比较,以进行并行模式匹配。本发明的优点是,利用SIMD指令大大地强化了处理器的利用率,具有较小的存储器访问开销,通过使用较少的指令减小了代码大小,以及使分支延迟达到最小化。
Description
技术领域
本发明涉及一种用于并行模式(pattern)匹配的设备和方法,更具体地,涉及一种利用向量方式进行并行模式匹配的设备和方法。
背景技术
DPI(深度数据包检查)技术(更具体地用于网络入侵检测)作为一种网络监视和分析技术中的重要方法(例如NIDS),对计算机的计算和通信能力有很高的要求。通常,需要利用DPI将非常庞大的网络流量与大模式组进行匹配,所要求的性能与被监视的网络接口的流量速度成比例,而这两者会使DPI对于在千兆比特速度流量上搜索大模式组变得难以实现。
传统模式匹配***是基于逐个字节地进行比较,其并未利用最现代的架构所提供的SIMD(单指令多数据)指令。如图1所示,传统的匹配技术是将数据流中的一个字符与模式组中的一个字符进行顺序比较,这样的匹配效率远远不能适应当前网络流量的要求。
随着SIMD技术的出现,基于字节的比较,对算法实现引入了更多的分支。如图2所示,从例如模式1、模式2、模式3的多个模式中选择某个模式,整体地与数据流进行比较。在图2中,从数据流中一次取出16个字节与模式2进行比较。然而在图2所示的情况中,存在不能预测的分支指令,它们是高速缓冲存储器失配和管线故障的主要原因。特别是对深度管线处理器,这些高速缓冲存储器失配和管线故障大大地降低了性能。
另一方面,尽管产生了并行模式匹配机制,但是这些模式匹配是未锚定的匹配,其导致对存储器的访问次数大大增加,使得执行一个指令就会消耗更多的时钟周期。另外,如果要匹配的模式少于16个字节,则不能充分均衡SIMD的资源。
现有技术中的这些情况导致需要开发用于高性能DPI应用的新的编程模型,这种编程模型需要利用并行匹配的SIMD技术,也需要将模式和其它数据在存储器中的存储格式进行很好的规划,并通过使用填充技术重新排列数据在存储器中的存储结构,由此解决失配数据访问的极大开销。
发明内容
为了解决现有技术中的上述问题,本发明提出了一种新的向量化模式匹配以及利用SIMD结构的模式匹配的设备和方法。
根据本发明的一个方面,提供了一种用于并行模式匹配的设备,包括:转换装置,用于将多个模式形成为模式组,并连接该模式组中的每个模式的第i个字符,形成第i字符向量,其中i=1,2,3,...N,N是该模式组中具有最多字符的模式所包含的字符数量;以及匹配装置,用于从第1字符向量开始,分别将第i字符向量中的每个字符与数据流中的第i字符进行比较,以进行并行模式匹配。
根据本发明的一个方面,该模式组的数量大于或等于2,并且该转换装置将多个模式中字符数量相近的模式分在同一个模式组中。
根据本发明的一个方面,该转换装置将该模式组中字符数量小于N的各个模式的后部填入相应数量的无效字符,使其字符数量达到N。
根据本发明的一个方面,还包括存储装置,用于将经过转换装置处理的模式组以向量为单元进行顺序存储,其中第1字符向量中的每个字符被对齐到存储装置的以向量长度为单位的字符边界处。
根据本发明的一个方面,用第i比特串来表示第i字符向量与数据流中的第i字符的比较结果,其中,如果第i比特串中的第j比特为“1”,表示第i字符向量中的第j个字符与数据流中的第i个字符相匹配,相反如果该比特为“0”,则表示不匹配,其中j=1,2,3,...M,并且M是该模式组中该模式的数量。
根据本发明的一个方面,还包括校验装置,用于将各个比特串中与各个模式对应的比特的值相加,并将相加值与相应模式的长度进行比较,其中如果该相加值等于该模式的长度,则表明该模式与该数据流中的预定字符串匹配,否则为不匹配。
根据本发明的一个方面,每个模式组包括的模式的数量是16的倍数,并且如果不足16的倍数,则通过填入无效字符进行补充。
根据本发明的另一个方面,提供了一种用于并行模式匹配的方法,包括步骤:转换步骤,将多个模式形成为模式组,并连接该模式组中的每个模式的第i个字符,以形成第i字符向量,其中i=1,2,3,...N,N是该模式组中具有最多字符的模式所包含的字符数量;以及匹配步骤,从第1字符向量开始,分别将第i字符向量中的每个字符与数据流中的第i字符进行比较,以进行并行模式匹配。
在本发明的上述方面中,还包括存储步骤,将经过转换步骤处理的模式组以向量为单元顺序存储在存储装置中,其中第1字符向量中的每个字符被对齐到存储装置的以向量长度为单位的字符边界处。
在本发明的上述方面中,用第i比特串来表示第i字符向量与数据流中的第i字符的比较结果,并且其中,如果第i比特串中的第j比特为“1”,则表示第i字符向量中的第j个字符与数据流中的第i个字符相匹配,相反如果该比特为“0”,则表示不匹配,其中j=1,2,3,...M,并且M是该模式组中该模式的数量。
在本发明的上述方面中,还包括校验步骤,将各个比特串中与各个模式对应的比特的值相加,并将相加值与相应模式的长度进行比较,其中如果该相加值等于该模式的长度,则表明该模式与该数据流中的预定字符串匹配,否则为不匹配。
本发明的优点是,利用SIMD指令大大地强化了处理器的利用率,具有较小的存储器访问开销,通过使用较少的指令减小了代码大小,以及使分支延迟达到最小化。
附图说明
从下面结合附图对本发明实施例的详细描述中,本发明的这些和/或其它方面和优点将变得更加清楚并更容易理解,其中:
图1是现有技术中进行模式匹配的示意图;
图2是现有技术中利用SIMD技术进行模式匹配的示意图;
图3是根据本发明一个实施例的用于并行模式匹配的设备的方框图;
图4是根据本发明一个实施例的设备中的转换装置的操作示意图;
图5是根据本发明一个实施例的设备中的模式匹配装置的操作示意图;
图6是根据本发明一个实施例的用于并行模式匹配的方法的流程图;
图7是根据本发明另一个实施例的用于并行模式匹配的方法的流程图。
具体实施方式
下面将结合附图详细描述本发明的具体实施例。如果考虑到对某些相关现有技术的详细描述可能会混淆本发明的要点,则不会在这里提供其详细描述。在同一个实施例中,相同的附图标记用于表示执行相同功能的相同元件或元素。
下面首先,对本发明实施例中要使用的部分术语进行说明。
在本发明中,模式是指要在数据流中搜索的目标字符串,该字符串的长度是指该字符串中包含的字符数量。
无效字符是指不会在数据流中出现的字符,例如“\0”。
Mwm(S.Wu and U.Manber,″A fast algorithm for multi-patternsearching(用于多模式搜索的快速算法),″Techinical Report TR-94-17.Department of Computer Science,University of Arizona,1994)算法是一种著名的多模式匹配算法,其具有良好的平均性能,最知名的SNORT(the de factostandard for intrusion detection/prevention(用于入侵检测的实际标准),见“http://www.snort.org”)在其用于模式匹配的最新版本中采用了Mwm作为缺省算法。在Mwm算法中,根据前两个字节将多个模式哈稀(hash)成多个组。
本发明中提出的新的设备和方法是将数据流与多个模式同时进行匹配,并且将哈稀组中的比较操作从标量方式转换为向量方式。也就是说,将顺序执行的代码转换为并行执行。
下面参照图3来说明根据本发明实施例的用于并行模式匹配的设备的结构和操作。
如图3所示,根据本发明一个实施例的设备300包括转换装置312、存储装置314、模式匹配装置316、和校验装置318。
转换装置312用于将多个模式形成为模式组,并连接该模式组中的每个模式的第i个字符,形成第i字符向量,其中i=1,2,3,...N,并且N是该模式组中具有最多字符的模式所包含的字符数量。存储装置314用于将经过转换装置312处理的模式组以向量为单元进行顺序存储,其中第1字符向量中的每个字符被对齐到存储装置314的以向量长度为单位的字符边界处。根据本发明的一个实施例,该向量长度包括的字符数量是16的倍数。16的倍数的字符向量长度不对本发明的技术范围构成限制,该向量长度还可以具有其它数目的字符。
模式匹配装置316用于从第1字符向量开始,分别将第i字符向量中的每个字符与数据流中的第i字符进行比较,并用第i比特串来表示第i字符向量与数据流中的第i字符的比较结果。如果第i比特串中的第j比特为“1”,表示第i字符向量中的第j个字符与数据流中的第i个字符相匹配,相反如果该比特为“0”,则表示不匹配,其中j=1,2,3,...M,并且M是该模式组中该模式的数量。
校验装置318用于将各个比特串中与各个模式对应的比特的值相加,并将相加值与相应模式的长度进行比较,其中如果该相加值等于该模式的长度,则表明该模式与该数据流中的预定字符串匹配,否则为不匹配。
图3所示设备300的构成,即包括转换装置312、存储装置314、模式匹配装置316、和校验装置318不对本发明的技术方案构成限制。例如,根据另一个实施例的设备300’(未示出)可以只包括转换装置和模式匹配装置,其中转换装置用于将多个模式形成为模式组,并连接该模式组中的每个模式的第i个字符,形成第i字符向量,其中i=1,2,3,...N,N是该模式组中具有最多字符的模式所包含的字符数量;以及模式匹配装置用于从第1字符向量开始,分别将第i字符向量中的每个字符与数据流中的第i字符进行比较,以进行并行模式匹配。
另外,尽管在图3中未示出,根据本发明实施例的用于并行模式匹配的设备300还可以包括:中央处理单元(CPU),用于执行相关的程序,以处理各种数据,并控制设备300中的各个部件的操作;只读存储器(ROM),用于存储CPU进行各种处理和控制所需的各种程序;随机存取存储器(RAM),用于存储CPU在处理和控制过程中临时产生的中间数据;输入/输出(I/O)部件,用于与外部设备(未示出)连接,以在外部设备和本发明的设备300之间传输各种数据;以及用户接口(I/F)部件,包括键盘、鼠标,以及可以用各种显示装置或声音装置实现的与用户进行交互操作的其它部件。
下面分别参照图4和图5说明根据本发明实施例的转换装置312、存储装置314、模式匹配装置316、和校验装置318的操作。
图4是根据本发明一个实施例的并行模式匹配设备中的转换装置312的操作示意图。
在本发明的一个实施例中,利用Mwm算法,根据前两个字节将多个模式哈稀(hash)成多个组(可以有216个组)。在其中的一个哈稀组中,每个模式的第一个字符相同,并且每个模式的第二个字符也相同。如图4中的(a)所示,其中的(1)、(2)、(3)、(4)、...、(P)分别代表不同的模式,它们放在一起构成了一个哈稀组。这个哈稀组中的每个模式的第一个字符都是“b”,每个模式的第二个字符都是“a”。
在转换装置312中,将上述多个模式基于其长度的大小进行排列,即将长度相近的模式排列在相互邻近的位置,其可以按照从大到小的方式排列,也可以按照从小到大的方式排列。然后,以16个模式为一组,按顺序将上述哈稀组中的多个模式再分为多个模式组。也就是说,该转换装置312将多个模式中字符数量最接近的模式分在同一个模式组中,以减少由填充技术引入的数据。如图4中的(2)所示。
根据本发明的一个实施例,在特定的模式组中,存在各个模式的长度(字符数量)不一致的情况。在这种情况下,将该模式组中字符数量较少的各个模式的后部填入适当数量的无效字符,使其字符数量与该模式组中最长的模式所包含的字符数量一致。另外,在将哈稀组分为模式组时,如果一个哈稀组中的模式数量不能被16整除,也就是说,某个模式组中可能不足16个模式,在这种情况下,通过填入无效字符来进行补充,使其达到16个模式。该无效字符例如可以是“\0”。
例如,假设一个哈稀组中有55个模式。再将这55个模式分为四个模式组,前三个模式组的每个中均有16个模式,而第四个模式组中只有7个模式。这样,在第四个模式组中,利用无效字符“\0”来填充,以形成另外9个模式,所填充的长度等于第四个模式组中最长模式的长度。
根据本发明的一个实施例,转换装置312将一个模式组中的每个模式的第1个字符连接起来,形成第1字符向量,并将其中的第2个字符连接起来,形成第2字符向量,依次类推,直至将该模式组中的每个模式的最后一个字符连接起来,形成最后一个字符向量。也就是说,转换装置312将一个模式组中的每个模式的第i个字符连接起来,形成第i字符向量,其中i=1,2,3,...N,其中N是该模式组中具有最多字符的模式所包含的字符数量。例如图4中的(c)所示,其中将b,b,...b(共16个)连接起来作为第1字符向量,将a,a,...a(共16个)连接起来作为第2字符向量,将a,v,...a(共16个)连接起来作为第3字符向量,以及将y,z,...*(共16个)连接起来作为最后一个字符向量。
根据本发明的另一个实施例,在存储装置314中,以向量为单元对经过转换装置312处理的模式组进行顺序存储,并且使第1字符向量中的每个字符在存储装置314的以向量长度为单位的字符边界处对齐。例如图4中的(c)所示,将第1字符向量b,b,...b(在本实施例中有16个)作为一个单元存储在一起,并将第1字符向量中的每个字符b,b,...b(在本实施例中有16个)对齐在存储装置314的16字符边界处,将第2字符向量a,a,...a(在本实施例中有16个)作为一个单元存储在一起,将第3字符向量a,v,...a(在本实施例中有16个)作为一个单元存储在一起,以及将最后一个字符向量y,z,...*(在本实施例中有16个)作为一个单元存储在一起。
图5是根据本发明一个实施例的用于并行模式匹配的设备中的模式匹配装置316的操作示意图。
根据本发明的一个实施例,模式匹配装置316执行SIMD指令,以将模式组中的各个模式与数据流进行匹配。如前所述,在经过转换装置312的处理后,模式组的16个模式中的每一个的第一个字符(共16个字符)分别对齐到了存储器的16字符边界。
根据本发明的一个实施例,模式匹配装置316将该模式组中的第一字符向量(例如b,b,...b)与数据流的第一个字符(例如b)比较,然后将下一个字符向量(例如a,a,...a)与数据流中的下一个字符(例如a)比较,直到完成所有字符向量与数据流中的相应字符的比较。
在上述比较过程中,用16比特的字符串表示第1字符向量与数据流中的第1个字符的比较结果,如图5中的数据流下方的比特串“1111......1”所示。同样,分别用16比特的字符串表示每个字符向量与数据流中的相应字符的比较结果,如图5中的数据流下方的其它比特串“1111......1”、“1001......1”、...“0001......0”所示。
如果字符向量中的某个字符与数据流中的相应字符不同,则将表示该字符向量的比特串中的相应位置的比特设置为“0”,相反,如果字符向量中的某个字符与数据流中的相应字符相同,则将表示该字符向量的比特串中的相应位置的比特设置为“1”。如图5所示,例如,模式组中的第3字符向量是“a,c,c,a,...a”,而数据流中的第3个字符是“a”。这样,由于第3字符向量“a,c,c,a,...a”中的“a”与数据流中的第3个字符“a”相同,所以,在代表该字符向量的比特串(第3个比特串)中与第3字符向量“a,c,c,a,...a”中“a”的位置相对应的位置设置值“1”;相反,由于第3字符向量“a,c,c,a,...a”中的“c”与数据流中的第3个字符“a”不相同,所以,在代表该字符向量的比特串(第3个比特串)中与第3字符向量“a,c,c,a,...a”中“c”的位置相对应的位置设置值“0”。由此,形成了代表第3字符向量的比较结果的比特串“1001......1”。
因此,也可以简单地说,用第i比特串来表示第i字符向量与数据流中的第i字符的比较结果,并且其中,如果第i比特串中的第j比特为“1”,表示第i字符向量中的第j个字符与数据流中的第i个字符相匹配,相反如果该比特为“0”,则表示不匹配,其中j=1,2,3,...M,并且M是该模式组中该模式的数量,在本实施例中M是16。
上述数字16不对本发明的技术范围构成限制,上述字符串的长度(比特数)需要与模式组中的模式的数量相同。
另外,在图5中的(a)的每个模式的后方示出了该模式的长度,例如第一个“8”表示第一个模式的长度是8个字符,例如“7”表示最后一个模式的长度是7个字符。
根据本发明一个实施例,校验装置318将各个比特串中表示同一模式的所有比特的值相加,在图5中表现为:将各个比特串中的相应比特沿着横向方向相加,由此形成一个相加的结果值,如图5中的(b)的右侧的数值所示。如果相加的结果值与该模式的长度相等,则表示该模式与数据流中的相应字符串匹配。相反,如果相加的结果值与该模式的长度不相等,则表示该模式与数据流中的相应字符串不匹配。
如图5所示,各个模式的实际长度分别是“8,8,8,8,...7”,而将比较后的比特串的值相加后的结果值分别为“7,3,3,8,...7”。在上述两组数值中,如通过特殊表示所示出的,其中第4个和最后一个数值分别相等,由此可知,该模式组中的第4个模式和最后一个模式在被比较的数据流中分别有对应的匹配字符串。
下面参照图6来说明根据本发明一个实施例的用于并行模式匹配的方法的流程图。
如图6所示,在步骤S600,根据本发明实施例的转换装置312将多个模式形成为模式组,并连接该模式组中的每个模式的第i个字符,以形成第i字符向量,其中i=1,2,3,...N,N是该模式组中具有最多字符的模式所包含的字符数量。然后,处理进行到步骤S602。
在步骤S602,根据本发明实施例的模式匹配装置316从第1字符向量开始,分别将第i字符向量中的每个字符与数据流中的第i字符进行比较,以进行并行模式匹配。
下面参照图7来说明根据本发明另一个实施例的用于并行模式匹配的方法的流程图。
如图7所示,在步骤S700,根据本发明实施例的转换装置312将多个模式形成为模式组。在本发明的另一个实施例中,该模式组的数量大于或等于2,并且将该多个模式中字符数量相近的模式分在同一个模式组中。并且,该多个模式中每个模式的第一个字符相同,并且每个模式的第二个字符也相同。
在本发明的另一个实施例中,转换装置312将该模式组中字符数量较少的各个模式的后部填入相应数量的无效字符,以使其字符数量与该模式组中具有最多字符数量的模式的字符数量相等。另外,该模式组包括16个模式,并且如果该模式组不足16个模式,则通过填入无效字符进行补充。
接下来,在步骤S702,转换装置312连接该模式组中的每个模式的第i个字符,形成第i字符向量,其中i=1,2,3,...N,并且N是该模式组中具有最多字符的模式所包含的字符数量。
接下来,在步骤S704,转换装置312将经过处理的模式组以向量为单元顺序存储在存储装置314中,其中第1字符向量中的每个字符被对齐到存储装置的以向量长度为单位的字符边界处。
接下来,在步骤S706,根据本发明实施例的模式匹配装置316从第1字符向量开始,分别将第i字符向量中的每个字符与数据流中的第i字符进行比较。
根据本发明的一个实施例,在匹配步骤中,用第i比特串来表示第i字符向量与数据流中的第i字符的比较结果,并且其中,如果第i比特串中的第j比特为“1”,表示第i字符向量中的第j个字符与数据流中的第i个字符相匹配,相反如果该比特为“0”,则表示不匹配,其中j=1,2,3,...M,并且M是该模式组中该模式的数量。
接下来,在步骤S708.根据本发明实施例的校验装置318将各个比特串中与各个模式对应的比特的值相加,并将相加值与相应模式的长度进行比较,其中如果该相加值等于该模式的长度,则表明该模式与该数据流中的预定字符串匹配,否则为不匹配。
以上描述的每个模式组中包含16个模式不对本发明的技术范围构成限制,本发明中的每个模式组中可以包含任意数量的模式。
以上描述的无效字符“\0”不对本发明的技术范围构成限制,本发明中可以使用其它的无效字符,是要其不会出现的数据流中即可。
以上分别结合附图描述了本发明的用于并行模式匹配的设备和方法。
通过IBM Cell/B.E.对本发明的方法和现有技术(标量方法)的方法进行了验证,验证条件是:使用MIT DARPA Intrusion Detection Data Sets(即MITDARPA入侵检测数据集,见“http://www.ll.mit.edu/IST/ideval /data/2000/2000_data_index.html”)的通信量追踪源针对Snort模式组,利用Mwm算法的不同模式匹配线程数,该追踪源包含1,000,000个数据流,其长度从1字节到3M字节,该模式组包含16,571个模式,模式的长度从1字节到108字节。在这种情况下,传统的标量方法的处理性能是19Mbps,而本发明的向量方法的性能是150Mbps。
另外需要说明的是,本发明的实施例可以通过硬件、软件、固件或它们之间结合的方式来实现,其实现方式不对本发明的技术范围构成限制。
本发明实施例中的各个功能元件(单元)相互之间的连接关系不对本发明的范围构成限制,其中的一个或多个功能元件可以包括或连接于其它任意的功能元件。
虽然上面已经结合附图示出并描述了本发明的一些实施例,但是本领域的技术人员应当理解,在不偏离本发明的原则和精神的情况下,可以对这些实施例进行变化和修改,但它们仍然落在本发明的权利要求及其等价物的范围之内。
Claims (11)
1.一种用于并行模式匹配的设备,包括:
转换装置,用于将多个模式形成为模式组,并连接所述模式组中的每个模式的第i个字符,形成第i字符向量,其中i=1,2,3,...N,N是所述模式组中具有最多字符的模式所包含的字符数量;以及
匹配装置,用于从第1字符向量开始,分别将第i字符向量中的每个字符与数据流中的第i字符进行比较,以进行并行模式匹配。
2.如权利要求1所述的设备,其中所述模式组的数量大于或等于2,并且所述转换装置将多个模式中字符数量相近的模式分在同一个模式组中。
3.如权利要求1所述的设备,其中所述转换装置将所述模式组中字符数量小于N的各个模式的后部填入相应数量的无效字符,使其字符数量达到N。
4.如权利要求1-3中任一所述的设备,还包括存储装置,用于将经过转换装置处理的模式组以向量为单元进行顺序存储,其中第1字符向量中的每个字符被对齐到存储装置的以向量长度为单位的字符边界处。
5.如权利要求1-3中任一所述的设备,其中用第i比特串来表示第i字符向量与数据流中的第i字符的比较结果,其中,如果第i比特串中的第j比特为“1”,表示第i字符向量中的第j个字符与数据流中的第i个字符相匹配,相反如果该比特为“0”,则表示不匹配,其中j=1,2,3,...M,并且M是所述模式组中所述模式的数量。
6.如权利要求5所述的设备,还包括校验装置,用于将各个比特串中与各个模式对应的比特的值相加,并将相加值与相应模式的长度进行比较,其中如果所述相加值等于所述模式的长度,则表明所述模式与所述数据流中的预定字符串匹配,否则为不匹配。
7.如权利要求1-3中任一所述的设备,其中每个模式组包括的模式的数量是16的倍数,并且如果不足16的倍数,则通过填入无效字符进行补充。
8.一种用于并行模式匹配的方法,包括步骤:
转换步骤,将多个模式形成为模式组,并连接所述模式组中的每个模式的第i个字符,以形成第i字符向量,其中i=1,2,3,...N,N是所述模式组中具有最多字符的模式所包含的字符数量;以及
匹配步骤,从第1字符向量开始,分别将第i字符向量中的每个字符与数据流中的第i字符进行比较,以进行并行模式匹配。
9.如权利要求8所述的方法,还包括存储步骤,将经过转换步骤处理的模式组以向量为单元顺序存储在存储装置中,其中第1字符向量中的每个字符被对齐到存储装置的以向量长度为单位的字符边界处。
10.如权利要求8所述的方法,其中用第i比特串来表示第i字符向量与数据流中的第i字符的比较结果,并且其中,如果第i比特串中的第j比特为“1”,则表示第i字符向量中的第j个字符与数据流中的第i个字符相匹配,相反如果该比特为“0”,则表示不匹配,其中j=1,2,3,...M,并且M是所述模式组中所述模式的数量。
11.如权利要求10所述的方法,还包括校验步骤,将各个比特串中与各个模式对应的比特的值相加,并将相加值与相应模式的长度进行比较,其中如果所述相加值等于所述模式的长度,则表明所述模式与所述数据流中的预定字符串匹配,否则为不匹配。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008100955676A CN101572693A (zh) | 2008-04-29 | 2008-04-29 | 用于并行模式匹配的设备和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008100955676A CN101572693A (zh) | 2008-04-29 | 2008-04-29 | 用于并行模式匹配的设备和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101572693A true CN101572693A (zh) | 2009-11-04 |
Family
ID=41231930
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008100955676A Pending CN101572693A (zh) | 2008-04-29 | 2008-04-29 | 用于并行模式匹配的设备和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101572693A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102110283A (zh) * | 2009-12-23 | 2011-06-29 | 英特尔公司 | 并行且矢量化的gilbert-johnson-keerthi图形处理 |
CN102983936A (zh) * | 2011-06-09 | 2013-03-20 | 川崎微电子股份有限公司 | 接收设备 |
CN103559266A (zh) * | 2013-11-04 | 2014-02-05 | 中国科学院声学研究所 | 多模式匹配方法及装置 |
CN104731561A (zh) * | 2013-12-18 | 2015-06-24 | 想象技术有限公司 | 在simd处理单元中的任务执行 |
CN107102998A (zh) * | 2016-02-22 | 2017-08-29 | 阿里巴巴集团控股有限公司 | 一种字符串距离计算方法和装置 |
-
2008
- 2008-04-29 CN CNA2008100955676A patent/CN101572693A/zh active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102110283A (zh) * | 2009-12-23 | 2011-06-29 | 英特尔公司 | 并行且矢量化的gilbert-johnson-keerthi图形处理 |
CN102110283B (zh) * | 2009-12-23 | 2014-12-10 | 英特尔公司 | 并行且矢量化的gilbert-johnson-keerthi图形处理 |
CN102983936A (zh) * | 2011-06-09 | 2013-03-20 | 川崎微电子股份有限公司 | 接收设备 |
CN102983936B (zh) * | 2011-06-09 | 2016-12-07 | 株式会社巨晶片 | 接收设备 |
CN103559266A (zh) * | 2013-11-04 | 2014-02-05 | 中国科学院声学研究所 | 多模式匹配方法及装置 |
CN103559266B (zh) * | 2013-11-04 | 2017-03-22 | 中国科学院声学研究所 | 多模式匹配方法及装置 |
CN104731561A (zh) * | 2013-12-18 | 2015-06-24 | 想象技术有限公司 | 在simd处理单元中的任务执行 |
CN107102998A (zh) * | 2016-02-22 | 2017-08-29 | 阿里巴巴集团控股有限公司 | 一种字符串距离计算方法和装置 |
US11256756B2 (en) | 2016-02-22 | 2022-02-22 | Advanced New Technologies Co., Ltd. | Character string distance calculation method and device |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9864584B2 (en) | Code generator for programmable network devices | |
CN104040542B (zh) | 用于在易失性存储器内保持关系型数据的列向量的技术 | |
CN110599169B (zh) | 数据处理方法、装置、终端及介质 | |
US7725678B2 (en) | Method and apparatus for producing an index vector for use in performing a vector permute operation | |
US11178212B2 (en) | Compressing and transmitting structured information | |
CN104904167A (zh) | 通信网络中对于分组处理的高性能基于哈希的查找 | |
CN101572693A (zh) | 用于并行模式匹配的设备和方法 | |
CN103975533A (zh) | 可变长度编码的数据流的高带宽解压 | |
CN101635611B (zh) | 一种信道译码方法和装置 | |
CN108768656B (zh) | 一种基于哈希算法的数据校验方法 | |
CN109889205A (zh) | 编码方法及***、解码方法及***、编解码方法及*** | |
CN103248369A (zh) | 基于fpga的压缩***及其方法 | |
CN109587483A (zh) | 码流提取模块 | |
CN105264488A (zh) | 使用数组对来合并有序列表 | |
CN108631787A (zh) | 数据编码方法、装置、计算机设备及存储介质 | |
CN109800337A (zh) | 一种适用于大字母表的多模式正则匹配算法 | |
CN110489606B (zh) | 一种分组Hilbert编码和解码方法 | |
CN104077272B (zh) | 一种字典压缩的方法和装置 | |
CN109635955A (zh) | 一种特征组合方法、装置及设备 | |
CN110472385A (zh) | 一种口令破解方法及装置 | |
WO2020114283A1 (zh) | 数据处理方法及装置 | |
CN108829930B (zh) | 三维数字化工艺设计mbd模型的轻量化方法 | |
CN109510627B (zh) | 一种整数编码方法、装置和存储介质 | |
Petersen et al. | The Euler adic dynamical system and path counts in the Euler graph | |
CN102130744A (zh) | 计算循环冗余校验码的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20091104 |