[发明专利]基于GPU计算的字符串匹配方法和系统有效
申请号: | 201310509249.0 | 申请日: | 2013-10-23 |
公开(公告)号: | CN103559018A | 公开(公告)日: | 2014-02-05 |
发明(设计)人: | 侯智瀚;杨枭 | 申请(专利权)人: | 东软集团股份有限公司 |
主分类号: | G06F9/38 | 分类号: | G06F9/38 |
代理公司: | 北京鸿元知识产权代理有限公司 11327 | 代理人: | 陈英俊 |
地址: | 110179 辽*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 gpu 计算 字符串 匹配 方法 系统 | ||
技术领域
本发明涉及信息识别技术领域,更为具体地,涉及一种基于GPU计算的字符串匹配方法和系统。
背景技术
随着网络技术的不断发展和日益丰富的网络应用,对网络的攻击方式层出不穷,因此网络安全产品也集成了越来越多的安全功能,如入侵防御系统、病毒检测、垃圾邮件检测、应用识别等,网络安全产品的应用需要以对通过的网络流量进行深度数据报文检测为基础,但是深度报文检测的模式匹配是制约整个安全产品系统性能的瓶颈。
随着GPU(Graphic Processing Unit,图形处理器)技术的发展,GPU已经成为适合高并行性和计算量大的应用处理核心。由CPU和GPU组成的异构计算机为计算领域带来了一场革命。通过将工作负载的不同部分匹配到最适合的处理器,可以极大地提升计算机的性能,并且GPU在低成本的并行计算和良好的扩展性等方面的优点使其成为安全产品系统中一种字符串匹配的新的执行模型。
图1示出了现有的基于GPU的字符串匹配方法流程。
如图1所示,现有的基于GPU的字符串匹配方法流程包括:首先对特征串集合进行预处理,形成通常是二维数组的自动机状态转换表,并将该表拷贝到GPU全局存储器中且与纹理存储器绑定,使用带有Cache(高速缓冲存储器)的纹理存储器可以提高访存的效率,并在主机内存中采用双缓冲区机制分别用于存储积攒的网络数据报文和复制到GPU存储器中;然后启动大量线程对数据报文进行字符串匹配处理,数据报文存储在GPU全局存储器或纹理存储器中(或再从GPU全局存储器拷贝到共享存储器中以降低访存延时)接着在GPU中执行匹配函数;最终将匹配结果从GPU存储器复制到CPU主存中。
在国内外已有的基于GPU的字符串匹配方法中,在GPU上进行字符串匹配主要有两种方法,第一种是数据并行,比如专利申请号为201010539214.8的中国专利申请所公开的基于GPU的高速网络报文内容检测方法,该专利申请披露了该方法执行的方式,将数据报文分成多个片段,然后每个片段启动一个线程执行字符串匹配工作;第二种是任务并行,比如台湾清华大学的Cheng-Hung Lin,Chen-Hsiung Liu,Lung-Sheng Chien和Shih-Chieh Chang四人在ieee上发表的论文《Accelerating Pattern Matching Using a Novel Parallel Algorithm on GPUs》(2012年12月),其中论述了以下执行方式:在GPU上启动与数据报文字符长度相等数量的线程,每个字符都作为匹配工作的开始位置,对应着一个线程。
上述两种进行字符串匹配的方法各自存在着不足。
在数据并行方式中,采用每个线程匹配等长的数据报文片段,因此每个线程处理的字符位置间隔较大,不利于集中访存,对于有Cache机制就会造成大量Cache的换进换出操作,增加了匹配过程中的访存开销。并且需要较大的数据报文才能启动足够数量的线程发挥GPU并行处理的优势。字符串匹配算法分支较多,多模字符串匹配算法在匹配失败时需要回退处理,由于GPU较差的逻辑处理能力,多模字符串匹配算法的执行流程包含过多的分支将造成GPU处理单元执行效率降低。同时,还需要考虑“边缘检测”的情况,即匹配命中的数据位于两个片段分片的位置。
在任务并行方式中,每个字符都作为起始偏移,启动一个线程进行匹配。每字节的任务并行方式会启动大量的线程,即使有的线程执行时间较短,但是大量线程的启动也会有很大的时间开销。并且,每个启动的线程至少都会有两次访存操作,包括:从待匹配数据读值以及查找状态转换表。所以线程增加的同时也增加了内存访问的次数,进而影响性能。最后,每个线程都会返回一个结果,那么将匹配结果复制到CPU主存也会占用很多的时间。
因此,以上两种现有的进行字符串匹配的方法都各自存在着效率不高的问题。
发明内容
鉴于上述问题,本发明的目的是提供一种基于GPU计算的字符串匹配方法和系统,以解决cache利用率低、启动线程数量多和访存开销大等问题,从而提升特征字符串匹配过程的性能。
本发明提供的基于GPU计算的字符串匹配方法,包括CPU预处理阶段和GPU匹配阶段;其中,
在CPU预处理阶段的过程中:对特征字符串进行预处理;其中,首先构建位向量掩码表,并根据位向量掩码表生成快速过滤子表;将位向量掩码表和快速过滤子表拷贝到GPU全局存储器;
分别在CPU主存和GPU全局存储器上分配待匹配数据缓存和结果缓存;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东软集团股份有限公司,未经东软集团股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310509249.0/2.html,转载请声明来源钻瓜专利网。