一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种用于数据库排序和连接的硬件卸载加速系统

2022-06-01 00:34:35 来源:中国专利 TAG:


1.本发明属于数据库技术和fpga技术领域,具体涉及一种用于将数据库的排序和连接运算卸载至fpga进行硬件加速的系统,名称为一种用于数据库排序和连接的硬件卸载加速系统。


背景技术:

2.数据库技术是计算机领域最重要的技术之一,应用于小到个人手机,大到国防科技等领域的方方面面。为提升数据库系统运行的效率,研究人员一直在不断探索,近年来,使用fpga技术为数据库应用软件进行硬件加速成为了研究的重要方向。fpga是可编程门阵列,具有低功耗、低延时的特点,将数据库应用程序中的复杂算法卸载至fpga,可以大大减轻cpu负载,提升数据库查询效率。
3.排序算法和连接算法是数据库软件中常用的查询算法,同时也是最消耗cpu资源的算法。数据库排序算法是对数据库表按某一项属性进行升序或降序排列,得到有序的数据库表。数据库连接算法是对数据库的两个或多个表按某一项属性进行连接,将具有相同属性值的行连接起来形成一张新的数据库表。国内外已经有许多研究实现了将排序算法和连接算法卸载到fpga硬件,但是目前这些研究均是对单一排序算法或连接算法的研究,在fpga逻辑中需分别部署排序算法逻辑模块和连接算法逻辑模块,无论模块在运行时是否被调用,这些算法模块都会一直占用逻辑资源,从而造成了很大的资源浪费。因此,为进一步降低fpga资源占用,提升数据库查询效率,需要研究具有一定通用性的硬件加速技术方案。


技术实现要素:

4.针对现有技术存在的上述问题,本发明提供了一种用于数据库排序和连接的硬件卸载加速系统,以解决如何充分发挥fpga器件流水线与并行处理优势,在同一个fpga模块中同时实现数据库技术中排序与连接,降低了fpga资源占用率,实现了数据库卸载技术性能提升的目的。
5.为达到上述目的,本发明采取以下技术方案:
6.一种用于数据库排序和连接的硬件卸载加速系统,包括一个控制单元和一组运算单元,两者相连接,控制单元用于识别数据库应用程序发起的算法请求,并根据请求类型运行不同的状态机;运算单元由一串逻辑相同的运算小单元串联组成,设计成流水线结构,第一个和最后一个运算小单元都由控制单元进行控制。
7.优选的,上述系统通过fpga执行如下:
8.控制单元,识别数据库应用程序发起的算法请求类型;
9.如果算法请求类型为排序,则控制单元接收数据库表的元组,同时发送给运算单元进行排序运算;
10.如果算法请求类型为连接,则控制单元先接收小表的元组,同时发送给运算单元进行排序,再接收大表的数据,发送给运算单元与小表数据进行比较,判断是否匹配。控制
单元输出算法得到的排序后的数据,或连接后的结果。
11.优选的,所述接收数据库表的元组具体如下:每个时钟周期接收一个数据库表元组,该元组至少包括一个行索引和一个属性值。
12.优选的,在排序请求实例中,所述属性值为排序算法中的排序依据。在连接请求实例中,所述属性值为两个表进行连接时的连接属性。
13.优选的,所述控制单元在收到不同的算法请求后执行不同的状态机,其状态包括:“idle”、“sort”、“push”、“join”等。
14.优选的,所述排序运算执行时,控制单元具体执行如下步骤:
15.在“idle”状态识别到排序运算请求,则进入“sort”状态;
16.在“sort”状态,每时钟周期获取一个数据库表元组,并每时钟周期将其输出给运算单元,同时输出一个“sort”信号给运算单元;直到输出完全部的元组,则进入“push”状态;
17.在“push”状态发送一个“push”信号到运算单元;
18.回到“idle”状态,等待运算单元输出排序好的元组。
19.优选的,所述排序运算执行时,运算单元具体执行如下步骤:
20.收到“sort”信号后,每一个运算小单元将收到的第一个元组数据存储在小单元内部;收到“sort”信号后,每一个运算小单元将收到的非第一个元组数据与内部存储的数据进行比较,将较大的数据保留,较小的数据输出给后一个小单元,同时将“sort”信号也输出给后一个小单元;
21.收到“push”信号后,每一个运算小单元将内部保存的元组输出给后一个小单元,同时将“push”信号也输出给后一个小单元;
22.直到最后一个运算小单元将元组和“push”信号输出到控制单元后,对数据库表的排序完成。
23.优选的,所述连接运算执行时,控制单元具体执行如下步骤:
24.在“idle”状态识别到连接请求,则进入“sort”状态;
25.在“sort”状态,每时钟周期获取一个小表元组,并每时钟周期将其输出给运算单元,同时输出一个“sort”信号给运算单元;直到输出完所有的小表元组,则进入“join”状态;
26.在“join”状态,每时钟周期获取一个大表元组,并每时钟周期将其输出给运算单元,同时输出一个“jion”信号给运算单元;直到输出完所有的大表元组,则回到“idle”状态;
27.在“idle”状态等待运算单元输出连接好的元组。
28.优选的,所述连接运算执行时,运算单元具体执行如下步骤:
29.收到“sort”信号后,每一个运算小单元将收到的第一个元组数据存储在小单元内部,这一步与排序操作相同;收到“sort”信号后,每一个运算小单元将收到的非第一个元组数据与内部存储的数据进行比较,将较大的数据保留,较小的数据输出给后一个小单元,同时将“sort”信号也输出给后一个小单元,这一步与排序操作相同;
30.收到“join”信号后,每一个运算小单元将内部保存的元组与输入的元组进行比较,得到匹配的结果,将“join”信号和匹配结果输出给后一个小单元;
31.直到最后一个运算小单元将匹配结果和“join”信号输出到控制单元后,对数据库表的连接完成。
32.与现有技术相比,本发明提出的一种用于数据库排序和连接的硬件卸载加速系统具有以下特征和优点:
33.(一)本发明充分发挥fpga器件流水线、并行处理的特性,设计fpga逻辑实现对数据库的排序和连接,将数据库的排序和连接运算卸载到硬件,减轻了cpu运算压力。
34.(二)本发明将连接和排序这两种操作合并到同一个fpga模块中,具有灵活性和通用性,节约了片上资源,降低了fpga资源闲置的概率。
35.(三)在本发明优选实施例中,运算小单元的个数可根据具体需求而定,排序和连接运算的延迟与运算小单元的个数成正比,从而在具体实施时,算法延时可精准预测,不会出现阻塞或超时。
36.(四)在本发明优选实施例中,由于采用了流水线设计,算法模块可以接受连续输入的排序或连接请求,不需要等待前一个请求的算法完成,就可以发起下一个算法请求,大大缩短了数据库应用之间的算法排队等待时间。
附图说明
37.图1为本发明一种用于数据库排序和连接的硬件卸载加速系统的模块框图。
38.图2为本发明一种用于数据库排序和连接的硬件卸载加速系统的控制单元状态机。
39.图3为本发明在部署三个运算小单元时的一个排序运算实例图。
40.图4为本发明在部署三个运算小单元时的一个连接运算实例图。
具体实施方式
41.下面参照说明书附图和优选实施例对本发明一种用于数据库排序和连接的硬件卸载加速系统作详细说明。
42.如图1所示,在本实施例中,一种用于数据库排序和连接的硬件卸载加速系统包括一个控制单元和一组运算单元,其中,所述控制单元用于识别数据库应用程序发起的算法请求,并根据请求类型运行不同的状态机;所述运算单元由一串逻辑相同的运算小单元串联组成,设计成流水线结构,第一个和最后一个运算小单元都由控制单元进行控制。本实施例系统通过fpga执行如下步骤:
43.s1.控制单元识别数据库应用程序发起的算法请求类型;
44.s2.如果算法请求类型为排序,则控制单元接收数据库表的元组,同时发送给运算单元进行排序运算;
45.s3.如果算法请求类型为连接,则控制单元先接收小表的元组,同时发送给运算单元进行排序,再接收大表的数据,发送给运算单元与小表数据进行比较,判断是否匹配;
46.s4.控制单元输出算法得到的排序后的数据,或连接后的结果。
47.在本实施例中,所述接收数据库表的元组具体如下:每个时钟周期接收一个数据库表元组,该元组至少包括一个行索引和一个属性值。
48.在排序请求执行中,所述属性值为排序算法中的排序依据。在连接请求执行中,所
述属性值为两个表进行连接时的连接属性。
49.在本实施例中,所述排序运算和连接运算执行时,控制单元的状态机如图2所示,其状态包括:“idle”、“sort”、“push”、“join”等。
50.在本实施例中,所述排序运算执行时,控制单元具体执行如下步骤:
51.(1)在“idle”状态识别到排序运算请求,则进入“sort”状态;
52.(2)在“sort”状态,每时钟周期获取一个数据库表元组,并每时钟周期将其输出给运算单元,同时输出一个“sort”信号给运算单元;直到输出完全部的元组,则进入“push”状态;
53.(3)在“push”状态发送一个“push”信号到运算单元;
54.(4)回到“idle”状态,等待运算单元输出排序好的元组。
55.所述排序运算执行时,运算单元具体执行如下步骤:
56.(1)收到“sort”信号后,每一个运算小单元将收到的第一个元组数据存储在小单元内部;
57.(2)收到“sort”信号后,每一个运算小单元将收到的非第一个元组数据与内部存储的数据进行比较,将较大的数据保留,较小的数据输出给后一个小单元,同时将“sort”信号也输出给后一个小单元;
58.(3)收到“push”信号后,每一个运算小单元将内部保存的元组输出给后一个小单元,同时将“push”信号也输出给后一个小单元;
59.(4)直到最后一个运算小单元将元组和“push”信号输出到控制单元后,对数据库表的排序完成。
60.在本实施例中,所述连接运算执行时,控制单元具体执行如下步骤:
61.(1)在“idle”状态识别到连接请求,则进入“sort”状态;
62.(2)在“sort”状态,每时钟周期获取一个小表元组,并每时钟周期将其输出给运算单元,同时输出一个“sort”信号给运算单元;直到输出完所有的小表元组,则进入“join”状态;
63.(3)在“join”状态,每时钟周期获取一个大表元组,并每时钟周期将其输出给运算单元,同时输出一个“jion”信号给运算单元;直到输出完所有的大表元组,则回到“idle”状态;
64.(4)在“idle”状态等待运算单元输出连接好的元组。
65.所述连接运算执行时,运算单元具体执行如下步骤:
66.(1)收到“sort”信号后,每一个运算小单元将收到的第一个元组数据存储在小单元内部,这一步与排序操作相同;
67.(2)收到“sort”信号后,每一个运算小单元将收到的非第一个元组数据与内部存储的数据进行比较,将较大的数据保留,较小的数据输出给后一个小单元,同时将“sort”信号也输出给后一个小单元,这一步与排序操作相同;
68.(3)收到“join”信号后,每一个运算小单元将内部保存的元组与输入的元组进行比较,得到匹配的结果,将“join”信号和匹配结果输出给后一个小单元;
69.(4)直到最后一个运算小单元将匹配结果和“join”信号输出到控制单元后,对数据库表的连接完成。
70.为简单描述在排序运算实施例中运算单元的具体步骤,附图3以部署三个运算小单元为例,假设输入的第一个数据库表元组为:{0,55}{1,66}{2,22}{3,44},第二个数据库表元组为{1,66}{2,33}{3,55}{4,22}展示了各运算小单元的运算过程。
71.为简单描述在连接运算实施例中运算单元的具体步骤,附图4以部署三个运算小单元为例,假设输入的小表元组为:{0,55}{1,66}{2,22},大表元组为
72.{0,55}{1,22}{2,55}{3,66}{4,99}{5,22}{6,66},展示了各运算小单元的运算过程。
73.从附图3和附图4的示例可以看出,本发明提出的技术方案可以在不等待前一个数据库表排序完成的情况下,就开始对下一个数据库表进行排序,中间只需要两个时钟周期的间隔。
74.本发明将连接和排序这两种操作合并到同一个fpga模块中,从而节约了片上资源,降低了fpga资源闲置的概率。
75.在本发明的优选方案中,运算小单元的个数可根据具体需求而定,排序和连接运算的延迟与运算小单元的个数成正比,从而在具体实施时,算法延时可精准预测,不会出现阻塞或超时。
76.在本发明的优选方案中,采用了流水线设计,算法模块可以接受连续输入的排序或连接请求,不需要等待前一个请求的算法完成,就可以发起下一个算法请求。
77.本领域的技术人员应该理解,本发明的具体实施方式仅用于解释本发明的原理,而非暗示本发明实施例公开的范围被限于这些实例。凡是依据本发明中的设计精神所做出任何省略、修改、等同替换、改进等,均应落入本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献