CN105900065A - 模式处理方法 - Google Patents
模式处理方法 Download PDFInfo
- Publication number
- CN105900065A CN105900065A CN201480072994.6A CN201480072994A CN105900065A CN 105900065 A CN105900065 A CN 105900065A CN 201480072994 A CN201480072994 A CN 201480072994A CN 105900065 A CN105900065 A CN 105900065A
- Authority
- CN
- China
- Prior art keywords
- processing unit
- data structure
- message
- unit
- local memory
- 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.)
- Withdrawn
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1425—Traffic logging, e.g. anomaly detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/96—Management of image or video recognition tasks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
- G06V30/26—Techniques for post-processing, e.g. correcting the recognition result
- G06V30/262—Techniques for post-processing, e.g. correcting the recognition result using context analysis, e.g. lexical, syntactic or semantic context
- G06V30/268—Lexical context
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/12—Protocol engines
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Multimedia (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及一种用于在处理器平台(700)上进行模式处理的方法(1100),所述方法包括:使用第一处理单元将多个模式编译(1101)为多个数据结构,其中,所述编译使得至少所述多个数据结构的头部数据部分能放入第二处理单元(720)的计算单元(725a、725b、725c)的局部存储器(728);将所述多个数据结构上传(1103)到所述第二处理单元(720),使至少所述多个数据结构的头部数据部分上传到所述第二处理单元(720)的计算单元(725a、725b、725c)的局部存储器(728)中,以及使所述多个数据结构中未能放入所述局部存储器的剩余数据部分上传到所述第二处理单元(720)的全局存储器(721)中。
Description
技术领域
本发明涉及一种模式处理的方法和一种处理器系统。本发明还涉及一种用于中央处理器(central processing unit,CPU)和图形处理器(graphicsprocessing unit,GPU)异构平台上的高性能多模式正则表达式(regularexpression,regex)匹配的方法。
背景技术
现今网络中的许多网络安全应用是基于深度报文检测,不仅检查报文的头部部分而且还检查其有效负载部分。将报文有效负载与一大组模式匹配的多模式regex匹配是在网络安全应用中的一种重要算法。目前,大多数处理器厂商在增加单芯片中内核的数量。这种趋势不仅发生在多核处理器上也发生在众核处理器上。因为深度报文检测通常是报文处理中的瓶颈,所以利用多核架构与众核架构间的并行性是提升整体性能的关键。在过去的几年里,科技的重大进步和频率调整使大多数计算机应用无需结构调整或定制硬件加速就能够提高性能。虽然这些进步在继续,但是它们对现代应用的影响没有诸如内存墙和功率墙等其它障碍产生的影响大。现在,由于这些附加限制,使计算系统获得额外性能的主要方法是引进更多的专用资源,从而使计算系统变成异构。CPU和GPU异构平台是一个非常典型的异构计算系统。
由于大规模的并行性和计算能力,图形处理器,一种典型的众核设备,一直是用于通用并行计算的可行平台。多模式regex匹配,是一个耗性能的算法,非常适合从CPU分流到GPU。
现有技术通常使用确定性有限自动机(Deterministic FiniteAutomation,DFA),多个DFA(multiple DFA,mDFA)或其边界压缩算法输入延迟DFA(Delayed Input DFA,D2FA)来进行多模式regex匹配。像Haskell有限自动机(Haskell Finite Automata,HFA)和扩展有限自动机(Extended Finite Automata,XFA)等状态压缩算法不适合GPU,因为这些算法有很多逻辑分支。
图1示出了一种包括CPU 110和GPU 120的多核和众核处理器系统100。CPU 110上的模式编译器111包括用于创建和优化DFA的单元112和用于DFA状态编码的单元113。GPU 120包括全局存储器121,在其上设置了可与CPU 110中的主机报文缓冲区114通过直接内存访问(directmemory access,DMA)交互数据的存储器123。全局存储器121还包括结果缓冲区122,匹配结果115可在CPU 110从结果缓冲区122访问以供输出。全局存储器121还包括耦合至CPU 110中的用于DFA状态编码的单元113的状态机存储器124。GPU 120还包括一组计算单元125a、125b、125c,每个计算单元包括DFA内核127,DFA内核127包括一组流126a、126b、126c、126d。
多核和众核处理器系统100能在GPU 120上进行多模式regex匹配。
图2示出了在CPU 110上进行的编译过程的流程图。编译过程将所有regex模式编译为状态机数据结构112,然后将它编码到DFA状态表113中。编译过程还将DFA状态表113上传到GPU全局存储器120,124。
图2示出了编译过程的各阶段。在开始201编译过程后,创建202多NFA。对于模式集中的每个模式203,将模式编译为NFA 204,将NFA与多NFA连接205。一直这样执行,直到最后一个模式206。然后将多NFA编译为NFA并进行优化207,对DFA状态进行编码208,将DFA状态表上传到GPU全局存储器209,编译过程结束210。
图3示出了Gnort 300,一种网络入侵检测系统(network intrusiondetection system,NIDS)的总体架构,Gnort使用GPU 320进行Snort的多模式匹配。Snort是一种网络入侵检测系统,Gnort构建在其上。CPU 310收集报文311,对其解码312并对其进行预处理313。使用单独的缓冲区来临时存储每组的报文。在将报文分类314到具体组315后,将其复制到对应的缓冲区321。每当缓冲区变满时,将所有报文都在一个操作中传送到GPU 320中。GPU 320执行多模式匹配,并将匹配结果放入结果缓冲区326,其中CPU 310从结果缓冲区获取匹配结果327,然后继续处理。一旦报文被传送到GPU 320,通过报文纹理323和状态表纹理324在多个多处理器325中执行模式匹配操作。对输入流的所有字节迭代算法,使用在初始化阶段已预先构建好的状态机将当前状态移动到下一个正确的状态。
图4示出了CPU侧处理400的流程图。在开始401后,从网络接收报文402,并预处理该报文403。如果启用了快通道404,从网络接收下一个报文。如果未启用快通道404,将报文放入报文缓冲区405。如果缓冲区已满或超时406,通过直接内存访问(direct memory access,DMA)将报文缓冲区传送到GPU 407,并从GPU接收匹配结果408,用于下一过程409。如果缓冲区未满或未发生超时406,从网络接收下一报文。
图5示出了GPU侧处理的示意图500。图6示出了GPU侧处理的对应流程图600。输入数据510包括N个报文511、512、513、514。每个报文由各自的线程521、522、523、524处理并有序地转发到状态转换表520。在开始601后,检查GPU报文缓冲区602。如果缓冲区不为空,内核开始模式匹配603,N个线程604、605、606、607通过状态转换表520匹配各个报文1至N。将结果写入结果缓冲区608。
为了充分利用大规模并行性,现有技术将每个线程视为regex引擎,其访问全局存储器中的状态表,并每次搜索一个报文。
如上所述,DFA算法空间复杂度过高,因此,DFA状态表非常大,在进行模式匹配时,线程非常频繁地访问GPU全局存储器,这会大大降低性能。每个线程需要访问整个DFA状态表。但是,DFA状态表经常有几十甚至几百兆字节(megabyte,MB)大。因此,线程对GPU全局存储器的访问非常频繁。等待线程终止的时间长。在网络中,报文的大小可非常不同,所以每个线程的工作量不相等。第一个完成的线程可能需要等待,直到最后一个线程完成。这将恶化GPU的整体并行性。
发明内容
本发明的目的是提供一种用于在多核和众核处理器系统上进行高性能模式处理的技术。
这个目的通过独立权利要求的特征来实现。更多的实施形式在从属权利要求、说明书和附图中显而易见。
下文所描述的本发明是基于以下发现:通过将整个DFA状态机划分成许多小型数据结构可提高模式处理性能。然后每个数据结构足够小,使得整个数据结构或数据结构的头部部分可放入GPU局部存储器中。这样,能减少对GPU全局存储器的访问。所有线程可每次搜索一个报文,每个线程可只访问特定数据结构,并可搜索特定数据结构所指示的报文的特定部分。所有线程可只需要处理报文的几个字节,因此使等待线程终止的时间最小化,从而提供了更好的并行性。
本发明描述了一种用于在CPU和GPU异构平台上进行多模式regex匹配的方法,其中,该方法在多核和众核处理器中实现了高性能,内存占用小,编译时间短和良好的扩展性。
为了详细地描述本发明,会使用以下术语、缩略语和符号:
中央处理器(Central Processing Unit,CPU),
图形处理器(Graphics Processing Unit,GPU),
确定有限自动机(Deterministic Finite Automaton,DFA),
正则表达式(regular expression,Regex),
Trie:一种有序的树型数据结构。
多核和众核处理器已经成为台式电脑和可扩展计算机的标准构建块。时钟速率和功耗之间的关系,加上处理散热的能力有限,意味着现在性能改进采用的方式是使用更多的平行内核,而不是增加时钟速率。虽然自20世纪90年代初期以来,多核处理器已经出现在分布式存储系统中,但这些系统的大多数科技应用只使用分布式存储模型来开发。多核节点将每个内核视为其上的一个节点,这可让采用分布式存储编程模型的代码受益。在分布式存储代码的特定情况下,每节点有k个内核的m个节点的集群可以启动p=m乘以k个进程。由于它的简单性和当前的成功,这种方法是受欢迎的。从适中的多核节点(约每节点10个内核)变为众核节点(每个节点几十或几百个内核),有必要利用某种程度的并行性,以见证未来处理器的不断提速。
确定性有限自动机(Deterministic Finite Automaton,DFA)也称为确定性有限状态机,是一种接受/拒绝符号的有限字符串并为每个输入字符串输出该自动机的唯一计算(或运行)的有限状态机。“确定性”是指计算的唯一性。
正则表达式(缩写为regex)为形成搜索模式的字符序列,主要用于使用字符串的模式匹配中或字符串匹配中,即类似“查找和替换”的操作。
Trie为用于存储动态集或关联数组的有序树形数据结构,其中的键一般为字符串。Trie也称为数字树、基树或前缀树,因为其可用前缀来搜索。与二叉排序树不同,树中没有节点存储与该节点关联的键。相反,节点在树中的位置定义了与节点相关联的键。节点的所有后继节点有与该节点相关联的字符串的共同前缀,并且根与空字符串相关联。
根据第一方面,本发明涉及一种用于在处理器平台或处理器系统上进行模式处理的方法。所述方法包括:使用第一处理单元将多个模式编译为多个数据结构,其中,所述编译使得至少所述多个数据结构的头部数据部分能放入第二处理单元的计算单元的局部存储器;将所述多个数据结构上传到所述第二处理单元,使至少所述多个数据结构的头部数据部分上传到所述第二处理单元的计算单元的局部存储器中,以及使所述多个数据结构中未能放入所述局部存储器的剩余数据部分上传到所述第二处理单元的全局存储器中。
每个数据结构足够小,从而整个数据结构或其头部部分能放入所述第二处理单元的局部存储器,例如GPU的局部存储器。因而,能够减少对所述第二处理单元的全局存储器,例如GPU全局存储器的访问。
根据所述第一方面,在所述方法的第一种可能实施形式中,所述第一处理单元包括所述处理器平台的中央处理器(central processing unit,CPU),所述第二处理单元包括所述处理器平台的图形处理器(graphics processingunit,GPU)。
所述CPU可以是多核处理器,所述GPU可以是众核处理器。因此,所述处理器平台可以是多核和众核处理器平台,在所述平台上可以执行所述方法。凭借在这种多核和众核处理器平台上执行所述方法的可能性,可以实现的是:所述方法甚至可在个人计算机上执行,而不仅仅是在高端数据中心计算机上执行,因为CPU和GPU通常是个人计算机的组件。
根据如上所述第一方面或根据所述第一方面的所述第一种实施形式,在所述方法的第二种可能实施形式中,执行所述编译,使得整个数据结构能放入诸如图形处理器等所述第二处理单元的计算单元的局部存储器;执行所述上传,使整个数据结构上传到诸如图形处理器的所述第二处理单元的计算单元的局部存储器中。
当整个数据结构能放入所述局部存储器时,能提高模式处理的性能,因为访问局部存储器比访问全局存储器快。
根据如上所述第一方面或根据所述第一方面的前述实施形式中的一种,在所述方法的第三种可能实施形式中,执行所述编译,使得每个数据结构的头部数据部分能放入所述第二处理单元的对应计算单元的局部存储器;执行所述上传,使至少每个数据结构的头部数据部分上传到所述第二处理单元的所述对应计算单元的所述局部存储器中。
当每个数据结构的头部数据部分能放入对应计算单元的局部存储器时,能提高处理速度,因为每个计算单元可以基于对自己的局部存储器的访问进行模式处理,而访问自己的局部存储器比访问全局存储器或访问其它计算单元的局部存储器快。
根据如上所述第一方面或根据所述第一方面的前述实施形式中的任意一种,在所述方法的第四种可能实施形式中,执行所述上传,使每个数据结构(至少其头部数据部分)只上传到所述第二处理单元的其中一个所述计算单元(的局部存储器)中。
当只将每个数据结构上传到其中一个所述计算单元时,能提高处理速度,因为无需建立处理器间连接。
根据如上所述第一方面或所述第一方面的前述实施形式中的任意一种,在所述方法的第五种可能实施形式中,所述多个模式包括regex模式。
regex模式比较普遍,因此,所述方法可在很多应用中使用。
根据如上所述第一方面或所述第一方面的前述实施形式中的任意一种,在所述方法的第六种可能实施形式中,执行所述编译,使得每个数据结构包括Trie数据结构。
可通过前缀搜索Trie,因为节点的所有后继节点有与该节点相关联的字符串的共同前缀,因此,使用Trie数据结构减小了搜索模式的计算复杂度。
根据如上所述第一方面或所述第一方面的前述实施形式中的任意一种,在所述方法的第七种可能实施形式中,执行所述编译,使得每个数据结构包括确定性有限自动机状态表。
确定性有限自动机(Deterministic Finite Automaton,DFA)接受/拒绝符号的有限字符串并为每个输入字符串仅输出该自动机的唯一计算(或运行)的有限状态机。DFA是用于获取有限状态机的最简单模式之一。因此,使用DFA的方法比较简单且非常高效。
根据如上所述第一方面或所述第一方面的前述实施形式中的任意一种,在所述方法的第八种可能实施形式中,所述方法包括:在所述第二处理单元的报文缓冲区接收报文;使用在所述第二处理单元的所述计算单元上运行的多个线程对所述接收的报文执行多模式匹配,其中,每个线程根据至少部分(至少数据结构的头部数据部分)上传到所述计算单元的所述局部存储器的数据结构处理至少所述接收的报文的一部分,其中,所述线程在所述计算单元上运行。
所有线程在任何时候可搜索一个报文。每个线程可只访问特定数据结构,搜索报文的特定部分,其中,所述特定部分可由具体数据结构中的信息指示或由线程标号指示(例如,标号为1的线程从标号为1的字节开始处理数据,标号为2的线程从标号为2的字节开始处理数据,等等)。所有线程将只需处理报文的少量字节。因此,可最小化等待线程终止的时间以及可扩大并行性,从而提升效率。
根据所述第一方面的所述第八种实施形式,在所述方法的第九种可能实施形式中,所述接收的报文的哪一部分由特定线程处理的信息包括在所述数据结构内,其中,至少部分所述数据结构被上传到计算单元的局部存储器,所述特定线程在所述计算单元上运行。
当所述接收的报文的哪一部分由特定线程处理的信息包括在所述数据结构内时,处理可以根据不同的场景灵活调整。
根据所述第一方面的所述第八种或所述第九种实施形式,在所述方法的第十种可能实施形式中,所述在不同计算单元上运行的所有线程对接收的同一个报文执行多模式匹配。
当所有线程对接收的同一个报文执行多模式匹配时,能扩大并行性并提高计算效率。
根据所述第一方面的所述第八种至所述第十种实施形式中的任意一种,在所述方法的第十一种可能实施形式中,每个数据结构包括信息,其中,所述信息指示所述接收的待特定线程处理的报文的第一个字节,所述特定线程根据这些数据结构进行模式匹配。
所有线程仅需从对应数据结构的信息中指示的字节开始处理所述接收的报文,线程根据所述对应的数据结构进行模式匹配。因为不再需要每个线程处理整个报文,减少了等待每个线程终止的时间。
根据所述第一方面的所述第十一种实施形式,在所述方法的第十二种可能实施形式中,对于每个数据结构,所述信息中指示的所述第一个字节不同,并指示所述接收的报文的递增字节。
根据所述第一方面的所述第八种至所述第十二种实施形式中的任意一种,在所述方法的第十三种可能实施形式中,每个数据结构包括信息,其中,所述信息指示所述接收的待特定线程处理的报文的最后一个字节,所述特定线程根据这种数据结构进行模式匹配。
然后每个线程可搜索输入数据的不同部分,这扩大了并行处理,提高了计算效率。
根据如上所述第一方面或所述第一方面的前述实施形式中的任意一种,在所述方法的另一种可能实施形式中,所述第二处理单元拥有的计算单元数量比所述第一处理单元的可至少多10倍、50倍、500倍或1000倍。
根据如上所述第一方面或所述第一方面的前述实施形式中的任意一种,在所述方法的又一种可能实施形式中,将未能放入所述局部存储器的数据结构全部上传到所述第二处理单元的所述全局存储器。
根据第二方面,本发明涉及一种处理器平台,即一种处理器系统,包括:第一处理单元,用于将多个模式编译为多个数据结构;第二处理单元,包括全局存储器、报文缓冲区、多个计算单元,每个计算单元包括局部存储器,其中,所述第一处理单元用于编译所述多个模式,使得至少所述多个数据结构的头部数据部分能放入所述第二处理单元的所述计算单元的所述局部存储器;所述第一处理单元用于将所述多个数据结构上传到所述第二处理单元,使至少所述多个数据结构的头部数据部分上传到所述第二处理单元的所述计算单元的所述局部存储器中,以及使所述多个数据结构中未能放入所述局部存储器的剩余数据部分上传到所述第二处理单元的所述全局存储器中。
将所述多个模式编译为能放入局部存储器的多个数据结构提高了计算效率,因为访问局部存储器比访问全局存储器快。
根据所述第二方面,在所述系统的第一种可能实施形式中,所述第一处理单元包括中央处理器(central processing unit,CPU);所述第二处理单元包括图形处理器(graphics processing unit,GPU)。
所述CPU可以是多核处理器,所述GPU可以是众核处理器。因此,所述处理器平台或系统可以是多核和众核处理器平台,例如,在该平台上可以执行所述第一方面或所述第一方面的实施形式的所述方法。凭借在这种多核和众核处理器平台上执行所述方法的可能性,可以实现的是:所述方法甚至可在个人计算机上执行,而不仅仅是在高端数据中心计算机上执行,因为CPU和GPU通常是个人计算机的组件。
根据如上所述第二方面或根据所述第二方面的所述第一种实施形式,在所述系统的第二种可能实施形式中,所述第二处理单元用于:在所述报文缓冲区从所述第一处理单元接收至少一个报文;使用在所述第二处理单元的所述计算单元上运行的多个线程对所述接收的至少一个报文执行多模式匹配,其中,每个线程用于根据被上传到所述第二处理单元的所述数据结构内包括的信息处理所述接收的至少一个报文的一部分。
一次可上传一个以上的报文,这提高了上传过程的效率。每个计算单元可从组中所有报文的对应字节开始各自的处理。
根据如上所述第二方面或所述第二方面的前述实施形式中的任意一种,在所述系统的另一种可能实施形式中,所述第二处理单元拥有的计算单元数量比所述第一处理单元的可至少多10倍、50倍、500倍或1000倍。
根据第三方面,本发明涉及一种带有程序代码的计算机程序,其中,当所述计算机程序在计算机上运行时可执行如上所述第一方面或所述第一方面的前述实施形式中的任意一种所述的方法。
可灵活设计所述计算机程序,从而容易达到更新要求。所述计算机程序产品可在多核和众核处理系统上运行。
根据第四方面,本发明涉及一种在CPU+GPU异构环境中,将整个DFA状态机划分为多个小型数据结构,每个线程通过遍历特定数据结构来匹配同一报文的特定部分的方法。
通过将整个DFA状态机划分为多个小型数据结构,从而可使用局部存储器,而访问局部存储器比访问全局存储器快。
根据第五方面,本发明涉及一种将小型数据结构放入GPU局部存储器的方法,其中,将太大而未能放入局部存储器的数据结构分为头部部分和剩余部分,将头部部分放入GPU局部存储器,将剩余部分放入GPU全局存储器。
关于路由的主要信息可存储在头部部分,从而将头部部分存储在局部存储器中时,可提高处理性能。
在所述第五方面的第一种可能实施形式中,所述头部部分等同于不占缓存的部分。
访问缓存内存会非常快。
根据第六方面,本发明涉及一种在GPU中进行线程匹配方法,其中,所有线程每次搜索一个报文,每个线程只访问特定Trie,从所述Trie指示的报文的特定部分开始搜索。
这支持更高程度的并行性。
附图说明
本发明的具体实施方式将结合以下附图进行描述,其中:
图1图示了一种包括CPU和GPU的多核和众核处理器系统;
图2图示了图1中在CPU上执行的编译阶段的流程图;
图3示出了一种Gnort,网络入侵检测系统(network intrusion detectionsystem,NIDS)的总体架构;
图4图示了CPU侧处理的流程图;
图5图示了GPU侧处理的示意图;
图6图示了GPU侧处理的流程图;
图7示出了根据一实施形式的图示一种处理器系统的方框图;
图8示出了根据一实施形式的一种将模式编译为数据结构并将数据结构分配到图7的处理器系统所示的第二处理单元的存储器的流程图;
图9示出了根据一实施形式的图示了在图7的处理器系统所示的第二处理单元上进行的模式匹配过程的示意图;
图10示出了根据一实施形式的图9中模式匹配过程的流程图;
图11示出了根据一实施形式的图示一种在处理器平台上进行模式处理的方法的方框图。
具体实施方式
以下结合附图进行详细描述,所述附图是描述的一部分,并通过图解说明的方式示出可以实施本发明的具体方面。可以理解的是,在不脱离本发明范围的情况下,可以利用其它方面,并可以做出结构上或逻辑上的改变。因此,以下详细的描述并不当作限定,本发明的范围由所附权利要求书界定。
本文描述的设备和方法可基于事件计算节点和事件状态存储器。可理解的是,与所描述方法相关的描述同样适用于执行该方法的设备和系统,反之亦然。例如,如果描述了具体的方法步骤,则相应的设备可包括用于执行该描述的方法步骤的单元,虽然这种单元在图中没有明确描述或示出。另外,可理解的是,除非另有特别说明,本文描述的各个示例性方面的特征可相互结合。
本文描述的方法和设备可在数据库管理系统(data base managementsystem,DBMS)尤其是使用SQL的DBMS中实现。所描述的设备和系统可包括集成电路和/或集成无源器件,并可根据各种技术生产。例如,电路可设计为逻辑集成电路、模拟集成电路、混合信号集成电路、光学电路、存储器电路和/或集成无源器件。
图7示出了根据一实施形式的图示了一种多核和众核处理器系统700的方框图。多核和众核处理器系统700可以是通用处理器系统或处理器平台的一个具体示例。
处理器平台700,例如图7所示的多核和众核处理器系统700,可包括诸如CPU 710等的第一处理器710和诸如GPU 720等的第二处理器720。CPU 710中的模式编译器711可以包括用于创建和优化多个Trie(multipleTries,MTries)的单元712和用于MTries编码的单元713。诸如GPU 720等的第二处理器可包括全局存储器721,在其上设置了可与诸如CPU 710等的第一处理器中的主机报文缓存714通过直接内存访问(direct memoryaccess,DMA)交互数据的存储器或报文缓冲区723。全局存储器721还可包括结果缓冲区722,匹配结果715可在诸如CPU 710等的第一处理器从结果缓冲区722访问以供输出。如图7所示的示例,两个Trie 724a、724b存储在全局存储器721中。在其它示例中,其它任意数量的Trie可存储在全局存储器721中。诸如GPU 720等的第二处理器还可包括一组计算单元(也称为计算单元或计算单元)725a、725b、725c,其中,每个计算单元可包括DFA内核727,DFA内核727可包括一组流726a、726b、726c、726d和局部存储器728。每个计算单元725a、725b、725c可作为第二处理器720的专用内核。此外,每个计算单元725a、725b、725c可用于独立于其它计算单元725a、725b、725c执行计算。从图7可看出,在局部存储器728可存储几个(至少部分地)Trie 729。例如,Trie 2和Trie 4被分摊到局部存储器721和全局存储器728,因为Trie 2和Trie 4不能完全放入局部存储器728。诸如CPU 710等的第一处理器可使用模式编译器711的MTries编码单元713直接访问或通过GPU 720间接访问计算单元725a、725b、725c的局部存储器728。
换言之,处理器系统700,例如多核和众核处理器系统700,包括用于将多个模式编译为多个数据结构(例如上述提及的Trie)的第一(例如中央)处理单元710。此外,处理器系统700包括第二(例如图形)处理单元720,其中,第二处理单元720包括全局存储器721、报文缓冲区723和多个计算单元725a、725b、725c。每个计算单元725a、725b、725c包括自己的专用局部存储器728。此种局部存储器728与全局存储器721的不同之处在于:通常只有计算单元725a、725b、725c包括可访问其专用局部存储器728(而不是其它计算单元725a、725b、725c)的这种局部存储器728,而所有计算单元725a、725b、725c都可访问全局存储器721。
执行编译(从而可在第一处理器710执行编译),使得至少(或优选地)多个数据结构的头部数据部分能放入第二(例如图形)处理单元720的计算单元725a、725b、725c的局部存储器728。第一(例如中央)处理单元710可用于将多个数据结构上传到第二(例如图形)处理单元720,使至少多个数据结构(例如Trie)729的头部数据部分上传到第二(例如图形)处理单元720的计算单元725a、725b、725c的局部存储器728中,以及使多个数据结构中未能放入局部存储器728的剩余数据部分724a、724b上传到第二(例如图形)处理单元720的全局存储器72中1。在图7所示的示例中,Trie 2和Trie 4未能放入计算单元725a、725b、725c的局部存储器728,因此仅将Trie 2和Trie 4的头部数据部分上传到第一计算单元725a的局部存储器,而将Trie 2和Trie 4的剩余数据部分724a、724b上传到全局存储器721。
第二(例如图形)处理单元720可在报文缓冲区723从第一(例如中央)处理单元710接收一个或多个报文,并可使用多个线程对所接收报文执行多模式匹配,多个线程(彼此独立,例如它们之间无任何数据交互)在第二(例如图形)处理单元720的计算单元725a、725b、725c上运行。每个线程可根据被上传到第二(例如图形)处理单元720的数据结构内包括的信息处理所接收报文的一部分。例如,线程可对报文或至少报文的某部分进行regex模式匹配。每个线程分析的报文的部分可由数据结构(例如Trie)中的信息来确定。
编译可提供的不是包括报文中要搜索的所有模式的完整(大)状态机数据结构(例如DFA状态机,例如用于regex模式匹配),而是许多小型数据结构(例如Trie),其中,每个数据结构对应于在报文的相同部分要搜索的一个或多个模式。换言之,在计算单元上运行的线程可在报文内搜索不同的模式,但必须在报文的相同部分(例如,数据结构中指示的模式偏移相同的部分,线程根据数据结构进行模式匹配)搜索。因此,不同的线程可搜索相同的模式但却是在相同报文的不同部分搜索。
虽然图7中描述的是这个算法用于Trie数据结构,但其它实施形式可将这个算法用于不同的数据结构。
在编译阶段或模式编译器711中,可对待匹配的所有regex模进行编译,以获取多个数据结构,例如M Tries。每个数据结构表示报文中待搜索的一个或多个模式,并表示这些模式的待搜索的报文的一部分。可将每个Trie放入第二(例如图形)处理单元720的特定计算单元725a、725b、725c的局部存储器728。可通过以下示例性指导把M Tries放入第二(例如图形)处理单元的局部存储器728:
可将也只将一个Trie放入计算单元725a、725b、725c中的一个计算单元中;
将所有Trie放入局部存储器728;
如果一个Trie不能和其它Trie一起放入局部存储器728,将该Trie的头部部分即不占缓存的部分放入局部存储器728,并将剩余部分放入全局存储器721。
图8在流程图800中示出如何将待搜索的模式编译为数据结构以及如何将数据结构分配到第二处理单元720的计算单元725a–725c的局部存储器728和全局存储器721。
图8的流程图800中步骤801至810示出了处理器系统700的第一处理单元710如何将待匹配的模式编译为(状态机)数据结构(M Tries)。
在开始编译过程(步骤801)后,使用第二计算块在模式集中搜索802最大模式偏移作为整数k的函数。然后创建803k个模式组。对于模式集中的每个模式(步骤804),检查805模式是否有具体模式偏移或是否无与其相关联的模式偏移。如果模式有与其相关联的具体偏移,将该模式添加806到与该模式的偏移相关联的模式组(patterngroup[offset])。否则(如果模式无任何与其相关联的具体模式偏移),将该模式添加807到所有创建的模式组。重复808对具体偏移的这种检查,直到最后一个模式已被处理并且被添加到某个模式组。
然后,将每个创建的模式组(步骤809)编译810为与所创建的模式组的偏移相关联的数据结构(例如Trie[offset])并压缩。同一申请人的标题为"生成多个索引数据字段的方法和装置(Method and apparatus forgenerating a plurality of indexed data fields)"的平行PCT申请描述了步骤801至步骤810执行的步骤的具体实施。
此外,步骤和方框812至817示出了如何将不同的编译的数据结构分配到第二处理单元720的存储器721、728。
在编译好数据结构(Trie)后,检查(812)编译的数据结构是否能放入第二处理单元720的计算单元725a、725b、725c的局部存储器728。
如果数据结构(例如Trie[offset],如图7中的Trie 2和Trie 4)不能完全放入这些局部存储器728,将数据结构划分(814)为两部分:头部部分和剩余部分。将(不占缓存的)头部部分放入(815)第二(例如图形)处理单元720的局部存储器728,将剩余部分放入(815)第二(例如图形)处理单元720的全局存储器721。
如果完整的数据结构(例如完整的Trie[offset],如图7中的Trie 1和Trie 3)能放入第二处理单元720的计算单元725a、725b、725c的局部存储器728,则将完整的数据结构复制到计算单元725a、725b、725c的局部存储器728。
重复(816)将模式组编译为数据结构和将编译的数据结构上传到第二处理单元720的存储器的过程,直到最后一个模式组被编译完并被上传到第二处理单元720的存储器。
因此,使用处理器平台700的第一处理单元710将多个模式编译为多个数据结构可由计算方框或步骤801、802、803、804、805、806、807、808、809、810执行。在这些步骤中,对多个模式进行编译,使得至少多个数据结构的头部数据部分能放入处理器平台700的第二处理单元720的计算单元725a、725b、725c的局部存储器728,如上文结合图7的描述。在步骤812至815,将多个数据结构上传到第二处理单元720,使至少多个数据结构的头部数据部分上传到第二处理单元720的计算单元725a、725b、725c的局部存储器728中,以及使多个数据结构中未能放入局部存储器的剩余数据部分上传到第二处理单元720的全局存储器721中。
图9示出了图示在第二处理单元720上,例如在GPU侧上,进行的模式匹配过程的示意图900。在该示例中,输入数据910包括有字节1至N的第一报文911和有字节1、2等的第二报文912。此外,还图示了多个线程931至934,它们对第一报文911的各部分进行模式匹配。每个线程931至934在第二处理单元720的计算单元725a、725b、725c中的一个计算单元中独立于其它线程运行。如前所述,所有线程931、932、933、934每次可搜索同一个第一报文911。每个线程只访问特定数据结构或Trie 921、922、923、924,且可搜索第一报文911的特定部分,该特定部分可由Trie或Trie中的信息,例如模式偏移指示。每个Trie 921、922、923、924表示(状态机)数据结构,数据结构由上文结合图7所描述的第一处理单元(例如CPU)710接收到的模式编译而成,例如根据上文结合图8描述的编译过程编译而成。
例如,第一线程931可访问第一Trie 921,第一Trie 921可指示第一报文911的搜索字节1至N;第二线程932可访问第二Trie 922,第二Trie 922可指示第一报文911的搜索字节2至N;第三线程933可访问第三Trie 923,第三Trie 923可指示第一报文911的搜索字节3至N;第N线程934可访问第N Trie 924,其中,第N Trie 924可指示第一报文911的搜索字节N。
在一个实施形式中,整组线程931、932、933、934的使用可与缓冲区中可用的报文911、912的数量无关。在报文911、912比较小的示例中,并非可能需要所有线程931、932、933、934处理单个报文。在一个示例中,第一线程931可处理第一报文911,第二线程932可处理第二报文912,第三线程可处理第三报文(图9中未示出),第N线程934可处理第N报文(图9中未示出)。在另一示例中,第一和第二线程931、932可处理第一报文911,第三线程933可处理第二报文。在一个示例中,第一、第二、第三、第N线程931、932、933、934可灵活地处理传入报文,例如根据报文长度和/或系统负载来处理。
在一个示例中,可不需要提前规定线程和线程要处理的报文或报文字节之间的分配;相反,它可以灵活分配。报文的线程分配可用于分配哪个线程处理哪些报文和/或哪些报文字节。分配可以在线进行,取决于所接收报文的类型和取决于待处理的负载。可根据要求和/或当前负载情况调整有效线程的数量。例如,在每个GPU内核有少量报文处理和/或有效线程的数量甚至可能大于可用报文的数量的情况下,整组线程的使用与缓冲区中可用报文的数量可无关,以避免平台利用不充分。可灵活地处理线程处理的实际微分器,例如通过报文类型和/或平台负载来区别线程处理,可通过将匹配并行化来提高GPU效率。按报文分线程和按偏移分线程方案因此可转换为灵活度高效率高的实际微分器方案,其通过将匹配并行化提高了GPU效率。
图10示出了根据一实施形式的图示了第二处理单元720进行的模式匹配的流程图1000。
在开始1001后,检查(1002)第二处理单元的报文缓冲区723,例如GPU报文缓冲区723。如果缓冲区非空,内核开始(1003)模式匹配。现在根据上传到它们局部存储器728中各自的数据结构,几个计算单元725a至725c对各自的数据结构中指示的报文的部分进行(1004至1007)模式匹配。在所示的示例中,N(其中N是≥1的整数)个线程使用计算单元725a至725c的局部存储器728中各自的Trie从偏移1至N开始将各自的模式匹配到报文,线程在计算单元上运行。特别地,线程1可使用第一计算单元的局部存储器728的Trie 1从(字节)偏移1至N开始匹配报文;线程2可使用第二计算单元的局部存储器728的Trie 2从(字节)偏移2至N开始匹配报文;线程3可使用第三计算单元的局部存储器728的Trie 3从(字节)偏移3至N开始匹配报文;线程N可使用第N计算单元的局部存储器728的Trie N从(字节)偏移N至N开始匹配报文。将匹配线程的结果写入1008第二处理单元720的结果缓冲区722。
每个线程要处理的偏移和最后一个字节由被编译在Trie 1至N中的信息指示,线程根据Trie 1至N进行模式匹配。
该局部存储器可表示上文结合图7描述的处理器平台700的诸如GPU等的第二处理单元720的计算单元725a、725b、725c的局部存储器728中的一个。
每个Trie(Trie 1至Trie N)通过将模式编译为数据结构而生成,如图8的编译过程所描述。在图8至图10所示的示例中,每个数据结构包括Trie结构。然而,根据其它实施形式,也可将模式编译为包括其它(状态机)结构的数据结构。此外,每个数据结构(Trie)可包括要在报文的同一部分搜索的几个模式。不同数据结构涉及报文的不同部分。因此,在模式匹配过程中,多个线程访问相同的报文却访问该报文的不同部分。此外,由不同线程访问的报文的部分可能重叠。
当应用上文结合图9描述的实际微分器方案时,线程1004、1005、1006、1007可匹配由报文的线程分配器(图10中未示出)分配的各自的报文或报文字节/偏移。这种报文的线程分配器可灵活地分配哪些报文或报文字节/偏移由哪些线程处理,因此,可提高匹配的并行化,从而提高了GPU侧处理的处理速度。
图11示出了根据一实施形式的图示了用于诸如多核和众核处理器平台的处理器平台上的模式处理方法1100的方框图。处理器平台可包括第一(例如中央)处理单元和第二(例如图形)处理单元。第二(例如图形)处理单元可以包括全局存储器,报文缓冲区和多个计算单元,每个计算单元可包括局部存储器。该方法1100可包括使用第一(例如中央)处理单元将多个模式编译1101为多个数据结构。该编译可使至少或优选地多个数据结构的头部数据部分能放入第二(例如图形)处理单元的计算单元的局部存储器。该方法1100可包括将多个数据结构上传1103到第二(例如图形)处理单元,使至少或优选地所述多个数据结构的头部数据部分上传到第二(例如图形)处理单元的计算单元的局部存储器中,使多个数据结构中未能放入局部存储器的剩余数据部分上传到第二(例如图形)处理单元的全局存储器中。
在一个示例中,执行该编译使得整个数据结构能放入第二(例如图形)处理单元的计算单元的局部存储器;上传可包括:将整个数据结构上传到第二(例如图形)处理单元的计算单元的局部存储器。在一个示例中,可执行该编译使得每个数据结构的头部数据部分能放入第二(例如图形)处理单元的对应的计算单元的局部存储器;上传可包括:将至少或优选地每个数据结构的头部数据部分上传到第二(例如图形)处理单元的对应计算单元的局部存储器。在一个示例中,上传可包括:将每个数据结构只上传到第二(例如图形)处理单元中的一个计算单元。在一个示例中,多个模式可包括regex模式。在一个示例中,执行该编译使得每个数据结构包括Trie数据结构。在一个示例中,执行该编译使得每个数据结构包括确定性有限自动机状态表。在一个示例中,该方法可包括:在第二(例如图形)处理单元的报文缓冲区接收报文;使用在第二(例如图形)处理单元的计算单元上运行的多个线程对所接收报文执行多模式匹配。每个线程可根据至少部分被上传到计算单元的局部存储器的数据结构内包括的信息处理所接收报文的至少一部分,线程在该计算单元上运行。在一个示例中,所接收报文的哪一部分由特定线程处理的信息可包括在数据结构中,至少部分该数据结构被上传到计算单元的局部存储器,特定线程在该计算单元上运行。在一个示例中,所有线程可在每个处理时间对所接收报文执行多模式匹配。在一个示例中,数据结构中包括的所接收报文的哪一部分由特定线程处理的信息指示这个部分过程要处理的所接收报文的第一个字节。在一个示例中,对于每个数据结构,信息指示的第一个字节可以不同,并可指示所接收报文的递增字节。在一个示例中,该信息还指示特定线程要处理的所接收报文的最后一个字节。对于所有子数据结构,信息指示的最后一个字节可相等。
本文描述的方法、系统和设备可作为数字信号处理器(Digital SignalProcessor,DSP)、微控制器或任何其它侧处理器专中的软件实现,或作为专用集成电路(application specific integrated circuit,ASIC)中的硬件电路实现。
本发明可在数字电子电路中实现,或者在计算机硬件,固件,软件,或者在它们的组合中实现,例如在传统移动装置的硬件中或在专门用于处理本发明描述的方法的新硬件中实现。
本发明还支持包括计算机可执行代码或计算机可执行指令的计算机程序产品,当执行该代码或指令时,使得至少一个计算机执行本文所描述的执行和计算步骤,特别是执行上文结合图11所描述的方法1100和上文结合图7至图10所描述的技术。这样的计算机程序产品可包括可读存储介质,可读存储介质中存储有供处理器系统使用的程序代码。处理器系统可为多核和众核处理器系统,包括:第一(例如中央)处理单元和第二(例如图形)处理单元。第二(例如图形)处理单元包括全局存储器、报文缓冲区和多个计算单元,每个计算单元包括局部存储器。程序代码包括:第一(例如中央)处理单元用于将多个模式编译为多个数据结构的指令,其中,该编译使得至少或优选地多个数据结构的头部数据部分能放入第二(例如图形)处理单元的计算单元的局部存储器;和第一(例如中央)处理单元用于将多个数据结构上传到第二(例如图形)处理单元的指令,其中,该上传使至少或优选地所述多个数据结构的头部数据部分上传到第二(例如图形)处理单元的计算单元的局部存储器中,以及使多个数据结构中未能放入局部存储器的剩余数据部分上传到第二(例如图形)处理单元的全局存储器中。
如上文所述的本发明各方面描述了CPU和GPU异构环境。本发明的其它方面涉及如CPU、FPGA、SNP和FPGA等的不同异构环境。在这些环境的一个环境中,如上文结合图7所描述的第一处理单元710可表示CPU,如上文结合图7所描述的第二处理单元720可表示FPGA。在这些环境的另一个环境中,如上文结合图7所描述的第一处理单元710可表示SNP,如上文结合图7所描述的第二处理单元720可表示FPGA。
尽管本发明的特定特征或方面可能已经仅结合几种实现方式中的一种进行公开,但此类特征或方面可以和其它实现方式中的一个或多个特征或方面相结合,只要对于任何给定或特定的应用是有需要或有利。而且,在一定程度上,术语“包括”、“有”、“具有”或这些词的其它变形在详细的说明书或权利要求书中使用,这类术语和所述术语“包含”是类似的,都是表示包括的含义。同样,术语“示例性地”,“例如”仅表示示例,而不是最好或最佳的。
虽然本发明图示和描述了具体方面,但本领域普通技术人员可理解的是,在不偏离本发明范围的情况下,许多其它和/或等同实现可替代所示和描述的具体方面。本发明意在涵盖本发明所述具体方面的任何改变或变体。
尽管以下权利要求书中的各元素是借助对应的标签按照特定顺序列举的,除非对权利要求的阐述另有暗示用于实现部分或所有这些元素的特定顺序,否则这些元素并不一定限于以所述特定顺序来实现。
通过以上启示,对于本领域技术人员来说,许多替代产品、修改及变体是显而易见的。当然,本领域的技术人员容易意识到除本文所述的应用之外,还存在本发明的众多其它应用。虽然已参考一个或多个特定实施例描述了本发明,但本领域的技术人员将认识到在不偏离本发明的范围的前提下,仍可对本发明作出许多改变。因此,应理解,只要是在所附权利要求书及其等效文句的范围内,可以用不同于本文具体描述的方式来实践本发明。
Claims (15)
1.一种用于在处理器平台(700)上进行模式处理的方法(1100),其特征在于,所述方法包括:
将多个模式(1101)编译为多个数据结构,使得至少所述多个数据结构的头部数据部分能放入所述处理器平台(700)的第二处理单元(720)的计算单元(725a、725b、725c)的局部存储器(728);
将所述多个数据结构上传(1103)到所述第二处理单元(720),使至少所述多个数据结构的头部数据部分上传到所述第二处理单元(720)的计算单元(725a、725b、725c)的局部存储器(728)中,以及使所述多个数据结构中未能放入所述局部存储器的剩余数据部分上传到所述第二处理单元(720)的全局存储器(721)中。
2.根据权利要求1所述的方法(1100),其特征在于
所述第一处理单元包括中央处理器(710);
所述第二处理单元包括图形处理器(720)。
3.根据权利要求1或2所述的方法(1100),其特征在于
执行所述编译(1101),使得整个数据结构能放入所述第二处理单元的计算单元的局部存储器;
执行所述上传(1103),使整个数据结构上传到所述第二处理单元的计算单元的局部存储器中。
4.根据权利要求1至3中的一项权利要求所述的方法(1100),其特征在于
执行所述编译(1101),使得每个数据结构的头部数据部分能放入所述第二处理单元的对应计算单元的局部存储器;
执行所述上传(1103),使至少每个数据结构的头部数据部分上传到所述第二处理单元的所述对应计算单元的所述局部存储器中。
5.根据上述权利要求中的一项权利要求所述的方法(1100),其特征在于
执行所述上传(1103),使每个数据结构只上传到所述第二处理单元的其中一个所述计算单元中。
6.根据上述权利要求中的一项权利要求所述的方法(1100),其特征在于
所述多个模式包括正则表达式模式。
7.根据上述权利要求中的一项权利要求所述的方法(1100),其特征在于
执行所述编译(1101),使得每个数据结构包括树形数据结构(920)。
8.根据上述权利要求中的一项权利要求所述的方法(1100),其特征在于,包括:
在所述第二处理单元(720)的报文缓冲区(723)接收报文;
使用在所述第二处理单元(720)的所述计算单元(725a至725c)上运行的多个线程对所述接收的报文执行多模式匹配,其中
每个线程根据至少部分上传到所述计算单元(725a至725c)的所述局部存储器(728)的数据结构处理至少所述接收的报文的一部分,其中,所述线程在所述计算单元(725a至725c)上运行。
9.根据权利要求8所述的方法(1100),其特征在于
所述在不同的所述计算单元(725a至725c)上运行的线程对接收的同一个报文执行多模式匹配。
10.根据权利要求8至9中的一项权利要求所述的方法(1100),其特征在于
每个数据结构包括信息,其中,所述信息指示所述接收的待特定线程处理的报文的第一个字节,所述特定线程根据这种数据结构进行模式匹配。
11.根据权利要求10所述的方法(1100),其特征在于
对于每个数据结构,所述信息中指示的所述第一个字节不同,并指示所述接收的报文的递增字节。
12.根据权利要求8至11中的一项权利要求所述的方法(1100),其特征在于
每个数据结构包括信息,其中,所述信息指示所述接收的待特定线程处理的报文的最后一个字节,所述特定线程根据这种数据结构进行模式匹配。
13.一种处理器系统(700),其特征在于,包括
第一处理单元(710),用于将多个模式编译为多个数据结构;
第二处理单元(720),包括全局存储器(721)、报文缓冲区(723)、多个计算单元(725a、725b、725c),每个计算单元包括局部存储器(728),其中
所述第一处理单元(710)用于编译所述多个模式,使得至少所述多个数据结构的头部数据部分能放入所述第二处理单元(720)的所述计算单元(725a、725b、725c)的所述局部存储器(728);
所述第一处理单元(710)用于将所述多个数据结构上传到所述第二处理单元(720),使至少所述多个数据结构的头部数据部分上传到所述第二处理单元(720)的所述计算单元(725a、725b、725c)的所述局部存储器(728)中,以及使所述多个数据结构中未能放入所述局部存储器(728)的剩余数据部分上传到所述第二处理单元(720)的所述全局存储器(721)中。
14.根据权利要求13所述的处理器系统(700),其特征在于,
所述第一处理单元包括中央处理器(710);
所述第二处理单元(720)包括图形处理器(720)。
15.一种带有程序代码的计算机程序,其特征在于,当所述计算机程序在计算机上运行时可执行权利要求1至12任意一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/EP2014/050430 WO2015104060A1 (en) | 2014-01-13 | 2014-01-13 | Method for pattern processing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105900065A true CN105900065A (zh) | 2016-08-24 |
Family
ID=49956178
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480072994.6A Withdrawn CN105900065A (zh) | 2014-01-13 | 2014-01-13 | 模式处理方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10135851B2 (zh) |
EP (1) | EP2909720A1 (zh) |
CN (1) | CN105900065A (zh) |
CA (1) | CA2925753A1 (zh) |
WO (1) | WO2015104060A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107277109A (zh) * | 2017-05-18 | 2017-10-20 | 西安交通大学 | 针对压缩流量的多字符串匹配方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10212133B2 (en) * | 2016-07-29 | 2019-02-19 | ShieldX Networks, Inc. | Accelerated pattern matching using pattern functions |
US10212132B2 (en) * | 2016-07-29 | 2019-02-19 | ShieldX Networks, Inc. | Systems and methods for accelerated pattern matching |
WO2019056358A1 (en) * | 2017-09-25 | 2019-03-28 | Intel Corporation | EFFICIENT MEMORIZATION OF COMPUTER PROCESSOR DATA STRUCTURES IN COMPUTER MACHINE |
CN110493167B (zh) * | 2018-07-14 | 2021-06-29 | 北京数安鑫云信息技术有限公司 | 一种高效能深度威胁识别引擎的实现方法及系统 |
US11375032B2 (en) | 2018-12-20 | 2022-06-28 | Ebay Inc. | Traffic mirroring |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101258721A (zh) * | 2005-06-30 | 2008-09-03 | 英特尔公司 | 带状态的分组内容匹配机制 |
CN101551761A (zh) * | 2009-04-30 | 2009-10-07 | 浪潮电子信息产业股份有限公司 | 一种异构多处理器中共享流内存的方法 |
CN102007479A (zh) * | 2008-03-31 | 2011-04-06 | 先进微装置公司 | 点对点专用处理器结构和方法 |
CN102099788A (zh) * | 2008-06-06 | 2011-06-15 | 苹果公司 | 用于在多处理器上进行数据并行计算的应用编程接口 |
CN102625934A (zh) * | 2008-11-13 | 2012-08-01 | 英特尔公司 | 共享虚拟存储器 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5588132A (en) * | 1994-10-20 | 1996-12-24 | Digital Equipment Corporation | Method and apparatus for synchronizing data queues in asymmetric reflective memories |
US8281295B2 (en) * | 2008-05-23 | 2012-10-02 | International Business Machines Corporation | Computer analysis and runtime coherency checking |
CN101630323B (zh) | 2009-08-20 | 2012-01-25 | 中国科学院计算技术研究所 | 确定自动机的空间压缩方法 |
US9305116B2 (en) * | 2010-04-20 | 2016-04-05 | International Business Machines Corporation | Dual DFA decomposition for large scale regular expression matching |
US8789026B2 (en) * | 2011-08-02 | 2014-07-22 | International Business Machines Corporation | Technique for compiling and running high-level programs on heterogeneous computers |
US9093151B2 (en) * | 2012-06-13 | 2015-07-28 | International Business Machines Corporation | Programmable regular expression and context free grammar matcher |
EP2784692A1 (en) * | 2013-03-28 | 2014-10-01 | Hewlett-Packard Development Company, L.P. | Filter regular expression |
-
2014
- 2014-01-13 WO PCT/EP2014/050430 patent/WO2015104060A1/en active Application Filing
- 2014-01-13 US US15/111,132 patent/US10135851B2/en not_active Expired - Fee Related
- 2014-01-13 CA CA2925753A patent/CA2925753A1/en not_active Abandoned
- 2014-01-13 CN CN201480072994.6A patent/CN105900065A/zh not_active Withdrawn
- 2014-01-13 EP EP14700361.0A patent/EP2909720A1/en not_active Ceased
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101258721A (zh) * | 2005-06-30 | 2008-09-03 | 英特尔公司 | 带状态的分组内容匹配机制 |
CN102007479A (zh) * | 2008-03-31 | 2011-04-06 | 先进微装置公司 | 点对点专用处理器结构和方法 |
CN102099788A (zh) * | 2008-06-06 | 2011-06-15 | 苹果公司 | 用于在多处理器上进行数据并行计算的应用编程接口 |
CN102625934A (zh) * | 2008-11-13 | 2012-08-01 | 英特尔公司 | 共享虚拟存储器 |
CN101551761A (zh) * | 2009-04-30 | 2009-10-07 | 浪潮电子信息产业股份有限公司 | 一种异构多处理器中共享流内存的方法 |
Non-Patent Citations (4)
Title |
---|
CHENG-HUNG LIN: "《Accelerating regular expression matching using hierarchical parallel machines on GPU》", 《2011 IEEE GLOBAL TELECOMMUNICATIONS CONFERENCE - GLOBECOM 2011》 * |
CHENG-HUNG LIN: "《PFAC Library:GPU-Based String Matching Algorithm》", 《GPU TECHNOLOGY CONFERENCE 2012》 * |
CHEN-HUNG LIN: "《Accelerating string matching using multi-threaded algorithm on gpu》", 《2010 IEEE GLOBLE TELECOMMUNICATIONS CONFERENCE GLOBECOM 2010》 * |
张光斌: "《基于CUDA的多模式匹配技术》", 《第26次全国计算机安全学术交流会论文集》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107277109A (zh) * | 2017-05-18 | 2017-10-20 | 西安交通大学 | 针对压缩流量的多字符串匹配方法 |
Also Published As
Publication number | Publication date |
---|---|
US20160344759A1 (en) | 2016-11-24 |
CA2925753A1 (en) | 2015-07-16 |
EP2909720A1 (en) | 2015-08-26 |
WO2015104060A1 (en) | 2015-07-16 |
US10135851B2 (en) | 2018-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105900065A (zh) | 模式处理方法 | |
US10332008B2 (en) | Parallel decision tree processor architecture | |
Borkar et al. | Hyracks: A flexible and extensible foundation for data-intensive computing | |
Inoue et al. | Faster set intersection with SIMD instructions by reducing branch mispredictions | |
US20150262062A1 (en) | Decision tree threshold coding | |
CN103997346B (zh) | 一种基于流水线的数据匹配方法和装置 | |
Lucchese et al. | Exploiting CPU SIMD extensions to speed-up document scoring with tree ensembles | |
CN103309958A (zh) | Gpu和cpu混合架构下的olap星型连接查询优化方法 | |
Hou et al. | Aspas: A framework for automatic simdization of parallel sorting on x86-based many-core processors | |
US10133827B2 (en) | Automatic generation of multi-source breadth-first search from high-level graph language | |
US20150262063A1 (en) | Decision tree processors | |
CN103995827B (zh) | MapReduce计算框架中的高性能排序方法 | |
TW201732734A (zh) | 用於加速圖形分析的設備及方法 | |
Izsó et al. | IncQuery-D: incremental graph search in the cloud. | |
CN108628907A (zh) | 一种用于基于Aho-Corasick的Trie树多关键词匹配的方法 | |
Kouzinopoulos et al. | Multiple string matching on a GPU using cudas | |
CN116628066A (zh) | 数据传输方法、装置、计算机设备和存储介质 | |
Sundfeld et al. | Using GPU to accelerate the pairwise structural RNA alignment with base pair probabilities | |
Urbani | On web-scale reasoning | |
CN115033549A (zh) | 基于区块链的文件链接存储方法及装置 | |
Morihata et al. | A practical tree contraction algorithm for parallel skeletons on trees of unbounded degree | |
Haglin et al. | Scalable, multithreaded, partially-in-place sorting | |
Wang et al. | GPU-based efficient join algorithms on Hadoop | |
Ahmed et al. | Efficient GPU Acceleration for Computing Maximal Exact Matches in Long DNA Reads | |
Fuentes-Alventosa et al. | Cuvle: Variable-length encoding on cuda |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20160824 |