CN110597627A - 基于虚拟fpga的数据库运算加速装置及加速方法 - Google Patents

基于虚拟fpga的数据库运算加速装置及加速方法 Download PDF

Info

Publication number
CN110597627A
CN110597627A CN201910786074.5A CN201910786074A CN110597627A CN 110597627 A CN110597627 A CN 110597627A CN 201910786074 A CN201910786074 A CN 201910786074A CN 110597627 A CN110597627 A CN 110597627A
Authority
CN
China
Prior art keywords
fpga
data
basic operation
acceleration
address
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.)
Granted
Application number
CN201910786074.5A
Other languages
English (en)
Other versions
CN110597627B (zh
Inventor
王鑫
杨珍琪
米帅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CETC 15 Research Institute
Original Assignee
CETC 15 Research Institute
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by CETC 15 Research Institute filed Critical CETC 15 Research Institute
Priority to CN201910786074.5A priority Critical patent/CN110597627B/zh
Publication of CN110597627A publication Critical patent/CN110597627A/zh
Application granted granted Critical
Publication of CN110597627B publication Critical patent/CN110597627B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

一种基于虚拟FPGA的数据库运算加速装置及加速方法,装置包括vFPGA用于通过FPGA资管管理器,监测并整合全部的FPGA卡的逻辑单元和存储单元,为FPGA加速运算调度器提供单张FPGA卡的监测与管理视角,FPGA资源管理器用于对FPGA卡的烧写配置与数据传输,同时用于将FPGA的在运行资源与剩余资源信息传递给vFPGA,加速运算调度器可以根据运算请求的类型和当前的可用资源,向vFPGA请求选择合适数量的基本运算模块,FPGA资源管理模块通过PCIe总线连接多张FPGA卡。本发明利用虚拟FPGA对标准FPGA资源卡的动态扩展伸缩,将FPGA资源分割池化为一个个基本运算模块,在处理不同的加速请求时,通过调度器配置和分配来实现加速算法,实现资源利用的最大化,且适用于多条不同类型的动态加速请求。

Description

基于虚拟FPGA的数据库运算加速装置及加速方法
技术领域
本申请涉及FPGA加速运算领域,特别是一种基于虚拟FPGA的数据库运算加速装置,尤其适用于对数据库的加速运算。
背景技术
在当前自主可控的背景下,飞腾、龙芯等国产CPU应用在大量的场合,但其主频低于2GHz,对千万级以上数据库支持性能表现很差,有的查询操作延迟时间高达几十至几百秒,不能满足特定的业务需求。GPU开发难度低,但GPU无自主化芯片。FPGA虽然开发难度大,但能在实时地改变硬件结构,对数据库(数据库的大部分算法为单条流水线)这种不规则且多样化的算法支持较好。当前标准化的FPGA卡的内存较小,也没有资源可动态扩展伸缩的机制,不适合作为数据库等资源占用型加速计算。当前的FPGA加速方法需要固定量的存储资源和运算资源,对动态的加速计算请求会有较大的资源浪费,而动态地加载加速算法则会产生额外的时间损耗,降低加速的实际效率。
因此,如何能够针对数据库加速以及FPGA的上述缺点,提供了一种基于虚拟FPGA的数据库加速方法,成为现有技术亟需解决的技术问题。
发明内容
本发明的目的在于提出一种基于虚拟FPGA的数据库运算加速装置,能够实现FPGA资源的动态扩展伸缩。
为达此目的,本发明采用以下技术方案:
一种基于虚拟FPGA的数据库运算加速装置,其特征在于:
包括vFPGA(虚拟FPGA)、FPGA资源管理器,加速运算调度器,FPGA资源管理模块通过PCIe总线连接多张FPGA卡,不同张FPGA卡通过分时复用的方式共有一个PCIe总线;
其中所述FPGA资源管理器,用于对FPGA卡的烧写配置与数据传输,同时用于将FPGA的在运行资源与剩余资源信息传递给vFPGA;
所述vFPGA,用于通过FPGA资管管理器,监测并整合全部的FPGA卡的逻辑单元和存储单元,为FPGA加速运算调度器提供单张FPGA卡的监测与管理视角;
所述加速运算调度器可以根据运算请求的类型和当前的可用资源,向vFPGA请求选择合适数量的基本运算模块。
多张FPGA卡,被FPGA资源管理器分割并烧写配置为包含多个基本运算模块。
可选的,所述基本运算模块包含一个比较器、一个加法器、作为输出的一个计数寄存器、作为输入的一个被比较数据,以及时钟和复位信号,还包括具有数据RAM和地址RAM,地址RAM固定用于存储各个基本运算单元的初始地址,默认全为低电平;数据RAM用于存储被排序的数据以及相应的排序结果;
每个基本运算模块各有一个输入地址信号,该输入地址除了用于读取RAM中的数据外,还用于启动或关闭基本运算模块,该输入地址由指定的块RAM内的数据进行初始化,基本运算模块可以通过一定时钟周期的运算,完成被比较数据与若干个数据进行比较的大小次序。其中,被比较数据默认为长整型,每经过一个时钟周期,被比较数据从指定地址的读取被比较数据,若大于比较数据则计数寄存器自增1,最终计数寄存器输出的结果即为被比较数据在若干个数据中的大小次序。
可选的,FPGA资源管理器为基本运算模块分配一定的存储空间,用于管理基本运算模块的运行状态。管理方式为,分配一个固定的存储空间用于标记各个基本运算模块的状态,将各个基本运算模块与存储空间中的存储位一一对应起来,存储位为高电平1表示对应的基本运算模块正在使用,低电平0表示对应的基本运算模块尚未使用;
vFPGA通过读取FPGA资源管理器中管理基本运算模块的存储位,来获取当前所有FPGA卡的已用资源和可用资源。
可选的,vFPGA用固定的存储段中的电平来整合全部的FPGA卡的资源,为每张FPGA分配一个固定长度的存储段,按约定的方式,高若干位为相应的FPGA卡的地址编码,低若干位为相应的FPGA的内存地址编码;
vFPGA通过记录当前已用内存段的首尾地址来管理内存使用情况,当加速运算调度器向vFPGA申请内存时,vFPGA记录新申请的内存段的首尾地址,加速运算完毕释放内存后,vFPGA删除对应的使用内存记录。
可选的,所述加速运算调度器加载加速运算时,只能加载FPGA资源管理器中标记为0的管理存储位对应的基本运算模块,同时对该标志位写入高电平1;加速运算完毕之后,加速运算调度器释放基本运算模块,并对对应的标志位写入低电平0。
本发明还公开了一种利用上述的数据库运算加速装置对数据库运算进行加速的方法,其特征在于:
数据库在进行加速请求时将关键字段的字长以及数据长度传递给加速运算调度器,并将要求的加速时间Tnorm传递给加速运算调度器,若加速运算调度器预计的加速时间大于Tnorm,则返回资源不足的错误信息,否则加速运算调度器据此调度一定数量的基本运算模块,并控制FPGA资源管理模块将数据传输至相应的RAM中,其中,被排序的数据传写入被调用的基本运算模块中的数据RAM中,用于被调用基本运算模块的初始地址写入指定的地址RAM中。
可选的,对长度为N的数据进行的排序加速过程:
首先,数据库将被排序的数据按指定的排序规则编码为整型数据,并将数据长度N传递给加速运算调度器;
其次,加速运算调度器通过vFPGA获得当前可用的基本运算模块,并为该排序加速分配好一定的基本运算模块,假设加速运算调度器为该排序分配了m个连续的基本运算模块;
加速运算调度器通过vFPGA获得当前可用的RAM段,并从当前可用的RAM段的最小地址开始,依次将N个整型数据写入FPGA的数据RAM中,将各个基本运算模块的初始地址写入相应的地址RAM中。其中,写入的基本运算模块的初始地址通过如下的方式得到:
设当前可用的RAM段的最小地址为addr1。则第一个基本运算模块的初始地址为addr1,第k(k≤m)个基本运算模块的初始地址为
其中,符号表示向下取整;
然后,基本运算模块在监测到输入地址有效后,开始执行运算:
初始阶段,将N个整型数据中的第一个数据输入至每个基本运算模块的被比较数据。在每个时钟周期内,该被比较数据与输入地址所指向的地址中的数据进行比较,若结果为大于,则计数寄存器自增1。每经过一个时钟周期,输入地址自增1;
累加阶段,前m-1个基本运算模块在经过个时钟周期后,得到被比较数据与个数据的排序次序,第m个基本运算模块得到被比较数据与个数据的排序次序。其中,的余数。在经过个时钟周期后,将m个基本运算模块的计数寄存器相加,即可得到被比较数据在N个整型数据的排序次序;
经过个时钟周期后,计数寄存器相加的结果返回至指定的排序结果存储位置,并将计数寄存器清零,将每个基本运算模块的输入地址初始化。然后将N个整型数据的下一个数据传输至被比较数据,进行新的一轮比较。
可选的,当m>N时,首先初始化p=1,然后循环执行如下操作:
若m/p>N,则p=p×2。
然后将m个基本运算单元等分为p块,每块按12所述的方式进行比较,每个块的以p为间隔从N个整型数据数据中读取数据作为被比较数据。
可选的,在对数据库的表联接进行加速时,FPGA资源管理模块将基本运算模块实现为一个比较器、一个加法器和若干个寄存器,当两个分别具有P行和Q行的两个表之间的单字段联接进行链接时,FPGA资源管理模块池化出P×Q个基本运算模块,每个基本运算模块对两个表中的关联字段进行比较,若比较结果符合条件则内置的状态寄存器赋值1,否则赋值0,数据库在进行加速请求时将表联接的类型传递给加速运算调度器,加速运算调度器根据比较结果和联接的类型,确定返回的结果,如内联接则将值为1的状态寄存器分布对应的表的行联接起来;外联接则以行为准,将列中将值为1的状态寄存器对应的表的行联接于行表中。
可选的,加速运算调度器调度基于运算模块的原则,为保证运算的加速效率。根据排序加速过程和等分方法,调用m个基本运算单元,对长度为N的数据进行的排序加速,需要的时钟周期数Tclk约为:
设FPGA的时钟频率为f,要求的排序加速时间为Tnorm,则所需的调用的基本运算模块个数为:
在进行加速运算调度时,m进行向上取整。
因此,本发明利用虚拟FPGA(vFPGA)对标准FPGA资源卡的动态扩展伸缩,将FPGA资源分割池化为一个个基本运算模块,在处理不同的加速请求时,通过调度器配置和分配来实现加速算法。使其能实现资源利用的最大化,且可适用于多条不同类型的动态加速请求。
附图说明
图1是根据本发明具体实施例的FPGA数据库运算加速装置的构成;
图2是根据本发明具体实施例的FPGA数据库的基本运算处理模块的构成。
图中的附图标记所分别指代的技术特征为:
1、vFPGA;2、加速运算调度器;3、FPGA资源管理器。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
本发明在于提出用虚拟FPGA技术,实现FPGA资源的动态扩展伸缩;通过将运算资源分割池化为基本运算单元,在加速运算时进行智能调度的技术,实现FPGA资源利用率的最大化,且使之可以同时多样化的动态加速运算请求。
参见图1,示出了根据本发明具体实施例的FPGA数据库运算加速装置,
本发明的基于虚拟FPGA的数据库运算加速装置,包括vFPGA1、FPGA资源管理器2,加速运算调度器3,FPGA资源管理模块通过PCIe总线连接多张FPGA卡,不同张FPGA卡通过分时复用的方式共有一个PCIe总线;
其中所述FPGA资源管理器,用于对FPGA卡的烧写配置与数据传输,同时用于将FPGA的在运行资源与剩余资源信息传递给vFPGA;
所述vFPGA,用于通过FPGA资管管理器,监测并整合全部的FPGA卡的逻辑单元和存储单元,为FPGA加速运算调度器提供单张FPGA卡的监测与管理视角;
所述加速运算调度器可以根据运算请求的类型和当前的可用资源,向vFPGA请求选择合适数量的基本运算模块。
多张FPGA卡,被FPGA资源管理器分割并烧写配置为包含多个基本运算模块。
在一个具体的实施例中,参见图2,示出了根据本发明具体实施例的FPGA数据库的基本运算处理模块的构成。
所述基本运算模块包含一个比较器、一个加法器、作为输出的一个计数寄存器、作为输入的一个被比较数据,以及时钟和复位信号,还包括具有数据RAM和地址RAM,地址RAM固定用于存储各个基本运算单元的初始地址,默认全为低电平;数据RAM用于存储被排序的数据以及相应的排序结果。
每个基本运算模块各有一个输入地址信号,该输入地址除了用于读取RAM中的数据外,还用于启动或关闭基本运算模块,该输入地址由指定的块RAM内的数据进行初始化,基本运算模块可以通过一定时钟周期的运算,完成被比较数据与若干个数据进行比较的大小次序。其中,被比较数据默认为长整型。每经过一个时钟周期,被比较数据从指定地址的读取被比较数据,若大于比较数据则计数寄存器自增1,最终计数寄存器输出的结果即为被比较数据在若干个数据中的大小次序。
FPGA资源管理器为基本运算模块分配一定的存储空间,用于管理基本运算模块的运行状态。管理方式为,分配一个固定的存储空间用于标记各个基本运算模块的状态,将各个基本运算模块与存储空间中的存储位一一对应起来,存储位为高电平1表示对应的基本运算模块正在使用,低电平0表示对应的基本运算模块尚未使用。
vFPGA通过读取FPGA资源管理器中管理基本运算模块的存储位,来获取当前所有FPGA卡的已用资源和可用资源。
vFPGA用固定的存储段中的电平来整合全部的FPGA卡的资源。为每张FPGA分配一个固定长度的存储段,按约定的方式,高若干位为相应的FPGA卡的地址编码,低若干位为相应的FPGA的内存地址编码。
vFPGA通过记录当前已用内存段的首尾地址来管理内存使用情况,当加速运算调度器向vFPGA申请内存时,vFPGA记录新申请的内存段的首尾地址,加速运算完毕释放内存后,vFPGA删除对应的使用内存记录。
因此,加速运算调度器加载加速运算时,只能加载FPGA资源管理器中标记为0的管理存储位对应的基本运算模块,同时对该标志位写入高电平1;加速运算完毕之后,加速运算调度器释放基本运算模块,并对对应的标志位写入低电平0。
在利用本发明的FPGA数据库运算加速装置对数据库运算进行加速时,
数据库在进行加速请求时将关键字段的字长以及数据长度传递给加速运算调度器,并将要求的加速时间Tnorm传递给加速运算调度器,若加速运算调度器预计的加速时间大于Tnorm,则返回资源不足的错误信息,否则加速运算调度器据此调度一定数量的基本运算模块,并控制FPGA资源管理模块将数据传输至相应的RAM中,其中,被排序的数据传写入被调用的基本运算模块中的数据RAM中;用于被调用基本运算模块的初始地址写入指定的地址RAM中。
在处理如按语义排序、按格式排序等字段构成复杂、排序规则复杂的比较时,数据库在向FPGA传递数据前,将字段按预定比较规则将数据编码为整型数值,之后将编码后的数据传递给FPGA,FPGA运算后将结果返回给数据库后,再依据预定的比较规则进行反编码。
当前的加速运算调度器可以对数据库的排序运算、表联接运算和聚合运算进行加速。排序与表联接的加速过程和相应的调度器配置和调度方法如下,聚合与表联接对应的数据库加速方法类似。
下面举例说明对长度为N的数据进行的排序加速过程:
一、数据库将被排序的数据按指定的排序规则编码为整型数据,并将数据长度N传递给加速运算调度器。
二、加速运算调度器通过vFPGA获得当前可用的基本运算模块,并为该排序加速分配好一定的基本运算模块,假设加速运算调度器为该排序分配了m个连续的基本运算模块。
加速运算调度器通过vFPGA获得当前可用的RAM段,并从当前可用的RAM段的最小地址开始,依次将N个整型数据写入FPGA的数据RAM中,将各个基本运算模块的初始地址写入相应的地址RAM中。其中,写入的基本运算模块的初始地址通过如下的方式得到:
设当前可用的RAM段的最小地址为addr1。则第一个基本运算模块的初始地址为addr1,第k(k≤m)个基本运算模块的初始地址为
其中,符号表示向下取整。
三、基本运算模块在监测到输入地址有效后,开始执行运算:
初始阶段,将N个整型数据中的第一个数据输入至每个基本运算模块的被比较数据。在每个时钟周期内,该被比较数据与输入地址所指向的地址中的数据进行比较,若结果为大于,则计数寄存器自增1。每经过一个时钟周期,输入地址自增1。
累加阶段,前m-1个基本运算模块在经过个时钟周期后,得到被比较数据与个数据的排序次序,第m个基本运算模块得到被比较数据与个数据的排序次序。其中,的余数。在经过个时钟周期后,将m个基本运算模块的计数寄存器相加,即可得到被比较数据在N个整型数据的排序次序。
经过个时钟周期后,计数寄存器相加的结果返回至指定的排序结果存储位置,并将计数寄存器清零,将每个基本运算模块的输入地址初始化。然后将N个整型数据的下一个数据传输至被比较数据,进行新的一轮比较。
当m>N时,首先初始化p=1,然后循环执行如下操作:
若m/p>N,则p=p×2。
然后将m个基本运算单元等分为p块,每块按12所述的方式进行比较,每个块的以p为间隔从N个整型数据数据中读取数据作为被比较数据。
加速运算调度器调度基于运算模块的原则,为保证运算的加速效率。根据排序加速过程和等分方法,调用m个基本运算单元,对长度为N的数据进行的排序加速,需要的时钟周期数Tclk约为:
设FPGA的时钟频率为f,要求的排序加速时间为Tnorm,则所需的调用的基本运算模块个数为:
在进行加速运算调度时,m进行向上取整。
在对数据库的表联接进行加速时,采用该发明所述的思想同样可以实现对不同表的关联字段的快速比较。同样地,FPGA资源管理模块将基本运算模块实现为一个比较器、一个加法器和若干个寄存器。以P行和Q行的两个表之间的单字段联接为例,FPGA资源管理模块池化出P×Q个基本运算模块,每个基本运算模块可以对两个表中的关联字段进行比较,若比较结果符合条件则内置的状态寄存器赋值1,否则赋值0。数据库在进行加速请求时将表联接的类型传递给加速运算调度器,加速运算调度器根据比较结果和联接的类型,确定返回的结果。如内联接则将值为1的状态寄存器分布对应的表的行联接起来;外联接则以行为准,将列中将值为1的状态寄存器对应的表的行联接于行表中。
在处理多表联接或多字段的表联接时,类似地可以在两表单字段的联接进行比较扩展。
因此,本发明利用虚拟FPGA(vFPGA)对标准FPGA资源卡的动态扩展伸缩,将FPGA资源分割池化为一个个基本运算模块,在处理不同的加速请求时,通过调度器配置和分配来实现加速算法。使其能实现资源利用的最大化,且可适用于多条不同类型的动态加速请求。
显然,本领域技术人员应该明白,上述的本发明的各单元或各步骤可以用通用的计算装置来实现,它们可以集中在单个计算装置上,可选地,他们可以用计算机装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施方式仅限于此,对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单的推演或替换,都应当视为属于本发明由所提交的权利要求书确定保护范围。

Claims (10)

1.一种基于虚拟FPGA的数据库运算加速装置,其特征在于:
包括vFPGA(虚拟FPGA)、FPGA资源管理器,加速运算调度器,FPGA资源管理模块通过PCIe总线连接多张FPGA卡,不同张FPGA卡通过分时复用的方式共有一个PCIe总线;
其中所述FPGA资源管理器,用于对FPGA卡的烧写配置与数据传输,同时用于将FPGA的在运行资源与剩余资源信息传递给vFPGA;
所述vFPGA,用于通过FPGA资管管理器,监测并整合全部的FPGA卡的逻辑单元和存储单元,为FPGA加速运算调度器提供单张FPGA卡的监测与管理视角;
所述加速运算调度器可以根据运算请求的类型和当前的可用资源,向vFPGA请求选择合适数量的基本运算模块。
多张FPGA卡,被FPGA资源管理器分割并烧写配置为包含多个基本运算模块。
2.根据权利要求1所述的数据库运算加速装置,其特征在于:
所述基本运算模块包含一个比较器、一个加法器、作为输出的一个计数寄存器、作为输入的一个被比较数据,以及时钟和复位信号,还包括具有数据RAM和地址RAM,地址RAM固定用于存储各个基本运算单元的初始地址,默认全为低电平;数据RAM用于存储被排序的数据以及相应的排序结果;
每个基本运算模块各有一个输入地址信号,该输入地址除了用于读取RAM中的数据外,还用于启动或关闭基本运算模块,该输入地址由指定的块RAM内的数据进行初始化,基本运算模块可以通过一定时钟周期的运算,完成被比较数据与若干个数据进行比较的大小次序。其中,被比较数据默认为长整型,每经过一个时钟周期,被比较数据从指定地址的读取被比较数据,若大于比较数据则计数寄存器自增1,最终计数寄存器输出的结果即为被比较数据在若干个数据中的大小次序。
3.根据权利要求1所述的数据库运算加速装置,其特征在于:
FPGA资源管理器为基本运算模块分配一定的存储空间,用于管理基本运算模块的运行状态。管理方式为,分配一个固定的存储空间用于标记各个基本运算模块的状态,将各个基本运算模块与存储空间中的存储位一一对应起来,存储位为高电平1表示对应的基本运算模块正在使用,低电平0表示对应的基本运算模块尚未使用;
vFPGA通过读取FPGA资源管理器中管理基本运算模块的存储位,来获取当前所有FPGA卡的已用资源和可用资源。
4.根据权利要求1所述的数据库运算加速装置,其特征在于:
vFPGA用固定的存储段中的电平来整合全部的FPGA卡的资源,为每张FPGA分配一个固定长度的存储段,按约定的方式,高若干位为相应的FPGA卡的地址编码,低若干位为相应的FPGA的内存地址编码;
vFPGA通过记录当前已用内存段的首尾地址来管理内存使用情况,当加速运算调度器向vFPGA申请内存时,vFPGA记录新申请的内存段的首尾地址,加速运算完毕释放内存后,vFPGA删除对应的使用内存记录。
5.根据权利要求1所述的数据库运算加速装置,其特征在于:
所述加速运算调度器加载加速运算时,只能加载FPGA资源管理器中标记为0的管理存储位对应的基本运算模块,同时对该标志位写入高电平1;加速运算完毕之后,加速运算调度器释放基本运算模块,并对对应的标志位写入低电平0。
6.一种利用权利要求1-5中任意一项所述的数据库运算加速装置对数据库运算进行加速的方法,其特征在于:
数据库在进行加速请求时将关键字段的字长以及数据长度传递给加速运算调度器,并将要求的加速时间Tnorm传递给加速运算调度器,若加速运算调度器预计的加速时间大于Tnorm,则返回资源不足的错误信息,否则加速运算调度器据此调度一定数量的基本运算模块,并控制FPGA资源管理模块将数据传输至相应的RAM中,其中,被排序的数据传写入被调用的基本运算模块中的数据RAM中,用于被调用基本运算模块的初始地址写入指定的地址RAM中。
7.根据权利要求6所述的对数据库运算进行加速的方法,其特征在于:
对长度为N的数据进行的排序加速过程:
首先,数据库将被排序的数据按指定的排序规则编码为整型数据,并将数据长度N传递给加速运算调度器;
其次,加速运算调度器通过vFPGA获得当前可用的基本运算模块,并为该排序加速分配好一定的基本运算模块,假设加速运算调度器为该排序分配了m个连续的基本运算模块;
加速运算调度器通过vFPGA获得当前可用的RAM段,并从当前可用的RAM段的最小地址开始,依次将N个整型数据写入FPGA的数据RAM中,将各个基本运算模块的初始地址写入相应的地址RAM中。其中,写入的基本运算模块的初始地址通过如下的方式得到:
设当前可用的RAM段的最小地址为addr1。则第一个基本运算模块的初始地址为addr1,第k(k≤m)个基本运算模块的初始地址为
其中,符号表示向下取整;
然后,基本运算模块在监测到输入地址有效后,开始执行运算:
初始阶段,将N个整型数据中的第一个数据输入至每个基本运算模块的被比较数据。在每个时钟周期内,该被比较数据与输入地址所指向的地址中的数据进行比较,若结果为大于,则计数寄存器自增1。每经过一个时钟周期,输入地址自增1;
累加阶段,前m-1个基本运算模块在经过个时钟周期后,得到被比较数据与个数据的排序次序,第m个基本运算模块得到被比较数据与个数据的排序次序。其中,的余数。在经过个时钟周期后,将m个基本运算模块的计数寄存器相加,即可得到被比较数据在N个整型数据的排序次序;
经过个时钟周期后,计数寄存器相加的结果返回至指定的排序结果存储位置,并将计数寄存器清零,将每个基本运算模块的输入地址初始化。然后将N个整型数据的下一个数据传输至被比较数据,进行新的一轮比较。
8.根据权利要求7所述的对数据库运算进行加速的方法,其特征在于:
当m>N时,首先初始化p=1,然后循环执行如下操作:
若m/p>N,则p=p×2。
然后将m个基本运算单元等分为p块,每块按12所述的方式进行比较,每个块的以p为间隔从N个整型数据数据中读取数据作为被比较数据。
9.根据权利要求7所述的对数据库运算进行加速的方法,其特征在于:
在对数据库的表联接进行加速时,FPGA资源管理模块将基本运算模块实现为一个比较器、一个加法器和若干个寄存器,当两个分别具有P行和Q行的两个表之间的单字段联接进行链接时,FPGA资源管理模块池化出P×Q个基本运算模块,每个基本运算模块对两个表中的关联字段进行比较,若比较结果符合条件则内置的状态寄存器赋值1,否则赋值0,数据库在进行加速请求时将表联接的类型传递给加速运算调度器,加速运算调度器根据比较结果和联接的类型,确定返回的结果,如内联接则将值为1的状态寄存器分布对应的表的行联接起来;外联接则以行为准,将列中将值为1的状态寄存器对应的表的行联接于行表中。
10.根据权利要求7所述的对数据库运算进行加速的方法,其特征在于:
加速运算调度器调度基于运算模块的原则,为保证运算的加速效率。根据排序加速过程和等分方法,调用m个基本运算单元,对长度为N的数据进行的排序加速,需要的时钟周期数Tclk约为:
设FPGA的时钟频率为f,要求的排序加速时间为Tnorm,则所需的调用的基本运算模块个数为:
在进行加速运算调度时,m进行向上取整。
CN201910786074.5A 2019-08-24 2019-08-24 基于虚拟fpga的数据库运算加速装置及加速方法 Active CN110597627B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910786074.5A CN110597627B (zh) 2019-08-24 2019-08-24 基于虚拟fpga的数据库运算加速装置及加速方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910786074.5A CN110597627B (zh) 2019-08-24 2019-08-24 基于虚拟fpga的数据库运算加速装置及加速方法

Publications (2)

Publication Number Publication Date
CN110597627A true CN110597627A (zh) 2019-12-20
CN110597627B CN110597627B (zh) 2023-07-14

Family

ID=68855419

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910786074.5A Active CN110597627B (zh) 2019-08-24 2019-08-24 基于虚拟fpga的数据库运算加速装置及加速方法

Country Status (1)

Country Link
CN (1) CN110597627B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112463870A (zh) * 2021-02-03 2021-03-09 南京新动态信息科技有限公司 一种基于fpga的数据库sql加速方法
CN113434284A (zh) * 2021-08-27 2021-09-24 华控清交信息科技(北京)有限公司 一种隐私计算服务端设备、系统及任务调度方法
CN117687953A (zh) * 2023-09-11 2024-03-12 灿芯半导体(上海)股份有限公司 一种支持动态分配的运算单元结构

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107491342A (zh) * 2017-09-01 2017-12-19 郑州云海信息技术有限公司 一种基于fpga的多虚拟卡使用方法及系统
CN108897601A (zh) * 2018-06-29 2018-11-27 郑州云海信息技术有限公司 一种基于虚拟化的fpga使用方法、系统及相关装置
CN109032982A (zh) * 2018-08-02 2018-12-18 郑州云海信息技术有限公司 一种数据处理方法、装置、设备、系统、fpga板卡及其组合
CN109144722A (zh) * 2018-07-20 2019-01-04 上海研鸥信息科技有限公司 一种多应用高效共用fpga资源的管理系统及方法
US20190213029A1 (en) * 2018-01-08 2019-07-11 Huazhong University Of Science And Technology Fpga-based method for network function accelerating and system thereof
CN110162378A (zh) * 2018-02-13 2019-08-23 华为技术有限公司 一种资源调度的方法、装置、设备及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107491342A (zh) * 2017-09-01 2017-12-19 郑州云海信息技术有限公司 一种基于fpga的多虚拟卡使用方法及系统
US20190213029A1 (en) * 2018-01-08 2019-07-11 Huazhong University Of Science And Technology Fpga-based method for network function accelerating and system thereof
CN110162378A (zh) * 2018-02-13 2019-08-23 华为技术有限公司 一种资源调度的方法、装置、设备及系统
CN108897601A (zh) * 2018-06-29 2018-11-27 郑州云海信息技术有限公司 一种基于虚拟化的fpga使用方法、系统及相关装置
CN109144722A (zh) * 2018-07-20 2019-01-04 上海研鸥信息科技有限公司 一种多应用高效共用fpga资源的管理系统及方法
CN109032982A (zh) * 2018-08-02 2018-12-18 郑州云海信息技术有限公司 一种数据处理方法、装置、设备、系统、fpga板卡及其组合

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112463870A (zh) * 2021-02-03 2021-03-09 南京新动态信息科技有限公司 一种基于fpga的数据库sql加速方法
CN112463870B (zh) * 2021-02-03 2021-05-04 南京新动态信息科技有限公司 一种基于fpga的数据库sql加速方法
CN113434284A (zh) * 2021-08-27 2021-09-24 华控清交信息科技(北京)有限公司 一种隐私计算服务端设备、系统及任务调度方法
CN117687953A (zh) * 2023-09-11 2024-03-12 灿芯半导体(上海)股份有限公司 一种支持动态分配的运算单元结构

Also Published As

Publication number Publication date
CN110597627B (zh) 2023-07-14

Similar Documents

Publication Publication Date Title
CN105893126B (zh) 一种任务调度方法及装置
US7840778B2 (en) Processor cluster architecture and associated parallel processing methods
CN110704360B (zh) 一种基于异构fpga数据流的图计算优化方法
CN111913955A (zh) 数据的排序处理装置、方法和存储介质
CN110597627A (zh) 基于虚拟fpga的数据库运算加速装置及加速方法
US20030056091A1 (en) Method of scheduling in a reconfigurable hardware architecture with multiple hardware configurations
CN104714785A (zh) 任务调度装置、方法及并行处理数据的设备
CN111142938A (zh) 一种异构芯片的任务处理方法、任务处理装置及电子设备
CN104123304A (zh) 数据驱动的并行排序系统和方法
US20190026317A1 (en) Memory use in a distributed index and query system
CN110187969A (zh) 一种基于gpu的分布式大数据并行计算方法
US20220027716A1 (en) Neural network accelerator
CN110874271A (zh) 一种海量建筑图斑特征快速计算方法及系统
CN114265679A (zh) 数据处理方法、装置和服务器
CN113886034A (zh) 任务调度方法、系统、电子设备及存储介质
US9104496B2 (en) Submitting operations to a shared resource based on busy-to-success ratios
US8543722B2 (en) Message passing with queues and channels
US11221979B1 (en) Synchronization of DMA transfers for large number of queues
CN114912618A (zh) 一种量子计算任务调度方法、装置及量子计算机操作系统
CN104156316A (zh) 一种Hadoop集群批处理作业的方法及系统
CN113296957B (zh) 一种用于动态分配片上网络带宽的方法及装置
CN116010051A (zh) 一种联邦学习多任务调度方法及装置
CN111767999B (zh) 数据处理方法、装置及相关产品
US10503557B2 (en) Method of processing OpenCL kernel and computing device therefor
Johnson et al. Parallel buddy memory management

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant