《基于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 在实际操作中, 是否读取谓词的。