字符串匹配的方法、设备和异构计算系统的制作方法

文档序号:9646568阅读:434来源:国知局
字符串匹配的方法、设备和异构计算系统的制作方法
【技术领域】
[0001]本发明实施例涉及通信技术,尤其涉及一种字符串匹配的方法、设备和异构计算系统。
【背景技术】
[0002]多模式字符串匹配算法广泛应用在以字符串模式匹配为基础的网络入侵检测系统(Network Intrus1n Detect1n System,简称 NIDS)、深度包检测(Deep packetinspect1n,简称DPI)等系统中。模式匹配的目的是在目标串中找出与模式串相同的子串,多模式匹配就是在目标串中一次匹配多个模式串。NIDS系统通过多模式匹配算法能够检测出网络数据包中的入侵数据包,然后,对入侵数据包采取主动反应或发出警报。多模式字符串匹配占用了整个NIDS系统大部分的中央处理器(Central Processing Unit,简称CPU)处理时间。例如在Snort中,多模式字符串匹配占用的CPU处理时间达到70%以上,多模式字符串匹配的速度成了整个系统处理速度的瓶颈,所以需要提高多模式字符串匹配引擎的匹配速度,以应付更大的网络流量的处理。并行化是对字符串匹配进行加速的常用方法,通过并行化可以充分利用多核CPU的多个核心,从而提高字符串匹配的速度,但是CPU的处理能力有限,无法满足字符串匹配的速度要求。
[0003]为了进一步提高字符串匹配的速度,现有技术中,利用图形处理器(GraphicsProcessing Unit,简称GPU)分担一部分字符串匹配任务,CPU和GPU协同工作称为异构计算,GPU由数以千计的更小、更高效的核心组成,这些核心专为同时处理多个任务而设计,因此,GPU也具有很强的运算能力。图1为现有技术中异构计算环境下字符串模式匹配的流程示意图,如图1所示,首先,CPU对模式串集合进行预处理,然后,将被匹配的目标字符串分段,GPU的每个GPU核匹配一段目标字符串,GPU将处理结果发送给CPU,CPU分析与处理最终匹配结果。上述方式中,GPU的核被划分为多个计算单元,每个计算单元包括多个处理单元,每个处理单元即一个GPU的核心。计算单元内部采用单指令多数据(Singleinstruct1n, multiple data,简称SIMD)方式,使得计算单元内部的多个处理单元在同一时刻执行相同的指令处理不同的数据。现有的多模式字符串匹配算法中,当处理单元判断自动机的当前状态为匹配态时,处理单元还需要存储匹配串的当前位置、当前状态的编号等信息,而当处理单元判断自动机的当前状态为非匹配态时,处理单元不再执行存储匹配串的当前位置、当前状态的编号等后续操作,由于在匹配态下处理单元要执行很多额外的操作,所以匹配态的执行时间远大于非匹配态的执行时间。因此,当计算单元内的一个处理单元执行匹配态时,而该计算单元内的其他处理单元执行非匹配态时,其他处理单元需要等待该处理单元执行完匹配态后,才能跳转到下一个状态,使得GPU的匹配速度低。

【发明内容】

