CN116302220A - 一种数据库排序方法、装置、排序加速板卡及介质 - Google Patents
一种数据库排序方法、装置、排序加速板卡及介质 Download PDFInfo
- Publication number
- CN116302220A CN116302220A CN202310287957.8A CN202310287957A CN116302220A CN 116302220 A CN116302220 A CN 116302220A CN 202310287957 A CN202310287957 A CN 202310287957A CN 116302220 A CN116302220 A CN 116302220A
- Authority
- CN
- China
- Prior art keywords
- data
- acceleration
- ordering
- kernel
- ddr4
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 167
- 230000001133 acceleration Effects 0.000 title claims abstract description 127
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 claims abstract description 121
- 238000012545 processing Methods 0.000 claims abstract description 76
- 238000012163 sequencing technique Methods 0.000 claims abstract description 31
- 230000003068 static effect Effects 0.000 claims abstract description 25
- 238000004590 computer program Methods 0.000 claims description 11
- 238000013500 data storage Methods 0.000 claims description 3
- 238000007726 management method Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 7
- 230000002093 peripheral effect Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- XBBZAULFUPBZSP-UHFFFAOYSA-N 2,4-dichloro-1-(3-chlorophenyl)benzene Chemical compound ClC1=CC(Cl)=CC=C1C1=CC=CC(Cl)=C1 XBBZAULFUPBZSP-UHFFFAOYSA-N 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012177 large-scale sequencing Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24578—Query processing with adaptation to user needs using ranking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据库排序方法、装置、排序加速板卡及介质,涉及数据处理技术领域,包括:中央处理器调用数据排序进程后,通过FPGA的静态区逻辑程序将加速内核的流文件加载至FPGA的动态区,以便在动态区中部署加速内核;中央处理器将主机内存中的待排序数据传输到排序加速板卡中的DDR4内存后启动加速内核,以便加速内核从DDR4内存中读取待排序数据,并对待排序数据进行排序;排序完成后生成完成信号,然后将排序后数据写入DDR4内存,并向中央处理器发送完成信号;中央处理器在获取到完成信号后,从DDR4内存中读取排序后数据,并将排序后数据保存至主机内存,结束进程调用。能对数据库排序过程进行加速,提高排序效率。
Description
技术领域
本发明涉及数据处理技术领域,特别涉及一种数据库排序方法、装置、排序加速板卡及介质。
背景技术
排序是一种非常重要的计算核心,在数据库、图像处理和基因组分析等许多领域都得到了应用,同时,排序也是许多计算问题的瓶颈,追求快速稳定的大规模排序一直是许多应用的优化目标。随着移动技术的进步,物联网(Internet of Things,即IoT)时代即将到来,未来不仅需要在服务器等高性能系统上,还需要在嵌入式系统等低计算性能机器上都可以使用的排序方法。基于CPU(Central Processing Unit,中央处理器)的软件排序方法往往无法挖掘具有并行特征的计算密集型排序算法的潜力,并且,大数据量排序过程需要占用过多的CPU资源和内存资源,造成CPU和内存资源占用过重,与数据库核心进程进行资源竞争,严重拉低数据库的整体性能表现。
综上,如何加快数据库的排序过程,以提高排序效率,以及提高数据库的整体性能是目前有待解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种数据库排序方法、装置、排序加速板卡及介质,能够加快数据库的排序过程,以提高排序效率,以及提高数据库的整体性能。其具体方案如下:
第一方面,本申请公开了一种数据库排序方法,包括:
在中央处理器发出针对数据排序进程的调用指令后,则通过FPGA的静态区逻辑程序将加速内核的流文件加载至所述FPGA的动态区,以便在所述动态区中部署加速内核;
在所述中央处理器将主机内存中的待排序数据传输到排序加速板卡中的DDR4内存后,则启动所述加速内核,以便所述加速内核从所述DDR4内存中读取待排序数据,并对所述待排序数据进行排序以得到排序后数据;
在排序完成后生成完成信号,然后将所述排序后数据写入至所述DDR4内存,并向所述中央处理器发送所述完成信号;
通过所述中央处理器在获取到所述完成信号后,从所述DDR4内存中读取所述排序后数据,并将所述排序后数据保存至所述主机内存,以完成所述数据排序进程的调用。
可选的,所述在中央处理器发出针对数据排序进程的调用指令的过程中,还包括:
获取所述中央处理器发送的控制参量;其中,所述控制参量包括开始信号、DDR4偏移地址和数据量大小。
可选的,所述启动所述加速内核,以便所述加速内核从所述DDR4内存中读取待排序数据,包括:
启动所述加速内核,并确定所述控制参量中的DDR4偏移地址,以便所述加速内核基于所述DDR4偏移地址,并通过AXI总线从所述DDR4内存中读取待排序数据。
可选的,所述将所述排序后数据写入至所述DDR4内存,包括:
基于所述DDR4偏移地址将所述排序后数据写入至所述DDR4内存。
可选的,所述在所述动态区中部署加速内核,包括:
在所述动态区中部署与不同排序方法对应的加速内核;所述排序方法包括双调排序、奇偶排序、基数排序和归并排序;
相应的,所述对所述待排序数据进行排序以得到排序后数据,包括:
按照预先设置的排序方法,并基于所述控制参量对所述待排序数据进行排序以得到排序后数据。
可选的,所述对所述待排序数据进行排序以得到排序后数据,包括:
确定加速内核预先配置的空间工作模式和时间工作模式;其中,所述空间工作模式包括并行工作模式、串行工作模式和局部并串行工作模式,所述时间工作模式
按照所述空间工作模式和所述时间工作模式对所述待排序数据进行排序以得到排序后数据。
可选的,所述数据库排序方法,还包括:
若所述空间工作模式为并行工作模式,则启动若干个加速内核,并确定所述中央处理器为每一所述加速内核分配的不同的DDR4偏移地址,以便各所述加速内核分别基于对应的DDR4偏移地址从所述DDR4内存中读取待排序数据,以对所述待排序数据进行排序得到排序后数据;
若所述空间工作模式为串行工作模式,则确定预先设置的多条件排序语句中的排序条件个数,并启动相应数量个加速内核,以便将各排序条件分配给不同的加速内核,然后根据所述多条件排序语句的顺序依次调用对应的加速内核对从所述DDR4内存中读取到的待排序数据进行排序得到排序后数据;
若所述空间工作模式为局部并串行工作模式,则确定所述中央处理器对所述待排序数据进行拆分得到的若干个数据块,并启动相应数量个加速内核,以便各所述加速内核对从所述DDR4内存中读取到的所述数据块进行排序得到排序结果,然后利用归并排序方法对各排序结果进行合并以得到排序后数据。
第二方面,本申请公开了一种数据库排序装置,包括:
内核部署模块,用于在中央处理器发出针对数据排序进程的调用指令后,则通过FPGA的静态区逻辑程序将加速内核的流文件加载至所述FPGA的动态区,以便在所述动态区中部署加速内核;
数据排序模块,用于在所述中央处理器将主机内存中的待排序数据传输到排序加速板卡中的DDR4内存后,则启动所述加速内核,以便所述加速内核从所述DDR4内存中读取待排序数据,并对所述待排序数据进行排序以得到排序后数据;
数据写入模块,用于在排序完成后生成完成信号,然后将所述排序后数据写入所述DDR4内存,并向所述中央处理器发送所述完成信号;
数据保存模块,用于通过所述中央处理器在获取到所述完成信号后,从所述DDR4内存中读取所述排序后数据,并将所述排序后数据保存至所述主机内存,以完成所述数据排序进程的调用。
第三方面,本申请公开了一种排序加速板卡,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现前述公开的数据库排序方法的步骤。
第四方面,本申请公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的数据库排序方法的步骤。
可见,本申请在中央处理器发出针对数据排序进程的调用指令后,则通过FPGA的静态区逻辑程序将加速内核的流文件加载至所述FPGA的动态区,以便在所述动态区中部署加速内核;在所述中央处理器将主机内存中的待排序数据传输到排序加速板卡中的DDR4内存后,则启动所述加速内核,以便所述加速内核从所述DDR4内存中读取待排序数据,并对所述待排序数据进行排序以得到排序后数据;在排序完成后生成完成信号,然后将所述排序后数据写入至所述DDR4内存,并向所述中央处理器发送所述完成信号;通过所述中央处理器在获取到所述完成信号后,从所述DDR4内存中读取所述排序后数据,并将所述排序后数据保存至所述主机内存,以完成所述数据排序进程的调用。由此可见,本申请当中央处理器调用数据排序进程时,FPGA的静态区逻辑程序则将加速内核的流文件加载到FPGA的动态区,以完成加速内核在动态区中的部署。中央处理器将主机内存中的待排序数据传输到排序加速板卡中的DDR4内存后,则启动加速内核,加速内核从DDR4内存中读取待排序数据并开始排序,加速内核完成排序后生成完成信号,并发送完成信号至中央处理器,以及将排序后数据写入DDR4内存。中央处理器收到完成信号后,将排序后数据从DDR4内存中读回主机内存,结束进程调用。上述方案通过使用FPGA对数据库的排序过程进行加速,提高了排序效率,解放了数据库的排序进程,提高了数据库的整体性能。此外,由于排序过程并非是在中央处理器中进行的,减少了对中央处理器资源和内存资源的占用。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种数据库排序方法流程图;
图2为本申请公开的一种具体的FPGA内部逻辑结构框图;
图3为本申请公开的一种具体的数据库排序方法流程图;
图4为本申请公开的一种具体的加速内核排序实现流程图;
图5为本申请公开的一种具体的数据库排序方法流程图;
图6为本申请公开的一种数据库排序方法空间调度模式示意图;
图7为本申请公开的一种数据库排序方法空间调度模式示意图;
图8为本申请公开的一种数据库排序装置结构示意图;
图9为本申请公开的一种排序加速板卡结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
当前,基于CPU的软件排序方法往往无法挖掘具有并行特征的计算密集型排序算法的潜力,并且,大数据量排序过程需要占用过多的CPU资源和内存资源,造成CPU和内存资源占用过重,与数据库核心进程进行资源竞争,严重拉低数据库的整体性能表现。为此,本申请实施例公开了一种数据库排序方法、装置、排序加速板卡及介质,能够加快数据库的排序过程,以提高排序效率,以及提高数据库的整体性能。
参见图1所示,本申请实施例公开了一种数据库排序方法,该方法包括:
步骤S11:在中央处理器发出针对数据排序进程的调用指令后,则通过FPGA的静态区逻辑程序将加速内核的流文件加载至所述FPGA的动态区,以便在所述动态区中部署加速内核。
本实施例中,中央处理器调用数据排序进程后,FPGA(Field-Programmable GateArray,即现场可编程门阵列)通过静态区逻辑程序将相应的加速内核的流文件(即加速kernel bit流)加载到FPGA的动态区,以在动态区完成加速内核的动态部署。需要指出的是,用户预先会通过xilinx的vitis开发平台将包含任务调度程序和加速kernel bit流的.xclbin文件下载到FPGA中,等待数据库CPU进程调用。
进一步的,还需要指出的是,FPGA内部逻辑为上述方法的逻辑实现基础,包含数据库排序方法正常工作所必须的FPGA工程模块结构以及具体数据处理方式,主要分为静态区(即Static Shell)与动态区(即Reconfigurable Region)两部分,结构框图如图2所示。具体的,静态区配合xilinx XRT完成对加速kernel的调用、配置与执行管理,DDR4与加速kernel间的数据交换,通过PCIE(peripheral component interconnect express,即高速串行计算机扩展总线标准)实现主机内存与DDR4间的数据交换。静态区与动态区间的数据交换与寄存器配置通过AXI接口实现,动态区用于部署加速kernel。
步骤S12:在所述中央处理器将主机内存中的待排序数据传输到排序加速板卡中的DDR4内存后,则启动所述加速内核,以便所述加速内核从所述DDR4内存中读取待排序数据,并对所述待排序数据进行排序以得到排序后数据。
本实施例中,中央处理器将主机内存中的待排序数据传输到排序加速板卡中的DDR4内存后,则启动加速内核。动态区中的加速内核会通过静态区逻辑程序从DDR4内存中读取待排序数据,并对读取到的待排序数据进行排序得到排序后数据。可以理解的是,本申请基于CPU+FPGA异构模式,在排序加速板卡上电后,FPGA作为数据库CPU的协处理器,实现数据库大批量数据的快速排序,通过PCIE映射到CPU内存空间中,CPU可实现数据在主机内存与板卡DDR4内存之间的零拷贝传输。并且,排序加速板卡为上述方法的物理实现基础,上述方法基于板卡电路实现数据库大批量数据排序的加速,与外设的信息交互。总的而言,上述数据库排序方法在板卡的物理基础上及FPGA内部逻辑程序的支持下实现数据库排序过程的加速。
步骤S13:在排序完成后生成完成信号,然后将所述排序后数据写入至所述DDR4内存,并向所述中央处理器发送所述完成信号。
本实施例中,完成排序后会生成完成信号,然后将排序后数据写入至DDR4内存,以及向中央处理器发送完成信号。
步骤S14:通过所述中央处理器在获取到所述完成信号后,从所述DDR4内存中读取所述排序后数据,并将所述排序后数据保存至所述主机内存,以完成所述数据排序进程的调用。
本实施例中,中央处理器获取到完成信号后,从DDR4内存中读取排序后数据,并将排序后数据保存至主机内存,也即中央处理器将排序后数据从DDR4中读回主机内存,以结束数据排序进程的调用。
可见,本申请在中央处理器发出针对数据排序进程的调用指令后,则通过FPGA的静态区逻辑程序将加速内核的流文件加载至所述FPGA的动态区,以便在所述动态区中部署加速内核;在所述中央处理器将主机内存中的待排序数据传输到排序加速板卡中的DDR4内存后,则启动所述加速内核,以便所述加速内核从所述DDR4内存中读取待排序数据,并对所述待排序数据进行排序以得到排序后数据;在排序完成后生成完成信号,然后将所述排序后数据写入至所述DDR4内存,并向所述中央处理器发送所述完成信号;通过所述中央处理器在获取到所述完成信号后,从所述DDR4内存中读取所述排序后数据,并将所述排序后数据保存至所述主机内存,以完成所述数据排序进程的调用。由此可见,本申请当中央处理器调用数据排序进程时,FPGA的静态区逻辑程序则将加速内核的流文件加载到FPGA的动态区,以完成加速内核在动态区中的部署。中央处理器将主机内存中的待排序数据传输到排序加速板卡中的DDR4内存后,则启动加速内核,加速内核从DDR4内存中读取待排序数据并开始排序,加速内核完成排序后生成完成信号,并发送完成信号至中央处理器,以及将排序后数据写入DDR4内存。中央处理器收到完成信号后,将排序后数据从DDR4内存中读回主机内存,结束进程调用。上述方案通过使用FPGA对数据库的排序过程进行加速,提高了排序效率,解放了数据库的排序进程,提高了数据库的整体性能。此外,由于排序过程并非是在中央处理器中进行的,减少了对中央处理器资源和内存资源的占用。
参见图3所示,本申请实施例公开了一种具体的数据库排序方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体包括:
步骤S21:在中央处理器发出针对数据排序进程的调用指令后,则通过FPGA的静态区逻辑程序将加速内核的流文件加载至所述FPGA的动态区,以便在所述动态区中部署与不同排序方法对应的加速内核;所述排序方法包括双调排序、奇偶排序、基数排序和归并排序。
本实施例中,上述在中央处理器发出针对数据排序进程的调用指令的过程中,还包括:通过所述加速内核获取所述中央处理器发送的控制参量;其中,所述控制参量包括开始信号、DDR4偏移地址和数据量大小。可以理解的是,中央处理器在调用数据排序进程时,会发送寄存器控制参量,具体包括开始信号、DDR4偏移地址和数据量大小。
并且,本实施例在动态区部署加速内核时,会部署与不同排序方法对应的加速内核,排序方法具体可以包括但不限于双调排序、奇偶排序、基数排序和归并排序等方法,相应的,加速内核会分为双调排序kernel,奇偶排序kernel,基数排序kernel,归并排序kernel等。动态区各个kernel除排序方法不同外,均包含数据接收模块(DATA_RX),数据发送模块(DATA_TX),数据排序模块(DATA_SORT),逻辑管理模块(LOGIC_MANAGE),动态区kernel的实现流程如图4中所示,其各模块功能与具体实现过程如下:
逻辑管理模块(LOGIC_MANAGE)接收CPU发送的控制寄存器参量,包括开始信号,DDR4偏移地址,数据量大小等;
数据接收模块(DATA_RX)根据逻辑管理模块接收的DDR4偏移地址,通过AXI总线读取DDR4中的待排序数据,并将数据发送到数据排序模块;
数据排序模块(DATA_SORT)根据逻辑管理模块接收的控制参量对待排序数据进行排序,排序完成后,产生完成信号,并将数据与完成信号分别发送到数据发送模块与逻辑管理模块;
数据发送模块(DATA_TX)在排序完成后,根据逻辑管理模块接收的DDR4偏移地址,将已排序的数据写入DDR4;
需要指出的是,若整个过程中发生诸如数据接收错误,数据格式错误等错误,相应模块将产生中断信号,并将中断信号发送到逻辑管理模块,逻辑管理模块将排序过程中产生的中断信号、完成信号等参量发送到CPU。
步骤S22:在所述中央处理器将主机内存中的待排序数据传输到排序加速板卡中的DDR4内存后,则启动所述加速内核,并确定所述控制参量中的DDR4偏移地址,以便所述加速内核基于所述DDR4偏移地址,并通过AXI总线从所述DDR4内存中读取待排序数据。
本实施例中,加速内核启动后,则根据控制参量中的DDR4偏移地址,并通过AXI总线从DDR4内存中读取待排序数据。
步骤S23:通过所述加速内核按照预先设置的排序方法,并基于所述控制参量对所述待排序数据进行排序以得到排序后数据。
本实施例中,加速内核在对待排序数据进行排序时,则按照各自预先设置的排序方法,并基于控制参量对数据进行排序以得到排序后数据,排序方法包括双调排序、奇偶排序、基数排序和归并排序等。
步骤S24:在排序完成后生成完成信号,然后基于所述DDR4偏移地址将所述排序后数据写入至所述DDR4内存,并向所述中央处理器发送所述完成信号。
本实施例中,排序完成后,根据DDR4偏移地址将排序后数据写入至DDR4内存。
步骤S25:通过所述中央处理器在获取到所述完成信号后,从所述DDR4内存中读取所述排序后数据,并将所述排序后数据保存至所述主机内存,以完成所述数据排序进程的调用。
其中,关于上述步骤S24和S25更加具体的处理过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本申请实施例中,中央处理器在调用数据排序进程时,会发送寄存器控制参量,具体包括开始信号、DDR4偏移地址和数据量大小。并且,本实施例在动态区部署加速内核时,会部署与不同排序方法对应的加速内核,排序方法具体可以包括但不限于双调排序、奇偶排序、基数排序和归并排序等方法。此外,无论是从DDR4内存中读取待排序数据还是将排序后数据写入DDR4内存中,都会根据获取到的控制参量中的DDR4偏移地址进行读取操作和写入操作。
参见图5所示,本申请实施例公开了一种具体的数据库排序方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体包括:
步骤S31:在中央处理器发出针对数据排序进程的调用指令后,则通过FPGA的静态区逻辑程序将加速内核的流文件加载至所述FPGA的动态区,以便在所述动态区中部署加速内核。
步骤S32:在所述中央处理器将主机内存中的待排序数据传输到排序加速板卡中的DDR4内存后,则启动所述加速内核。
步骤S33:通过所述加速内核从所述DDR4内存中读取待排序数据,并确定加速内核预先配置的空间工作模式和时间工作模式;其中,所述空间工作模式包括并行工作模式、串行工作模式和局部并串行工作模式。
本实施例中,在读取到待排序数据后,需要确定加速内核预先配置的空间工作模式和时间工作模式。具体的,空间工作模式包括并行工作模式、串行工作模式和局部并串行工作模式。
步骤S34:按照所述空间工作模式和所述时间工作模式对所述待排序数据进行排序以得到排序后数据。
本实施例中,加速内核根据空间工作模式和时间工作模式对待排序数据进行排序以得到排序后数据。具体的,上述方法还包括:若所述空间工作模式为并行工作模式,则启动若干个加速内核,并确定所述中央处理器为每一所述加速内核分配的不同的DDR4偏移地址,以便各所述加速内核分别基于对应的DDR4偏移地址从所述DDR4内存中读取待排序数据,以对所述待排序数据进行排序得到排序后数据;若所述空间工作模式为串行工作模式,则确定预先设置的多条件排序语句中的排序条件个数,并启动相应数量个加速内核,以便将各排序条件分配给不同的加速内核,然后根据所述多条件排序语句的顺序依次调用对应的加速内核对从所述DDR4内存中读取到的待排序数据进行排序得到排序后数据;若所述空间工作模式为局部并串行工作模式,则确定所述中央处理器对所述待排序数据进行拆分得到的若干个数据块,并启动相应数量个加速内核,以便各所述加速内核对从所述DDR4内存中读取到的所述数据块进行排序得到排序结果,然后利用归并排序方法对各排序结果进行合并以得到排序后数据。可以理解的是,空间上可以配置加速内核并行工作,串行工作和局部并串行工作三种工作模式,具体参见图6中所示。
具体的,并行工作时,动态区可配置多个加速kernel并行工作,在此工作模式下,数据库CPU可同时开始多个排序进程,通过为多个加速kernel分配不同的DDR4偏移地址,多个加速kernel可并行完成对待排序数据的读取、排序与返回,并行完成多个排序进程,加快数据库整体排序进度。
串行工作时,动态区可以配置多个加速kernel串行工作,在此模式下,CPU可实现诸如多条件排序的功能,例如,数据库在对多条件排序语句进行解析后,将各个排序条件分配给多个加速kernel,在第一个加速kernel完成对第一个条件的排序后,通过AXI-Stream总线将数据传输到下一个加速kernel,进行第二个条件的排序,以此类推,此种方式通过流水线的方式,实现数据的高速多条件排序。
局部并串行工作时,动态区的多个加速kernel可自由分配功能,以实现多种不同的排序。在此模式下,数据库CPU可以将一个大批量的待排序数据切分成若干个小数据块,并将这些数据块分配给多个加速kernel进行并行排序,然后进入归并排序kernel进行归并排序,进一步提高大数据量数据的排序速度。
上述过程中,加速kernel根据排序方法的不同可分为双调kernel,奇偶kernel和归并kernel等,kernel通过AXI4和AXI4-Lite总线获取待排序数据和控制参量,并且kernel之间可以通过AXI4-Stream总线直接通信,而不需要通过DDR4进行中转。
此外,时间上,通过kernel的执行管理与进程的合理调度,可实现对不同进程kernel的细粒度调用,并可与空间上的调度结合,实现多个线程的动态调度,例如,空间上并行工作时,可对多个kernel分配不同的排序进程,或将一个排序进程的大数据量分解为多个小数据量,或结束其中一个进程,开始下一个进程,其余进程不变等。例如参见图7所示,其中A,B,C,D代表不同的排序进程,图中,FPGA动态区部署3个kernel,t0时刻,进程A分割数据量,并行在3个kernel上进行排序;t1时刻,kernel3继续执行进程A,kernel1和kernel2开始并行执行进程B;t2时刻,kernel2结束进程B,执行进程C,kernel1和kernel3继续执行进程A和进程B;t3时刻,kernel3结束进程A,开始执行进程D;t4时刻,kernel1结束进程B,开始执行进程D。从图7示例可以看出,数据库CPU可通过静态区与FPGA的动态可重构实现加速kernel在空间和时间上的自由调度,实现时空间上FPGA资源的高效利用。
步骤S35:在排序完成后生成完成信号,然后将所述排序后数据写入至所述DDR4内存,并向所述中央处理器发送所述完成信号。
步骤S36:通过所述中央处理器在获取到所述完成信号后,从所述DDR4内存中读取所述排序后数据,并将所述排序后数据保存至所述主机内存,以完成所述数据排序进程的调用。
其中,关于上述步骤S31、S32、S35和S36更加具体的处理过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本申请通过使用FPGA对数据库的排序过程进行加速,提高排序效率,解放数据库的排序进程,提高数据库的整体性能,并且加速kernel支持不同数据量的组合,通过FPGA的动态可重构,可例化多个加速kernel实现大批量数据的并行排序与流水线排序,实现FPGA资源在时间和空间上的细粒度分割和高效利用。
参见图8所示,本申请实施例公开了一种数据库排序装置,该装置包括:
内核部署模块11,用于在中央处理器发出针对数据排序进程的调用指令后,则通过FPGA的静态区逻辑程序将加速内核的流文件加载至所述FPGA的动态区,以便在所述动态区中部署加速内核;
数据排序模块12,用于在所述中央处理器将主机内存中的待排序数据传输到排序加速板卡中的DDR4内存后,则启动所述加速内核,以便所述加速内核从所述DDR4内存中读取待排序数据,并对所述待排序数据进行排序以得到排序后数据;
数据写入模块13,用于在排序完成后生成完成信号,然后将所述排序后数据写入所述DDR4内存,并向所述中央处理器发送所述完成信号;
数据保存模块14,用于通过所述中央处理器在获取到所述完成信号后,从所述DDR4内存中读取所述排序后数据,并将所述排序后数据保存至所述主机内存,以完成所述数据排序进程的调用。
可见,本申请在中央处理器发出针对数据排序进程的调用指令后,则通过FPGA的静态区逻辑程序将加速内核的流文件加载至所述FPGA的动态区,以便在所述动态区中部署加速内核;在所述中央处理器将主机内存中的待排序数据传输到排序加速板卡中的DDR4内存后,则启动所述加速内核,以便所述加速内核从所述DDR4内存中读取待排序数据,并对所述待排序数据进行排序以得到排序后数据;在排序完成后生成完成信号,然后将所述排序后数据写入至所述DDR4内存,并向所述中央处理器发送所述完成信号;通过所述中央处理器在获取到所述完成信号后,从所述DDR4内存中读取所述排序后数据,并将所述排序后数据保存至所述主机内存,以完成所述数据排序进程的调用。由此可见,本申请当中央处理器调用数据排序进程时,FPGA的静态区逻辑程序则将加速内核的流文件加载到FPGA的动态区,以完成加速内核在动态区中的部署。中央处理器将主机内存中的待排序数据传输到排序加速板卡中的DDR4内存后,则启动加速内核,加速内核从DDR4内存中读取待排序数据并开始排序,加速内核完成排序后生成完成信号,并发送完成信号至中央处理器,以及将排序后数据写入DDR4内存。中央处理器收到完成信号后,将排序后数据从DDR4内存中读回主机内存,结束进程调用。上述方案通过使用FPGA对数据库的排序过程进行加速,提高了排序效率,解放了数据库的排序进程,提高了数据库的整体性能。此外,由于排序过程并非是在中央处理器中进行的,减少了对中央处理器资源和内存资源的占用。
图9为本申请实施例提供的一种排序加速板卡20的结构示意图。具体可以包括:处理器21、存储器22、输入输出接口23、外围电子设备24以及PCB板25。处理器21具体为FPGA,FPGA作为数据库CPU的协处理器,通过PCIE映射到CPU内存中,FPGA内部逻辑分为静态区与动态区两部分,静态区实现kernel二进制文件下载,DDR4与kernel间的数据传输,执行管理等功能,动态区用于加速kernel的部署,以此实现数据库大批量数据的排序加速。
其中,存储器22包括Flash,DDR4等设备,Flash存储FPGA的静态区逻辑程序,DDR4存放从主机内存读取的数据;存储器22还用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的由排序加速板卡执行的数据库排序方法中的相关步骤。输入输出接口23有网口,PCIE接口,JTAG接口等,PCIE接口负责FPGA与数据库的高速通信,JTAG接口负责FPGA逻辑程序的烧录与调试;外围电子设备24包括电源芯片、时钟芯片、必要的电阻电容等;PCB板25负责为FPGA、存储设备、输入输出接口及外围电子器件提供载体。
进一步的,本申请实施例还公开了一种计算机可读存储介质,所述存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,实现前述任一实施例公开的由数据库排序过程中执行的方法步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种数据库排序方法、装置、排序加速板卡及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种数据库排序方法,其特征在于,包括:
在中央处理器发出针对数据排序进程的调用指令后,则通过FPGA的静态区逻辑程序将加速内核的流文件加载至所述FPGA的动态区,以便在所述动态区中部署加速内核;
在所述中央处理器将主机内存中的待排序数据传输到排序加速板卡中的DDR4内存后,则启动所述加速内核,以便所述加速内核从所述DDR4内存中读取待排序数据,并对所述待排序数据进行排序以得到排序后数据;
在排序完成后生成完成信号,然后将所述排序后数据写入至所述DDR4内存,并向所述中央处理器发送所述完成信号;
通过所述中央处理器在获取到所述完成信号后,从所述DDR4内存中读取所述排序后数据,并将所述排序后数据保存至所述主机内存,以完成所述数据排序进程的调用。
2.根据权利要求1所述的数据库排序方法,其特征在于,所述在中央处理器发出针对数据排序进程的调用指令的过程中,还包括:
获取所述中央处理器发送的控制参量;其中,所述控制参量包括开始信号、DDR4偏移地址和数据量大小。
3.根据权利要求2所述的数据库排序方法,其特征在于,所述启动所述加速内核,以便所述加速内核从所述DDR4内存中读取待排序数据,包括:
启动所述加速内核,并确定所述控制参量中的DDR4偏移地址,以便所述加速内核基于所述DDR4偏移地址,并通过AXI总线从所述DDR4内存中读取待排序数据。
4.根据权利要求2所述的数据库排序方法,其特征在于,所述将所述排序后数据写入至所述DDR4内存,包括:
基于所述DDR4偏移地址将所述排序后数据写入至所述DDR4内存。
5.根据权利要求2所述的数据库排序方法,其特征在于,所述在所述动态区中部署加速内核,包括:
在所述动态区中部署与不同排序方法对应的加速内核;所述排序方法包括双调排序、奇偶排序、基数排序和归并排序;
相应的,所述对所述待排序数据进行排序以得到排序后数据,包括:
按照预先设置的排序方法,并基于所述控制参量对所述待排序数据进行排序以得到排序后数据。
6.根据权利要求1至5任一项所述的数据库排序方法,其特征在于,所述对所述待排序数据进行排序以得到排序后数据,包括:
确定加速内核预先配置的空间工作模式和时间工作模式;其中,所述空间工作模式包括并行工作模式、串行工作模式和局部并串行工作模式;
按照所述空间工作模式和所述时间工作模式对所述待排序数据进行排序以得到排序后数据。
7.根据权利要求6所述的数据库排序方法,其特征在于,还包括:
若所述空间工作模式为并行工作模式,则启动若干个加速内核,并确定所述中央处理器为每一所述加速内核分配的不同的DDR4偏移地址,以便各所述加速内核分别基于对应的DDR4偏移地址从所述DDR4内存中读取待排序数据,以对所述待排序数据进行排序得到排序后数据;
若所述空间工作模式为串行工作模式,则确定预先设置的多条件排序语句中的排序条件个数,并启动相应数量个加速内核,以便将各排序条件分配给不同的加速内核,然后根据所述多条件排序语句的顺序依次调用对应的加速内核对从所述DDR4内存中读取到的待排序数据进行排序得到排序后数据;
若所述空间工作模式为局部并串行工作模式,则确定所述中央处理器对所述待排序数据进行拆分得到的若干个数据块,并启动相应数量个加速内核,以便各所述加速内核对从所述DDR4内存中读取到的所述数据块进行排序得到排序结果,然后利用归并排序方法对各排序结果进行合并以得到排序后数据。
8.一种数据库排序装置,其特征在于,包括:
内核部署模块,用于在中央处理器发出针对数据排序进程的调用指令后,则通过FPGA的静态区逻辑程序将加速内核的流文件加载至所述FPGA的动态区,以便在所述动态区中部署加速内核;
数据排序模块,用于在所述中央处理器将主机内存中的待排序数据传输到排序加速板卡中的DDR4内存后,则启动所述加速内核,以便所述加速内核从所述DDR4内存中读取待排序数据,并对所述待排序数据进行排序以得到排序后数据;
数据写入模块,用于在排序完成后生成完成信号,然后将所述排序后数据写入所述DDR4内存,并向所述中央处理器发送所述完成信号;
数据保存模块,用于通过所述中央处理器在获取到所述完成信号后,从所述DDR4内存中读取所述排序后数据,并将所述排序后数据保存至所述主机内存,以完成所述数据排序进程的调用。
9.一种排序加速板卡,其特征在于,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现如权利要求1至7任一项所述的数据库排序方法的步骤。
10.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的数据库排序方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310287957.8A CN116302220A (zh) | 2023-03-21 | 2023-03-21 | 一种数据库排序方法、装置、排序加速板卡及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310287957.8A CN116302220A (zh) | 2023-03-21 | 2023-03-21 | 一种数据库排序方法、装置、排序加速板卡及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116302220A true CN116302220A (zh) | 2023-06-23 |
Family
ID=86822074
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310287957.8A Pending CN116302220A (zh) | 2023-03-21 | 2023-03-21 | 一种数据库排序方法、装置、排序加速板卡及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116302220A (zh) |
-
2023
- 2023-03-21 CN CN202310287957.8A patent/CN116302220A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230153158A1 (en) | Method, apparatus, system, and storage medium for performing eda task | |
CN104615488A (zh) | 异构多核可重构计算平台上任务调度的方法和装置 | |
CN111324558A (zh) | 数据处理方法、装置、分布式数据流编程框架及相关组件 | |
CN106302780A (zh) | 集群设备批量传输数据的方法、装置及系统、服务器 | |
US20220206846A1 (en) | Dynamic decomposition and thread allocation | |
CN110750312A (zh) | 硬件资源配置方法、装置、云侧设备和存储介质 | |
CN114925644A (zh) | 在边缘系统验证逻辑系统设计的方法、边缘系统 | |
Hironaka et al. | Remote dynamic reconfiguration of a multi-FPGA system FiC (Flow-in-Cloud) | |
CN114997101A (zh) | 基于芯片验证系统的信号控制方法、系统、介质及设备 | |
CN116795647A (zh) | 一种数据库异构资源管理与调度方法、装置、设备及介质 | |
CN113630269B (zh) | 基于拓扑感知的高性能计算系统运行环境部署加速方法及系统 | |
CN108829530B (zh) | 一种图像处理方法及装置 | |
CN116521096B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN116302220A (zh) | 一种数据库排序方法、装置、排序加速板卡及介质 | |
US9910810B1 (en) | Multiphase I/O for processor-based emulation system | |
US11789790B2 (en) | Mechanism to trigger early termination of cooperating processes | |
CN116341443A (zh) | 一种基于多fpga原型验证云平台的外设分配方法和系统 | |
CN116010093A (zh) | 数据处理方法、装置、计算机设备和可读存储介质 | |
CN115562887A (zh) | 基于数据组包的核间数据通信方法、系统、设备及介质 | |
CN115016862A (zh) | 基于Kubernetes集群的软件启动方法、装置、服务器及存储介质 | |
CN114860460A (zh) | 一种数据库加速的方法、装置、计算机设备 | |
CN113918290A (zh) | 一种api调用方法以及装置 | |
CN108182168A (zh) | 一种支持动态可重构的一体化数字信号处理系统 | |
CN112114971A (zh) | 一种任务分配方法、装置及设备 | |
CN114021709B (zh) | 多fpga数据处理方法、装置、服务器及存储介质 |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20230912 Address after: Office Area, 5th Floor, S02 Building, No. 1036 Langchao Road, High tech Zone, Jinan City, Shandong Province, 250000 Applicant after: Shandong Inspur Database Technology Co.,Ltd. Address before: 250000 building S02, No. 1036, Gaoxin Inspur Road, Jinan, Shandong Applicant before: Shandong Inspur Scientific Research Institute Co.,Ltd. |
|
TA01 | Transfer of patent application right |