基于FPGA的匹配引擎和匹配方法.pdf

上传人:zhu****_FC 文档编号:4746438 上传时间:2018-11-05 格式:PDF 页数:19 大小:1.01MB
返回 下载 相关 举报
摘要
申请专利号:

CN201310269339.7

申请日:

2013.06.28

公开号:

CN104252493A

公开日:

2014.12.31

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 17/30申请日:20130628|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

国际商业机器公司

发明人:

郭崎; 陈飞; 戈弋; 于琦; 章宇

地址:

美国纽约阿芒克

优先权:

专利代理机构:

北京市金杜律师事务所 11256

代理人:

酆迅;陈颖

PDF下载: PDF下载
内容摘要

公开一种基于事件的内容匹配系统,包含软件子系统和硬件子系统,所述硬件子系统包含至少一个基于FPGA的匹配引擎,用于将事件内容与预定的谓词匹配,生成供软件子系统使用的匹配结果,所述匹配引擎包含:事件存储装置,被设置得用于存储一个事件序列;至少一个谓词表,用于存储要被查询的谓词;至少一个映射表,与所述至少一个谓词表一一对应,每个映射表用于将事件队列中的事件映射到该映射表对应的谓词表中的至少一个对应谓词;至少一个比较器,与所述至少一个谓词表的所有表列一一对应,每个比较器用于将事件序列中的一个事件与该比较器对应的表列中的对应谓词进行匹配,生成匹配结果;匹配结果存储器,被配置得用于存储所述至少一个比较器的每个生成的匹配结果。

权利要求书

权利要求书
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的方法,其中,所述匹配结果存储器存储的匹配结果是一个位向量,位向量中的位与所有谓词表中的不同谓词一一对应。

说明书