[0004]本发明实施例提供一种字符串匹配的方法、设备和异构计算系统,以提高GPU核的匹配效率。
[0005]本发明第一方面提供一种字符串匹配的方法,所述方法应用于异构计算系统中,所述异构计算系统包括:中央处理单元CPU和图形处理器GPU,所述GPU包括多个计算单元,所述多个计算单元中的每个计算单元包括多个GPU核,所述多个计算单元之间并行对数据进行处理,所述每个计算单元内部的多个GPU核之间并行对数据进行处理,所述方法包括:
[0006]所述计算单元中的每个GPU核分别获取对应的待匹配的子字符串,并将所述待匹配的子字符串输入自动机中进行第一匹配,其中,所述自动机是根据多个模式串预先生成的,所述自动机的每一个节点对应一个状态,在所述第一匹配的匹配过程中,所述计算单元中的每个GPU核在所述自动机的当前状态时,若没有匹配到模式串,则直接跳转到所述自动机的下一个状态进行匹配;
[0007]所述计算单元中的每个GPU核将第一匹配的结果发送给所述CPU,以使所述CPU根据所述计算单元中的每个GPU核的第一匹配的结果,对所述计算单元中的每个GPU核对应的待匹配的子字符串进行第二匹配。
[0008]结合本发明第一方面,在本发明第一方面的第一种可能的实现方式中,所述每个GPU核的第一匹配的结果为所述每个GPU核对应的待匹配的子字符串的匹配标志位的值,所述匹配标志位用于指示是否需要对对应的待匹配的子字符串进行所述第二匹配;
[0009]相应地,所述方法还包括:
[0010]所述计算单元中的每个GPU核根据第一匹配的结果分别更新对应的待匹配的子字符串的匹配标志位的值;
[0011]所述计算单元中的每个GPU核将第一匹配的结果发送给所述CPU,包括
[0012]所述计算单元中的每个GPU核将对应的待匹配的子字符串的匹配标志位的值发送给所述CPU。
[0013]结合本发明第一方面的第一种可能的实现方式,在本发明第一方面的第二种可能的实现方式中,所述计算单元中的每个GPU核根据第一匹配的结果分别更新对应的待匹配的子字符串的匹配标志位的值,包括:
[0014]若所述计算单元中的第一 GPU核对应的待匹配的子字符串匹配到了所述多个模式串中的至少一个模式串,则所述第一 GPU核将对应的待匹配的子字符串的匹配标志位的值更新为需要进行所述第二匹配,其中,所述第一 GPU核为所述计算单元中的任意一个GPU核;
[0015]若所述第一 GPU核对应的待匹配的子字符串没有匹配到所述多个模式串中任意一个模式串,则所述第一 GPU核将对应的待匹配的子字符串的匹配标志的值为更新为不需要进行所述第二匹配。
[0016]结合本发明第一方面的第一种可能的实现方式,在本发明第一方面的第三种可能的实现方式中,所述计算单元中的每个GPU核将对应的待匹配的子字符串的匹配标志位的值发送给所述CPU,包括:
[0017]所述计算单元中的每个GPU核将对应的待匹配的子字符串的匹配标志位的值从自己的私有内存写入所述计算单元的本地内存中;
[0018]所述计算单元将每个GPU核对应的待匹配的子字符串的匹配标志位的值从所述本地内存写入所述GPU的全局内存中,以使所述CPU从所述GPU的全局内存中将所述计算单元中的每个GPU核对应的待匹配的子字符串的匹配标志位的值读取到所述CPU的内存中。
[0019]结合本发明第一方面以及本发明第一方面的第一种至第三种可能的实现方式,在本发明第一方面的第四种可能的实现方式中,所述计算单元中的每个GPU核分别获取对应的待匹配的子字符串之前,所述方法还包括:
[0020]所述计算单元中的每个GPU核分别从所述GPU的全局内存中读取所述自动机,其中,所述自动机是所述CPU根据所述多个模式串生成并存储到所述GPU的全局内存中的。
[0021]结合本发明第一方面以及本发明第一方面的第一种至第三种可能的实现方式,在本发明第一方面的第五种可能的实现方式中,所述计算单元中的每个GPU核分别获取对应的待匹配的子字符串,包括:
[0022]所述计算单元中的每个GPU核分别从所述GPU的全局内存中将对应的待匹配的子字符串读取到自己的私有内存中。
[0023]本发明第二方面提供一种字符串匹配的方法,所述方法应用于异构计算系统中,所述异构计算系统包括:中央处理单元CPU和具有多个核的图形处理器GPU,所述GPU的多个核被划分成多个计算单元,所述多个计算单元中的每个计算单元包括多个GPU核,所述多个计算单元之间并行对数据进行处理,所述每个计算单元内部的多个GPU核之间并行对数据进行处理,所述方法包括:
[0024]所述CPU接收所述计算单元中的每个GPU核发送的第一匹配的结果,其中,所述每个GPU核发送的第一匹配的结果是所述每个GPU核根据获取的待匹配的子字符串和自动机中进行第一匹配得到的,其中,所述自动机是根据多个模式串预先生成的,所述自动机的每一个节点对应一个状态,在所述第一匹配的匹配过程中,所述计算单元中的每个GPU核在所述自动机的当前状态时,若没有匹配到模式串,则直接跳转到所述自动机的下一个状态进行匹配;
[0025]所述CPU根据所述每个GPU核的第一匹配的结果,确定是否对所述计算单元中的第一 GPU核对应的待匹配的子字符串进行第二匹配,所述第一 GPU核为所述计算单元中的任意一个GPU核;
[0026]若所述CPU确定对所述第一 GPU核对应的待匹配的子字符串进行第二匹配,则所述CPU将所述第一 GPU核对应的待匹配的子字符串输入所述自动机进行第二匹配,并记录所述第一 GPU核对应的待匹配的子字符串的匹配信息。
[0027]结合本发明第二方面,在本发明第二方面的第一种可能的实现方式中,所述每个GPU核发送的第一匹配的结果为所述每个GPU核对应的待匹配的子字符串的匹配标志位的值,其中,所述匹配标志位用于指示是否需要对对应的待匹配的子字符串进行所述第二匹配;
[0028]所述CPU根据所述计算单元中的每个GPU核的第一匹配的结果,确定是否对所述计算单元中的第一 GPU核对应的待匹配的子字符串进行第二匹配,包括:
[0029]所述CPU判断所述第一 GPU核对应的待匹配的子字符串的匹配标志位的值是否指示对所述第一 GPU核对应的待匹配的子字符串进行所述第二匹配;
[0030]若所述第一 GPU核对应的待匹配的子字符串的匹配标志位的值指示对所述第一GPU核对应的待匹配的子字符串进行所述第二匹配,则所述CPU确定对所述第一 GPU核对应的待匹配的子字符串进行所述第二匹配。
[0031]结合本发明第二方面,在本发明第二方面的第二种可能的实现方式中,所述方法还包括:
[0032]所述CPU接收待匹配的目标字符串,将所述目标字符串发送到所述GPU的全局内存中;
[0033]所述CPU按照分段规则将所述目标字符串划分成多个待匹配的子字符串,所述多个待匹配的子字符串中每一个待匹配的子字符串由所述计算单元中的一个GPU核处理。
[0034]结合本发明第二方面以及本发明第二方面的第一种和第二种可能的实现方式,在本发明第二方面的第三种可能的实现方式中,所述方法还包括:
[0035]所述CPU根据所述多个模式串生成所述自动机,并将所述自动机发送到所述GPU的全局内存中。
[0036]结合本发明第二方面以及本发明第二方面的第一种和第二种可能的实现方式,在本发明第二方面的第四种可能的实现方式中,所述第一 GPU核对应的待匹配的子字符串的匹配信息包括:所述第一 GPU核对应的待匹配的子字符串匹配到的模式串的标识、所述第一 GPU核对应的待匹配的子字符串匹配到的模式串在所述第一 GPU核对应的待匹配的子字符串中的位置信息。
[0037]本发明第三方面提供一种图形处理器GPU,所述GPU应用于异构计算系统中,所述异构计算系统包括:中央处理单元CPU和所述GPU,所述GPU包括多个计算单元,所述多个计算单元中的每个计算单元包括多个GPU核,所述多个计算单元之间并行对数据进行处理,所述每个计算单元内部的多个GPU核之间并行对数据进行处理,所述计算单元中的每个GPU核包括:
[0038]获取模块,用于获取所述GPU核对应的待匹配的
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1