CN104252493B - 基于fpga的匹配引擎和匹配方法 - Google Patents
基于fpga的匹配引擎和匹配方法 Download PDFInfo
- Publication number
- CN104252493B CN104252493B CN201310269339.7A CN201310269339A CN104252493B CN 104252493 B CN104252493 B CN 104252493B CN 201310269339 A CN201310269339 A CN 201310269339A CN 104252493 B CN104252493 B CN 104252493B
- Authority
- CN
- China
- Prior art keywords
- predicate
- event
- matching
- matching result
- comparator
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/84—Mapping; Conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
公开一种基于事件的内容匹配系统,包含软件子系统和硬件子系统,所述硬件子系统包含至少一个基于FPGA的匹配引擎,用于将事件内容与预定的谓词匹配,生成供软件子系统使用的匹配结果,所述匹配引擎包含:事件存储装置,被设置得用于存储一个事件序列;至少一个谓词表,用于存储要被查询的谓词;至少一个映射表,与所述至少一个谓词表一一对应,每个映射表用于将事件队列中的事件映射到该映射表对应的谓词表中的至少一个对应谓词;至少一个比较器,与所述至少一个谓词表的所有表列一一对应,每个比较器用于将事件序列中的一个事件与该比较器对应的表列中的对应谓词进行匹配,生成匹配结果;匹配结果存储器,被配置得用于存储所述至少一个比较器的每个生成的匹配结果。
Description
技术领域
本发明涉及基于内容的发布/订阅系统,尤其涉及基于内容的发布/订阅系统中的内容匹配技术。
背景技术
基于内容的发布/订阅系统越来越得到广泛的应用。如图2所示,在基于内容的内容发布/订阅系统中,发布者210一方发布消息,订阅者220一方按照预定的条件接收消息。发布者的例子包括各种传感器、证券交易系统,订阅者的例子包括监控传感器的人、关心证券交易的个人或机构。基于内容的发布/订阅系统中的事件处理平台230必须高效地处理来自发布者210的事件,确定与事件的内容匹配的消息,及时向订阅者220发送符合条件的消息。这对内容匹配过程的实时性和吞吐量提出了很高的要求。
现有技术中,内容匹配过程通常用软件实现。用软件实现内容匹配过程的缺点是,吞吐量低,难以保证实时性。因此,出现了用硬件来实现内容匹配过程的设计。虽然用硬件实现能提高内容匹配的实时性,但是,如果整个内容匹配过程都由硬件实现,则不能保证良好的可升级性。
发明内容
本发明的一个目的是通过改进现有技术的设计,改善实现内容匹配过程的硬件的可升级性。
一方面,提供一种基于FPGA的匹配引擎,包含:事件存储装置,被设置得用于存储一个事件序列;至少一个谓词表,所有谓词表的各个表单元包含不同的谓词;至少一个映射表,每个映射表对应于所述至少一个谓词表的其中之一,并且,每个映射表的各个表单元指示至少一个谓词在该映射表对应的谓词表中的位置;至少一个比较器,每个比较器对应于所述至少一个谓词表的一个表列,用于将事件序列中的一个事件与该比较器对应的表列中的对应谓词进行匹配,生成匹配结果;匹配结果存储器;用于存储比较器生成的匹配结果。
另一方面,提供一种基于事件的内容匹配系统,包含软件子系统和硬件子系统,所述硬件子系统包含本发明的上述基于FPGA的匹配引擎,用于将事件内容与预定的谓词匹配,生成供软件子系统使用的匹配结果。
再一方面,提供一种基于FPGA的匹配引擎的匹配方法,其中,所述匹配引擎包含存储事件序列的事件存储装置,至少一个谓词表、至少一个映射表、至少一个比较器和匹配结果存储器,所述方法包含:从事件序列中提取一个事件;并发地从所有映射表中查找出与该事件的属性名相同的谓词的位置描述;根据从所有映射表中查找出的与该事件的属性名相同的谓词的位置描述,并发地从所有谓词表中连续读取谓词;通过所述至少一个比较器并发地将从谓词表中读取的每个谓词,与该事件进行比较,生成匹配结果;在匹配结果存储器中存储所生成的匹配结果。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了适于用来实现本发明实施方式的示例性计算系统100的框图;
图2示意性表示一个基于内容的发布/订阅系统;
图3示意性表示按照本发明一个实施例的内容匹配系统;
图4示意性表示按照本发明一个实施例的基于FPGA的匹配引擎;
图5示意性表示按照发明一个实施例的基于FPGA的匹配引擎的匹配方法的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了适于用来实现本发明实施方式的示例性计算系统100的框图。如图1所示,计算机系统100可以包括:CPU(中央处理单元)101、RAM(随机存取存储器)102、ROM(只读存储器)103、系统总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和显示器114。在这些设备中,与系统总线104耦合的有CPU101、RAM102、ROM103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及显示器114与显示控制器109耦合。应当理解,图1所述的结构框图仅仅是为了示例的目的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况增加或减少某些设备。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smallta1k、C++,还包括常规的过程式程序设计语言-诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(Instructionmeans)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
图1所示的计算机系统100,可以用来实现本发明的内容匹配系统。
本发明的总体构思,是用软件系统和硬件系统两部分来实现内容匹配服务器的内容匹配过程,由硬件系统执行计算密集的任务,其中,用基于FPGA的设计来实现硬件系统。
首先图3,图3示意性表示按照本发明一个实施例的内容匹配系统300,体现了本发明的上述构思。如图所示,内容匹配系统300包含一个软件子系统310和一个硬件子系统330,它们之间可互相发送和接收信息。
内容匹配系统300可以充当图2所示的基于内容的发布/订阅系统中的事件处理平台230。如图2所示,事件处理平台230对来自发布者210的消息进行适当预处理后,针对预处理后的消息进行事件内容匹配,然后对内容匹配过程生成的匹配结果进行后处理,产生用于向订阅者提供的消息队列。
按照本发明的内容匹配系统300的软件子系统310将来自发布者210的消息进行适当预处理后,发送到硬件子系统330,硬件子系统330将事件内容与预定的谓词进行匹配,生成供软件子系统使用的匹配结果,软件子系统310根据匹配结果进行后处理,生成消息队列并向订阅者220发送消息。
如图所示,硬件子系统330是基于现场可编程逻辑阵列的系统,包含一个或多个基于现场可编程逻辑阵列的匹配引擎332。
现场可编程逻辑阵列(FPGA,Field Programmable Gate Array)是一种可重新配置的(reconfigurable)集成电路。在FPGA上,组合逻辑是通过查找表(LUT,1ook up table)实现的。FPGA具有易失性,对FPGA的配置和重新配置,可以通过将用某种描述语言编写的应用代码和相应的配置加载到FPGA芯片上中而实现。
按照本发明一个实施例,内容匹配系统300包含一个下载DMA323和一个上传DMA325。下载DMA被配置得用于通过PCIe接口321从软件子系统310向硬件子系统发送包含事件的消息,上传DMA用于通过PCIe接口从硬件子系统向软件子系统发送匹配结果。
所述匹配结果,是所述一个或多个基于FPGA的匹配引擎332生成的匹配结果。
按照本发明一个实施例,可以在基于FPGA的硬件子系统330中实现下载DMA323和一个上传DMA325。
按照本发明一个实施例,内容匹配系统进一步包含一个事件解码器327,用于从从软件子系统向硬件子系统发送的包含事件的消息中解析出事件,并将解析出的事件发送到硬件子系统。
所述解析出的事件将被用作所述一个或多个基于FPGA的匹配引擎332的输入事件。
按照本发明一个实施例,可以在基于FPGA的硬件子系统330中实现事件解码器327。
基于FPGA的匹配引擎执行的是计算密集型的内容匹配任务,由于基于FPGA的匹配引擎的计算速度快,因此可以提高内容匹配系统300的性能。此外,硬件子系统330中的匹配引擎332,可以采用相同的结构。通过增加或减少匹配引擎的个数,无须改变匹配引擎的运行逻辑,就可以线性地提高或降低整个硬件子系统的处理效率。因此,本发明的硬件子系统330具有良好的可升级性(scalabi1ity)。
匹配引擎332的详细结构,如图4所示。
图4示意性表示按照本发明一个实施例的基于FPGA的匹配引擎400,其更详细地表示了图3所示的匹配引擎332的结构。图4所示的基于FPGA的匹配引擎400包含:事件存储装置410,至少一个谓词表420,至少一个映射表430,至少一个比较器440,以及匹配结果存储器450。下面结合附图,对匹配引擎的各组成部分作更详细的描述。
事件存储装置410被设置得用于存储一个事件序列。
在内容发布/订阅系统中,事件是发布者210发送的消息的一部分,可以用属性名和属性值来表征。例如,“温度等于0”是一个事件,其中,“温度”是属性名,“0”是属性值。因此,可以将一个事件记为{Tn,v},其中,标记“Tn”和“v”分别表示属性名和属性值。例如,可以用{Temperature,0}表示“温度等于0”,其中,“Temperature”是属性名,“0”是属性值,即属性“Temperature”的值。
图4所示的事件存储装置存储着一个事件序列{A1,v1},{A2,v2}...{An,vn},该事件序列例如是一个包含源于发布者(例如传感器)的10个输入事件(以下简称“事件”)的序列E,即:
E={温度=-15,湿度=10,温度=0,湿度=20,温度=15,湿度=30,温度=25,湿度=40,温度=35,湿度=50}。
需要指出的是,上述的序列E的内容和数量,仅仅是示例性的。在实际应用中,会有更多的不同事件。例如,消息发布者210每秒中可能发出数以百万的事件。
所述至少一个谓词表420被配置得用于存储要被查询的谓词。
在内容发布/订阅应用中,术语“谓词”指的是作为表示订阅者要求符合的策略、规则或条件的一部分的逻辑表达式。本发明中所称的谓词,指的是包含属性名、算子和属性值(简称“值”)的逻辑表达式,可以记为{属性名,算子,值}。例如,逻辑表达式“温度>0”是一个谓词,包含属性名“温度”、算子“>”和值“0”。可以将谓词“温度>0”或“温度大于0”记为{Temperature,>,0},将谓词“温度等于0”记为{Temperature,=,0}。{Temperature,>,0}和{Temperature,=,0}是具有相同属性名的不同谓词。
谓词表是一个行列结构的二维表,表中某一行和某一列的位置定义的表单元,存储一个谓词。本发明的匹配引擎可以用一个或多个谓词表来存储要被查询的所有不同的谓词;谓词表可以是单列的,也可以是多列的。
图4所示的匹配引擎,设置了25个双列的谓词表420。图中的标记“Predicate0”、“Predicate1”、......、“Predicate99”表示100个不同的谓词,例如,“Predicate0”代表“{Temperature,=,0}”,“Predicate1”代表“{Temperature,>,0}”,等等。
如图所示,第1个谓词表的第1行包含谓词“Predicate0”和“Predicate1”,......,第25个谓词表的第1行包含谓词“Predicate48”和“Predicate49”;第1个谓词表的第2行包含谓词“Predicate50”和“Predicate51”,......,第25个谓词表的第2行包含谓词“Predicate98”和“Predicate99”。
在一个匹配引擎中配置多个谓词表,可以进一步增加匹配引擎处理事件的操作的并行性(para11elism)。后文下文将分别举例说明在一个匹配引擎中配置一个谓词表和多个谓词表的不同效果。
按照本发明一个实施例,将多个属性名相同的谓词,按行设置在所有谓词表的相邻表单元中。
将多个属性名相同的谓词,按行设置在所有谓词表的相邻表单元中,指的是逐行地安置每个这样的谓词,使得它们尽量位于所有谓词表的同一行中相邻的位置。例如,谓词“Predicate1”-“Predicate49”是50个具有属性名“A1”的不同谓词,它们被设置在所有25个谓词表的第1行的50个相邻列中。“Predicate50”-“Predicate120”是71个具有属性名“A9”的不同谓词,25个谓词表每行一共只有50列,因此,将这71个谓词中的50个谓词,即“Predicate50”-“Predicate99”,设置在第2行的50个相邻列中,将其余21个谓词“Predicate100”-“Predicate121”设置在下一行的21个相邻列中(未予示出)。
所述至少一个映射表430与所述至少一个谓词表420一一对应,每个映射表用于将事件队列中的事件映射到该映射表对应的谓词表中的至少一个对应谓词。
如图4所示,本发明的匹配引擎中,每一个谓词表420,都有一个对应的映射表430。映射表430的表单元内容用标记{Name,Des}表示其中,“Name”表示属性名(例如“Temperature”),“Des”是位置描述,其描述具有属性名“Name”的谓词在该映射表对应的谓词表中的位置。通过事件的属性名和谓词的属性名的联系,就可以将一个事件映射到一个映射表对应的谓词表中的一个或多个谓词。
不同的谓词可以有相同的属性名。如果用一个表单元的内容{Name,Des}表示一个属性名为“Name”的谓词及其对应的位置描述,则一个映射表中将可能包含重复的属性名。
如上所述,按照本发明一个实施例,在匹配引擎中,将多个属性名相同的谓词,按行设置在所有谓词表的相邻表单元中;相应地,本发明的匹配引擎的每个映射表的表单元指示在该映射表对应的谓词表中存储的具有相同属性名的谓词的个数和位置。具体来说,将位置描述“Des”具体化为{“起始位置”,“项数”},用“起始位置”表示具有相同属性名的多个谓词的起始位置,用“项数”表示具有相同属性名的谓词的个数。由于属性名相同的不同谓词被按行设置在所有谓词表的相邻表单元中,如果知道具有某属性名的谓词在对应的谓词表中的起始位置和个数,就可以知道所有这些谓词在该谓词表中的位置。下文将通过具体的例子,更详细地说明采用位置描述{“起始位置”,“项数”}的实现方式。采用这样的位置描述,不但可以提高事件处理的效率,并且可以节省映射表的长度,减少对FPGA的资源消耗。
如图4所示,所述至少一个比较器440与所述至少一个谓词表的所有表列一一对应,每个比较器用于将事件序列中的一个事件与该比较器对应的表列中的对应谓词进行匹配,生成匹配结果。
例如,在如图4所示的匹配引擎的配置中,有25个谓词表,共有50个表列;相应地,有50个比较器分别对应于每个表列。
如果只有一个单列的谓词表,则只需有一个对应的比较器。如果只有一个n列的谓词表,则需要有n个对应的比较器。
比较器的功能,是比较一个事件是否与谓词所表达的条件相符。例如,某比较器的一个输入是谓词“Predicate0”,内容是{Temperature,=,0},如果另一个输入是事件{Temperature,0},则该比较器生成的匹配结果为“真”(True);如果另一个输入是事件{Temperature,-15},则比较器生成的匹配结果为“假”(False)。
按照本发明一个实施例,所述至少一个比较器的每个被配置得用于将事件队列中的一个事件的属性值与该比较器对应的谓词表表列中具有与该事件的属性名相同的属性名的谓词进行比较,生成匹配结果。
所述匹配结果存储器450用于存储所述至少一个比较器的每个生成的匹配结果。
按照本发明一个实施例,所述匹配结果存储器存储的匹配结果是一个位向量,位向量中的位与所有谓词表中不同谓词一一对应。
例如,位向量的比特位的值“1”和值“0”分别代表逻辑值“真”和逻辑值“假”。
位向量的第1个比特位对应于谓词“Predicate0”,即{Temperature,=,0}比较器将其与一个当前事件{Temperature,0}比较,生成的结果为“真”,则在位向量的第1个比特位写入表示逻辑“真”的值“1”。
下面举例说明匹配引擎中各组成部分的功能和不同配置的效果。为了简明,在以下说明的例子中,假设有12个基本谓词:温度<0,温度=0,温度>0,温度<30,温度=30,温度>30,湿度<20,湿度=20,湿度>20,湿度<50,湿度=50,湿度>50。
例1、采用两个单列的谓词表
如前文所述,按照本发明一个实施例,具有相同属性名称的多个谓词,被排列在一个谓词表或多个谓词表中相邻的位置。
据此可以生成如下两个谓词表PT0和PT1。
谓词表PT0 谓词表PT1
谓词表PT0和PT1分别被称作全部谓词表中的第0个谓词表和第1个谓词表。从谓词表PT0和PT1中可见,这12个谓词中属性名相同的谓词,被存储在两个谓词表中的相邻位置,并且尽量存储在两个谓词表中的同行中。例如,属性名为“温度”的6个谓词,第1个和第2个被相邻地设置在谓词表PT0和PT1的第0行中,第3个和第4个被相邻地设置在谓词表PT0和PT1的与第0行相邻的第1行中,第5个和第6个被相邻地设置在谓词表PT0和PT1的与第1行相邻的第2行中。类似地,属性名为“湿度”的6个谓词,被相邻地设置在谓词表PT0和PT1的第3、4和5行。
一个谓词表有一个对应的映射表,因此配置如下所示的两个映射表MT0和MT1,它们分别与谓词表PT0和谓词表PT1对应。
映射表MT0 映射表MT1
如前文所述,可以用映射表的一个表单元的内容,采用{“起始位置”,“项数”}的位置描述,以指示该映射表对应的谓词表中多个具有相同属性名的谓词和它们的位置,其中,“起始位置”表示多个具有相同属性名的谓词的起始位置,“项数”表示具有相同属性名的谓词的个数。
映射表MT0有两行内容,即{温度,0,3}和{湿度,3,3},其中,第0行的内容{温度,0,3}表示,具有属性名“温度”的谓词,在谓词表PT0中的起始位置是第0个表单元,共有3项,即{温度,=,0}、{温度,<,30}和{温度,>,30};第1行的内容{湿度,3,3}表示,具有属性名“湿度”的谓词,在谓词表PT0中的起始位置是第3个表单元,共有3项,即{湿度,=,20}、{湿度,<,50}和{湿度,>,50}。
映射表MT1有两行内容,即{温度,0,3}和{湿度,3,3},其中,第0行的内容{温度,0,3}表示,具有属性名“温度”的谓词,在谓词表PT1中的起始位置是第0个表单元,共有3项,即{温度,<,0}、{温度,>,0}和{温度,=,30};第1行的内容{湿度,3,3}表示,具有属性名“湿度”的谓词,在谓词表PT1中的起始位置是第3个表单元,共有3项,即{湿度,<,20}、{湿度,>,20}和{湿度,=,50}。
映射表MT0和MT1的行数,等于所有谓词表中包含的不同的属性名的个数。
以下参照图5,描述匹配引擎处理事件的流程。图5示意性表示按照发明一个实施例的基于FPGA的匹配引擎的匹配方法的流程图。
图5所示的匹配方法,基于图4所示的基于FPGA的匹配引擎,所述匹配引擎包含一个存储事件序列的事件存储装置410,至少一个谓词表420、至少一个映射表430,至少一个比较器440和一个匹配结果存储器450。如图5所示,所述匹配方法包含步骤510-550。
假设在某个时刻,事件存储装置410中存储了前文所述的事件序列E,即10个基本事件:{温度,-15},{湿度,10},{温度,0},{湿度,20},{温度,15},{湿度,30},{温度,25},{湿度,40},{温度,35},{湿度,50}。
采用所述匹配方法,按照先进先出的顺序,循环地处理事件队列中的每个事件,可以为所有事件生成匹配结果。以下针对一个事件描述所述匹配方法的操作过程。
在步骤510,从事件序列中提取一个事件。
本例中,步骤510提取的第一个事件为{温度,-15},该事件的属性名为“温度”,值为“-15”。
在步骤520,并发地从所有映射表中查找出与该事件的属性名相同的谓词的位置描述。本例中,映射表MT0中与属性名“温度”相同的谓词的位置描述为{0,3},映射表MT1中与属性名“温度”相同的谓词的位置描述为{0,3}。
在步骤530,根据从所有映射表中查找出的与该事件的属性名相同的谓词的位置描述,并发地从所有谓词表中连续读取谓词。
由于谓词表是独立的实体,因此可以并发地读取不同谓词表中的内容。
本例中,从映射表MT0中查找出的与该事件的属性名相同的谓词的位置描述为{0,3},表示谓词在映射表MT0对应的谓词表PT0中的起始位置为第0行,共有3项,因此,从谓词表PT0中的第0行开始,连续三次读取相邻行的谓词,即{温度,=,0}、{温度,<,30}和{温度,>,30}。类似地,从映射表MT1中查找出的与该事件的属性名相同的谓词的位置描述为{0,3},表示谓词在映射表MT1对应的谓词表PT1中的起始位置为第0行,共有3项,因此,在读取谓词表PT0的同时,从谓词表PT1中的第0行开始,连续三次读取相邻行的谓词,即{温度,<,0}、{温度,>,0}和{温度,=,30}。
在实际操作中,是否读取谓词的属性名是无关紧要的。换言之,可以只读取每个谓词的算子和值。例如,对于谓词表PT0,只需要读出{=,0}、{<,30}和{>,30}即可,而无需读出{温度,=,0}、{温度,<,30}和{温度,>,30},这与读出{温度,=,0}、{温度,<,30}和{温度,>,30}的效果是等同的,这是因为,此时,谓词的属性名与事件的属性名是相同的。
在步骤540,对应的比较器440并发地将从谓词表中读取的每个谓词,与该事件进行比较,生成匹配结果。
在步骤550,对应的比较器在匹配结果存储器450中存储所生成的匹配结果。
如前文所述,本发明的比较器440,是与谓词表的表列一一对应的。步骤540中的“对应的”比较器,指的是与该谓词所在的表列对应的一个比较器。
需要指出的是,步骤530、步骤540和步骤550的操作,是按流水线方式交替进行的。就是说,每当取出谓词表中的一个谓词,对应的比较器就将其与事件进行比较,并存储匹配结果。例如,上文描述的步骤530中,要连续三次读取谓词表PT1中的内容。第一次读出谓词{温度,<,0}或等同的内容{<,0}后,将其发送给对应的比较器,作为比较的一个输入,比较器的另一个输入为事件{温度,-15},由于-15小于0,比较器生成匹配结果“真”,意思是事件{温度,-15}满足所读出的谓词所表达的条件。本例中,有两个比较器,分别同时处理从两个谓词表读取出来的内容。
按照本发明一个实施例,匹配结果存储器存储一个位向量,位向量包含多个比特位,每个分别对应于所述至少一个谓词表的所有谓词表中包含的所有谓词的一个。
操作时,在处理一个新处理之前,将位向量的全部比特位初始化为逻辑值“假”。
位向量中比特位的个数,可以等于所有谓词表中所有不同谓词的总项数。可以事先定义位向量的每个比特位与谓词表中的谓词之间的对应关系:
Y=x1+x2*x3
其中,Y是位向量中的位号(Y等于或大于0),x1是谓词表号(Y等于或大于0),x2是谓词在谓词表中的表单元的序号,x3是谓词表的总列数。
每当一个比较器生成一个匹配结果,则根据第几个谓词表,以及比较器的输入是谓词表中的第几项,可以对位向量中相应的位进行赋值,例如:
对于谓词表PT0的第0项内容,比较器的输出为“真”,则位向量的第0位(0+数据所在谓词表中的位置0乘以谓词表总列数2),被赋值为“真”。
对于谓词表PT1的第0项内容,比较器的输出为“假”,则位向量的第1位(1+数据所在谓词表中的位置0乘以谓词表总列数2),被赋值为“假”。
对于谓词表1的第2项内容,比较器的输出为“假”,则位向量的第5位(1+数据所在谓词表中的位置2乘以谓词表总列数2)位,被赋值为“假”。
本例中,对于给定事件“温度,-15”,最后输出的位向量的内容为“真假假真假假假假假假假假”,或“100100000000”。
该内容将被发送给软件子系统310。由于软件子系统310事先保存了谓词表的数据结构或位向量中各比特位与各谓词的对应关系,因此软件子系统310根据所接收的位向量的内容,就可以当前事件与每一个谓词之间的匹配关系。
以上描述的是针对一个事件的处理流程。针对其余9个事件,执行上述处理流程,将生成并向软件子系统310发送其余的9个位向量。
例如,如果步骤510提取的是事件“湿度=20”的属性“湿度”,则在步骤520,从映射表MT0和MT1中查找出的位置描述为{3,3}和{3,3};在步骤530,从谓词表PT0的第3个表单元开始,连续三次读取相邻行的谓词,即{湿度,=,20}、{湿度,<,50}和{湿度,>,50},同时从谓词表PT1的第3个表单元开始,连续三次读取相邻行的谓词,即{湿度,<,20}、{湿度,>,20}和{湿度,=,50};在步骤540,对应的比较器440并发地将从谓词表中读取的每个谓词,与该事件进行比较,生成匹配结果;在步骤550,对应的比较器在匹配结果存储器450中存储所生成的匹配结果。具体不再赘述。
例2、采用一个谓词表,该谓词表每行有2列。
如前文所述,按照本发明一个实施例,具有相同属性名称的多个谓词,被排列在一个谓词表或多个谓词表中相邻的位置。
据此,生成如下所示的一个谓词表PT2。谓词表PT2被称作全部谓词表中的第0个谓词表。
谓词表PT2
由于只有一个谓词表,因此只有如下所示的一个映射表MT2,称为第0个映射表,其格式和含义和上述的映射表MT0和MT1相同。
映射表MT2
行号 | {Name,起始位置,项数} |
0 | {温度,0,6} |
1 | {湿度,6,6} |
映射表MT2有两行内容,即{温度,0,6}和{湿度,6,6},其中,第0行的内容{温度,0,6}表示,具有属性名“温度”的谓词,在谓词表PT3中的起始位置是第0个表单元,共有6项,即{温度,<,0}、{温度,=,0}、{温度,>,0}、{温度,<,30}、{温度,=,30}和{温度,>,30};第1行的内容{湿度,6,6}表示,具有属性名“湿度”的谓词,在谓词表PT3中的起始位置是第3个表单元行,共有6项,即{湿度,<,20}、{湿度,=,20}、{湿度,>,20}、{湿度,<,50}、{湿度,=,50}和{湿度,>,50}。
按照本发明,针对谓词表PT2的结构,匹配引擎有两个比较器分别与谓词表PT2的第0列和第1列对应。这两个比较器的作用,相当于例1中对应于谓词表PT0和PT1的比较器的作用。此外,在执行步骤530,从所有谓词表中连续读取谓词时,每次读取一行中两列的谓词,例如,针对事件序列E中的第一个事件{温度,-15},在执行步骤530时,第一次从谓词表PT2中读取到的内容为“温度,<,0”和“温度,=,0”,分别作为对应的比较器的一个输入。因此,也只需要读取3次,就能属性名为“温度”谓词读取完毕。
因此,例2的实现原理以及工作流程,与例1基本相同。
例1与例2的差别,在于谓词表的个数的不同,在匹配引擎的硬件资源消耗量和处理效率上也有所差异。这是因为,不同的谓词表有独立的地址解码器,输入输出端口,这些都是消耗硬件资源的,在谓词表总容量相同的限制下,谓词表的数量越多,所需消耗硬件资源越大。但是,这并非表明谓词表越少越好,这是因为,对于有多列的谓词表来说,有可能一次读取出来的一行内容中,只有一部分内容是有效的,另一部分内容是无效的。因此,谓词表的列数太多,虽然能减少硬件资源的消耗,但是可能会降低匹配引擎的效率。
所属领域的技术人员显然清楚,在具体应用中,可以根据本发明的匹配引擎的特点,通过适当设置谓词表的结构和数量,相应地配置对应的映射表和比较器,就能满足不同应用的性能要求,因此,本发明的匹配引擎,也具有良好的可升级性。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种基于FPGA的匹配引擎(400),包含:
事件存储装置(410),被设置得用于存储一个事件序列;
多个谓词表(420),用于存储要被查询的谓词;
多个映射表(430),与所述多个谓词表一一对应,每个映射表用于将事件序列中的事件映射到该映射表对应的谓词表中的至少一个对应谓词;
多个比较器(440),与所述多个谓词表的所有表列一一对应,每个比较器用于将事件序列中的一个事件与该比较器对应的表列中的对应谓词进行匹配,生成匹配结果;
匹配结果存储器(450),被配置得用于存储所述多个比较器的每个生成的匹配结果。
2.根据权利要求1所述的匹配引擎,其中,将多个属性名相同的谓词,按行设置在所有谓词表的相邻表单元中。
3.根据权利要求2所述的匹配引擎,其中,每个映射表的表单元指示在该映射表对应的谓词表中存储的具有相同属性名的谓词的个数和位置。
4.根据权利要求1-3任何之一所述的匹配引擎,其中,所述多个比较器的每个被配置得用于将事件序列中的一个事件的属性值与该比较器对应的谓词表表列中具有与该事件的属性名相同的属性名的谓词进行比较,生成匹配结果。
5.根据权利要求4所述的匹配引擎,所述匹配结果存储器存储的匹配结果是一个位向量,位向量中的位与所有谓词表中的不同谓词一一对应。
6.一种基于事件的内容匹配系统(300),包含软件子系统(310)和基于FPGA的硬件子系统(330),所述硬件子系统包含权利要求1-5的任何之一的基于FPGA的匹配引擎,用于将事件内容与预定的谓词匹配,生成供软件子系统使用的匹配结果。
7.根据权利要求6所述的内容匹配系统,进一步包含:
下载DMA(323),用于通过PCIe接口(321)从软件子系统向硬件子系统发送包含事件的消息;
上传DMA(325),用于通过PCIe接口(321)从硬件子系统向软件子系统发送硬件子系统生成的匹配结果。
8.根据权利要求7所述的内容匹配系统,进一步包含:
事件解码器(327),用于从软件子系统接收的消息中解析出事件,并将解析出的事件发送到硬件子系统。
9.一种基于FPGA的匹配引擎的匹配方法,其中,所述匹配引擎包含存储事件序列的事件存储装置(410),多个谓词表(420)、多个映射表(430),多个比较器(440)和匹配结果存储器(450),所述方法包含:
从事件序列中提取一个事件;
并发地从所有映射表中查找出与该事件的属性名相同的谓词的位置描述;
根据从所有映射表中查找出的与该事件的属性名相同的谓词的位置描述,并发地从所有谓词表中连续读取谓词;
通过所述多个比较器并发地将从谓词表中读取的每个谓词,与该事件进行比较,生成匹配结果;
在匹配结果存储器中存储所生成的匹配结果。
10.根据权利要求9所述的方法,其中,所述匹配结果存储器存储的匹配结果是一个位向量,位向量中的位与所有谓词表中的不同谓词一一对应。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310269339.7A CN104252493B (zh) | 2013-06-28 | 2013-06-28 | 基于fpga的匹配引擎和匹配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310269339.7A CN104252493B (zh) | 2013-06-28 | 2013-06-28 | 基于fpga的匹配引擎和匹配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104252493A CN104252493A (zh) | 2014-12-31 |
CN104252493B true CN104252493B (zh) | 2017-12-12 |
Family
ID=52187393
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310269339.7A Expired - Fee Related CN104252493B (zh) | 2013-06-28 | 2013-06-28 | 基于fpga的匹配引擎和匹配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104252493B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102096848A (zh) * | 2009-12-09 | 2011-06-15 | Sap股份公司 | 用于在对流事件的查询模式匹配期间进行快速响应的调度 |
CN102427416A (zh) * | 2011-12-12 | 2012-04-25 | 东软集团股份有限公司 | 分布式事件检测方法及装置 |
CN103177062A (zh) * | 2011-12-23 | 2013-06-26 | Sap股份公司 | 用于高速内存在线分析处理查询和操作的加速查询操作器 |
-
2013
- 2013-06-28 CN CN201310269339.7A patent/CN104252493B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102096848A (zh) * | 2009-12-09 | 2011-06-15 | Sap股份公司 | 用于在对流事件的查询模式匹配期间进行快速响应的调度 |
CN102427416A (zh) * | 2011-12-12 | 2012-04-25 | 东软集团股份有限公司 | 分布式事件检测方法及装置 |
CN103177062A (zh) * | 2011-12-23 | 2013-06-26 | Sap股份公司 | 用于高速内存在线分析处理查询和操作的加速查询操作器 |
Also Published As
Publication number | Publication date |
---|---|
CN104252493A (zh) | 2014-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106445471B (zh) | 处理器和用于在处理器上执行矩阵乘运算的方法 | |
WO2017185389A1 (zh) | 一种用于执行矩阵乘运算的装置和方法 | |
JP6017034B2 (ja) | 状態機械エンジンが受信したデータを取り扱うための方法およびシステム | |
TWI515669B (zh) | 用於狀態機中資料分析之系統與方法 | |
US8769216B2 (en) | Optimizing output vector data generation using a formatted matrix data structure | |
WO2018196863A1 (zh) | 卷积加速和计算处理方法、装置、电子设备及存储介质 | |
TWI602120B (zh) | 在圖案識別處理系統中用於電力管理之方法及系統 | |
CN103988212B (zh) | 用于在状态机中路由的方法及系统 | |
KR101873619B1 (ko) | 상태 기계 격자에서의 불리언 로직 | |
TWI569206B (zh) | 用於狀態機引擎之結果產生 | |
CN107451175A (zh) | 一种基于区块链的数据处理方法及设备 | |
KR102165134B1 (ko) | 상태 기계 엔진에서 상태 벡터 데이터를 사용하기 위한 방법들 및 시스템들 | |
CN107256156A (zh) | 用于状态机中的检测的方法及系统 | |
TW201411357A (zh) | 用於程式化狀態機引擎之方法與裝置 | |
CN107608750A (zh) | 状态机晶格中的计数器操作 | |
KR20190107766A (ko) | 계산 장치 및 방법 | |
CN106452769B (zh) | 一种数据处理方法、数据处理装置以及处理器 | |
Fang et al. | Secure function evaluation using an fpga overlay architecture | |
JP2020042782A (ja) | 人工知能チップに適用される算出方法および人工知能チップ | |
Diehl et al. | Comparing the cost of protecting selected lightweight block ciphers against differential power analysis in low-cost FPGAs | |
CN107679012A (zh) | 用于可重构处理系统的配置的方法和装置 | |
CN109324901A (zh) | 基于区块链的深度学习分布式计算方法、系统和节点 | |
CN105830160B (zh) | 用于将经屏蔽数据写入到缓冲器的设备及方法 | |
CN112348182B (zh) | 一种神经网络maxout层计算装置 | |
EP3447690A1 (en) | Maxout layer operation apparatus and method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171212 Termination date: 20200628 |