Nothing Special   »   [go: up one dir, main page]

CN118503204B - 硬件加速卡、加速系统、方法、设备、介质及程序产品 - Google Patents

硬件加速卡、加速系统、方法、设备、介质及程序产品 Download PDF

Info

Publication number
CN118503204B
CN118503204B CN202410948789.7A CN202410948789A CN118503204B CN 118503204 B CN118503204 B CN 118503204B CN 202410948789 A CN202410948789 A CN 202410948789A CN 118503204 B CN118503204 B CN 118503204B
Authority
CN
China
Prior art keywords
column
length
data
page
request
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.)
Active
Application number
CN202410948789.7A
Other languages
English (en)
Other versions
CN118503204A (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.)
Suzhou Metabrain Intelligent Technology Co Ltd
Original Assignee
Suzhou Metabrain Intelligent Technology Co Ltd
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 Suzhou Metabrain Intelligent Technology Co Ltd filed Critical Suzhou Metabrain Intelligent Technology Co Ltd
Priority to CN202410948789.7A priority Critical patent/CN118503204B/zh
Publication of CN118503204A publication Critical patent/CN118503204A/zh
Application granted granted Critical
Publication of CN118503204B publication Critical patent/CN118503204B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Advance Control (AREA)

Abstract

本发明提供一种硬件加速卡、加速系统、方法、设备、介质及程序产品,涉及数据处理技术领域,包括:硬件加速卡根据主机侧发送的配置信息计算各个页面的目标列偏移,以生成各个页面的列数据请求,并向所述主机侧发送包含有所述列数据请求的中断信息;在接收到所述主机侧响应所述中断信息反馈的回复报文的情况下,基于所述回复报文中的变长列长度进行变长列的目标偏移计算,并基于所述回复报文中的列字段数据进行过滤计算操作,确定过滤结果。

Description

硬件加速卡、加速系统、方法、设备、介质及程序产品
技术领域
本发明涉及数据处理技术领域,尤其涉及一种硬件加速卡、加速系统、方法、设备、介质及程序产品。
背景技术
随着互联网和物联网的快速发展,数据量呈指数级增长。传统的软件处理方式已经无法满足对大规模数据处理的需求。
为了解决大规模数据处理的问题,数据库硬件加速技术逐渐得到了广泛应用和发展。数据库硬件加速可以通过专用硬件设备,如现场可编程门阵列(Field ProgrammableGate Array,FPGA)来加速数据库操作,提高数据处理的效率和吞吐量。硬件加速可以在硬件层面上直接处理大规模数据,减少了软件处理的瓶颈,提供更高的性能和响应速度。同时,硬件加速还可以通过并行计算和优化算法的方式,提高数据库的查询和访问效率,满足实时性要求和高并发访问的需求。
然后现有的外部加速设备,在完成数据加速处理后,再将加速数据从外部加速设备中取回,数据的来回传输会导致较长的延迟和等待,导致数据处理速度慢。
发明内容
本发明提供一种硬件加速卡、加速系统、方法、设备、介质及程序产品,用以解决现有技术中外部加速设备,在完成数据加速处理后,再将加速数据从外部加速设备中取回,数据的来回传输会导致较长的延迟和等待,导致数据处理速度慢的缺陷。
本发明提供一种硬件加速卡,包括:
硬件加速卡根据主机侧发送的配置信息计算各个页面的目标列偏移,以生成各个页面的列数据请求,并向所述主机侧发送包含有所述列数据请求的中断信息;
在接收到所述主机侧响应所述中断信息反馈的回复报文的情况下,基于所述回复报文中的变长列长度进行变长列的目标偏移计算,并基于所述回复报文中的列字段数据进行过滤计算操作,确定过滤结果。
根据本发明提供的一种硬件加速卡,所述硬件加速卡,具体用于
在检测到第一页面的变长列的情况下,暂停处理所述第一页面的列数据,生成变长列长度请求,并继续处理下一页面的列数据;
将所述变长列长度请求与所述各个页面的列数据请求进行合并,得到所述中断信息。
根据本发明提供的一种硬件加速卡,所述硬件加速卡包括:列长度寄存器和列选择寄存器;
所述硬件加速卡通过所述列长度寄存器获取所述目标列的列长度;
在所述列长度大于第一预设阈值的情况下,所述目标列为定长列,直接获取所述定长列的列长度;
在所述列长度小于等于所述第一预设阈值的情况下,所述目标列为变长列,标记所述目标列的页组状态为挂起状态,暂停处理所述目标列对应的页面,直至收到所述目标列的变长列长度;
其中,所述列选择寄存器用于生成所述变长列长度请求和所述列数据请求。
根据本发明提供的一种硬件加速卡,所述硬件加速卡,具体用于:
在收到所述目标列的变长列长度的情况下,将所述目标列的页组状态由挂起状态切换为就绪状态,继续处理所述目标列对应的页面。
根据本发明提供的一种硬件加速卡,所述硬件加速卡,包括:片上随机存取存储器、报文解析单元、数据选择器、类型选择器;
其中,所述片上随机存取存储器用于获取回复报文;
其中,所述报文解析单元用于对所述回复报文进行解析,得到列字段数据和变长列长度;
其中,所述数据选择器用于将所述变长列长度传输给所述硬件加速卡进行变长列的解析,并将所述列字段数据传输给所述类型选择器;
其中,所述类型选择器根据不同的数据类型,将所述列字段数据根据不同的数据类型选择对应的先入先出队列接口,以进行过滤计算操作。
根据本发明提供的一种硬件加速卡,所述硬件加速卡包括:输入先入先出队列接口、用户接口寄存器、运算阵列组、真值寄存器组和过滤结果寄存器组;
其中,所述输入先入先出队列接口用于根据先入先出队列类型,将列字段数据存入对应类型的比较器阵列中;
其中,所述用户接口寄存器用于提供包含每一列的常量寄存器与运算符寄存器,以及比对结果的真值表寄存器;
其中,所述运算阵列组进行列数据的过滤计算,并输出每一行的过滤结果;
其中,所述真值寄存器组用于存储运算阵列的输出结果;
其中,所述过滤结果寄存器组用于存放每一行是否满足过滤条件的真值表。
根据本发明提供的一种硬件加速卡,所述运算阵列组包括:字符串运算阵列、下边界比较器阵列与上边界比较器阵列;
其中,所述字符串运算阵列用于对字符串类型的数据,进行字符串的比较、包含和正则运算;
其中,所述下边界比较器阵列与上边界比较器阵列分别用于进行数值类型数据下边界比较运算和数值类型数据上边界比较运算,以支持数值类型数据的范围查询。
根据本发明提供的一种硬件加速卡,所述真值寄存器组包括多个寄存器,每个所述寄存器对应于每一行中某个列的比较运算结果;
其中,所述真值寄存器组还用于当一个页面中所有的目标列都完成比较计算后,将页面寄存器组的值与所述用户接口寄存器中的真值表寄存器进行比较运算;将满足过滤条件的结果输出到所述过滤结果寄存器组中。
根据本发明提供的一种硬件加速卡,所述硬件加速卡,具体用于:
根据结构化查询语句的where子句,初始化用户接口寄存器组;其中,所述where子句用于将用户对目标列的过滤条件中的常量与运算符配置到用户接口寄存器中;
根据先入先出队列类型,将列字段数据存入对应类型的比较器阵列中,并根据所述列字段数据中的列索引,从用户接口寄存器组中加载相应的常量和运算符;
根据所述常量、运算符和所述列字段数据执行批量比较运算,将运算结果输出到真值寄存器组中对应页面的列中;
在任一目标页面中所有的目标列都完成比较运算的情况下,将所述真值寄存器组中所述目标页面的对应的值与所述用户接口寄存器组中所述目标页面对应的真值表寄存器进行对比;
根据对比结果确定每行数据是否满足所有过滤条件,并将过滤结果输出到过滤结果寄存器组中。
本发明还提供一种基于上述任一项所述硬件加速卡的加速系统,所述系统包括:硬件加速卡与主机侧;
所述主机侧给所述硬件加速卡发送包含查询表信息的配置信息;
所述硬件加速卡根据所述配置信息计算各个页面的目标列偏移,生成各个页面的列数据请求和变长列长度请求,并向所述主机侧发送包含有列数据请求和变长列长度请求的中断信息;其中,所述硬件加速卡在等待主机侧响应所述变长列长度请求的同时,会继续处理下一页面的列数据;
所述主机侧根据所述中断信息中的列字段请求,获取所述列字段请求对应的列字段数据,并在所述中断信息中包括所述变长列长度请求的情况下,获取所述变长列长度请求对应的变长列长度;
所述主机侧将回复报文传输给所述硬件加速卡,其中,所述回复报文包括列字段数据和变长列长度中的至少一项;
所述硬件加速卡基于所述回复报文中的变长列长度进行变长列的目标偏移计算,并基于所述回复报文中的列字段数据进行过滤计算操作,确定过滤结果。
根据本发明提供的一种加速系统,所述主机侧,具体用于:
根据用户的查询语句中列字段的属性信息,以构建列属性描述表;
根据所述查询语句中where子句部分对应的列编号,以构建列选择表;
将所述列属性描述表和所述列选择表作为参数,得到所述配置信息。
根据本发明提供的一种加速系统,所述主机侧,具体用于:
根据所述中断信息中的列字段请求,确定列字段在数据库中的具体位置,以从所述数据库中获取所述列字段数据;
根据所述中断信息中的变长列长度请求,确定对应变长列的变长列长度;
将提取的所述列字段数据和所述变长列长度按照请求类型和字段索引重新组包后,作为回复报文传输到所述硬件加速卡。
根据本发明提供的一种加速系统,所述主机侧,具体用于:
从所述硬件加速卡获取所述过滤结果,并根据所述过滤结果中的页面身份信息和行号,确定满足过滤条件的行数据;
将满足过滤条件的行数据返回至数据库查询计划的上层节点。
本发明还提供一种基于上述任一项所述加速系统的加速方法,包括:
主机侧给硬件加速卡发送包含查询表信息的配置信息;
所述硬件加速卡根据所述配置信息计算查询表对应各个页面的目标列偏移,生成各个页面的列数据请求和变长列长度请求,将包含有列字段数据和变长列长度的中断信息发送到所述主机侧;其中,所述硬件加速卡等待所述主机侧响应所述变长列长度请求的同时,会继续处理下一页面的列数据;
所述主机侧根据所述中断信息中的列字段请求,获取所述列字段请求对应的列字段数据,并在所述中断信息中包括所述变长列长度请求的情况下,获取所述变长列长度请求对应的变长列长度;
所述硬件加速卡获取主机侧的回复报文,并根据所述回复报文中的变长列长度进行变长列的目标偏移计算,基于所述回复报文中的列字段数据进行过滤计算操作,确定过滤结果。
根据本发明提供的一种加速方法,所述方法还包括:
在通过所述硬件加速卡中的列长度寄存器获取到所述目标列的列长度大于第一预设阈值的情况下,确定所述目标列为定长列,直接获取所述定长列的列长度;
在通过所述硬件加速卡中的列长度寄存器获取到所述目标列的列长度小于等于第一预设阈值的情况下,确定所述目标列为变长列,标记所述变长列的页组状态为挂起状态,暂停处理所述变长列对应的页面,等待所述主机侧响应所述变长列长度请求;
所述硬件加速卡在等待所述主机侧响应所述变长列长度请求的同时,会继续处理下一页面的列数据。
根据本发明提供的一种加速方法,在所述硬件加速卡在等待所述主机侧响应所述变长列长度请求的同时,会继续处理下一页面的列数据的步骤之后,所述方法还包括:
在所述硬件加速卡接收到所述变长列的变长列长度的情况下,将所述变长列的页组状态切换为就绪状态,基于所述变长列长度进行变长列的目标偏移计算;
基于所述变长列的目标列偏移,生成所述变长列的列数据请求。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述加速方法。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述加速方法。
本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述加速方法。
本发明提供的硬件加速卡、加速系统、方法、设备、介质及程序产品,通过只将页面的配置信息传输到硬件加速卡内,在硬件加速卡内,根据配置信息,计算各个页面的目标列偏移,从而根据目标列偏移生成中断信息,向主机侧请求目标列字段数据,通过硬件加速度卡对目标列字段数据进行加速,避免了在数据加速过程中,传输整个页面或不必要的数据,只需要传输目标列字段数据,大幅降低了所需的传输带宽,同时支持对变长字段与超长字段的访问,有效提高了数据处理速度。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为相关技术中引入硬件加速卡后计算流程;
图2为相关技术中PostgreSQL数据库存储格式;
图3为相关技术中超长字段访问的示意图;
图4为本申请实施例提供的硬件加速卡结构示意图;
图5为相关技术中解析计算流程图;
图6为本申请实施例中所描述的解析件结构示意图;
图7为本申请实施例提供的解析件的工作流程图;
图8为本申请实施例提供的存储举例说明示意图;
图9为本申请实施例提供的原信息初始化示意图;
图10为本申请实施例提供的计算定长列示意图;
图11为本申请实施例提供的遇到变长列的处理流程图;
图12为本申请实施例中收到变长列长度值后的处理流程;
图13为本申请实施例提供的读取件结构示意图;
图14为本申请实施例中读取件操作示意图;
图15为本申请实施例提供的过滤件结构示意图;
图16为本申请实施例提供的运算阵列内部结构示意图;
图17为本申请实施例所描述的过滤件工作流程图;
图18为本申请实施例所提供的过滤计算举例流程示意图;
图19为本申请实施例中所描述的加速系统结构示意图;
图20为本申请实施例提供的报文格式示意图;
图21为本申请实施例提供的回复报文格式示意图;
图22为本申请实施例提供的表格示意图;
图23为本申请实施例提供的请求合并示意图;
图24为本申请实施例提供的配置解析件工作流程;
图25为本申请实施例提供的用户查询示例图;
图26为本申请实施例提供的发明运算实例图;
图27为本申请实施例提供的加速方法流程示意图;
图28为本申请实施例提供的技术对比图;
图29为本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为相关技术中引入硬件加速卡后计算流程,如图1所示,包括:
①主机侧从磁盘中获取数据库数据,读取到主机侧内存。
②主机侧先将数据发送到加速卡内存中。
③加速卡中多个执行单元进行并行计算,完成对数据库页面的解析与过滤计算,将满足条件的结果写入加速卡内存。
④主机侧从加速卡内部才能读取计算结果。
⑤主机侧获取加速卡计算的结果后进行后续业务流程的处理。
由于加速卡中可以创建多个计算单元(Compute Unit,CU),每个计算单元中又可以创建多个处理元件(Processing Element,PE),每个PE都可以执行计算任务,多个PE可以并行执行,因此可以提供更强算力,从而降低数据库的计算延迟。获得更好的用户体验。
虽然使用硬件加速技术可以提供较强的算力支持,提升数据库查询性能。但仍面临如下问题:
首先,主机侧需要将数据发送到加速卡中,待计算结果完成后,再从加速卡中取回,如图1中步骤①、②所示,数据的传输过程中会产生延迟与等待,数据的传输耗时构成了主要的延迟。
并且,另一方面,加速卡中如何高效访问数据库变长字段,仍是需要解决的难题。主流关系型数据库中,以行存储的方式存储各个列字段。列字段包含定长字段与变长字段,对于定长字段,字段长度存放在列属性表中;对于变长字段,字段的长度存放在列数据头部。由于存在变长字段的原因,当用户需要访问到第N列时,需要逐个解析出前面N-1个列,才能够获取第N列在行内的偏移,解析各个列的过程,需要逐个进行累加计算构成了查询过程中的主要性能瓶颈。
图2为相关技术中PostgreSQL数据库存储格式,如图2所示,以PostgreSQL数据库为例,数据库中以固定大小页面存放不同长度的行记录,页面内标记存放的行数,以及每个行在页面内的偏移。一行中包含多个列字段,对于定长字段,在列字段属性表中标记其长度值;对于变长列字段,其列字段属性表中的长度标记为-1,真实长度存放在对应列的起始位置,为了节约存储空间,当列长度较短(<128B)时使用1B表示,列长度较长时(>128B)使用4B表示。当用户需要访问列4时,由于列2为变长字段,数据库需要计算列0-列3的长度,进行累加后计算得出列4在行中的存储偏移,累加计算过程会造成较大的计算延迟。
并且,主流关系型数据库在数据表文件中,以固定大小的页面存储行数据,每一行中包含多个字段。由于页面大小是固定的,那么对于某个字段长度超过了页面大小的情况下,页面便无法存放该字段,这种字段称为超长字段。主流数据库对超长字段的处理方式,通常是将超长字段存放在一个专门的超长字段文件中,在列字段位置存放一个指针,指向超长字段文件并标记该超长字段在文件中的索引信息。采用硬件加速技术时,由于超长字段文件与数据文件分离,如果添加对超长字段的访问,会导致对FPGA片外存储的非顺序访问,而非顺序访问会严重影响FPGA内流水线的处理性能,因此往往只能将数据表文件传输到FPGA中,并不载入超长字段文件,导致缺少对数据库超长字段的支持。也就是说相关技术中无法实现对于超长字段的支持。
图3为相关技术中超长字段访问的示意图,如图3所示,以PostgreSQL数据库为例,以8KB为单位存储行数据,当用户输入某个字段长度为10KB时(图中B4字段),页面内无法存放该字段。该字段内容便会存放在专门的超长字段文件中,该字段位置存放指向字段内容的指针。现有技术中,硬件加速只会将数据表文件传入FPGA中,当FPGA解析到超长字段时,无法访问到字段内容的数据,只能标记为无法处理。
硬件加速卡根据主机侧发送的配置信息计算各个页面的目标列偏移,以生成各个页面的列数据请求,并向所述主机侧发送包含有所述列数据请求的中断信息;
在接收到所述主机侧响应所述中断信息反馈的回复报文的情况下,基于所述回复报文中的变长列长度进行变长列的目标偏移计算,并基于所述回复报文中的列字段数据进行过滤计算操作,确定过滤结果。
更具体地,图4为本申请实施例提供的硬件加速卡结构示意图,如图4所示,包括:解析件410、读取件420、过滤件430和回写件440;所述读取件420分别与所述解析件410和所述过滤件430连接,所述过滤件430与所述回写件440连接;
其中,解析件410具体可以包括:列偏移解析单元、列长度解析单元、向量加法器和请求合并单元;
其中,列偏移解析单元具体可以是写入列偏移解析功能的可编程门阵列;
其中,列长度解析单元具体包括:列长度解析件、列长度寄存器和列选择寄存器;列长度解析件可以是写入列长度解析功能的可编程门阵列;
请求合并单元,可以是指写入了请求合并功能的可编程门阵列;
其中,读取件具体可以包括:片上随机存取存储器、报文解析单元、数据选择器、类型选择器;
更具体地,报文解析单元具体可以是写入了报文解析功能的可编程门阵列或者处理器;
其中,所述过滤件可以包括:输入先入先出队列接口、用户接口寄存器、运算阵列组、真值寄存器组和过滤结果寄存器组;
更具体地,所述运算阵列组包括:字符串运算阵列、下边界比较器阵列与上边界比较器阵列;
所述真值寄存器组包括多个寄存器,每个所述寄存器对应于每一行中某个列的比较运算结果;
其中,所述过滤件是写入了过滤条件和过滤处理逻辑的可编程门阵列;回写件是写入了回写处理逻辑的可编程门阵列。
其中,所述解析件410用于根据主机侧发送的配置信息计算各个页面的目标列偏移,以生成各个页面的列数据请求,并向所述主机侧的字段提取件发送包含有所述列数据请求的中断信息;
其中,所述读取件420用于在接收到所述字段提取件响应所述中断信息反馈的回复报文的情况下,将变长列长度传输给所述解析件,以供所述解析件根据所述变长列长度进行变长列的目标偏移计算,并将列字段数据传输给所述过滤件;其中,所述回复报文包括列字段数据和变长列长度中的至少一项;
其中,所述过滤件430用于对所述列字段数据进行过滤计算操作,输出过滤结果;
其中,所述回写件440用于将过滤结果回写到硬件加速卡的外存,并通知所述主机侧获取所述过滤结果。
在本申请实施例中,解析件根据从主机侧接收的配置信息来解析和计算数据库页面中目标列的偏移量。
生成针对这些列的列数据请求,并在需要时向主机侧的字段提取件发送中断信息,请求特定字段数据。
在本申请实施例中,读取件与解析件和过滤件相连,作为一个中间件,负责数据的传输和接收。
当字段提取件响应解析件的请求时,读取件接收来自字段提取件的回复报文。
将变长列的长度信息传输回解析件,以便解析件可以据此完成变长列的目标偏移计算。同时,将列字段数据传输给过滤件,以供进一步处理。
在本申请实施例中,过滤件接收来自读取件的列字段数据,并根据预设的过滤条件执行过滤计算操作。
过滤条件通常基于用户的查询语句,如WHERE子句中的规定,输出过滤结果,这些结果是满足查询条件的行数据。
在本申请实施例中,回写件负责将过滤件产生的过滤结果回写到硬件加速卡的外存中;完成写入后,回写件会通知主机侧,以便主机侧可以获取这些过滤结果并进行进一步处理。
在本申请实施例中,中断信息是由解析件在需要字段数据时发送给字段提取件的,包含了列数据请求。回复报文是由字段提取件发送给读取件的,包含了所需的列字段数据和/或变长列长度信息。
在本申请实施例中,通过只将页面的配置信息传输到硬件加速卡内,在硬件加速卡内,根据配置信息,计算各个页面的目标列偏移,从而根据目标列偏移生成中断信息,向主机侧请求目标列字段数据,通过硬件加速度卡对目标列字段数据进行加速,避免了在数据加速过程中,传输整个页面或不必要的数据,只需要传输目标列字段数据,大幅降低了所需的传输带宽,同时支持对变长字段与超长字段的访问,有效提高了数据处理速度。
可选地,所述硬件加速卡,具体用于:
在检测到第一页面的变长列的情况下,暂停处理所述第一页面的列数据,生成变长列长度请求,并继续处理下一页面的列数据;
将所述变长列长度请求与所述各个页面的列数据请求进行合并,得到所述中断信息。
当解析件在处理第一页面时检测到变长列,它会暂停当前页面的进一步处理。
在本申请实施例中,一旦检测到变长列,解析件会生成一个变长列长度请求,以便确定变长列的确切长度。
在等待主机侧响应变长列长度请求的同时,解析件不会停止工作,而是继续处理下一页面的列数据。这有助于覆盖等待时间,并提高整体处理效率。
解析件会将变长列长度请求与各个页面的列数据请求进行合并。这种合并可以减少对主机侧的中断请求次数,从而减少通信开销和延迟。
合并后的请求被封装成中断信息,发送给主机侧的字段提取件。中断信息包括了所有待处理的列数据请求,无论它们是否与变长列相关。通过合并请求,解析件优化了与主机侧的通信,减少了数据包的数量,从而降低了传输延迟。
解析件的这种动态处理能力允许系统更灵活地响应不同页面的数据特性,特别是当遇到变长列时能够快速适应。由于解析件在等待变长列长度的同时继续处理其他页面,这减少了系统因等待特定请求响应而产生的空闲时间。
图5为相关技术中解析计算流程图,如图5所示,相关技术中,不考虑对超长字段的支持,在加速卡内先通过读取件,将表数据页面从加速卡外存载入到加速卡的片上缓存。之后解析件,逐行进行处理,根据各个列字段的长度信息,计算where子句对应的列在页面中的偏移,遇到定长列时从列属性描述表中获取列长度;当遇到变长字段时,列长度信息存放在页面内,由于此时页面已经存放在片上缓存,因此可以直接从片上缓存中获取对应的列长度。可见相关技术中的解析计算方法,需要主机侧将全部数据表页面都传输到加速卡侧,造成大量冗余数据的传输开销,如前所述,主机侧与加速卡侧的传输瓶颈会限制整体性能。
而本申请的方案中,解析件并不逐行处理,而是一次计算多个行中的某一列在页面中的偏移。对于定长列,无需访问主机内存,可以直接批量计算多行某一列的结果。对于变长列,由于长度存放在数据表页面中,而本发明并不将全部页面传输到加速卡侧,因此本发明将对变长列长度的访问,形成一个中断请求,告知主机侧需要访问的地址偏移,主机侧收到中断请求后,将访问地址偏移处数据发送至加速卡。并且在向主机侧发送中断后,并不等待主机侧将数据返回,而是继续处理下一个页面的列数据,当主机侧返回数据后,再返回到原有页面中继续处理,从而覆盖请求主机侧数据的延迟间隙。
可选地,所述硬件加速卡,具体用于:
根据所述配置信息中的页面元信息,确定各个页面的列起始位置;
在读取到定长列的情况下,获取定长列的列长度,根据每一列的列长度和列起始位置,计算下一列的目标列偏移,以根据所述目标列偏移生成列数据请求;
在读取到变长列的情况下,生成变长列长度请求;
将同一读取单位的所述变长列长度请求与所述列数据请求进行合并,得到所述中断信息。
具体地,图6为本申请实施例中所描述的解析件结构示意图,如图6所示,包括:解析件,包括:列偏移解析单元610、列长度解析单元620、向量加法器630和请求合并单元640,所述列长度解析单元620分别与所述列偏移解析单元610和所述请求合并单元640连接,且所述向量加法器630分别与所述列偏移解析单元610和所述列长度解析单元620进行连接;
其中,所述列偏移解析单元610用于根据所述配置信息中的页面元信息,确定各个页面的列起始位置;
其中,所述列长度解析单元620用于获取定长列的列长度,以及在读取到变长列的情况下,生成变长列长度请求;
其中,所述向量加法器630用于根据每一列的列长度和列起始位置,计算下一列的目标列偏移;
其中,所述请求合并单元640用于按照目标存储器的读取单位以及所述变长列长度请求与所述列数据请求进行合并,得到所述中断信息。
在本申请实施例中,列偏移解析单元负责根据配置信息中的页面元信息确定每个页面中列的起始位置。页面元信息通常包括每行数据在页面中的偏移和每列数据的边界。
在一个可选地实施例中,列偏移解析单元内包含多个页寄存器组,每个页寄存器组中包含多个行寄存器,存放当前解析列在页面中的偏移,通过读取页面元信息初始化,页面中各个行的解析起始位置。
在本申请实施例中,所述列长度解析单元还包括:列长度解析件、列长度寄存器和列选择寄存器;
其中,所述列长度解析件通过所述列长度寄存器获取所述目标列的列长度;
在所述列长度大于第一预设阈值的情况下,所述目标列为定长列,直接获取所述定长列的列长度;
在所述列长度小于所述第一预设阈值的情况下,所述目标列为变长列,标记所述目标列的页组状态为挂起状态,暂停处理所述目标列对应的页面,直至收到所述目标列的变长列长度;
其中,所述列选择寄存器用于生成所述变长列长度请求和所述列数据请求。
在本申请实施例中,列长度解析单元用于获取定长列的列长度,即直接从列属性描述表中读取长度信息。
当遇到变长列时,负责生成变长列长度请求,以便向主机侧请求实际的列长度数据。
在本申请实施例中,列长度解析单元负责获取目标列的长度信息,从而确定其在页面中的起始位置。单元内部包含多个页寄存器组,每个页寄存器组对应于数据库中的一个页面,并包含多个行寄存器,用于存储当前解析列在页面中每一行的长度。
解析单元从列长度寄存器中读取目标列的长度信息。如果读取值大于0,表示当前列为定长列,解析单元直接使用该长度信息进行计算。如果读取值小于0,表示当前列为变长列,解析单元无法直接获取长度信息,需要向主机侧发起列数据请求,请求目标列的长度。
解析单元通过读取列选择寄存器,判断当前解析的列是否需要进行过滤计算。如果当前列为变长列,解析单元将生成一个数据请求报文,包含页面身份信息和列索引信息,发送给主机侧。
发送变长列长度请求后,当前页面的解析操作将暂停,解析单元切换到下一个就绪状态的页面进行解析。当主机侧返回变长列的长度信息后,解析单元将对应的页寄存器组设置为就绪状态,并继续之前页面的解析操作。
可选地,向量加法器首先从列长度寄存器中读取目标列的长度信息。向量加法器将每一行的起始偏移位置存储在对应的行寄存器中。利用其并行计算能力,同时对多个行的偏移位置进行加法运算,将列长度累加到每一行的起始偏移位置上。
计算完成后,向量加法器将新的偏移位置写入到对应的行寄存器中,为下一列的解析做好准备。在解析数据库页面时,向量加法器可以快速计算出每一列在页面中的偏移位置。
在本申请实施例中,请求合并单元从解析件收集到多个数据请求,包括变长列长度请求和列数据请求。请求合并单元分析每个请求的物理偏移和请求长度,判断它们是否位于同一读取单位内。读取单位可以是cache line、磁盘页或其他存储介质的读取单位。
如果多个请求位于同一读取单位内,请求合并单元将它们合并为一个请求,并更新请求信息,例如增加请求长度,将多个请求合并为一个连续的地址范围。
请求合并单元将合并后的请求信息封装成中断信息,并发送给主机侧。主机侧收到中断信息后,根据中断信息中的地址范围和请求类型,一次性读取多个数据,并将数据发送给加速卡。
在本申请实施例中,请求合并单元是数据库查询硬件加速系统中的关键组件,它通过将同一读取单位内的变长列长度请求和列数据请求进行合并,优化了数据传输过程,提高了数据传输效率,降低了延迟,从而提升了数据库查询的整体性能。
图7为本申请实施例提供的解析件的工作流程图,包括:
步骤701:使用页面元信息,初始化列偏移解析单元中页寄存器组。初始化,设置解析起始位置,所有页寄存器组标记为状态为:就绪状态。
步骤702:判断是会否收到变长数据的回复,如果收到回复,执行步骤703;否则执行步骤704。主机侧会将变长数据的长度信息,发送给读取件,读取件在收到该信息后,会将数据发送给解析件。数据中包含了页面身份信息、列索引号以及每一列的长度信息。
步骤703:在收到变长数据回复后,根据页面身份信息找到对应的页寄存器组,根据该变长列的长度,计算对应页面中下一列的偏移位置 ,将对应的页寄存器组设置为就绪态。
步骤704:选择页寄存器组,从处于就绪态的页寄存器组中,选择列解析完成最少的页寄存器组,进行该页面的下一列计算。
步骤705:根据列长度寄存器,计算下一列的偏移地址,执行步骤706。
步骤706:对于定长数据,可直接获取定长列的列长度,使用向量加法器计算下一列的起始位置,之后执行步骤708。
步骤707:对于变长列,其列长度寄存器中的值小于0,生成从当前位置开始,长度为8B的数据请求,标记当前页组状态为:挂起状态,原因为:等待变长列长度。之后执行步骤708。
步骤708:检查列选择寄存器中是否存在该列的索引,如果存在则执行步骤709,否则执行步骤702。
步骤709:对于列选择寄存器中所选择的列,生成对该列的数据请求。收到的回复数据会由读取件发送到过滤件中进行过滤计算。
在一个可选地实施例中,数据库中一个固定大小的页面包含了若干行,在页面的头部会存放页面元信息,页面元信息中包含了页面中每一行在页面中的偏移。
图8为本申请实施例提供的存储举例说明示意图,如图8所示,首先,将每个数据库页面的元信息发送至列偏移解析单元。这些元信息包含页面中每一行记录的起始位置。初始化每个页面寄存器组中每一行的初始值,并将所有寄存器组的状态设置为就绪态,为后续的偏移计算做好准备。
针对本次查询,系统需要分析查询语句,确定需要参与过滤计算的目标列。在本例中,时间列和单价列是查询的关键,其对应的列索引分别为1和3。这两个列字段需要在数据库页面中定位,以便后续的过滤计算。
图9为本申请实施例提供的原信息初始化示意图,如图9所示,为了实现目标列的快速定位,系统将每个数据库页面的元信息发送至列偏移解析单元。这些元信息包含页面中每一行记录的起始位置。通过初始化每个页面寄存器组中每一行的初始值,并设置所有寄存器组的状态为就绪态,为后续的偏移计算做好准备。
接着,根据列长度寄存器中的信息,利用向量加法器对多个页面中目标列的偏移地址进行批量计算。
定长列:直接从列长度寄存器中获取列长度,并通过向量加法器一次性对多个列进行累加计算,从而快速得到下一列的起始位置。
变长列:由于变长列的长度信息存储在数据页面中,而本发明无需将整个页面传输至加速卡,因此解析件会向主机侧发起长度数据请求。请求信息包含页面身份信息号、每一列的偏移地址和8B的请求长度。收到请求后,主机侧将返回变长列的长度信息。此时,将挂起的页面寄存器组状态设置为就绪态,并继续执行后续的偏移计算。
图10为本申请实施例提供的计算定长列示意图,如图10所示,首先,针对页0寄存器组中的第一列和第二列,均为定长列,由于它们处于就绪态,解析件可以立即利用向量加法器,根据列长度寄存器中的信息,一次性计算出这两列的偏移地址。
图11为本申请实施例提供的遇到变长列的处理流程图,如图11所示,解析件转向第三列,即变长列。由于变长列的长度信息存储在数据页面中,解析件需要向主机侧发起数据请求,以获取该列的长度信息。此时,页0寄存器组的状态被设置为挂起,以等待长度信息的返回。同时,解析件开始处理页1寄存器组中的列偏移计算。
图12为本申请实施例中收到变长列长度值后的处理流程,如图12所示,当主机侧返回变长列的长度信息后,解析件将页0寄存器组的状态恢复为就绪态,并利用向量加法器继续计算剩余列的偏移地址,直至完成所有列的偏移计算。
本次查询涉及时间列和单价列,对应的列索引分别为1和3。因此,列长度解析单元在遇到这两个被选择的列数据时,会生成列数据请求。由于定长列的长度已知,变长列一定会生成对列长度的请求,因此执行过程并不会将当前页面的寄存器组设置为挂起。
主机侧的目标存储器存在访存启动开销,通常一次会访问多个字节以提升效率。例如,当目标存储器为内存时,CPU会以cache line长度为单位进行访存,一次访问一个cache line长度,而不是访问1个字节。假设cache line长度为128B,即使CPU只需要1个字节,实际也会访问128B。同样,当目标存储器为SSD磁盘时,访存的单位是页,页大小通常为512B。数据只能整页读取,即使CPU只访问1个字节,实际也会产生512B的数据访问量。
基于以上原因,在数据请求时,对列字段长度和列字段的数据请求的访问地址往往会相隔很近。如果对每个请求都产生一次存储器的访问,则会造成不必要的访问延迟。为了解决该问题,本发明将对主机侧的数据访问请求按照目标存储器的读取单位进行合并,以减少重复的数据请求。
例如,在本例中,时间列和单价列会生成列数据请求,名称列会生成列长度请求。如果时间列、列2长度、单价的请求位于同一个读取单位内,则将这些请求合并在一起,生成一个连续长度的请求。
可选地,所述读取件,包括:片上随机存取存储器、报文解析单元、数据选择器、类型选择器;
其中,所述片上随机存取存储器用于获取回复报文;
其中,所述报文解析单元用于对所述回复报文进行解析,得到列字段数据和变长列长度;
其中,所述数据选择器将所述变长列长度传输给所述解析件,将所述列字段数据传输给所述类型选择器;
其中,所述类型选择器根据不同的数据类型,将所述列字段数据根据不同的数据类型选择对应的先入先出队列接口,以通过所述先入先出队列接口传输到所述解析件。
图13为本申请实施例提供的读取件结构示意图,如图13所示,包括:片上随机存取存储器131、报文解析单元132、数据选择器133、类型选择器134;
其中,所述片上随机存取存储器131用于获取回复报文;
其中,所述报文解析单元132用于对所述回复报文进行解析,得到列字段数据和变长列长度;
其中,所述数据选择器133将所述变长列长度传输给所述解析件,将所述列字段数据传输给所述类型选择器;
其中,所述类型选择器134根据不同的数据类型,将所述列字段数据根据不同的数据类型选择对应的先入先出队列接口,以通过所述先入先出队列接口传输到所述过滤件。
在本申请实施例中,片上 RAM用于临时存储从 DDR 内存中读取的回复报文数据。片上 RAM 具有更快的读写速度,可以减少对 DDR 内存的访问次数,从而提高数据传输效率。
报文解析单元负责解析回复报文数据,提取其中的请求类型和数据信息。报文解析单元能够识别不同的请求类型,例如变长列长度请求和列字段数据请求,并根据请求类型将数据信息传递给相应的处理单元。
数据选择器根据报文解析单元提供的请求类型信息选择相应的输出端口,将数据发送到下一个处理单元。例如,对于变长列长度请求,数据选择器会将数据发送到解析件;对于列字段数据请求,数据选择器会将数据发送到类型选择器。
类型选择器根据数据类型,选择不同的 FIFO 接口,将数据写入到对应的 FIFO接口中。类型选择器单元中包含多个 FIFO 接口,分别对应不同的数据类型,例如整数、浮点数、字符串等。这样可以将不同类型的数据分别存储在对应的 FIFO 接口中,方便后续的处理单元进行读取和处理。
在本申请实施例中,读取件通过片上 RAM、报文解析单元、数据选择器和类型选择器等组件,实现了从 DDR 内存中读取回复报文数据,并将其解析和分发到解析件或过滤件的功能。这种设计可以提高数据传输效率,并方便后续的处理单元进行数据处理。
在一个可选地实施例中,where子句中使用到日期与单价两个字段,图14为本申请实施例中读取件操作示意图,如图14所示,查询语句需要从数据库表中检索满足日期大于‘2020-02-01’ 且将小于 10 的商品名称。该表中包含日期、名称、将和数量等字段,其中名称字段为变长字段,将字段为浮点数类型。
解析件首先解析 SQL 查询语句,识别出需要查询的表和列,并确定查询条件。在本例中,解析件识别出需要查询日期和将字段,并设置查询条件为日期大于 ‘2020-02-01’且将小于 10。
解析件根据查询条件和列字段信息,生成对 DDR 内存中数据页面的访问请求。由于日期和将字段之间间隔一个变长的名称字段,因此需要先解析出名称字段的长度,才能确定将字段的偏移地址。解析件将日期字段的请求和名称字段的长度请求合并为一个请求,并向主机侧发送。
主机侧根据解析件发送的请求,从 DDR 内存中提取日期字段的数据和名称字段的长度信息,并将这些信息封装成请求回复报文发送回 FPGA 加速卡。
读取件接收请求回复报文,并根据报文中的请求类型,将日期字段的数据写入到过滤件的日期 FIFO 中,将名称字段的长度信息发送到解析件。
解析件收到名称字段的长度信息后,更新对应数据页面的状态为就绪状态,并继续解析后续列字段的偏移地址。
解析件根据将字段的偏移地址,生成对将字段的数据请求,并向主机侧发送。主机侧根据解析件发送的请求,从 DDR 内存中提取将字段的数据,并将这些数据封装成请求回复报文发送回 FPGA 加速卡。
读取件接收请求回复报文,并将字段的数据写入到过滤件的浮点 FIFO 中。过滤件从日期 FIFO 和浮点 FIFO 中读取日期字段和将字段的数据,并进行过滤计算,判断每行数据是否满足查询条件。满足查询条件的行数据将被写入到过滤结果寄存器中。
图15为本申请实施例提供的过滤件结构示意图,如图15所示,包括:输入先入先出队列151、用户接口寄存器152、运算阵列组153、真值寄存器组154和过滤结果寄存器组155;
其中,所述输入先入先出队列151用于根据先入先出队列类型,将列字段数据存入对应类型的比较器阵列中;
其中,所述用户接口寄存器152用于提供含每一列的常量寄存器与运算符寄存器,以及比对结果的真值表寄存器;
其中,所述运算阵列组153进行列数据的过滤计算,并输出每一行的过滤结果;
其中,所述真值寄存器组154用于存储运算阵列的输出结果;
其中,所述过滤结果寄存器组155,存放每一行是否满足过滤条件的真值表。
在相关技术中,FPGA进行数据过滤计算加速时,对列存数据库可以实现单指令多数据的过滤计算,而对行存数据库则只能逐行进行,计算过程顺序进行。这意味着,每个计算单元需要等待前一个页面的所有列数据准备就绪后,才能开始对当前页面的列进行逐个过滤计算,从而获取每一行的真值表。
针对行存数据库,本发明实施例提出了一种创新的交替计算方法。该方法不再局限于对单个页面的列数据进行顺序计算,而是采用交叉的方式进行。例如,当第一个页面中的列数据正在解析时,第二个页面的列数据可以开始解析,以此类推。这种交替计算的方式可以充分利用FPGA的计算资源,有效提升整体过滤计算的效率。
并且,对于同一列字段的多次比较运算,本发明实施例通过并行计算的方式将其合并,从而减少对片上缓存的访存次数。例如,如果用户输入的过滤条件包含对同一列字段的多个范围查询,本发明可以将这些比较运算合并为一个操作,在一个时钟周期内完成,从而提高数值类型数据范围查询的效率。
为了进一步提升数值类型数据的过滤计算效率,本发明实施例采用了长位宽技术。通过一次加载多个数值类型数据到计算阵列中,本发明可以在一个时钟周期内对这些数据进行批量并行计算,显著提升计算速度和吞吐量。
具体地,作为过滤件的输入接口,输入先入先出队列与读取件相连,负责接收不同数据类型的列数据。为了避免数据冲突和混乱,不同类型的列数据会通过不同的先入先出队列进行输入,例如整数类型数据、浮点类型数据、字符串类型数据等。这种分离输入的设计,确保了数据的有序传输和高效处理。
用户接口寄存器是过滤件的核心配置单元,由主机侧进行配置。它内部包含多种寄存器:
常量寄存器:存储SQL语句中where子句过滤条件中的常量值,例如数值比较中的边界值、字符串比较中的字符串常量等。
运算符寄存器:存储过滤条件中对应的运算符,例如数值比较中的大于、小于、等于、不等于等,以及字符串比较中的包含、正则匹配等。
真值表寄存器:存储过滤条件中逻辑运算规则所对应的真值表,用于后续的行数据过滤计算。
通过配置用户接口寄存器,主机侧可以灵活地定义过滤条件,并控制过滤件的计算过程。
在本申请实施例中,运算阵列组是过滤件的核心计算单元,包含多个不同数据类型的运算阵列,每个运算阵列内部包含多个运算器。每个运算阵列专门负责处理特定数据类型的过滤计算,例如数值运算阵列、浮点数运算阵列、字符串运算阵列等。
当过滤件接收到输入FIFO中的数据时,会根据数据类型将其分配到对应的运算阵列中进行处理。每个运算阵列会并行地对一列数据进行比较、逻辑运算等过滤计算,并将计算结果以0或1的真值表形式输出。真值表存储在真值寄存器中,每个寄存器对应于每一行中某个列的比较运算结果。
可选地,所述运算阵列组包括:字符串运算阵列、下边界比较器阵列与上边界比较器阵列;
其中,所述字符串运算阵列用于对字符串类型的数据,进行字符串的比较、包含和正则运算;
其中,所述下边界比较器阵列与上边界比较器阵列分别用于进行数值类型数据下边界比较运算和数值类型数据上边界比较运算,以支持数值类型数据的范围查询。
图16为本申请实施例提供的运算阵列内部结构示意图,如图16所示,比较器阵列是运算阵列中的核心组件,负责对列数据进行比较运算,并输出比较结果。每个比较器阵列包含多个比较器,每个比较器都可以独立地进行比较运算。
在本申请实施例中,每个比较器包含以下三个输入和一个输出:
数据输入1:从FIFO中获取页面中的字段数据,作为比较运算的一个操作数。
数据输入2:从用户接口寄存器组中获取过滤条件中的常量值,作为比较运算的另一个操作数。
选择输入:从用户接口寄存器组中获取过滤条件中的比较运算符,例如大于、小于、等于、不等于、大于等于、小于等于等。
结果输出:输出比较运算的结果,0表示不满足过滤条件,1表示满足过滤条件。
更具体地,比较器阵列可以同时对一列中的多行数据进行比较运算,并输出对应行的比较结果。这种批量比较的设计,大大提高了过滤计算的效率,尤其是对于数值类型数据。
对于数值类型数据,本发明中设计了下边界比较器阵列和上边界比较器阵列,分别用于处理过滤条件中的下边界和上边界范围查询。
下边界比较器阵列:检查每个数据是否大于等于下边界常量,满足条件输出1,否则输出0。
上边界比较器阵列:检查每个数据是否小于等于上边界常量,满足条件输出1,否则输出0。
如果用户只输入一个边界条件,则另一个边界条件中的比较器阵列会输出1,从而确保范围查询的完整性。
更具体地,在本申请实施例中,对于字符串类型数据,比较器阵列可以进行多种字符串运算,例如:比较运算:检查两个字符串是否相等、不等于等。包含运算:检查一个字符串是否包含另一个字符串。正则匹配:使用正则表达式进行字符串匹配。
通过支持多种字符串运算,比较器阵列可以满足各种复杂的字符串过滤需求。
可选地,所述真值寄存器组包括多个寄存器,每个所述寄存器对应于每一行中某个列的比较运算结果;
其中,所述真值寄存器组还用于当一个页面中所有的目标列都完成比较计算后,将页面寄存器组的值与所述用户接口寄存器中的真值表寄存器进行比较运算;将满足过滤条件的结果输出到所述过滤结果寄存器组中。
在本申请实施例中,真值寄存器组负责存储运算阵列的输出结果,并最终判断每一行数据是否满足过滤条件。它内部包含多个页面寄存器组,每个页面寄存器组对应于一个数据库页面,其中包含多个寄存器,每个寄存器对应于该页面中每一行数据在某一列上的比较运算结果。
真值寄存器组内部包含多个页面寄存器组,每个页面寄存器组对应于一个数据库页面。页面寄存器组中包含多个寄存器,每个寄存器对应于该页面中每一行数据在某一列上的比较运算结果。寄存器的数量等于页面中行数与目标列数的乘积。
每个寄存器存储一个二进制值,表示该行数据在该列上的比较运算结果。0表示不满足过滤条件,1表示满足过滤条件。
运算阵列完成对目标列数据的比较运算后,将结果输出到真值寄存器组中对应页面和列的寄存器中。
当一个页面中所有的目标列都完成比较运算后,将页面寄存器组的值与用户接口寄存器组中的真值表寄存器进行比较运算,判断哪些行满足过滤条件。例如,如果用户输入的过滤条件是 A>10 AND B<20,则真值表寄存器中会存储一个 2x2 的真值表,其中 A 列存储 A>10 的运算结果,B 列存储 B<20 的运算结果。页面寄存器组中的值与真值表寄存器进行比较后,可以得到每一行是否满足所有过滤条件的最终结果。
逻辑运算的结果输出到过滤结果寄存器组中,该寄存器组存储每一行是否满足过滤条件的真值表,真值表由 0 或 1 构成,0 表示不满足所有条件,1 表示满足所有条件。
真值寄存器组可以并行存储多个页面的比较运算结果,提高过滤计算的效率。
在一个可选地实施例中,过滤结果寄存器组负责存储过滤计算的最终结果,即判断每一行数据是否满足过滤条件。它内部包含一个真值表,真值表由 0 或 1 构成,0 表示该行数据不满足所有过滤条件,1 表示该行数据满足所有过滤条件。
可选地,过滤结果寄存器组内部包含一个真值表,真值表的行数等于数据库页面中行数,列数等于用户输入的过滤条件中目标列的数量。每个元素存储一个二进制值,表示该行数据是否满足所有过滤条件。
真值寄存器组中的值与用户接口寄存器组中的真值表寄存器进行比较运算,判断哪些行满足过滤条件。将逻辑运算的结果存储到过滤结果寄存器组中对应行和列的寄存器中。
可选地,所述过滤件,具体用于:
根据结构化查询语句的where子句,初始化用户接口寄存器组;其中,所述where子句用于将用户对目标列的过滤条件中的常量与运算符配置到用户接口寄存器中;
根据先入先出队列类型,将列字段数据存入对应类型的比较器阵列中,并根据所述列字段数据中的列索引,从用户接口寄存器组中加载相应的常量和运算符;
根据所述常量、运算符和所述列字段数据执行批量比较运算,将运算结果输出到真值寄存器组中对应页面的列中;
在任一目标页面中所有的目标列都完成比较运算的情况下,将所述真值寄存器组中所述目标页面的对应的值与所述用户接口寄存器组中所述目标页面对应的真值表寄存器进行对比;
根据对比结果确定每行数据是否满足所有过滤条件,并将过滤结果输出到过滤结果寄存器组中。
在本申请实施例中,过滤件是数据库查询加速系统中的核心件之一,负责根据用户输入的 SQL 语句中的 WHERE 子句对数据进行过滤计算,判断每一行数据是否满足过滤条件。过滤件的设计采用了多种优化技术,例如并行计算、批量处理、可扩展性等,从而实现了高效的过滤计算性能。
具体地,首先根据用户输入的 SQL 语句中的 WHERE 子句,将过滤条件中的常量、运算符以及逻辑运算规则对应的真值表配置到用户接口寄存器组中。
从输入 FIFO 中获取目标列数据,并根据 FIFO 类型将数据存入对应类型的比较器阵列中。
运算器并行执行运算,输出每个比较运算的结果,形成每一行所对应的真值表。
将真值寄存器组的值与用户接口寄存器组中的真值表寄存器进行比较运算,判断哪些行满足过滤条件。将逻辑运算的结果输出到过滤结果寄存器组中。
本申请实施例中,通过将运算阵列设计为并行结构,可以同时对多个数据进行比较运算,提高计算效率。通过一次加载一列中的多行数据到比较器阵列中,可以减少对FIFO 的访问次数,提高数据吞吐量。通过增加运算阵列的数量,可以扩展过滤件的处理能力,适应更大规模的数据处理需求。
图17为本申请实施例所描述的过滤件工作流程图,如图17所示,包括:
步骤1701:根据SQL语句where子句,初始化用户接口寄存器组。在该步骤中,根据where子句,将用户对目标列的过滤条件中的常量与运算符配置到接口寄存器中。不同于现有技术,本发明中对于数值类型的比较运算,分类为上边界比较与,下边界比较,两个比较可并行执行,可以在一个时钟周期内完成范围查询,节省从FIFO中加载数据耗时与比较运算耗时。
步骤1702:获取FIFO数据,根据FIFO类型,将数据存入对应类型的比较器阵列中。在完成步骤1701初始化配置后。监控各个不同类型的FIFO是否有数据,当读取件向某种类型的FIFO接口中写入数据后,从对应接口中载入FIFO数据,从FIFO码流中获取字段数据,载入到对应类型的比较器阵列中,作为比较参数。值得说明的是,一次会加载一列中的多行数据到比较器阵列中,进行批量的比较计算。
步骤1703:根据FIFO数据流头部列索引,从用户接口寄存器组中,加载对应的常量与运算符到比较器阵列中。从FIFO码流中获取列索引,根据索引从接口寄存器中,将该列的常量与运算符加载到比较器阵列中。
步骤1704:执行比较运算,根据FIFO数据流头部的页面ID与列索引,将运算结果输出到真值寄存器组中对应页面的列中。完成步骤1703后,阵列中的比较器,2个数据输入与一个选择输入都已加载,进行批量的比较运算后,得到一个0或1的运算结果。写入到真值寄存器对应页面的列中。
步骤1705:判断一个页面中是否所有目标列都完成了比较运算。如果完成执行步骤1706,否则执行步骤1702。判断方法为页真值寄存器中,写入数据的个数是否等于用户在接口寄存器中所设置的运算符个数。
步骤1706:当一个页面中所有的目标列计算完成时,真值寄存器组的值与用户接口寄存器组中真值表寄存器进行比对,输出结果到过滤结果寄存器组中。所有的目标列字段完成计算后,会得到多个列进行比较运算的结果与用户接口寄存器组中真值表寄存器进行比对,即可判断出该行是否满足过滤条件,将运算结果输出到过滤结果寄存器中。之后继续执行步骤1702,加载下一列数据。
图18为本申请实施例所提供的过滤计算举例流程示意图,如图18所示,以1个页面的数据计算为例,where子句中使用到日期、名称、单价3个字段。有3个数值比较运算和一个字符串运算。
具体地,深入解析 SQL 语句中的 WHERE 子句,识别出需要参与过滤计算的目标列,即列1(日期)、列2(名称)、列3(单价)。接着,本申请实施例中将每个列对应的过滤条件中的常量和运算符分别配置到用户接口寄存器组中。例如,将日期下限设置为 “2020/01/01”,将单价的上限设置为 “10”,下限设置为 “2”,并将名称的过滤条件设置为 “LIKE %苹果%”。此外,本申请实施例中还根据逻辑运算规则,构建了一个真值表,并将其存储在真值表寄存器中,以便后续进行逻辑运算。
然后,本申请实施例中从输入FIFO中获取目标列数据,并根据FIFO类型将数据分别加载到对应类型的比较器阵列中。以图18为例,本申请实施例中创建了3组比较器,每组可以并行运算3个数据,从而实现高效的并行计算。FIFO码流的头部标记了页面的ID与列的索引号,根据列的索引号,本申请实施例中可以从用户接口寄存器中获取对应的常量与运算符,为比较运算做好准备。
运算器并行执行运算,对每一行数据进行比较运算,并输出每个比较运算的结果,形成每一行所对应的真值表。真值表中的每个元素都是一个0或1,分别代表该行数据在某一列上是否满足过滤条件。例如,对于日期列,如果日期大于“2020/01/01”,则输出1,否则输出0;对于单价列,如果单价大于等于2且小于等于10,则输出1,否则输出0;对于名称列,如果名称包含“苹果”,则输出1,否则输出0。
当一个页面的3个目标列都完成计算后,本申请实施例中将真值寄存器组的值与用户接口寄存器组中的真值表寄存器进行比对,进行逻辑运算,判断每一行数据是否满足所有过滤条件。最终,本申请实施例中将逻辑运算的结果输出到过滤结果寄存器组中。例如,如果一行数据在日期、单价、名称三列上都满足过滤条件,则对应的真值表寄存器输出1,否则输出0。
对于实际场景用,会有多个页面进行计算,本发明实施例中运算过程并不需要逐个列字段进行,而是不同页面的字段交替进行。例如:
1)解析件,送入第1个页面的列1字段到过滤件中,在解析到列2时遇到变长字段会挂起。
2)解析件,送入第2个页面的列1字段到过滤件中。
3)解析件,获取到列2变长数据的值,送入第1个页面的列2字段到过滤件中。
如上所述,以不同页面的不同字段交替进行列字段的解析与过滤计算。
可选地,所述回写件,具体用于:
将满足过滤条件的页面身份信息与行号写入到硬件加速卡的外存中,并向主机侧发送中断,以通知主机侧获取过滤结果。
在本申请实施例中,回写件负责将满足过滤条件的页面身份信息与行号写入到硬件加速卡的外存中。这些信息记录了哪些页面和行数据符合用户指定的查询条件,是后续数据获取和处理的依据。
回写件会向主机侧发送中断信号,通知主机侧过滤计算已完成,可以获取过滤结果。中断机制是一种高效的通信方式,可以确保主机侧及时获取到过滤结果,从而提高整体查询效率。
回写件将过滤结果存储在外存中,并记录页面ID和行号,为主机侧提供了快速定位满足条件数据的方式。主机侧可以根据这些信息,快速找到并获取目标数据,进行后续的业务处理。
在本申请实施例中,回写件负责存储过滤结果、通知主机侧并协助数据定位,为用户提供高效、准确的查询服务。
可选地,所述系统包括:硬件加速卡与主机侧;
所述主机侧给所述硬件加速卡发送包含查询表信息的配置信息;
所述硬件加速卡根据所述配置信息计算各个页面的目标列偏移,生成各个页面的列数据请求和变长列长度请求,并向所述主机侧发送包含有列数据请求和变长列长度请求的中断信息;其中,所述硬件加速卡在等待主机侧响应所述变长列长度请求的同时,会继续处理下一页面的列数据;
所述主机侧根据所述中断信息中的列字段请求,获取所述列字段请求对应的列字段数据,并在所述中断信息中包括所述变长列长度请求的情况下,获取所述变长列长度请求对应的变长列长度;
所述主机侧将回复报文传输给所述硬件加速卡,其中,所述回复报文包括列字段数据和变长列长度中的至少一项;
所述硬件加速卡基于所述回复报文中的变长列长度进行变长列的目标偏移计算,并基于所述回复报文中的列字段数据进行过滤计算操作,确定过滤结果。
具体地,图19为本申请实施例中所描述的加速系统结构示意图,如图19所示,包括:所述硬件加速卡和设置于主机侧的解析配置件191、字段提取件192和结果处理件193;所述解析配置件191与所述解析件410连接,所述字段提取件192与所述解析件410和所述读取件420连接,所述结果处理件193与所述回写件440连接;
其中,所述解析配置件191用于给所述硬件加速卡侧的所述解析件发送包含查询表信息的配置信息,以使得所述解析件410根据所述配置信息计算查询表对应各个页面的目标列偏移,生成各个页面的列数据请求;
其中,所述字段提取件192用于根据所述解析件反馈的中断信息中的列字段请求,获取所述列字段请求对应的列字段数据,并在所述中断信息中包括所述变长列长度请求的情况下,获取所述变长列长度请求对应的变长列长度;
所述字段提取件192用于将所述回复报文传输给所述读取件420,以使得所述读取件将所述变长列长度传输给所述解析件410,以供所述解析件根据所示变长列长度进行变长列的目标偏移计算,并将所述列字段数据传输给所述过滤件430;其中,所述回复报文包括列字段数据和变长列长度中的至少一项;
其中,所述结果处理件193用于处理所述硬件加速卡的过滤结果,并提取满足过滤条件的行数据,返回给用户端。
可选地,所述解析配置件,具体用于:
根据用户的查询语句中列字段的属性信息,以构建列属性描述表;
根据所述查询语句中where子句部分对应的列编号,以构建列选择表;
将所述列属性描述表和所述列选择表作为参数,得到所述配置信息。
在本申请实施例中,扫描查询节点首先会解析用户输入的SQL语句,识别出查询目标、查询条件、返回字段等信息。例如,对于SELECTFROMtableWHEREcondition这样的SQL语句,扫描查询节点会解析出table作为查询目标,condition作为查询条件,以及返回所有字段。
更具体地,扫描查询节点会根据解析出的信息,生成查询计划。查询计划描述了如何从数据库表中获取满足条件的数据,包括选择哪些表、使用哪些索引、如何进行数据过滤等。
扫描查询节点会根据查询计划,执行实际的查询操作,具体可以包括从表中提取目标列字段,进行过滤计算,将满足条件的行返回给上层节点。
在本申请实施例中,配置解析件会根据扫描查询节点解析出的信息,构建列属性描述表。列属性描述表记录了查询目标表中各个字段的属性信息,包括字段类型、字段长度等。这些信息对于后续的数据解析和过滤计算至关重要。
配置解析件还会根据扫描查询节点解析出的信息,构建列选择描述表。列选择描述表记录了用户需要进行过滤的列字段信息,例如,在WHERE子句中指定的列。这些信息用于指导过滤件进行数据过滤计算。
在本申请实施例中,通过将列属性描述表和列选择描述表发送至FPGA的解析件,可以避免在FPGA上重复解析SQL语句,从而提高查询效率。
配置解析件可以将查询信息进行压缩或精简,从而降低数据传输量,提高整体查询效率。FPGA的解析件可以根据列属性描述表和列选择描述表,快速准确地解析数据,并进行过滤计算,从而提高数据解析效率。
可选地,所述字段提取件,具体用于:
根据所述中断信息中的列字段请求,确定列字段在数据库中的具体位置,以从所述数据库中获取所述列字段数据;
根据所述中断信息中的变长列长度请求,确定对应变长列的变长列长度;
将提取的所述列字段数据和所述变长列长度按照请求类型和字段索引重新组包后,作为回复报文传输到所述硬件加速卡侧的读取件。
加速卡通过中断机制向主机侧请求数据,避免了频繁的轮询,提高了效率。加速卡会将同一读取单位内的数据请求进行合并,减少了访问存储器的次数,降低了延迟。加速卡可以直接请求变长字段的长度信息,无需主机侧进行解析,提高了效率。支持P2P技术的加速卡可以直接访问主机侧内存或磁盘,进一步降低了数据传输延迟。
在本申请实施例中,字段提取件,根据加速卡解析件发送的数据请求报文,从目标地址中获取数据。图20为本申请实施例提供的报文格式示意图,如图20所示,加速卡将位于同一读取单位的请求合并为一个请求组,一个请求组内包含了该请求的页面ID,以及若干个子请求每个子请求中均包含:
请求类型:有变长字段长度、字段数据,两种类型。
列索引号:表示该列的索引号。
页内行号:标记请求的是页面内哪一行。
逻辑偏移:请求数据在逻辑行中的偏移,表示逻辑意义上需要读取的数据偏移。
物理偏移:请求数据在物理行中的偏移,表示存储在一个读取单位中的偏移。
请求长度:对于变长字段的长度请求固定为8个字节;对于字段数据,如果是定长字段为大于0的值,根据该字段的实际长度读取。如果是变长字段为-1,解析出实际长度后进行读取。
在一个可选地实施例中,变长数据指的是长度不固定的数据,例如字符串或文本。在数据库中,为了节省空间,变长数据通常不会直接存储在行记录中,而是会存储一个指向数据实际位置的指针。
加速卡会向主机侧请求8个字节的数据,这8个字节包含了变长数据的长度信息。主机侧会根据数据对齐方式,从这8个字节中提取出变长数据的实际长度。
变长数据可能跨越多个读取单位,例如一个cache line或磁盘页。字段提取件会根据物理偏移字段,从多个子请求中提取数据,并将它们拼接成完整的字段数据。
字段提取件会将变长数据的长度和字段数据分别存储在连续的内存空间中,避免交叉存放,方便加速卡解析。对于超长字段,其字段偏移位置头部会标记为超长字段,后面会跟着一个指向超长字段实际位置的指针。字段提取件会根据指针,从目标位置提取超长字段数据,并将其与长度信息一起打包成回复报文。
图21为本申请实施例提供的回复报文格式示意图,如图21所示,包括:页面ID:标记请求的页面。
请求类型:变长字段长度请求或字段数据请求。
数据类型:标记回复的数据类型,例如:字符串、浮点、日期等。
列索引号:标记回复的是那一列的数据。
数据:对于定长数据只包含字段数据,对于变长数据同时包含的变长数据的实际长度。
图22为本申请实施例提供的表格示意图,如图22所示,假设用户输入过滤条件为where 日期>2020-01-01 and 单价<10,由于日期与单价之间存在一个变长字段,变长字段中的头部标记了该字段的实际长度。在进行过滤解析时,需要执行如下步骤:
1)先读取日期数据(4B),解析件会发起对日期列字段索引1的字段数据请求。此时页面寄存器并不会发生阻塞,发出请求后会继续解析名称字段。
2)解析名称字段,由于是变长字段,需要发起对该变长字段长度的请求,并将该页面寄存器设置为挂起状态。
3)解析件会将日期字段的数据访问与名称字段长度访问进行合并,以减少对同一读取单位的反复读取操作。
图23为本申请实施例提供的请求合并示意图,如图23所示,字段提取件根据页面ID,页内偏移找到目标数据后进行提取,将提取后的数据按请求类型与字段索引重新组包后,作为回复报文传输到加速卡侧。
更具体地,图24为本申请实施例提供的配置解析件工作流程,如图24所示,包括:
步骤2401,构建列字段属性表;
配置解析件会从数据库扫描查询节点中获取目标表的格式信息,包括表名、列名、列类型、列长度、列约束等。这些信息通常存储在数据库的元数据中,例如系统目录或数据字典。
配置解析件会根据扫描查询节点提供的表信息,提取每个列字段的属性,包括列类型(例如整型、浮点型、字符串型)、列长度(例如4字节、8字节、变长等)、列约束(例如非空、唯一、外键等)。
配置解析件会将提取的列属性信息组织成列属性描述表。列属性描述表通常采用结构化的数据格式,例如数组或哈希表,方便FPGA解析件进行读取和解析。
步骤2402,构建列字段选择表;解析WHERE子句:配置解析件会解析用户SQL语句中的WHERE子句,识别出用户指定的过滤条件。例如,对于WHEREcolumn1>value1ANDcolumn2<value2这样的WHERE子句,配置解析件会识别出column1和column2作为过滤列,以及对应的比较运算符和常量值。配置解析件会根据WHERE子句中指定的列名,获取对应的列编号。列编号通常是从0开始的整数,用于唯一标识表中的每个列。
配置解析件会将WHERE子句中指定的列编号组织成列选择描述表。列选择描述表通常采用数组或集合的数据格式,方便FPGA解析件进行读取和解析。
步骤2403,配置FPGA解析件;配置解析件会将列属性描述表和列选择描述表发送至FPGA解析件。发送方式可以是直接写入FPGA的内存空间,也可以是通过PCIe总线进行传输。
配置解析件会将列属性描述表和列选择描述表中的数据写入FPGA解析件的寄存器接口。寄存器接口是FPGA内部用于存储配置信息的地方,可以方便FPGA解析件进行读取和解析。
图25为本申请实施例提供的用户查询示例图,如图25所示,格包含了订单号(整型)、时间(日期型)、名称(字符串)、单价(浮点)、数量(浮点)。用户通过SQL语句,查询指定日期范围,指定将的商品名称。本发明中,会将表格中的类型及长度信息作为字段属性,where子句部分所选择的列编号作为字段选择表发送给FPGA。
在本申请实施例中,构建列字段属性表和列选择描述表是数据库查询硬件加速数据传输管理方法中的关键步骤。通过构建这些表,可以将查询信息传递给FPGA,从而提高查询效率。
可选地,主机侧在接收到加速卡发出的中断信号后,便会启动数据读取操作,从FPGA的DDR内存中提取经过过滤计算的结果。此时,由于数据页面早已预先载入至主机侧的DDR内存中,因此只需根据过滤结果中提供的页面ID和行号,便能轻松定位到满足查询条件的具体行数据。随后,这些行数据将被送回数据库查询计划的上层节点,从而完成扫描节点的过滤计算操作,最终呈现给用户端最精确的查询结果。
在相关技术中,通常是主机侧数据表文件发送到FPGA侧,再由FPGA侧经过读取、解析、过滤、回写四级流水线完成数据的解析与过滤计算,但是本申请的方案中,主机侧并不将所有数据发送到FPGA侧,图26为本申请实施例提供的发明运算实例图,如图26所示,本申请实施例中是将解析件放在流水线第1级,构成解析、读取、过滤、回写四级流水线。由加速卡侧产生对主机侧的数据访问请求,传输总线上只传输需要查询的数据。
更具体地,图27为本申请实施例提供的加速方法流程示意图,如图27所示,包括:步骤2710,主机侧给硬件加速卡发送包含查询表信息的配置信息;
解析配置件首先从数据库查询计划中提取用户查询语句所需查询的表信息,并将其转化为硬件加速卡能够理解的配置信息。该配置信息详细记录了查询表的列属性,包括列类型、列长度、是否为变长列等信息,为后续解析与过滤计算提供精确的指导。随后,解析配置件将这些配置信息发送至硬件加速卡侧的解析件,确保硬件加速卡能够理解用户查询意图,并高效地执行查询操作。
步骤2720,所述硬件加速卡根据所述配置信息计算查询表对应各个页面的目标列偏移,生成各个页面的列数据请求和变长列长度请求,将包含有列字段数据和变长列长度的中断信息发送到所述主机侧;其中,所述硬件加速卡等待所述主机侧响应所述变长列长度请求的同时,会继续处理下一页面的列数据;
解析件接收到配置信息后,会根据配置信息中记录的列属性,对查询表对应各个页面的目标列偏移进行精细计算。对于定长列,解析件直接使用配置信息中记录的列长度进行计算;而对于变长列,解析件会根据配置信息中的标记,向主机侧的字段提取件发送变长列长度请求,以便获取变长列的长度信息。
随后,解析件根据计算得到的目标列偏移,生成各个页面的列数据请求。每个列数据请求都包含了目标列的索引信息,指示字段提取件需要获取哪一列的数据。解析件将这些列数据请求打包成中断信息,并通过PCIe总线发送至主机侧的字段提取件,启动数据传输流程。
步骤2730,所述主机侧根据所述中断信息中的列字段请求,获取所述列字段请求对应的列字段数据,并在所述中断信息中包括所述变长列长度请求的情况下,获取所述变长列长度请求对应的变长列长度;
具体地,字段提取件接收到解析件发送的中断信息后,会根据中断信息中的列字段请求,从主机侧的存储介质中获取相应的列字段数据。对于定长列,字段提取件会直接根据列索引信息提取数据;而对于变长列,字段提取件则会根据中断信息中包含的变长列长度请求,获取变长列的长度信息,并将其与变长列数据一起打包成回复报文。
步骤2740,所述硬件加速卡获取主机侧的回复报文,并根据所述回复报文中的变长列长度进行变长列的目标偏移计算,基于所述回复报文中的列字段数据进行过滤计算操作,确定过滤结果。
字段提取件将提取到的列字段数据和变长列长度生成回复报文,并通过PCIe总线传输至读取件。回复报文包含了列字段数据和变长列长度中的至少一项,确保读取件能够获取到解析与过滤计算所需的所有数据。
所述读取件将所述变长列长度传输给所述解析件,以供所述解析件根据所示变长列长度进行变长列的目标偏移计算,并将所述列字段数据传输给所述过滤件;
读取件接收到回复报文后,会根据报文中的信息,将变长列长度传输至解析件,以便解析件进行变长列的目标偏移计算。同时,读取件会将列字段数据传输至过滤件,为后续过滤计算提供数据基础。
所述过滤件对所述列字段数据进行过滤计算操作,输出过滤结果;
过滤件接收到列字段数据后,会根据用户查询语句中的过滤条件,对数据进行精准的过滤计算操作。过滤件支持各种运算类型,包括数值比较、字符串匹配、布尔逻辑运算等,并能够并行处理多个数据,从而提高过滤计算效率。
所述回写件将过滤结果回写到硬件加速卡的外存,并通知所述主机侧获取所述过滤结果;
所述结果处理件处理所述硬件加速卡的过滤结果,并提取满足过滤条件的行数据,返回给用户端。
在本申请实施例中,通过仅传输用户所需查询的字段数据,而非整个数据页面,大幅降低主机侧与加速卡侧之间的数据传输量,有效缓解PCIe总线的传输瓶颈,提升数据传输效率。数据传输量的减少,意味着数据传输所需的时间也相应减少,从而降低传输延迟,提升整体查询性能。并且,本申请实施例中的解析件能够识别变长字段,并通过向主机侧发送变长列长度请求,获取变长列的长度信息,从而高效地访问变长字段数据。同时,解析件能够识别超长字段,并通过向主机侧发送数据请求,获取超长字段的指针,从而实现对超长字段数据的访问。
在一个可选地实施例中,图28为本申请实施例提供的技术对比图,如图28所示,假设有一张数据表,包含A、B、C三列,用户只查询B列。
在相关技术中:需要将全部数据表文件内容发送到加速卡中;由加速卡解析出目标列,进行计算。
在本申请实施例中,加速卡计算出目标列的偏移,向主机侧发送地址请求;主机侧只发送目标列到加速卡中。
通过在FPGA中设置解析与过滤状态机,产生对主机侧内存的访问请求,避免了冗余数据的传输,解决主机侧与加速卡之间的数据传输性能瓶颈与超长字段的支持问题。
可选地,所述方法还包括:
在通过所述硬件加速卡中的列长度寄存器获取到所述目标列的列长度大于第一预设阈值的情况下,确定所述目标列为定长列,直接获取所述定长列的列长度;
在通过所述硬件加速卡中的列长度寄存器获取到所述目标列的列长度小于等于第一预设阈值的情况下,确定所述目标列为变长列,标记所述变长列的页组状态为挂起状态,暂停处理所述变长列对应的页面,等待所述主机侧响应所述变长列长度请求;
所述硬件加速卡在等待所述主机侧响应所述变长列长度请求的同时,会继续处理下一页面的列数据。
在本申请实施例中,当解析件检测到页面中存在变长列时,为了避免因等待变长列长度而造成不必要的延迟,解析件会将该页面的页组状态标记为“挂起状态”。这意味着解析件会暂停对变长列页面的处理,并将注意力转移到下一个就绪状态的页面。
解析件通过向主机侧发送变长列长度请求,获取变长列的长度信息。主机侧接收到请求后,会从存储介质中提取变长列长度,并将其返回给解析件。解析件接收到变长列长度后,会将变长列页面的页组状态从“挂起状态”切换为“就绪状态”。这意味着解析件可以继续处理变长列页面中剩余列的偏移计算。
可选地,在所述硬件加速卡在等待所述主机侧响应所述变长列长度请求的同时,会继续处理下一页面的列数据的步骤之后,所述方法还包括:
在所述硬件加速卡接收到所述变长列的变长列长度的情况下,将所述变长列的页组状态切换为就绪状态,基于所述变长列长度进行变长列的目标偏移计算;
基于所述变长列的目标列偏移,生成所述变长列的列数据请求。
在本申请实施例中,在硬件加速卡等待主机侧响应变长列长度请求期间,解析件不会停止工作,而是继续处理下一页面的列数据。
当解析件在第一页面中检测到变长列时,会标记该页面的页组状态为挂起状态,并暂停处理该页面。解析件等待主机侧返回变长列的长度信息,这是处理变长列所必需的。
一旦硬件加速卡的解析件接收到变长列的长度信息,它会将第一页面变长列的页组状态从挂起切换为就绪状态。在变长列长度信息可用后,解析件基于此长度进行变长列的目标偏移计算,确定变长列在页面中的具体位置。根据计算得到的目标列偏移,解析件生成变长列的列数据请求,这些请求将被发送到主机侧以检索实际的列数据。
如果可能,请求合并单元会将变长列的列数据请求与其他请求合并,以减少对主机侧的数据请求次数,提高通信效率。
主机侧响应列数据请求后,硬件加速卡的读取件将接收并处理列数据,供过滤件进行后续的过滤计算。通过这种暂停和恢复机制,系统保持了数据流的连续性,确保了所有查询操作都能基于完整和准确的数据执行。这种方法允许系统在等待特定数据时,继续处理其他任务,从而提高了系统的整体吞吐量和效率。通过确保变长列长度的准确获取和处理,系统保证了查询结果的准确性。
该方法体现了硬件加速系统对不同数据模式的适应性,特别是对变长列这种需要动态处理的数据类型。通过引入挂起状态,本方案有效避免了因等待变长列长度而造成的延迟,提升了整体解析效率。同时,该方案也确保了解析件能够高效地访问变长列数据,从而实现更精确的过滤计算。
图29为本发明提供的电子设备的结构示意图,如图29所示,该电子设备可以包括:处理器(processor)2910、通信接口(Communications Interface)2920、存储器(memory)2930和通信总线2940,其中,处理器2910,通信接口2920,存储器2930通过通信总线2940完成相互间的通信。处理器2910可以调用存储器2930中的逻辑指令,以执行所述加速方法,该方法包括:
主机侧给硬件加速卡发送包含查询表信息的配置信息;
所述硬件加速卡根据所述配置信息计算查询表对应各个页面的目标列偏移,生成各个页面的列数据请求和变长列长度请求,将包含有列字段数据和变长列长度的中断信息发送到所述主机侧;其中,所述硬件加速卡等待所述主机侧响应所述变长列长度请求的同时,会继续处理下一页面的列数据;
所述主机侧根据所述中断信息中的列字段请求,获取所述列字段请求对应的列字段数据,并在所述中断信息中包括所述变长列长度请求的情况下,获取所述变长列长度请求对应的变长列长度;
所述硬件加速卡获取主机侧的回复报文,并根据所述回复报文中的变长列长度进行变长列的目标偏移计算,基于所述回复报文中的列字段数据进行过滤计算操作,确定过滤结果。
此外,上述的存储器2930中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(随机存取存储器,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的所述加速方法,该方法包括:
主机侧给硬件加速卡发送包含查询表信息的配置信息;
所述硬件加速卡根据所述配置信息计算查询表对应各个页面的目标列偏移,生成各个页面的列数据请求和变长列长度请求,将包含有列字段数据和变长列长度的中断信息发送到所述主机侧;其中,所述硬件加速卡等待所述主机侧响应所述变长列长度请求的同时,会继续处理下一页面的列数据;
所述主机侧根据所述中断信息中的列字段请求,获取所述列字段请求对应的列字段数据,并在所述中断信息中包括所述变长列长度请求的情况下,获取所述变长列长度请求对应的变长列长度;
所述硬件加速卡获取主机侧的回复报文,并根据所述回复报文中的变长列长度进行变长列的目标偏移计算,基于所述回复报文中的列字段数据进行过滤计算操作,确定过滤结果。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的所述加速方法,该方法包括:
主机侧给硬件加速卡发送包含查询表信息的配置信息;
所述硬件加速卡根据所述配置信息计算查询表对应各个页面的目标列偏移,生成各个页面的列数据请求和变长列长度请求,将包含有列字段数据和变长列长度的中断信息发送到所述主机侧;其中,所述硬件加速卡等待所述主机侧响应所述变长列长度请求的同时,会继续处理下一页面的列数据;
所述主机侧根据所述中断信息中的列字段请求,获取所述列字段请求对应的列字段数据,并在所述中断信息中包括所述变长列长度请求的情况下,获取所述变长列长度请求对应的变长列长度;
所述硬件加速卡获取主机侧的回复报文,并根据所述回复报文中的变长列长度进行变长列的目标偏移计算,基于所述回复报文中的列字段数据进行过滤计算操作,确定过滤结果。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部件来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/随机存取存储器、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (19)

1.一种硬件加速卡,其特征在于,包括:
硬件加速卡根据主机侧发送的配置信息计算各个页面的目标列偏移,以生成各个页面的列数据请求,并向所述主机侧发送包含有所述列数据请求的中断信息;
在接收到所述主机侧响应所述中断信息反馈的回复报文的情况下,基于所述回复报文中的变长列长度进行变长列的目标偏移计算,并基于所述回复报文中的列字段数据进行过滤计算操作,确定过滤结果;
其中,所述硬件加速卡,具体用于:
根据所述配置信息中的页面元信息,确定各个页面的列起始位置;
在读取到定长列的情况下,获取定长列的列长度,根据每一列的列长度和列起始位置,计算下一列的目标列偏移,以根据所述目标列偏移生成列数据请求;
在读取到变长列的情况下,生成变长列长度请求;
将同一读取单位的所述变长列长度请求与所述列数据请求进行合并,得到所述中断信息。
2.根据权利要求1所述的硬件加速卡,其特征在于,所述硬件加速卡,具体用于
在检测到第一页面的变长列的情况下,暂停处理所述第一页面的列数据,生成变长列长度请求,并继续处理下一页面的列数据;
将所述变长列长度请求与所述各个页面的列数据请求进行合并,得到所述中断信息。
3.根据权利要求1所述的硬件加速卡,其特征在于,所述硬件加速卡包括:列长度寄存器和列选择寄存器;
所述硬件加速卡通过所述列长度寄存器获取所述目标列的列长度;
在所述列长度大于第一预设阈值的情况下,所述目标列为定长列,直接获取所述定长列的列长度;
在所述列长度小于等于所述第一预设阈值的情况下,所述目标列为变长列,标记所述目标列的页组状态为挂起状态,暂停处理所述目标列对应的页面,直至收到所述目标列的变长列长度;
其中,所述列选择寄存器用于生成所述变长列长度请求和所述列数据请求。
4.根据权利要求3所述的硬件加速卡,其特征在于,所述硬件加速卡,具体用于:
在收到所述目标列的变长列长度的情况下,将所述目标列的页组状态由挂起状态切换为就绪状态,继续处理所述目标列对应的页面。
5.根据权利要求1所述的硬件加速卡,其特征在于,所述硬件加速卡,包括:片上随机存取存储器、报文解析单元、数据选择器、类型选择器;
其中,所述片上随机存取存储器用于获取回复报文;
其中,所述报文解析单元用于对所述回复报文进行解析,得到列字段数据和变长列长度;
其中,所述数据选择器用于将所述变长列长度传输给所述硬件加速卡进行变长列的解析,并将所述列字段数据传输给所述类型选择器;
其中,所述类型选择器根据不同的数据类型,将所述列字段数据根据不同的数据类型选择对应的先入先出队列接口,以进行过滤计算操作。
6.根据权利要求1所述的硬件加速卡,其特征在于,所述硬件加速卡包括:输入先入先出队列接口、用户接口寄存器、运算阵列组、真值寄存器组和过滤结果寄存器组;
其中,所述输入先入先出队列接口用于根据先入先出队列类型,将列字段数据存入对应类型的比较器阵列中;
其中,所述用户接口寄存器用于提供包含每一列的常量寄存器与运算符寄存器,以及比对结果的真值表寄存器;
其中,所述运算阵列组进行列数据的过滤计算,并输出每一行的过滤结果;
其中,所述真值寄存器组用于存储运算阵列的输出结果;
其中,所述过滤结果寄存器组用于存放每一行是否满足过滤条件的真值表。
7.根据权利要求6所述的硬件加速卡,其特征在于,所述运算阵列组包括:字符串运算阵列、下边界比较器阵列与上边界比较器阵列;
其中,所述字符串运算阵列用于对字符串类型的数据,进行字符串的比较、包含和正则运算;
其中,所述下边界比较器阵列与上边界比较器阵列分别用于进行数值类型数据下边界比较运算和数值类型数据上边界比较运算,以支持数值类型数据的范围查询。
8.根据权利要求7所述的硬件加速卡,其特征在于,所述真值寄存器组包括多个寄存器,每个所述寄存器对应于每一行中某个列的比较运算结果;
其中,所述真值寄存器组还用于当一个页面中所有的目标列都完成比较计算后,将页面寄存器组的值与所述用户接口寄存器中的真值表寄存器进行比较运算;将满足过滤条件的结果输出到所述过滤结果寄存器组中。
9.根据权利要求8所述的硬件加速卡,其特征在于,所述硬件加速卡,具体用于:
根据结构化查询语句的where子句,初始化用户接口寄存器组;其中,所述where子句用于将用户对目标列的过滤条件中的常量与运算符配置到用户接口寄存器中;
根据先入先出队列类型,将列字段数据存入对应类型的比较器阵列中,并根据所述列字段数据中的列索引,从用户接口寄存器组中加载相应的常量和运算符;
根据所述常量、运算符和所述列字段数据执行批量比较运算,将运算结果输出到真值寄存器组中对应页面的列中;
在任一目标页面中所有的目标列都完成比较运算的情况下,将所述真值寄存器组中所述目标页面的对应的值与所述用户接口寄存器组中所述目标页面对应的真值表寄存器进行对比;
根据对比结果确定每行数据是否满足所有过滤条件,并将过滤结果输出到过滤结果寄存器组中。
10.一种基于上述权利要求1-9任一项所述硬件加速卡的加速系统,其特征在于,所述系统包括:硬件加速卡与主机侧;
所述主机侧给所述硬件加速卡发送包含查询表信息的配置信息;
所述硬件加速卡根据所述配置信息计算各个页面的目标列偏移,生成各个页面的列数据请求和变长列长度请求,并向所述主机侧发送包含有列数据请求和变长列长度请求的中断信息;其中,所述硬件加速卡在等待主机侧响应所述变长列长度请求的同时,会继续处理下一页面的列数据;
所述主机侧根据所述中断信息中的列字段请求,获取所述列字段请求对应的列字段数据,并在所述中断信息中包括所述变长列长度请求的情况下,获取所述变长列长度请求对应的变长列长度;
所述主机侧将回复报文传输给所述硬件加速卡,其中,所述回复报文包括列字段数据和变长列长度中的至少一项;
所述硬件加速卡基于所述回复报文中的变长列长度进行变长列的目标偏移计算,并基于所述回复报文中的列字段数据进行过滤计算操作,确定过滤结果。
11.根据权利要求10所述的加速系统,其特征在于,所述主机侧,具体用于:
根据用户的查询语句中列字段的属性信息,以构建列属性描述表;
根据所述查询语句中where子句部分对应的列编号,以构建列选择表;
将所述列属性描述表和所述列选择表作为参数,得到所述配置信息。
12.根据权利要求10所述的加速系统,其特征在于,所述主机侧,具体用于:
根据所述中断信息中的列字段请求,确定列字段在数据库中的具体位置,以从所述数据库中获取所述列字段数据;
根据所述中断信息中的变长列长度请求,确定对应变长列的变长列长度;
将提取的所述列字段数据和所述变长列长度按照请求类型和字段索引重新组包后,作为回复报文传输到所述硬件加速卡。
13.根据权利要求10所述的加速系统,其特征在于,所述主机侧,具体用于:
从所述硬件加速卡获取所述过滤结果,并根据所述过滤结果中的页面身份信息和行号,确定满足过滤条件的行数据;
将满足过滤条件的行数据返回至数据库查询计划的上层节点。
14.一种基于上述权利要求10-13任一项所述加速系统的加速方法,其特征在于,包括:
主机侧给硬件加速卡发送包含查询表信息的配置信息;
所述硬件加速卡根据所述配置信息计算查询表对应各个页面的目标列偏移,生成各个页面的列数据请求和变长列长度请求,将包含有列字段数据和变长列长度的中断信息发送到所述主机侧;其中,所述硬件加速卡等待所述主机侧响应所述变长列长度请求的同时,会继续处理下一页面的列数据;
所述主机侧根据所述中断信息中的列字段请求,获取所述列字段请求对应的列字段数据,并在所述中断信息中包括所述变长列长度请求的情况下,获取所述变长列长度请求对应的变长列长度;
所述硬件加速卡获取主机侧的回复报文,并根据所述回复报文中的变长列长度进行变长列的目标偏移计算,基于所述回复报文中的列字段数据进行过滤计算操作,确定过滤结果。
15.根据权利要求14所述的加速方法,其特征在于,所述方法还包括:
在通过所述硬件加速卡中的列长度寄存器获取到所述目标列的列长度大于第一预设阈值的情况下,确定所述目标列为定长列,直接获取所述定长列的列长度;
在通过所述硬件加速卡中的列长度寄存器获取到所述目标列的列长度小于等于第一预设阈值的情况下,确定所述目标列为变长列,标记所述变长列的页组状态为挂起状态,暂停处理所述变长列对应的页面,等待所述主机侧响应所述变长列长度请求;
所述硬件加速卡在等待所述主机侧响应所述变长列长度请求的同时,会继续处理下一页面的列数据。
16.根据权利要求15所述的加速方法,其特征在于,在所述硬件加速卡在等待所述主机侧响应所述变长列长度请求的同时,会继续处理下一页面的列数据的步骤之后,所述方法还包括:
在所述硬件加速卡接收到所述变长列的变长列长度的情况下,将所述变长列的页组状态切换为就绪状态,基于所述变长列长度进行变长列的目标偏移计算;
基于所述变长列的目标列偏移,生成所述变长列的列数据请求。
17.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求14至16任一项所述加速方法。
18.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求14至16任一项所述加速方法。
19.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求14至16任一项所述加速方法。
CN202410948789.7A 2024-07-16 2024-07-16 硬件加速卡、加速系统、方法、设备、介质及程序产品 Active CN118503204B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410948789.7A CN118503204B (zh) 2024-07-16 2024-07-16 硬件加速卡、加速系统、方法、设备、介质及程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410948789.7A CN118503204B (zh) 2024-07-16 2024-07-16 硬件加速卡、加速系统、方法、设备、介质及程序产品

Publications (2)

Publication Number Publication Date
CN118503204A CN118503204A (zh) 2024-08-16
CN118503204B true CN118503204B (zh) 2024-10-11

Family

ID=92248362

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410948789.7A Active CN118503204B (zh) 2024-07-16 2024-07-16 硬件加速卡、加速系统、方法、设备、介质及程序产品

Country Status (1)

Country Link
CN (1) CN118503204B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114647635A (zh) * 2022-03-31 2022-06-21 苏州浪潮智能科技有限公司 数据处理系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110196847A (zh) * 2018-08-16 2019-09-03 腾讯科技(深圳)有限公司 数据处理方法和装置、存储介质及电子装置
CN115438114B (zh) * 2022-11-09 2023-03-24 浪潮电子信息产业股份有限公司 存储格式转换方法、系统、装置、电子设备及存储介质
CN115617878B (zh) * 2022-11-17 2023-03-10 浪潮电子信息产业股份有限公司 一种数据查询方法、系统、装置、设备及计算机存储介质
CN117493386B (zh) * 2023-12-29 2024-03-01 苏州元脑智能科技有限公司 数据库访问方法及装置、存储介质和电子设备

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114647635A (zh) * 2022-03-31 2022-06-21 苏州浪潮智能科技有限公司 数据处理系统

Also Published As

Publication number Publication date
CN118503204A (zh) 2024-08-16

Similar Documents

Publication Publication Date Title
US8838577B2 (en) Accelerated row decompression
Sukhwani et al. Database analytics acceleration using FPGAs
US7970964B2 (en) Methods and systems to accomplish variable width data input
EP2757521B1 (en) Image search apparatus, image search method, program, and computer-readable recording medium
US9639493B2 (en) Pattern-recognition processor with results buffer
US20170083573A1 (en) Multi-query optimization
CN111625558A (zh) 一种服务器架构及其数据库查询方法和存储介质
CN102479217B (zh) 一种分布式数据仓库中实现计算均衡的方法及装置
JP2011511366A (ja) データの検索および索引付けの方法およびそれを実施するシステム
KR102610636B1 (ko) 데이터베이스 가속기로의 병렬 컴퓨트 오프로드
JP2020017272A (ja) ピクチャ検索方法、装置、サーバー及び記憶媒体
WO2024198934A1 (zh) 数据处理方法、装置、系统、电子设备及存储介质
CN114139040A (zh) 一种数据存储及查询方法、装置、设备及可读存储介质
US20230367815A1 (en) Energy-efficient hardware-software collaborative method and apparatus for graph processing
CN111198917A (zh) 数据处理方法、装置、设备及存储介质
CN118503204B (zh) 硬件加速卡、加速系统、方法、设备、介质及程序产品
CN117493386B (zh) 数据库访问方法及装置、存储介质和电子设备
KR102389609B1 (ko) 쓰기 최적화 데이터베이스에서의 디스크 스캔 연산 gpu 오프로딩 방법
CN111126619B (zh) 一种机器学习方法与装置
EP3872642A1 (en) Caching device, cache, system, method and apparatus for processing data, and medium
Kumaigorodski et al. Fast CSV loading using GPUs and RDMA for in-memory data processing
JP5963310B2 (ja) 情報処理装置、情報処理方法、及び、情報処理プログラム
CN112860712B (zh) 一种基于区块链的交易数据库构建方法、系统及电子设备
Li et al. FPGA-based regular expression matching acceleration system design and implementation
Ahmad et al. Hpxa: a highly parallel xml parser

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