说明书基于FPGA的匹配引擎和匹配方法
技术领域
本发明涉及基于内容的发布/订阅系统,尤其涉及基于内容的发布/订阅系统中的内容匹配技术。
背景技术
基于内容的发布/订阅系统越来越得到广泛的应用。如图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)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(Instruction means)的制造品(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的差别,在于谓词表的个数的不同,在匹配引擎的硬件资源消耗量和处理效率上也有所差异。这是因为,不同的谓词表有独立的地址解码器,输入输出端口,这些都是消耗硬件资源的,在谓词表总容量相同的限制下,谓词表的数量越多,所需消耗硬件资源越大。但是,这并非表明谓词表越少越好,这是因为,对于有多列的谓词表来说,有可能一次读取出来的一行内容中,只有一部分内容是有效的,另一部分内容是无效的。因此,谓词表的列数太多,虽然能减少硬件资源的消耗,但是可能会降低匹配引擎的效率。
所属领域的技术人员显然清楚,在具体应用中,可以根据本发明的匹配引擎的特点,通过适当设置谓词表的结构和数量,相应地配置对应的映射表和比较器,就能满足不同应用的性能要求,因此,本发明的匹配引擎,也具有良好的可升级性。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

基于FPGA的匹配引擎和匹配方法.pdf_第1页
第1页 / 共19页
基于FPGA的匹配引擎和匹配方法.pdf_第2页
第2页 / 共19页
基于FPGA的匹配引擎和匹配方法.pdf_第3页
第3页 / 共19页
点击查看更多>>
资源描述

《基于FPGA的匹配引擎和匹配方法.pdf》由会员分享,可在线阅读,更多相关《基于FPGA的匹配引擎和匹配方法.pdf(19页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 104252493 A (43)申请公布日 2014.12.31 CN 104252493 A (21)申请号 201310269339.7 (22)申请日 2013.06.28 G06F 17/30(2006.01) (71)申请人 国际商业机器公司 地址 美国纽约阿芒克 (72)发明人 郭崎 陈飞 戈弋 于琦 章宇 (74)专利代理机构 北京市金杜律师事务所 11256 代理人 酆迅 陈颖 (54) 发明名称 基于 FPGA 的匹配引擎和匹配方法 (57) 摘要 公开一种基于事件的内容匹配系统, 包含软 件子系统和硬件子系统, 所述硬件子系统包含至 少一个基于 F。

2、PGA 的匹配引擎, 用于将事件内容与 预定的谓词匹配, 生成供软件子系统使用的匹配 结果, 所述匹配引擎包含 : 事件存储装置, 被设置 得用于存储一个事件序列 ; 至少一个谓词表, 用 于存储要被查询的谓词 ; 至少一个映射表, 与所 述至少一个谓词表一一对应, 每个映射表用于将 事件队列中的事件映射到该映射表对应的谓词表 中的至少一个对应谓词 ; 至少一个比较器, 与所 述至少一个谓词表的所有表列一一对应, 每个比 较器用于将事件序列中的一个事件与该比较器对 应的表列中的对应谓词进行匹配, 生成匹配结果 ; 匹配结果存储器, 被配置得用于存储所述至少一 个比较器的每个生成的匹配结果。 (。

3、51)Int.Cl. 权利要求书 2 页 说明书 12 页 附图 4 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书12页 附图4页 (10)申请公布号 CN 104252493 A CN 104252493 A 1/2 页 2 1. 一种基于 FPGA 的匹配引擎 (400), 包含 : 事件存储装置 (410), 被设置得用于存储一个事件序列 ; 至少一个谓词表 (420), 用于存储要被查询的谓词 ; 至少一个映射表 (430), 与所述至少一个谓词表一一对应, 每个映射表用于将事件队列 中的事件映射到该映射表对应的谓词表中的至少一个对应谓词 ; 。

4、至少一个比较器 (440), 与所述至少一个谓词表的所有表列一一对应, 每个比较器用于 将事件序列中的一个事件与该比较器对应的表列中的对应谓词进行匹配, 生成匹配结果 ; 匹配结果存储器 (450), 被配置得用于存储所述至少一个比较器的每个生成的匹配结 果。 2. 权利要求 1 的匹配引擎, 其中, 将多个属性名相同的谓词, 按行设置在所有谓词表的 相邻表单元中。 3. 权利要求 2 的匹配引擎, 其中, 每个映射表的表单元指示在该映射表对应的谓词表 中存储的具有相同属性名的谓词的个数和位置。 4. 权利要求 1-3 任何之一的匹配引擎, 其中, 所述至少一个比较器的每个被配置得用 于将事件。

5、队列中的一个事件的属性值与该比较器对应的谓词表表列中具有与该事件的属 性名相同的属性名的谓词进行比较, 生成匹配结果。 5. 权利要求 4 的匹配引擎, 所述匹配结果存储器存储的匹配结果是一个位向量, 位向 量中的位与所有谓词表中的不同谓词一一对应。 6. 一种基于事件的内容匹配系统 (300), 包含软件子系统 (310) 和基于 FPGA 的硬件子 系统(330), 所述硬件子系统包含权利要求1-5的任何之一的基于FPGA的匹配引擎, 用于将 事件内容与预定的谓词匹配, 生成供软件子系统使用的匹配结果。 7. 权利要求 6 的内容匹配系统, 进一步包含 : 下载DMA(323), 用于通过。

6、PCIe接口(321)从软件子系统向硬件子系统发送包含事件的 消息 ; 上传DMA(325), 用于通过PCIe接口(321)从硬件子系统向软件子系统硬件子系统生成 的匹配结果。 8. 权利要求 7 的内容匹配系统, 进一步包含 : 事件解码器 (327), 用于从从软件子系统接收的消息中解析出事件, 并将解析出的事件 发送到硬件子系统。 9. 一种基于 FPGA 的匹配引擎的匹配方法, 其中, 所述匹配引擎包含存储事件序列的事 件存储装置 (410), 至少一个谓词表 (420)、 至少一个映射表 (430), 至少一个比较器 (440) 和匹配结果存储器 (450), 所述方法包含 : 从。

7、事件序列中提取一个事件 ; 并发地从所有映射表中查找出与该事件的属性名相同的谓词的位置描述 ; 根据从所有映射表中查找出的与该事件的属性名相同的谓词的位置描述, 并发地从所 有谓词表中连续读取谓词 ; 通过所述至少一个比较器并发地将从谓词表中读取的每个谓词, 与该事件进行比较, 生成匹配结果 ; 在匹配结果存储器中存储所生成的匹配结果。 权 利 要 求 书 CN 104252493 A 2 2/2 页 3 10. 权利要求 9 的方法, 其中, 所述匹配结果存储器存储的匹配结果是一个位向量, 位 向量中的位与所有谓词表中的不同谓词一一对应。 权 利 要 求 书 CN 104252493 A 3。

8、 1/12 页 4 基于 FPGA 的匹配引擎和匹配方法 技术领域 0001 本发明涉及基于内容的发布 / 订阅系统, 尤其涉及基于内容的发布 / 订阅系统中 的内容匹配技术。 背景技术 0002 基于内容的发布 / 订阅系统越来越得到广泛的应用。如图 2 所示, 在基于内容的 内容发布 / 订阅系统中, 发布者 210 一方发布消息, 订阅者 220 一方按照预定的条件接收消 息。发布者的例子包括各种传感器、 证券交易系统, 订阅者的例子包括监控传感器的人、 关 心证券交易的个人或机构。基于内容的发布 / 订阅系统中的事件处理平台 230 必须高效地 处理来自发布者210的事件, 确定与事件。

9、的内容匹配的消息, 及时向订阅者220发送符合条 件的消息。这对内容匹配过程的实时性和吞吐量提出了很高的要求。 0003 现有技术中, 内容匹配过程通常用软件实现。 用软件实现内容匹配过程的缺点是, 吞吐量低, 难以保证实时性。因此, 出现了用硬件来实现内容匹配过程的设计。虽然用硬件 实现能提高内容匹配的实时性, 但是, 如果整个内容匹配过程都由硬件实现, 则不能保证良 好的可升级性。 发明内容 0004 本发明的一个目的是通过改进现有技术的设计, 改善实现内容匹配过程的硬件的 可升级性。 0005 一方面, 提供一种基于 FPGA 的匹配引擎, 包含 : 事件存储装置, 被设置得用于存储 一。

10、个事件序列 ; 至少一个谓词表, 所有谓词表的各个表单元包含不同的谓词 ; 至少一个映 射表, 每个映射表对应于所述至少一个谓词表的其中之一, 并且, 每个映射表的各个表单元 指示至少一个谓词在该映射表对应的谓词表中的位置 ; 至少一个比较器, 每个比较器对应 于所述至少一个谓词表的一个表列, 用于将事件序列中的一个事件与该比较器对应的表列 中的对应谓词进行匹配, 生成匹配结果 ; 匹配结果存储器 ; 用于存储比较器生成的匹配结 果。 0006 另一方面, 提供一种基于事件的内容匹配系统, 包含软件子系统和硬件子系统, 所 述硬件子系统包含本发明的上述基于 FPGA 的匹配引擎, 用于将事件内。

11、容与预定的谓词匹 配, 生成供软件子系统使用的匹配结果。 0007 再一方面, 提供一种基于 FPGA 的匹配引擎的匹配方法, 其中, 所述匹配引擎包含 存储事件序列的事件存储装置, 至少一个谓词表、 至少一个映射表、 至少一个比较器和匹配 结果存储器, 所述方法包含 : 从事件序列中提取一个事件 ; 并发地从所有映射表中查找出 与该事件的属性名相同的谓词的位置描述 ; 根据从所有映射表中查找出的与该事件的属性 名相同的谓词的位置描述, 并发地从所有谓词表中连续读取谓词 ; 通过所述至少一个比较 器并发地将从谓词表中读取的每个谓词, 与该事件进行比较, 生成匹配结果 ; 在匹配结果存 储器中存。

12、储所生成的匹配结果。 说 明 书 CN 104252493 A 4 2/12 页 5 附图说明 0008 通过结合附图对本公开示例性实施方式进行更详细的描述, 本公开的上述以及其 它目的、 特征和优势将变得更加明显, 其中, 在本公开示例性实施方式中, 相同的参考标号 通常代表相同部件。 0009 图 1 示出了适于用来实现本发明实施方式的示例性计算系统 100 的框图 ; 0010 图 2 示意性表示一个基于内容的发布 / 订阅系统 ; 0011 图 3 示意性表示按照本发明一个实施例的内容匹配系统 ; 0012 图 4 示意性表示按照本发明一个实施例的基于 FPGA 的匹配引擎 ; 001。

13、3 图 5 示意性表示按照发明一个实施例的基于 FPGA 的匹配引擎的匹配方法的流程 图。 具体实施方式 0014 下面将参照附图更详细地描述本公开的优选实施方式。 虽然附图中显示了本公开 的优选实施方式, 然而应该理解, 可以以各种形式实现本公开而不应被这里阐述的实施方 式所限制。 相反, 提供这些实施方式是为了使本公开更加透彻和完整, 并且能够将本公开的 范围完整的传达给本领域的技术人员。 0015 图 1 示出了适于用来实现本发明实施方式的示例性计算系统 100 的框图。如图 1 所示, 计算机系统 100 可以包括 : CPU( 中央处理单元 )101、 RAM( 随机存取存储器 )1。

14、02、 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 与串行 接口控制器。

15、 107 耦合, 并行外部设备 113 与并行接口控制器 108 耦合, 以及显示器 114 与显 示控制器 109 耦合。应当理解, 图 1 所述的结构框图仅仅是为了示例的目的, 而不是对本发 明范围的限制。在某些情况下, 可以根据具体情况增加或减少某些设备。 0016 所属技术领域的技术人员知道, 本发明可以实现为系统、 方法或计算机程序产品。 因此, 本公开可以具体实现为以下形式, 即 : 可以是完全的硬件、 也可以是完全的软件 ( 包 括固件、 驻留软件、 微代码等 ), 还可以是硬件和软件结合的形式, 本文一般称为 “电路” 、“模 块” 或 “系统” 。此外, 在一些实施例中, 本。

16、发明还可以实现为在一个或多个计算机可读介质 中的计算机程序产品的形式, 该计算机可读介质中包含计算机可读的程序代码。 0017 可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计 算机可读信号介质或者计算机可读存储介质。 计算机可读存储介质例如可以是但不限 于电、 磁、 光、 电磁、 红外线、 或半导体的系统、 装置或器件, 或者任意以上的组合。计算 机可读存储介质的更具体的例子(非穷举的列表)包括 : 具有一个或多个导线的电连接、 便 携式计算机磁盘、 硬盘、 随机存取存储器 (RAM)、 只读存储器 (ROM)、 可擦式可编程只读存储 器(EPROM或闪存)、 光纤、 便。

17、携式紧凑磁盘只读存储器(CD-ROM)、 光存储器件、 磁存储器件、 或者上述的任意合适的组合。在本文件中, 计算机可读存储介质可以是任何包含或存储程 说 明 书 CN 104252493 A 5 3/12 页 6 序的有形介质, 该程序可以被指令执行系统、 装置或者器件使用或者与其结合使用。 0018 计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号, 其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式, 包括但 不限于电磁信号、 光信号或上述的任意合适的组合。计算机可读的信号介质还可以是 计算机可读存储介质以外的任何计算机可读介质, 该计算机可读介质可以。

18、发送、 传播或者 传输用于由指令执行系统、 装置或者器件使用或者与其结合使用的程序。 0019 计算机可读介质上包含的程序代码可以用任何适当的介质传输, 包括但不限 于无线、 电线、 光缆、 RF 等等, 或者上述的任意合适的组合。 0020 可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机 程序代码, 所述程序设计语言包括面向对象的程序设计语言 - 诸如 Java、 Smallta1k、 C+, 还包括常规的过程式程序设计语言 - 诸如” C” 语言或类似的程序设计语言。程序代码可以 完全地在用户计算机上执行、 部分地在用户计算机上执行、 作为一个独立的软件包执行、 部 。

19、分在用户计算机上部分在远程计算机上执行、 或者完全在远程计算机或服务器上执行。在 涉及远程计算机的情形中, 远程计算机可以通过任意种类的网络包括局域网 (LAN) 或 广域网 (WAN)- 连接到用户计算机, 或者, 可以连接到外部计算机 ( 例如利用因特网服务提 供商来通过因特网连接 )。 0021 下面将参照本发明实施例的方法、 装置 ( 系统 ) 和计算机程序产品的流程图和 / 或框图描述本发明。应当理解, 流程图和 / 或框图的每个方框以及流程图和 / 或框图中各 方框的组合, 都可以由计算机程序指令实现。 这些计算机程序指令可以提供给通用计算机、 专用计算机或其它可编程数据处理装置的。

20、处理器, 从而生产出一种机器, 这些计算机程序 指令通过计算机或其它可编程数据处理装置执行, 产生了实现流程图和 / 或框图中的方框 中规定的功能 / 操作的装置。 0022 也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置 以特定方式工作的计算机可读介质中, 这样, 存储在计算机可读介质中的指令就产生出一 个包括实现流程图和 / 或框图中的方框中规定的功能 / 操作的指令装置 (Instruction means) 的制造品 (manufacture)。 0023 也可以把计算机程序指令加载到计算机、 其它可编程数据处理装置、 或其它设备 上, 使得在计算机、 其它可编程。

21、数据处理装置或其它设备上执行一系列操作步骤, 以产生计 算机实现的过程, 从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图 和 / 或框图中的方框中规定的功能 / 操作的过程。 0024 附图中的流程图和框图显示了根据本发明的多个实施例的系统、 方法和计算机程 序产品的可能实现的体系架构、 功能和操作。在这点上, 流程图或框图中的每个方框可以 代表一个模块、 程序段或代码的一部分, 所述模块、 程序段或代码的一部分包含一个或多个 用于实现规定的逻辑功能的可执行指令。 也应当注意, 在有些作为替换的实现中, 方框中所 标注的功能也可以以不同于附图中所标注的顺序发生。例如, 两个连续。

22、的方框实际上可以 基本并行地执行, 它们有时也可以按相反的顺序执行, 这依所涉及的功能而定。 也要注意的 是, 框图和 / 或流程图中的每个方框、 以及框图和 / 或流程图中的方框的组合, 可以用执行 规定的功能或操作的专用的基于硬件的系统来实现, 或者可以用专用硬件与计算机指令的 组合来实现。 说 明 书 CN 104252493 A 6 4/12 页 7 0025 图 1 所示的计算机系统 100, 可以用来实现本发明的内容匹配系统。 0026 本发明的总体构思, 是用软件系统和硬件系统两部分来实现内容匹配服务器的内 容匹配过程, 由硬件系统执行计算密集的任务, 其中, 用基于 FPGA 。

23、的设计来实现硬件系统。 0027 首先图 3, 图 3 示意性表示按照本发明一个实施例的内容匹配系统 300, 体现了本 发明的上述构思。如图所示, 内容匹配系统 300 包含一个软件子系统 310 和一个硬件子系 统 330, 它们之间可互相发送和接收信息。 0028 内容匹配系统 300 可以充当图 2 所示的基于内容的发布 / 订阅系统中的事件处理 平台 230。如图 2 所示, 事件处理平台 230 对来自发布者 210 的消息进行适当预处理后, 针 对预处理后的消息进行事件内容匹配, 然后对内容匹配过程生成的匹配结果进行后处理, 产生用于向订阅者提供的消息队列。 0029 按照本发明。

24、的内容匹配系统 300 的软件子系统 310 将来自发布者 210 的消息进 行适当预处理后, 发送到硬件子系统 330, 硬件子系统 330 将事件内容与预定的谓词进行匹 配, 生成供软件子系统使用的匹配结果, 软件子系统 310 根据匹配结果进行后处理, 生成消 息队列并向订阅者 220 发送消息。 0030 如图所示, 硬件子系统 330 是基于现场可编程逻辑阵列的系统, 包含一个或多个 基于现场可编程逻辑阵列的匹配引擎 332。 0031 现场可编程逻辑阵列 (FPGA, Field Programmable Gate Array) 是一种可重新 配置的 (reconfigurable。

25、) 集成电路。在 FPGA 上, 组合逻辑是通过查找表 (LUT, 1ook up table) 实现的。FPGA 具有易失性, 对 FPGA 的配置和重新配置, 可以通过将用某种描述语言 编写的应用代码和相应的配置加载到 FPGA 芯片上中而实现。 0032 按照本发明一个实施例, 内容匹配系统 300 包含一个下载 DMA323 和一个上传 DMA325。下载 DMA 被配置得用于通过 PCIe 接口 321 从软件子系统 310 向硬件子系统发送 包含事件的消息, 上传 DMA 用于通过 PCIe 接口从硬件子系统向软件子系统发送匹配结果。 0033 所述匹配结果, 是所述一个或多个基于。

26、 FPGA 的匹配引擎 332 生成的匹配结果。 0034 按照本发明一个实施例, 可以在基于 FPGA 的硬件子系统 330 中实现下载 DMA323 和一个上传 DMA325。 0035 按照本发明一个实施例, 内容匹配系统进一步包含一个事件解码器 327, 用于从从 软件子系统向硬件子系统发送的包含事件的消息中解析出事件, 并将解析出的事件发送到 硬件子系统。 0036 所述解析出的事件将被用作所述一个或多个基于 FPGA 的匹配引擎 332 的输入事 件。 0037 按照本发明一个实施例, 可以在基于 FPGA 的硬件子系统 330 中实现事件解码器 327。 0038 基于 FPGA。

27、 的匹配引擎执行的是计算密集型的内容匹配任务, 由于基于 FPGA 的匹 配引擎的计算速度快, 因此可以提高内容匹配系统 300 的性能。此外, 硬件子系统 330 中的 匹配引擎 332, 可以采用相同的结构。通过增加或减少匹配引擎的个数, 无须改变匹配引擎 的运行逻辑, 就可以线性地提高或降低整个硬件子系统的处理效率。 因此, 本发明的硬件子 系统 330 具有良好的可升级性 (scalabi1ity)。 0039 匹配引擎 332 的详细结构, 如图 4 所示。 说 明 书 CN 104252493 A 7 5/12 页 8 0040 图 4 示意性表示按照本发明一个实施例的基于 FPG。

28、A 的匹配引擎 400, 其更详细地 表示了图 3 所示的匹配引擎 332 的结构。图 4 所示的基于 FPGA 的匹配引擎 400 包含 : 事件 存储装置410, 至少一个谓词表420, 至少一个映射表430, 至少一个比较器440, 以及匹配结 果存储器 450。下面结合附图, 对匹配引擎的各组成部分作更详细的描述。 0041 事件存储装置 410 被设置得用于存储一个事件序列。 0042 在内容发布/订阅系统中, 事件是发布者210发送的消息的一部分, 可以用属性名 和属性值来表征。例如,“温度等于 0” 是一个事件, 其中,“温度” 是属性名,“0” 是属性值。 因此, 可以将一个事。

29、件记为 Tn, v, 其中, 标记 “Tn” 和 “v” 分别表示属性名和属性值。例 如, 可以用 Temperature, 0 表示 “温度等于 0” , 其中,“Temperature” 是属性名,“0” 是属 性值, 即属性 “Temperature” 的值。 0043 图 4 所示的事件存储装置存储着一个事件序列 A1, v1, A2, v2.An, vn, 该 事件序列例如是一个包含源于发布者 ( 例如传感器 ) 的 10 个输入事件 ( 以下简称 “事件” ) 的序列 E, 即 : 0044 E 温度 -15, 湿度 10, 温度 0, 湿度 20, 温度 15, 湿度 30, 温。

30、度 25, 湿度 40, 温度 35, 湿度 50。 0045 需要指出的是, 上述的序列 E 的内容和数量, 仅仅是示例性的。在实际应用中, 会 有更多的不同事件。例如, 消息发布者 210 每秒中可能发出数以百万的事件。 0046 所述至少一个谓词表 420 被配置得用于存储要被查询的谓词。 0047 在内容发布 / 订阅应用中, 术语 “谓词” 指的是作为表示订阅者要求符合的策略、 规则或条件的一部分的逻辑表达式。本发明中所称的谓词, 指的是包含属性名、 算子和属 性值 ( 简称 “值” ) 的逻辑表达式, 可以记为 属性名, 算子, 值 。例如, 逻辑表达式 “温 度 0” 是一个谓词。

31、, 包含属性名 “温度” 、 算子 “” 和值 “0” 。可以将谓词 “温度 0” 或 “温度大于 0” 记为 Temperature, , 0, 将谓词 “温度等于 0” 记为 Temperature, , 0。 Temperature, , 0 和 Temperature, , 0 是具有相同属性名的不同谓词。 0048 谓词表是一个行列结构的二维表, 表中某一行和某一列的位置定义的表单元, 存 储一个谓词。 本发明的匹配引擎可以用一个或多个谓词表来存储要被查询的所有不同的谓 词 ; 谓词表可以是单列的, 也可以是多列的。 0049 图4所示的匹配引擎, 设置了25个双列的谓词表420。 。

32、图中的标记 “Predicate0” 、 “Predicate1” 、 、“Predicate99” 表示 100 个不同的谓词, 例如,“Predicate0” 代表 “Temperature, , 0” ,“Predicate1” 代表 “Temperature, , 0” , 等等。 0050 如 图 所 示,第 1 个 谓 词 表 的 第 1 行 包 含 谓 词 “Predicate0” 和 “Predicate1” , , 第25个谓词表的第1行包含谓词 “Predicate48” 和 “Predicate49” ; 第 1 个谓词表的第 2 行包含谓词 “Predicate50” 。

33、和 “Predicate51” , , 第 25 个谓词 表的第 2 行包含谓词 “Predicate98” 和 “Predicate99” 。 0051 在一个匹配引擎中配置多个谓词表, 可以进一步增加匹配引擎处理事件的操作的 并行性 (para11elism)。后文下文将分别举例说明在一个匹配引擎中配置一个谓词表和多 个谓词表的不同效果。 0052 按照本发明一个实施例, 将多个属性名相同的谓词, 按行设置在所有谓词表的相 邻表单元中。 说 明 书 CN 104252493 A 8 6/12 页 9 0053 将多个属性名相同的谓词, 按行设置在所有谓词表的相邻表单元中, 指的是逐行 地安。

34、置每个这样的谓词, 使得它们尽量位于所有谓词表的同一行中相邻的位置。 例如, 谓词 “Predicate1” -“Predicate49” 是 50 个具有属性名 “A1” 的不同谓词, 它们被设置在所有 25 个谓词表的第 1 行的 50 个相邻列中。 “Predicate50” -“Predicate120” 是 71 个具有属 性名 “A9” 的不同谓词, 25 个谓词表每行一共只有 50 列, 因此, 将这 71 个谓词中的 50 个谓 词, 即 “Predicate50” -“Predicate99” , 设置在第 2 行的 50 个相邻列中, 将其余 21 个谓词 “Predica。

35、te100” -“Predicate121” 设置在下一行的 21 个相邻列中 ( 未予示出 )。 0054 所述至少一个映射表 430 与所述至少一个谓词表 420 一一对应, 每个映射表用于 将事件队列中的事件映射到该映射表对应的谓词表中的至少一个对应谓词。 0055 如图 4 所示, 本发明的匹配引擎中, 每一个谓词表 420, 都有一个对应的映射表 430。映射表 430 的表单元内容用标记 Name, Des 表示其中,“Name” 表示属性名 ( 例如 “Temperature” ),“Des” 是位置描述, 其描述具有属性名 “Name” 的谓词在该映射表对应的 谓词表中的位置。。

36、通过事件的属性名和谓词的属性名的联系, 就可以将一个事件映射到一 个映射表对应的谓词表中的一个或多个谓词。 0056 不同的谓词可以有相同的属性名。如果用一个表单元的内容 Name, Des 表示一 个属性名为 “Name” 的谓词及其对应的位置描述, 则一个映射表中将可能包含重复的属性 名。 0057 如上所述, 按照本发明一个实施例, 在匹配引擎中, 将多个属性名相同的谓词, 按 行设置在所有谓词表的相邻表单元中 ; 相应地, 本发明的匹配引擎的每个映射表的表单元 指示在该映射表对应的谓词表中存储的具有相同属性名的谓词的个数和位置。具体来说, 将位置描述 “Des” 具体化为 “起始位置”。

37、 ,“项数” , 用 “起始位置” 表示具有相同属性名 的多个谓词的起始位置, 用 “项数” 表示具有相同属性名的谓词的个数。由于属性名相同的 不同谓词被按行设置在所有谓词表的相邻表单元中, 如果知道具有某属性名的谓词在对应 的谓词表中的起始位置和个数, 就可以知道所有这些谓词在该谓词表中的位置。下文将通 过具体的例子, 更详细地说明采用位置描述 “起始位置” ,“项数” 的实现方式。采用这样 的位置描述, 不但可以提高事件处理的效率, 并且可以节省映射表的长度, 减少对 FPGA 的 资源消耗。 0058 如图 4 所示, 所述至少一个比较器 440 与所述至少一个谓词表的所有表列一一对 应。

38、, 每个比较器用于将事件序列中的一个事件与该比较器对应的表列中的对应谓词进行匹 配, 生成匹配结果。 0059 例如, 在如图 4 所示的匹配引擎的配置中, 有 25 个谓词表, 共有 50 个表列 ; 相应 地, 有 50 个比较器分别对应于每个表列。 0060 如果只有一个单列的谓词表, 则只需有一个对应的比较器。如果只有一个 n 列的 谓词表, 则需要有 n 个对应的比较器。 0061 比较器的功能, 是比较一个事件是否与谓词所表达的条件相符。例如, 某比较 器的一个输入是谓词 “Predicate0” , 内容是 Temperature, , 0, 如果另一个输入是事 件 Temper。

39、ature, 0, 则该比较器生成的匹配结果为 “真” (True) ; 如果另一个输入是事件 Temperature, -15, 则比较器生成的匹配结果为 “假” (False)。 0062 按照本发明一个实施例, 所述至少一个比较器的每个被配置得用于将事件队列中 说 明 书 CN 104252493 A 9 7/12 页 10 的一个事件的属性值与该比较器对应的谓词表表列中具有与该事件的属性名相同的属性 名的谓词进行比较, 生成匹配结果。 0063 所述匹配结果存储器 450 用于存储所述至少一个比较器的每个生成的匹配结果。 0064 按照本发明一个实施例, 所述匹配结果存储器存储的匹配结。

40、果是一个位向量, 位 向量中的位与所有谓词表中不同谓词一一对应。 0065 例如, 位向量的比特位的值 “1” 和值 “0” 分别代表逻辑值 “真” 和逻辑值 “假” 。 0066 位向量的第1个比特位对应于谓词 “Predicate0” , 即Temperature, , 0比较器 将其与一个当前事件Temperature, 0比较, 生成的结果为 “真” , 则在位向量的第1个比特 位写入表示逻辑 “真” 的值 “1” 。 0067 下面举例说明匹配引擎中各组成部分的功能和不同配置的效果。为了简明, 在以 下说明的例子中, 假设有 12 个基本谓词 : 温度 0, 温度 0, 温度 0, 。

41、温度 30, 温度 30, 温度 30, 湿度 20, 湿度 20, 湿度 20, 湿度 50, 湿度 50, 湿度 50。 0068 例 1、 采用两个单列的谓词表 0069 如前文所述, 按照本发明一个实施例, 具有相同属性名称的多个谓词, 被排列在一 个谓词表或多个谓词表中相邻的位置。 0070 据此可以生成如下两个谓词表 PT0 和 PT1。 0071 谓词表 PT0 谓词表 PT1 0072 0073 0074 谓词表 PT0 和 PT1 分别被称作全部谓词表中的第 0 个谓词表和第 1 个谓词表。从 谓词表 PT0 和 PT1 中可见, 这 12 个谓词中属性名相同的谓词, 被存储。

42、在两个谓词表中的相 邻位置, 并且尽量存储在两个谓词表中的同行中。例如, 属性名为 “温度” 的 6 个谓词, 第 1 个和第 2 个被相邻地设置在谓词表 PT0 和 PT1 的第 0 行中, 第 3 个和第 4 个被相邻地设置 在谓词表 PT0 和 PT1 的与第 0 行相邻的第 1 行中, 第 5 个和第 6 个被相邻地设置在谓词表 说 明 书 CN 104252493 A 10 8/12 页 11 PT0 和 PT1 的与第 1 行相邻的第 2 行中。类似地, 属性名为 “湿度” 的 6 个谓词, 被相邻地设 置在谓词表 PT0 和 PT1 的第 3、 4 和 5 行。 0075 一个谓。

43、词表有一个对应的映射表, 因此配置如下所示的两个映射表 MT0 和 MT1, 它 们分别与谓词表 PT0 和谓词表 PT1 对应。 0076 映射表 MT0 映射表 MT1 0077 0078 如前文所述, 可以用映射表的一个表单元的内容, 采用 “起始位置” ,“项数” 的 位置描述, 以指示该映射表对应的谓词表中多个具有相同属性名的谓词和它们的位置, 其 中,“起始位置” 表示多个具有相同属性名的谓词的起始位置,“项数” 表示具有相同属性名 的谓词的个数。 0079 映射表 MT0 有两行内容, 即 温度, 0, 3 和 湿度, 3, 3, 其中, 第 0 行的内容 温 度, 0, 3 表。

44、示, 具有属性名 “温度” 的谓词, 在谓词表 PT0 中的起始位置是第 0 个表单元, 共 有 3 项, 即 温度, , 0、 温度, , 30 和 温度, , 30 ; 第 1 行的内容 湿度, 3, 3 表 示, 具有属性名 “湿度” 的谓词, 在谓词表 PT0 中的起始位置是第 3 个表单元, 共有 3 项, 即 湿度, , 20、 湿度, , 50 和 湿度, , 50。 0080 映射表 MT1 有两行内容, 即 温度, 0, 3 和 湿度, 3, 3, 其中, 第 0 行的内容 温 度, 0, 3 表示, 具有属性名 “温度” 的谓词, 在谓词表 PT1 中的起始位置是第 0 个。

45、表单元, 共 有 3 项, 即 温度, , 0、 温度, , 0 和 温度, , 30 ; 第 1 行的内容 湿度, 3, 3 表示, 具有属性名 “湿度” 的谓词, 在谓词表 PT1 中的起始位置是第 3 个表单元, 共有 3 项, 即 湿 度, , 20、 湿度, , 20 和 湿度, , 50。 0081 映射表 MT0 和 MT1 的行数, 等于所有谓词表中包含的不同的属性名的个数。 0082 以下参照图5, 描述匹配引擎处理事件的流程。 图5示意性表示按照发明一个实施 例的基于 FPGA 的匹配引擎的匹配方法的流程图。 0083 图 5 所示的匹配方法, 基于图 4 所示的基于 FP。

46、GA 的匹配引擎, 所述匹配引擎包含 一个存储事件序列的事件存储装置 410, 至少一个谓词表 420、 至少一个映射表 430, 至少一 个比较器 440 和一个匹配结果存储器 450。如图 5 所示, 所述匹配方法包含步骤 510-550。 0084 假设在某个时刻, 事件存储装置410中存储了前文所述的事件序列E, 即10个基本 事件 : 温度, -15, 湿度, 10, 温度, 0, 湿度, 20, 温度, 15, 湿度, 30, 温度, 25, 湿度, 40, 温度, 35, 湿度, 50。 0085 采用所述匹配方法, 按照先进先出的顺序, 循环地处理事件队列中的每个事件, 可 以。

47、为所有事件生成匹配结果。以下针对一个事件描述所述匹配方法的操作过程。 0086 在步骤 510, 从事件序列中提取一个事件。 0087 本例中, 步骤510提取的第一个事件为温度, -15, 该事件的属性名为 “温度” , 值 为 “-15” 。 说 明 书 CN 104252493 A 11 9/12 页 12 0088 在步骤 520, 并发地从所有映射表中查找出与该事件的属性名相同的谓词的位置 描述。本例中, 映射表 MT0 中与属性名 “温度” 相同的谓词的位置描述为 0, 3, 映射表 MT1 中与属性名 “温度” 相同的谓词的位置描述为 0, 3。 0089 在步骤 530, 根据。

48、从所有映射表中查找出的与该事件的属性名相同的谓词的位置 描述, 并发地从所有谓词表中连续读取谓词。 0090 由于谓词表是独立的实体, 因此可以并发地读取不同谓词表中的内容。 0091 本例中, 从映射表 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。 0092 在实际操作中, 是否读取谓词的。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1