CN103559018A - 基于gpu计算的字符串匹配方法和系统 - Google Patents
基于gpu计算的字符串匹配方法和系统 Download PDFInfo
- Publication number
- CN103559018A CN103559018A CN201310509249.0A CN201310509249A CN103559018A CN 103559018 A CN103559018 A CN 103559018A CN 201310509249 A CN201310509249 A CN 201310509249A CN 103559018 A CN103559018 A CN 103559018A
- Authority
- CN
- China
- Prior art keywords
- gpu
- matched
- data
- string
- matching
- 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
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种基于GPU计算的字符串匹配方法及系统,其方法包括CPU预处理阶段和GPU匹配阶段;CPU预处理阶段包括:对特征字符串进行预处理和对待匹配数据进行预处理;分别在CPU主存和GPU全局存储器上分配待匹配数据缓存和结果缓存,将预处理后的待匹配数据从CPU主存中的待匹配数据缓存中复制到GPU全局存储器中的结果缓存中保存;GPU匹配阶段包括:采用GPU多线程任务并行执行方式对每个GPU线程中的预处理后的待匹配数据分别与预处理后的特征字符串前缀和特征字符串后缀进行匹配,将匹配成功的待匹配数据与相应的特征字符串逐字进行确认。利用本发明,能够解决Cache利用率低、启动线程数量多和访存开销大等问题,提升字符串匹配过程的性能。
Description
技术领域
本发明涉及信息识别技术领域,更为具体地,涉及一种基于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 MatchingUsing a Novel Parallel Algorithm on GPUs》(2012年12月),其中论述了以下执行方式:在GPU上启动与数据报文字符长度相等数量的线程,每个字符都作为匹配工作的开始位置,对应着一个线程。
上述两种进行字符串匹配的方法各自存在着不足。
在数据并行方式中,采用每个线程匹配等长的数据报文片段,因此每个线程处理的字符位置间隔较大,不利于集中访存,对于有Cache机制就会造成大量Cache的换进换出操作,增加了匹配过程中的访存开销。并且需要较大的数据报文才能启动足够数量的线程发挥GPU并行处理的优势。字符串匹配算法分支较多,多模字符串匹配算法在匹配失败时需要回退处理,由于GPU较差的逻辑处理能力,多模字符串匹配算法的执行流程包含过多的分支将造成GPU处理单元执行效率降低。同时,还需要考虑“边缘检测”的情况,即匹配命中的数据位于两个片段分片的位置。
在任务并行方式中,每个字符都作为起始偏移,启动一个线程进行匹配。每字节的任务并行方式会启动大量的线程,即使有的线程执行时间较短,但是大量线程的启动也会有很大的时间开销。并且,每个启动的线程至少都会有两次访存操作,包括:从待匹配数据读值以及查找状态转换表。所以线程增加的同时也增加了内存访问的次数,进而影响性能。最后,每个线程都会返回一个结果,那么将匹配结果复制到CPU主存也会占用很多的时间。
因此,以上两种现有的进行字符串匹配的方法都各自存在着效率不高的问题。
发明内容
鉴于上述问题,本发明的目的是提供一种基于GPU计算的字符串匹配方法和系统,以解决cache利用率低、启动线程数量多和访存开销大等问题,从而提升特征字符串匹配过程的性能。
本发明提供的基于GPU计算的字符串匹配方法,包括CPU预处理阶段和GPU匹配阶段;其中,
在CPU预处理阶段的过程中:对特征字符串进行预处理;其中,首先构建位向量掩码表,并根据位向量掩码表生成快速过滤子表;将位向量掩码表和快速过滤子表拷贝到GPU全局存储器;
分别在CPU主存和GPU全局存储器上分配待匹配数据缓存和结果缓存;
对待匹配数据进行预处理,并将预处理后的待匹配数据从CPU主存中的待匹配数据缓存中复制到GPU全局存储器中的待匹配数据缓存中保存;
在GPU匹配阶段的过程中,根据对特征字符串进行预处理所构建的位相量掩码表以及生成的快速过滤子表,采用GPU多线程任务并行执行方式对每个GPU线程中预处理后的待匹配数据分别与预处理后的特征字符串前缀和特征字符串后缀进行匹配;
将匹配成功的预处理后的待匹配数据与相应的特征字符串逐字进行确认,并保存在结果缓存中,最后将结果缓存的数据拷贝到CPU主存中的结果缓存中。
此外,优选的方案是,在采用GPU多线程任务并行执行方式对预处理后的待匹配数据与特征字符串前缀和特征字符串后缀分别进行匹配的过程中,
根据每个GPU线程的标识确定预处理后的待匹配数据的起始偏移,根据第一特征字符串前缀的长度和第二特征字符串前缀的长度确定GPU线程的匹配窗口;
从距离预处理后的待匹配数据的起始偏移的第一特征字符串前缀长度的位置上,获取一个算法字符,根据算法字符在所述纹理存储器中查到快速过滤子表的相应比特位,根据所述相应比特位判断GPU线程是否继续执行;如果相应比特位为0,结束GPU线程执行,如果相应比特位为1,则GPU线程继续执行;
如果相应比特位为1时,根据算法字符在纹理存储器中查到所述位向量掩码表获取一个位向量掩码值,将位向量掩码值设为初始状态向量,以算法字符的位置作为起点,在GPU线程的匹配窗口内正向依次获取算法字符,以位并行方式进行向量更新,在向量更新过程中,预处理后的待匹配数据与特征字符串后缀进行匹配;
根据特征字符串后缀的匹配结果,将在以位并行方式进行向量更新中获取的最后的状态向量作为初始向量,以距离预处理后的待匹配数据的起始偏移的第二特征字符串前缀长度的位置作为起点,在GPU线程的匹配窗口内反向依次获取算法字符,以位并行方式进行反向向量更新;在反向向量更新中,预处理后的待匹配数据与特征字符串前缀进行匹配。
此外,本发明还提供一种基于GPU计算的字符串匹配系统,包括CPU预处理单元、GPU匹配单元和确认存储单元;其中,
CPU预处理单元包括:特征字符串预处理单元、缓存分配单元和待匹配数据预处理单元;
特征字符串预处理单元,用于对特征字符串进行预处理;首先构建位向量掩码表,并根据位向量掩码表生成快速过滤子表;然后将位向量掩码表和快速过滤子表拷贝到GPU全局存储器;
缓存分配单元,用于分别在CPU主存和所述GPU全局存储器上分配待匹配数据缓存和结果缓存;
待匹配数据预处理单元,用于对待匹配数据进行预处理,并将预处理后的待匹配数据从CPU主存中的待匹配数据缓存中复制到GPU全局存储器中的待匹配数据缓存中保存;
GPU匹配单元,用于根据对特征字符串进行预处理所构建的位相量掩码表以及生成的快速过滤子表,采用GPU多线程任务并行执行方式对每个GPU线程中的预处理后的待匹配数据分别与预处理后的特征字符串前缀和特征字符串后缀进行匹配;
确认存储单元,用于将匹配成功的预处理后的待匹配数据与相应的特征字符串逐字进行确认,并保存在结果缓存中,最后将结果的数据缓存拷贝到CPU主存中的结果缓存中。
从上面的技术方案可知,本发明的基于GPU计算的字符串匹配方法及系统,能够取得以下有益效果:
1)采用多线程GPU任务并行方式执行,相邻的线程匹配位置相近的数据,能够增大线程读取待匹配数据缓存时的Cache利用率;同时利用相邻线程的匹配窗口有部分数据重叠,无须考虑空字符串前缀匹配,能够减少每个线程内部的分支及流程,进而能够提高匹配效率;
2)利用子串匹配算法的特点,每次都以最短特征串所包含的算法字符数为间隔启动一个线程,即相邻的两个匹配窗口的起始偏移的间隔是一个最短特征串中所包含的算法字符数,能够减少整个匹配过程启动的线程总数;
3)在GPU上采用了基于过滤的位并行算法,并进行优化,能够减少状态表的空间占用,能够利于集中访存,能够提高查表过程中的cache命中率。
为了实现上述以及相关目的,本发明的一个或多个方面包括后面将详细说明并在权利要求中特别指出的特征。下面的说明以及附图详细说明了本发明的某些示例性方面。然而,这些方面指示的仅仅是可使用本发明的原理的各种方式中的一些方式。此外,本发明旨在包括所有这些方面以及它们的等同物。
附图说明
通过参考以下结合附图的说明及权利要求书的内容,并且随着对本发明的更全面理解,本发明的其它目的及结果将更加明白及易于理解。在附图中:
图1为现有的基于GPU的字符串匹配方法流程图;
图2为根据本发明实施例的基于GPU计算的字符串匹配方法流程图;
图3为根据本发明实施例的每个GPU线程对预处理后的待匹配数据与特征字符串进行匹配方法流程图;
图4为根据本发明实施例的向量更新方法流程图;
图5为根据本发明实施例的反向向量更新方法流程图;
图6为根据本发明实施例的基于GPU计算的字符串匹配系统逻辑结构图。
在所有附图中相同的标号指示相似或相应的特征或功能。
具体实施方式
在下面的描述中,出于说明的目的,为了提供对一个或多个实施例的全面理解,阐述了许多具体细节。然而,很明显,也可以在没有这些具体细节的情况下实现这些实施例。
基于前述两种方法都各自存在匹配效率不高的问题,本发明的技术方案采用相邻线程来匹配位置相近的数据,增加Cache的命中,又通过一定间距的窗口划分,减少启动的线程总数;同时利用相邻线程的匹配窗口有部分数据重叠,无须考虑空字符串前缀匹配,能够减少每个线程内部的分支及流程,总体上能够提高GPU的匹配效率。
本发明基于GPU计算的字符串匹配方法分为两个阶段:CPU预处理阶段和GPU匹配阶段。CPU处理阶段负责前期准备工作,缓冲来自网卡的数据报文(待匹配数据),对数据报文进行预处理包括:剥离IP头和提取数据部分,待提取数据部分总大小达到设定要求后复制到GPU全局存储器中;再对特征字符串匹配算法进行预处理,首先根据模式串生成字符串匹配算法的状态转移表,并也复制到GPU全局存储器中;在CPU主存中,预先分配用于存储GPU匹配结果的内存,长度为数据报文的字节长度,宽度为1字节,待GPU完成匹配后将GPU匹配结果复制到该块内存中。
GPU匹配阶段,主要执行基于GPU的特征字符串匹配算法,运行在GPU上的程序称为kernel函数,kernel函数以线程网格(Grid)的形式组成,每个线程网格由若干个线程块(block)组成,而每个block又由若干个线程(thread)组成,因此kernel函数在GPU都是以多线程并发方式执行的,每个线程针对待匹配数据中的不同位置单独执行字符串匹配算法,每个线程都有自己独立的全局线程标识id。
需要说明的是,在本发明中提到的第一特征字符串皆为最短特征字符串,第二特征字符串皆为最长特征字符串。
以下将结合附图对本发明的具体实施例进行详细描述。
图2示出了根据本发明实施例的基于GPU计算的字符串匹配方法流程。如图2所示,本发明提供的基于GPU计算的字符串匹配方法,包括CPU预处理阶段和GPU匹配阶段。
在CPU预处理阶段的过程中,S210:对特征字符串进行预处理;其中,首先构建位向量掩码表,并根据位向量掩码表生成快速过滤子表;将位向量掩码表和快速过滤子表拷贝到GPU全局存储器。
S220:分别在CPU主存和GPU全局存储器上分配待匹配数据缓存和结果缓存。
S230:对待匹配数据进行预处理,并将预处理后的待匹配数据从CPU主存中的待匹配数据缓存中复制到GPU全局存储器中的带匹配数据缓存中保存。
在GPU匹配阶段的过程中,S240:根据对特征字符串进行预处理所构建的位相量掩码表以及生成的快速过滤子表,采用GPU多线程任务并行执行方式对每个GPU线程中的预处理后的待匹配数据分别与预处理后的特征字符串前缀和特征字符串后缀进行匹配。
S250:将匹配成功的预处理后的待匹配数据与相应的特征字符串逐字进行确认,并保存在结果缓存中,最后将结果缓存的数据拷贝到CPU主存中的结果缓存中。
上述步骤S210至步骤S230为CPU预处理阶段的过程,步骤S240至步骤S250为GPU匹配阶段的过程。
具体地,作为示例,在上述步骤S210对特征字符串进行预处理的过程中,以位并行过滤算法预处理方式构建位向量掩码表,具体为,首先确定并分配位向量掩码表的空间,然后依次获取每个特征字符串中的算法字符,依据该算法字符值,找到位向量掩码表中的相对应行,依据当前算法字符在特征串中的位置,找到位向量掩码表中的相应列,然后将该位置为1。
其中,根据Q-grams技术原理将特征字符串中特定数量的一组字符,通过散列函数转换成算法字符,在本发明中提到的算法字符都依此方式获得。
q-gram技术广泛应用与信息检索领域,尤其在字符串匹配算法当中应用能够起到较好的效果,它的主要目的是扩大字母表规模。q-gram技术将q个字符转化为一个字符来处理,将q个字符转化为一个q-gram字符有两种方式,包括重叠q-gram和连续q-gram。当使用重叠q-gram时,依次从原串的每一个字符开始取q个字符进行转化;使用连续q-gram时,依次从原串的每q个字符开始去q个字符进行转化。例如:转化字符串“pony”,使用重叠q-gram转化为“po-on-ny”,而使用连续q-gram转化为“po-ny”。在本发明中使用q-gram技术时,使用的都是重叠q-gram,每个转化后的q-gram字符称其为算法字符。
本发明采用的特征字符串匹配算法是以位并行技术为基础的一种过滤类算法。位并行技术利用计算机机器字位运算的内在并行性,可将多个值装在一个机器字内,通过一次计算既可以更新所有值。采用位并行技术的典型算法包括:SHIFT-AND/OR、BNDM等。通常位并行类算法的预处理过程都是相似的,需要将模式串集合与文本串的匹配状态用位向量存储。
将位向量掩码表每行压缩成一个比特位形成快速过滤子表,如果位向量掩码表整行为0,则快速过滤子表相应位为0,否则快速过滤子表相应位置1,多数GPU线程只需要访问快速过滤子表,因为此快速过滤子表具有更好的空间局部性,查找效率更高,可以吸收大多数线程的访存操作,利用GPU的cache机制提升整体性能。
在上述步骤S230中,将来自网卡的数据报文(待匹配数据)进行预处理包括:剥离IP头和提取数据部分,待提取数据部分总大小达到设定要求后复制到GPU全局存储器中。
在所述CPU预处理阶段的过程中,在步骤S220中,将拷贝有位向量掩码表和快速过滤子表的GPU全局存储器与纹理存储器绑定;在步骤S230中,将保存有待匹配数据的GPU全局存储器与纹理存储器绑定。
需要说明的是,GPU的纹理存储器可以通过缓存加快访存时的速度,纹理存储器是通过图形渲染发展而来的且具有缓存功能,纹理存储器是只读存储器。
在上述步骤S240中,在GPU匹配过程中,采用GPU多线程任务并行执行方式对预处理后的待匹配数据分别与特征字符串前缀和特征字符串后缀进行匹配,其中,每个GPU线程对预处理后的待匹配数据分别与特征字符串前缀和特征字符串后缀进行匹配,图3示出了根据本发明实施例的每个GPU线程对预处理后的待匹配数据与特征字符串进行匹配方法流程。
如图3所示,每个GPU线程对预处理后的待匹配数据与特征字符串进行匹配的具体流程如下:
S241:根据GPU线程的标识确定预处理后的待匹配数据的起始偏移,根据最短特征字符串前缀的长度和最长特征字符串前缀的长度确定GPU线程的匹配窗口。
S242:从距离预处理后的待匹配数据的起始偏移的最短特征字符串前缀长度的位置上,获取一个算法字符,根据算法字符在纹理存储器中查到快速过滤子表的相应比特位,根据相应比特位判断当前GPU线程是否继续执行;如果相应比特位为0,则当前窗口内不可能产生命中,结束当前GPU线程执行;如果相应比特位为1,则当前GPU线程继续执行。
S243:如果相应比特位为1时,根据S242中获取的算法字符,在纹理存储器中查到位向量掩码表,获取一个位向量掩码值,将位向量掩码值设为初始状态向量,以算法字符的位置作为起点,在GPU线程的匹配窗口内正向依次获取算法字符,以位并行方式进行向量更新,在向量更新过程中,预处理后的待匹配数据与所述特征字符串后缀进行匹配。
S244:根据特征字符串后缀的匹配结果,将在以位并行方式进行向量更新中获取的最后的状态向量作为初始向量,以距离预处理后的待匹配数据的起始偏移的最短特征字符串前缀长度的位置作为起点,在GPU线程的匹配窗口内反向依次获取算法字符,以位并行方式进行反向向量更新;在反向向量更新中,预处理后的待匹配数据与特征字符串前缀进行匹配。
在上述步骤S241中,每个GPU线程仅在一个匹配窗口内进行特征字符串匹配。匹配窗口长度等于一个最短特征字符串长度加上一个最长特征字符串长度。如果在特征字符串预处理过程中,通过截取特征子串来生成位向量掩码表,那么最短特征字符串长度则表示最短子串长度,最长特征字符串长度表示最长子串的长度。相邻两个线程处理报文(预处理后的待匹配数据)的起始位置的距离仅为一个最短特征字符串长度,因此相邻线程匹配数据的位置相近。
也就是说,在本发明中采用任务并行执行方式,相邻线程匹配相近的数据,与数据并行方式相比,充分利用了GPU的Cache机制,减少单位缓存的匹配延时,提高匹配效率。同时,将一块待匹配数据缓存划分成若干有重叠的匹配窗口,利用子串匹配算法的特点,每次都以最短特征字符串所包含的算法字符数为间隔启动一个线程,也就是说,相邻的两个匹配窗口的起始偏移的间隔是一个最短特征串中所包含的算法字符数,相比每字节的任务并行方式,减少了整个匹配过程启动的线程总数。
在GPU特性中,当多个线程访问相近的GPU全局存储器时,相邻数据是以每128字节为单位进入L1Cache中,因此相邻的线程访问位置相近的数据会增加Cache的命中,进而提高数据访存的效率。
在步骤S242中:根据算法字符在纹理存储器中查到快速过滤子表的相应比特位,如果相应比特位值为0,则说明匹配窗口最短特征串长度内不会再命中特征字符串,可立即结束当前线程,如果相应比特位值非0,则此位置有可能会匹配特征字符串,需要继续执行。也就说,如果当前线程有可能发生特征字符串匹配,则相应的算法字符在快速过滤子表中相应的位置一定为1。
也就是说,步骤S242是为了找出不可能产生命中的GPU线程,让它提前结束,一般来说,多数GPU线程都会提前结束;其中,快速过滤子表的作用是让这些GPU线程的内存访问尽量集中,这样快速过滤子表占用的空间更小。
在上述步骤S243中,根据读入的算法字符在纹理存储器中查找位向量掩码表,获取一个向量掩码值,该向量掩码值中所有的置1位都表示一条有可能最终发生匹配的线索,然后以该向量掩码值设置初始状态向量,以当前读入算法字符的位置作为起点,在当前线程的匹配窗口内正向逐个获取算法字符,以位并行的方式进行向量更新,在进行向量更新的过程中确认哪些线索最终会发生特征字符串后缀匹配。
在后缀匹配的位向量更新过程中,由于该过程中无须考虑出现新的特征字符串前缀命中,因此与常规的位向量算法相比,本发明中在位向量更新过程中无须考虑空字符串命中,空特征字符串是所有特征字符串的前缀。无须考虑空字符串命中,使每个线程的流程更短,出现分支的可能性更低,使整体匹配效率更稳定。
在向量更新过程中,会发生后缀命中,只需要记录命中位置,在前向匹配的过程中进行命中确认。图4示出了根据本发明实施例的向量更新方法流程。
如图4所示,其向量更新方法具体流程如下:
S410:读入下一个算法字符,并根据该算法字符查找位向量掩码表,获取向量掩码值。
S420:将当前状态向量值左移一位,通过和上述向量掩码按位与运算,得到新的状态向量。
S430:如果新的状态向量的最高有效位为1,则已经匹配了特征字符串的后缀。该最高有效位是通过初始状态向量中的某一个置1位,通过不断左移得到,记录并最终保留该初始状态位向量的相应置1位,以用于前向匹配命中确认过程。
S440:将新的状态位向量设置为当前状态位向量,并返回步骤S310。直至当前线程匹配窗口内的数据都已获取完毕。在初始状态向量中保留所有发生过后缀命中的活动位,其余全部清0。即在第一次获取的位向量中,将没有发生过后缀命中的位清除。
在步骤S243中未发生过后缀命中则立即结束当前线程。如果发生过后缀命中,则将执行步骤S2244。在步骤S244中,将在步骤S243中最终获取的状态向量作为初始向量,以距离起始偏移最短前缀长度的位置作为起点,在当前线程的匹配窗口内反向逐个获取字符,以位并行的方式进行反向向量更新,在反向向量更新的过程中,继续跟踪剩余的匹配线索,确认这些特征字符串的前缀匹配。图5示出了根据本发明实施例的反向向量更新方法流程。
如图5所示,其反向向量更新方法具体流程如下:
S510:读入上一个算法字符,并根据该算法字符查找位向量掩码表,获取向量掩码值;
S520:将当前状态向量值右移一位,通过和上述向量掩码按位与运算,得到新的状态向量;
S530:如果新的状态向量的最低有效位为1,则记录一次匹配的可能,当前读入算法字符位置是匹配字符串的起始位置。
S540:将新的状态位向量设置为当前状态位向量,并返回步骤S410。直至当前线程匹配窗口内的数据都已获取完毕。
在本发明的实施例中,GPU单线程将以状态向量更新为主线索的线性流程,拆分成若干独立的并行流程,利于并发执行。
在GPU匹配阶段中,采用了基于过滤的位并行算法,并进行优化,使其更适应GPU并行计算的场景,同时又能减少状态表的空间占用,有利于集中访存,提高查快速过滤子表过程中的Cache命中率。相比现有的GPU模式匹配技术方案,本发明提供的匹配方案匹配效率更高。
实验采用NVIDIA GTX680,待匹配数据报文长度2MB。表1示出了实际测得的GPU对数据报文的匹配速度,如下表所示:
最短特征串长度 | 字符串数量1000 | 字符串数量10000 |
4 | 147.189Gbps | 102.140Gbps |
8 | 192.823Gbps | 143.916Gbps |
表1
由表1可以看出,利用本发明提供的特征字符串的匹配方案NVIDIAGTX680的特征字符串过滤匹配效率已经达到了非常高的匹配速率,已经超过现有的基于GPU字符串匹配的方案。
在步骤S250中,发生过特征字符串前缀匹配的位置,则需要在相应位置上进行逐字符比较确认,确认的方法可以是其他基于散列的特征字符串匹配算法,也可结合实际情况选择。
与上述方法相对应,本发明还提供一种基于GPU计算的字符串匹配系统,图6示出了根据本发明实施例的基于GPU计算的字符串匹配系统逻辑结构。
如图6所示,本发明提供的基于GPU计算的字符串匹配系统600包括CPU预处理单元610、GPU匹配单元620和确认存储单元630;其中,CPU预处理单元610包括特征字符串预处理单元611、缓存分配单元612和待匹配数据预处理单元613。
其中,特征字符串预处理单元611用于首先构建位向量掩码表,并根据位向量掩码表生成快速过滤子表;然后将位向量掩码表和快速过滤子表拷贝到GPU全局存储器。
缓存分配单元612用于分别在CPU主存和所述GPU全局存储器上分配待匹配数据缓存和结果缓存。
待匹配数据预处理单元613用于对待匹配数据进行预处理,将预处理后的待匹配数据从CPU主存中的待匹配数据缓存中复制到GPU全局存储器中的待匹配数据缓存中保存。
GPU匹配单元620用于根据CPU预处理单元610中对特征字符串进行预处理所构建的位相量掩码表以及生成的快速过滤子表,通过GPU多线程任务并行执行方式对每个GPU线程中的预处理后的待匹配数据分别与预处理后的特征字符串前缀和特征字符串后缀进行匹配。
另外,GPU匹配单元620还可以包括匹配窗口确定单元621、特征字符串前缀匹配单元622、特征字符串后缀匹配单元623和反向向量特征字符串前缀匹配单元624。
匹配窗口确定单元621用于根据GPU线程的标识确定预处理后的待匹配数据的起始偏移,根据最短特征字符串前缀的长度和最长特征字符串前缀的长度确定GPU线程的匹配窗口。
特征字符串前缀匹配单元622用于从距离预处理后的待匹配数据的起始偏移的最短特征字符串前缀长度的位置上,获取一个算法字符,根据算法字符在纹理存储器中查到快速过滤子表的相应比特位,根据相应比特位判断GPU线程是否继续执行;如果相应比特位为0,结束GPU线程执行,如果相应比特位为1,则GPU线程继续执行。
特征字符串后缀匹配单元623用于如果相应比特位为1时,根据算法字符在纹理存储器中查到位向量掩码表获取一个位向量掩码值,将位向量掩码值设为初始状态向量,以算法字符的位置作为起点,在GPU线程的匹配窗口内正向依次获取算法字符,以位并行方式进行向量更新,在向量更新过程中,预处理后的待匹配数据与特征字符串后缀进行匹配。
反向向量特征字符串前缀匹配单元624用于根据特征字符串后缀的匹配结果,将在以位并行方式进行向量更新中获取的最后的状态向量作为初始向量,以距离预处理后的待匹配数据的起始偏移的最短特征字符串前缀长度的位置作为起点,在GPU线程的匹配窗口内反向依次获取算法字符,以位并行方式进行反向向量更新;在反向向量更新中,预处理后的待匹配数据与特征字符串前缀进行匹配。
确认存储单元630用于将匹配成功的预处理后的待匹配数据与相应的特征字符串逐字进行确认,并保存在结果缓存中,最后将结果缓存拷贝到所述CPU主存中。
在缓存分配单元612中,将拷贝有所述位向量掩码表和所述快速过滤子表的所述GPU全局存储器与纹理存储器绑定。
在待匹配数据预处理单元613中,将保存有所述待匹配数据的GPU全局存储器与所述纹理存储器绑定。
在匹配窗口确定单元621中,每个GPU线程在一个匹配窗口内进行特征字符串匹配,匹配窗口的长度等于一个第一特征字符串长度跟一个第二特征字符串长度的和;相邻两个GPU线程处理预处理后的待匹配数据的起始位置的距离为一个所述第一特征字符串长度。
在特征字符串前缀匹配单元622中,如果相应比特位值为0,则所述匹配窗口的第一特征字符串内不会有匹配特征字符串,结束GPU线程;如果相应比特位值非0,则匹配窗口的第一特征字符串内会出现匹配特征字符串,继续进行匹配。
通过上述实施方式可以看出,本发明提供的基于GPU计算的字符串匹配方法和系统,采用任务并行方式执行,相邻的线程匹配位置相近的数据,能够增大线程读取待匹配数据缓存时的Cache利用率;在匹配阶段,匹配窗口有部分数据重叠和利用子串匹配算法的特点,相邻的两个匹配窗口的起始偏移的间隔最短特征串中所包含的算法字符数,无须考虑空字符串前缀匹配,减少了每个线程内部的分支及流程,进而能够提高匹配效率,并能够减少整个匹配过程启动的线程总数;在GPU上采用了基于过滤的位并行算法,能够减少状态表的空间占用,从而提高查快速过滤子表过程中的Cache命中率。
如上参照附图以示例的方式描述了根据本发明提出的基于GPU计算的字符串匹配方法和系统。但是,本领域技术人员应当理解,对于上述本发明所提出的基于GPU计算的字符串匹配方法和系统,还可以在不脱离本发明内容的基础上做出各种改进。因此,本发明的保护范围应当由所附的权利要求书的内容确定。
Claims (8)
1.一种基于GPU计算的字符串匹配方法,包括CPU预处理阶段和GPU匹配阶段;其中,
在所述CPU预处理阶段的过程中:
对所述特征字符串进行预处理;其中,首先构建位向量掩码表,并根据所述位向量掩码表生成快速过滤子表;然后将所述位向量掩码表和所述快速过滤子表拷贝到GPU全局存储器;
分别在CPU主存和所述GPU全局存储器上分配待匹配数据缓存和结果缓存;
对待匹配数据进行预处理,并将预处理后的待匹配数据从所述CPU主存中的所述待匹配数据缓存中复制到所述GPU全局存储器中的所述待匹配数据缓存中保存;
在所述GPU匹配阶段的过程中,
根据对所述特征字符串进行预处理所构建的位相量掩码表以及生成的快速过滤子表,采用GPU多线程任务并行执行方式对每个GPU线程中的预处理后的待匹配数据分别与预处理后的所述特征字符串前缀和所述特征字符串后缀进行匹配;
将匹配成功的待匹配数据与相应的所述特征字符串逐字进行确认,并保存在所述结果缓存中,最后将结果缓存的数据拷贝到所述CPU主存中的所述结果缓存中。
2.如权利要求1所述的基于GPU计算的字符串匹配方法,其中,
在所述CPU预处理阶段的过程中,
将拷贝有所述位向量掩码表和所述快速过滤子表的所述GPU全局存储器与纹理存储器绑定;
将保存有所述待匹配数据的GPU全局存储器与所述纹理存储器绑定。
3.如权利要求2所述的基于GPU计算的字符串匹配方法,其中,
在通过GPU多线程任务并行执行方式对预处理后的待匹配数据与所述特 征字符串前缀和所述特征字符串后缀分别进行匹配的过程中,
根据所述每个GPU线程的标识确定预处理后的待匹配数据的起始偏移,根据第一特征字符串前缀的长度和第二特征字符串前缀的长度确定所述GPU线程的匹配窗口;
从距离所述预处理后的待匹配数据的起始偏移的第一特征字符串前缀长度的位置上,获取一个算法字符,根据所述算法字符在所述纹理存储器中查到所述快速过滤子表的相应比特位,根据所述相应比特位判断所述GPU线程是否继续执行;如果所述相应比特位为0,结束所述GPU线程执行,如果所述相应比特位为1,则所述GPU线程继续执行;
如果所述相应比特位为1时,根据所述算法字符在所述纹理存储器中查到所述位向量掩码表获取一个位向量掩码值,将所述位向量掩码值设为初始状态向量,以所述算法字符的位置作为起点,在所述GPU线程的匹配窗口内正向依次获取所述算法字符,以位并行方式进行向量更新,在所述向量更新过程中,所述预处理后的待匹配数据与所述特征字符串后缀进行匹配;
根据所述特征字符串后缀的匹配结果,将在以位并行方式进行向量更新中获取的最后的状态向量作为初始向量,以距离所述预处理后的待匹配数据的起始偏移的第二特征字符串前缀长度的位置作为起点,在所述GPU线程的匹配窗口内反向依次获取算法字符,以位并行方式进行反向向量更新;在所述反向向量更新中,所述预处理后的待匹配数据与所述特征字符串前缀进行匹配。
4.如权利要求3所述的基于GPU计算的字符串匹配方法,其中,
在所述每个GPU线程在一个匹配窗口内进行字符串匹配的过程中,
所述匹配窗口的长度等于一个第一特征字符串长度跟一个第二特征字符串长度的和;相邻两个所述GPU线程处理预处理后的待匹配数据的起始位置的距离为一个所述第一特征字符串长度。
5.一种基于GPU计算的字符串匹配系统,包括CPU预处理单元、GPU匹配单元和确认存储单元;其中,
所述CPU预处理单元包括:特征字符串预处理单元、缓存分配单元和待 匹配数据预处理单元;
所述特征字符串预处理单元,用于对特征字符串进行预处理;首先构建位向量掩码表,并根据所述位向量掩码表生成快速过滤子表;然后将所述位向量掩码表和所述快速过滤子表拷贝到GPU全局存储器;
所述缓存分配单元,用于分别在CPU主存和所述GPU全局存储器上分配待匹配数据缓存和结果缓存;
所述待匹配数据预处理单元,用于对待匹配数据进行预处理,并将预处理后的待匹配数据从所述CPU主存中的所述待匹配数据缓存中复制到所述GPU全局存储器中的所述待匹配数据缓存中保存;
所述GPU匹配单元,用于根据对所述特征字符串进行预处理所构建的位相量掩码表以及生成的快速过滤子表,采用GPU多线程任务并行执行方式对每个GPU线程中的预处理后的待匹配数据分别与预处理后的所述特征字符串前缀和所述特征字符串后缀进行匹配;
所述确认存储单元,用于将匹配成功的预处理后的待匹配数据与相应的所述特征字符串逐字进行确认,并保存在所述结果缓存中,最后将结果缓存的数据拷贝到所述CPU主存中的所述结果缓存中。
6.如权利要求5所述的基于GPU计算的字符串匹配系统,其中,
在所述缓存分配单元中,将拷贝有所述位向量掩码表和所述快速过滤子表的所述GPU全局存储器与纹理存储器绑定;
在所述待匹配数据预处理单元中,将保存有所述待匹配数据的GPU全局存储器与所述纹理存储器绑定 。
7.如权利要求6所述的基于GPU计算的字符串匹配系统,其中,
所述GPU匹配单元包括:
匹配窗口确定单元,用于根据所述每个GPU线程的标识确定预处理后的待匹配数据的起始偏移,根据第一特征字符串前缀的长度和第二特征字符串前缀的长度确定所述GPU线程的匹配窗口;
特征字符串前缀匹配单元,用于从距离所述预处理后的待匹配数据的起始偏移的第一特征字符串前缀长度的位置上,获取一个算法字符,根据所述 算法字符在所述纹理存储器中查到所述快速过滤子表的相应比特位,根据所述相应比特位判断所述GPU线程是否继续执行;如果所述相应比特位为0,结束所述GPU线程执行,如果所述相应比特位为1,则所述GPU线程继续执行;
特征字符串后缀匹配单元,用于如果所述相应比特位为1时,根据所述算法字符在所述纹理存储器中查到所述位向量掩码表获取一个位向量掩码值,将所述位向量掩码值设为初始状态向量,以所述算法字符的位置作为起点,在所述GPU线程的匹配窗口内正向依次获取所述算法字符,以位并行方式进行向量更新,在所述向量更新过程中,所述预处理后的待匹配数据与所述特征字符串后缀进行匹配;
反向向量特征字符串前缀匹配单元,用于根据所述特征字符串后缀的匹配结果,将在以位并行方式进行向量更新中获取的最后的状态向量作为初始向量,以距离所述预处理后的待匹配数据的起始偏移的第二特征字符串前缀长度的位置作为起点,在所述GPU线程的匹配窗口内反向依次获取算法字符,以位并行方式进行反向向量更新;在所述反向向量更新中,所述预处理后的待匹配数据与所述特征字符串前缀进行匹配。
8.如权利要求7所述的基于GPU计算的字符串匹配方法系统,其中,
在匹配窗口确定单元中,所述每个GPU线程在一个匹配窗口内进行特征字符串匹配,所述匹配窗口的长度等于一个第一特征字符串长度跟一个第二特征字符串长度的和;相邻两个所述GPU线程处理预处理后的待匹配数据的起始位置的距离为一个所述第一特征字符串长度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310509249.0A CN103559018B (zh) | 2013-10-23 | 2013-10-23 | 基于gpu计算的字符串匹配方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310509249.0A CN103559018B (zh) | 2013-10-23 | 2013-10-23 | 基于gpu计算的字符串匹配方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103559018A true CN103559018A (zh) | 2014-02-05 |
CN103559018B CN103559018B (zh) | 2016-05-04 |
Family
ID=50013275
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310509249.0A Active CN103559018B (zh) | 2013-10-23 | 2013-10-23 | 基于gpu计算的字符串匹配方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103559018B (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183562A (zh) * | 2015-09-09 | 2015-12-23 | 合肥芯碁微电子装备有限公司 | 一种基于cuda技术对栅格化数据进行抽阶的方法 |
CN105868300A (zh) * | 2016-03-24 | 2016-08-17 | 国家计算机网络与信息安全管理中心 | 一种众核环境下的字符串匹配方法 |
CN106301992A (zh) * | 2015-06-12 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种攻击报文检测方法及设备 |
CN106649836A (zh) * | 2016-12-29 | 2017-05-10 | 武汉新芯集成电路制造有限公司 | 一种基于硬件查找表的模式字符的查找方法 |
CN108762812A (zh) * | 2018-05-21 | 2018-11-06 | 北京中科睿芯科技有限公司 | 面向通用字符串处理的硬件加速结构装置及控制方法 |
CN109408450A (zh) * | 2018-09-27 | 2019-03-01 | 中兴飞流信息科技有限公司 | 一种数据处理的方法、系统、协处理装置和主处理装置 |
CN109543751A (zh) * | 2018-11-22 | 2019-03-29 | 南京中孚信息技术有限公司 | 基于多线程的模式匹配方法、装置及电子设备 |
CN109857740A (zh) * | 2019-01-25 | 2019-06-07 | 上海赜睿信息科技有限公司 | 字符串的存储方法、匹配方法、电子设备及可读存储介质 |
CN109902059A (zh) * | 2019-02-28 | 2019-06-18 | 苏州浪潮智能科技有限公司 | 一种cpu与gpu之间的数据传输方法 |
CN109933429A (zh) * | 2019-03-05 | 2019-06-25 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN110413958A (zh) * | 2019-06-12 | 2019-11-05 | 中国科学院信息工程研究所 | 用于自动机空间压缩的线性同余字符集变换方法及系统 |
CN111159490A (zh) * | 2019-12-13 | 2020-05-15 | 杭州迪普科技股份有限公司 | 一种模式字符串的处理方法、装置及设备 |
CN111831869A (zh) * | 2020-06-30 | 2020-10-27 | 深圳价值在线信息科技股份有限公司 | 一种字符串的查重方法、装置、终端设备及存储介质 |
CN112883245A (zh) * | 2021-02-28 | 2021-06-01 | 湖南工商大学 | 一种基于gpu流的快速并行字符串匹配方法和系统 |
CN113347214A (zh) * | 2021-08-05 | 2021-09-03 | 湖南戎腾网络科技有限公司 | 一种高频状态匹配方法及系统 |
CN115374188A (zh) * | 2022-10-24 | 2022-11-22 | 沐曦科技(成都)有限公司 | 一种资源状态查询方法、装置、电子设备及存储介质 |
CN115827698A (zh) * | 2022-12-20 | 2023-03-21 | 深圳三地一芯电子有限责任公司 | 基于ahb的数据查询方法、装置及存储主控芯片 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7818806B1 (en) * | 2005-11-08 | 2010-10-19 | Nvidia Corporation | Apparatus, system, and method for offloading pattern matching scanning |
CN102064977A (zh) * | 2010-11-10 | 2011-05-18 | 中国人民解放军国防科学技术大学 | 基于gpu的高速网络报文内容检测方法 |
-
2013
- 2013-10-23 CN CN201310509249.0A patent/CN103559018B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7818806B1 (en) * | 2005-11-08 | 2010-10-19 | Nvidia Corporation | Apparatus, system, and method for offloading pattern matching scanning |
CN102064977A (zh) * | 2010-11-10 | 2011-05-18 | 中国人民解放军国防科学技术大学 | 基于gpu的高速网络报文内容检测方法 |
Non-Patent Citations (2)
Title |
---|
杨科等: "一种基于CPU-GPU协同的特征码匹配机制", 《科学技术与工程》 * |
赵光南等: "基于GPU的位并行多模式串匹配研究", 《计算机工程》 * |
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106301992B (zh) * | 2015-06-12 | 2019-09-03 | 阿里巴巴集团控股有限公司 | 一种攻击报文检测方法及设备 |
CN106301992A (zh) * | 2015-06-12 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种攻击报文检测方法及设备 |
CN105183562B (zh) * | 2015-09-09 | 2018-09-11 | 合肥芯碁微电子装备有限公司 | 一种基于cuda技术对栅格化数据进行抽阶的方法 |
CN105183562A (zh) * | 2015-09-09 | 2015-12-23 | 合肥芯碁微电子装备有限公司 | 一种基于cuda技术对栅格化数据进行抽阶的方法 |
CN105868300A (zh) * | 2016-03-24 | 2016-08-17 | 国家计算机网络与信息安全管理中心 | 一种众核环境下的字符串匹配方法 |
CN105868300B (zh) * | 2016-03-24 | 2019-05-07 | 国家计算机网络与信息安全管理中心 | 一种众核环境下的字符串匹配方法 |
CN106649836A (zh) * | 2016-12-29 | 2017-05-10 | 武汉新芯集成电路制造有限公司 | 一种基于硬件查找表的模式字符的查找方法 |
CN106649836B (zh) * | 2016-12-29 | 2019-11-29 | 武汉新芯集成电路制造有限公司 | 一种基于硬件查找表的模式字符的查找方法 |
CN108762812A (zh) * | 2018-05-21 | 2018-11-06 | 北京中科睿芯科技有限公司 | 面向通用字符串处理的硬件加速结构装置及控制方法 |
CN109408450A (zh) * | 2018-09-27 | 2019-03-01 | 中兴飞流信息科技有限公司 | 一种数据处理的方法、系统、协处理装置和主处理装置 |
CN109408450B (zh) * | 2018-09-27 | 2021-03-30 | 中兴飞流信息科技有限公司 | 一种数据处理的方法、系统、协处理装置和主处理装置 |
CN109543751A (zh) * | 2018-11-22 | 2019-03-29 | 南京中孚信息技术有限公司 | 基于多线程的模式匹配方法、装置及电子设备 |
CN109857740A (zh) * | 2019-01-25 | 2019-06-07 | 上海赜睿信息科技有限公司 | 字符串的存储方法、匹配方法、电子设备及可读存储介质 |
CN109857740B (zh) * | 2019-01-25 | 2021-06-04 | 上海赜睿信息科技有限公司 | 字符串的存储方法、匹配方法、电子设备及可读存储介质 |
CN109902059B (zh) * | 2019-02-28 | 2021-06-29 | 苏州浪潮智能科技有限公司 | 一种cpu与gpu之间的数据传输方法 |
CN109902059A (zh) * | 2019-02-28 | 2019-06-18 | 苏州浪潮智能科技有限公司 | 一种cpu与gpu之间的数据传输方法 |
CN109933429A (zh) * | 2019-03-05 | 2019-06-25 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN110413958A (zh) * | 2019-06-12 | 2019-11-05 | 中国科学院信息工程研究所 | 用于自动机空间压缩的线性同余字符集变换方法及系统 |
CN110413958B (zh) * | 2019-06-12 | 2020-12-04 | 中国科学院信息工程研究所 | 用于自动机空间压缩的线性同余字符集变换方法及系统 |
CN111159490A (zh) * | 2019-12-13 | 2020-05-15 | 杭州迪普科技股份有限公司 | 一种模式字符串的处理方法、装置及设备 |
CN111159490B (zh) * | 2019-12-13 | 2023-05-26 | 杭州迪普科技股份有限公司 | 一种模式字符串的处理方法、装置及设备 |
CN111831869A (zh) * | 2020-06-30 | 2020-10-27 | 深圳价值在线信息科技股份有限公司 | 一种字符串的查重方法、装置、终端设备及存储介质 |
CN111831869B (zh) * | 2020-06-30 | 2023-11-03 | 深圳价值在线信息科技股份有限公司 | 一种字符串的查重方法、装置、终端设备及存储介质 |
CN112883245A (zh) * | 2021-02-28 | 2021-06-01 | 湖南工商大学 | 一种基于gpu流的快速并行字符串匹配方法和系统 |
CN113347214A (zh) * | 2021-08-05 | 2021-09-03 | 湖南戎腾网络科技有限公司 | 一种高频状态匹配方法及系统 |
CN113347214B (zh) * | 2021-08-05 | 2021-11-12 | 湖南戎腾网络科技有限公司 | 一种高频状态匹配方法及系统 |
CN115374188A (zh) * | 2022-10-24 | 2022-11-22 | 沐曦科技(成都)有限公司 | 一种资源状态查询方法、装置、电子设备及存储介质 |
CN115827698A (zh) * | 2022-12-20 | 2023-03-21 | 深圳三地一芯电子有限责任公司 | 基于ahb的数据查询方法、装置及存储主控芯片 |
Also Published As
Publication number | Publication date |
---|---|
CN103559018B (zh) | 2016-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103559018A (zh) | 基于gpu计算的字符串匹配方法和系统 | |
Hong et al. | Efficient parallel graph exploration on multi-core CPU and GPU | |
TWI697837B (zh) | 微處理器的前端以及執行零空泡條件分支預測的電腦實施方法 | |
CN100538628C (zh) | 用于在simd结构中处理线程组的系统和方法 | |
CN106030516B (zh) | 一种处理器和用于在处理器中执行分支预测的方法 | |
CN105095099B (zh) | 一种基于内存页位图变更的大内存页整合方法 | |
CN103238133A (zh) | 用于多地址矢量载入的矢量收集缓冲器 | |
CN103559017A (zh) | 基于gpu异构计算平台的字符串匹配方法及系统 | |
CN105022696B (zh) | 一种基于内存访问热度的大内存页整合方法 | |
WO2016107182A1 (zh) | 一种多路组相联的高速缓冲存储器及其处理方法 | |
CN102299843A (zh) | 一种基于gpu和缓冲区的网络数据处理方法及系统 | |
CN104951403B (zh) | 一种低开销且无差错的冷热数据识别方法 | |
CN104346401A (zh) | 云管理平台中各组件间消息转发的方法与装置 | |
CN111416825A (zh) | 线程间无锁日志管理方法和系统、终端、存储介质 | |
CN102521158A (zh) | 一种实现数据预取的方法及装置 | |
US20060149766A1 (en) | Method and an apparatus to improve processor utilization in data mining | |
CN105550979A (zh) | 一种高数据通量纹理Cache层次结构 | |
CN110324204A (zh) | 一种在fpga中实现的高速正则表达式匹配引擎及方法 | |
CN104317754A (zh) | 面向异构计算系统的跨步数据传输优化方法 | |
CN103544208A (zh) | 海量特征串集合的匹配方法及系统 | |
Haque et al. | Susesim: a fast simulation strategy to find optimal l1 cache configuration for embedded systems | |
CN100394381C (zh) | 同步多线程处理器电路以及运行方法 | |
CN104516829A (zh) | 微处理器及使用指令循环高速缓存的方法 | |
Guohui et al. | Efficient optimistic concurrency control for mobile real-time transactions in a wireless data broadcast environment | |
Wang et al. | Multi-core architecture on FPGA for large dictionary string matching |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |