当前位置: 首页 > 专利查询>北京大学专利>正文

基于FPGA-CPU异构环境的大规模数据查询加速装置及方法制造方法及图纸

技术编号:23764815 阅读:90 留言:0更新日期:2020-04-11 19:16
本发明专利技术公布了一种基于FPGA‑CPU异构环境用于图数据库的大规模数据查询加速方法及其在FPGA上的实现装置,将待查询处理的大规模数据表示为资源描述框架RDF格式的大规模图数据集,基于FPGA‑CPU异构环境实现查询加速,解决在大规模数据集上对数据进行快速的查询的问题,加速图数据库查询,可广泛应用于基于图数据处理的应用技术领域。将该方法应用于自然语言问答智能查询中。实施表明,采用本发明专利技术方法,查询加速比例在两倍以上,可达到十倍加速,可以更好地满足对响应时间要求较高的应用需求。

Large scale data query acceleration device and method based on FPGA-CPU heterogeneous environment

【技术实现步骤摘要】
基于FPGA-CPU异构环境的大规模数据查询加速装置及方法
本专利技术属于信息搜索查询
,涉及大规模数据搜索加速技术,尤其涉及一种基于FPGA-CPU异构环境的大规模数据查询加速方法及其在FPGA上的实现装置。
技术介绍
在大规模数据检索与查询中,图数据库是一个使用图结构进行语义查询的数据库,它使用节点、边和属性来表示和存储数据。该系统的关键概念是图,它直接将存储中的数据项,与数据节点和节点间表示关系的边的集合相关联。这些关系使得存储单元中的数据链接在一起,并且可以通过特定的规范化的操作和查询语言进行检索。图数据库中最重要的内容是数据之间的关系,它们永久存储在数据库本身中,查询图数据库中的实体关联关系的速度是评价图数据库性能的主要因素。用户可以使用图数据库直观地显示实体的关联关系,对于处理高度互连的数据不可或缺。诸如电力网络等一系列在现实生活中体现实体之间关系的具有重要意义的数据,对通过图数据库对这些数据进行快速而高效的检索、增删和分析处理。从图数据库中检索数据需要SQL之外的查询语言,SQL是为了处理关系系统中的数据而设计的,因此无法高效地处理遍历图。截至2019年,还没有出现一个像SQL那样通用的图查询语言。不过,已经有一些标准化的工作为各大供应商提供了查询语言。其中,SPARQL(SPARQLProtocolandRDFQueryLanguage)语言使用三元组表达用户查询,支持多种聚合函数,被大多数供应商所支持。时至今日,图数据库在广泛的领域中得到了应用。诸如Google搜索引擎中的自动联想推荐、电商的交易网络中的欺诈检测、社交网络中的模式发现等等,都需要图数据库的支持。目前,大多数图数据库在处理百万级别到千万级别的边数的数据集时能达到一定的性能,但是,当数据规模扩大到亿级甚至十亿级时,其性能会出现显著的降低。而且不是线性的降低,而是几何级的降低。这一方面是由于这些图数据库内部采取的策略和算法不适用于如此巨大的数据规模,另一方面也由于大部分图数据完全运行在CPU上,采用串行的算法进行处理,并且需要从磁盘等慢速的存储单元读取数据,无法享受到目前新硬件发展所带来的优势。图数据库性能瓶颈,很大程度上在于,图数据规模巨大时,进行图上的Join操作需要耗费大量的时间和计算资源。为了实现图上的join操作,目前最常用的方法是,遍历其中一个集合,读取每一个节点的邻接列表,然后将其与另一个集合求交集,最后将结果加入结果集中。这种做法主要的缺点是,遍历图中点的顺序对计算性能的影响很大,因此,需要谨慎选取点的遍历顺序。其次,这种操作会带来大量的存储单元访问,严重影响处理的速度。目前,绝大部分图数据库在小规模数据集上的性能已经达到了一定的高度,然而,其中的某些策略在数据集规模扩大以后将会失效,甚至阻碍系统的高效执行。本专利技术旨在利用FPGA硬件平台,解决在大规模数据集上对数据进行快速的查询的问题。
技术实现思路
为了克服上述现有技术的不足,本专利技术提供一种基于FPGA-CPU异构环境用于图数据库的大规模数据查询加速方法及其在FPGA上的实现装置,解决在大规模数据集上对数据进行快速的查询的问题,加速图数据库查询,可以广泛应用于基于图数据处理的应用
本专利技术提供的技术方案是:一种基于FPGA-CPU异构环境的大规模数据查询加速装置,包括:大规模数据库模块、数据预处理器、CPU端控制单元、FPGA端(包括FPGA端存储单元和FPGA端计算单元)。大规模数据库模块用于存储以RDF(资源描述框架,ResourceDescriptionFramework)格式表示的大规模图数据集,如LUBM(theLehighUniversityBenchmark)数据集。其节点数量在千万级及以上,边数量在亿级以上。大规模数据库模块包括图数据库数据及数据查询支持模块。RDF由节点和边组成,节点表示实体/资源、属性,边则表示了实体和实体之间的关系以及实体和属性的关系。通常来说,图中一条边的源点被称为主语,边上的标签被称为谓词,被指向的节点成为宾语。数据预处理器用于对数据进行预处理,为数据检索查询做准备。预处理包括:将图数据库的连接操作(join操作)所需的部分数据抽取出来;根据CSR(稀疏行压缩,CompressedSparseRow)格式的规范生成访存友好的数据索引。同时,针对硬件环境中位操作性能最佳的特点,采取自行设计的块编号与二进制段方法(BID&BS,BlockID&BitStride方法)对邻接列表数据和候选点表数据进行压缩存储。具体步骤为,对一个数组,假如其中的元素都是正整数,而且有一个固定的范围,可以使用一个二进制串来表示这个数组,其中第i位为0表示i这个数没有出现在数组中,第i位为1表示i这个数出现在了数组中。这种表示方法的数组取交集时只需要对两个二进制串按位求与操作即可,非常适合FPGA端硬件实现。但是这样的二进制串往往很稀疏,浪费大量存储空间。于是,可以将二进制串划分为若干个长度一致的块(Block),并用同样多的位表示每一个块的唯一的编号(BlockID)。其中,如果这个块内的二进制串全部都是0,则可以直接丢弃不要。在取交集时,首先匹配块编号,对块编号匹配的两个块,按位取交,即可直接得到这一部分的交集的结果。此方法使得在使用本专利技术提供的基于FPGA-CPU异构环境的大规模数据查询加速装置进行查询加速时无需进行数据解压,也能够正常进行交集计算,从而大大提高查询性能,提高基于图数据查询的图计算算法的效率;CPU端控制单元用于调用数据预处理器对数据进行一定的预处理,具体为,调用数据预处理器,得到预处理器压缩和转化之后的适合FPGA端计算单元读取的图数据。然后将FPGA端计算单元所需的数据传递给FPGA端计算单元,并使其更便于FPGA端计算单元读取。同时,CPU控制单元还接受FPGA端计算单元返回的结果,每一个结果的形式是由多个节点ID和一个BID&BS块构成的一个元组,CPU端控制单元同时控制多个FPGA端计算单元,并且这些FPGA端计算单元是有序的,第一个FPGA端计算单元处理两个表的连接操作,第二个FPGA端计算单元处理三个表的连接操作,以此类推。CPU端控制单元会将每个FPGA端计算单元输出的数据转化成最终连接操作的结果或下一步FPGA端计算单元的输入,具体转化方法是一致的,假设结果中有N个元素,对在元组中前N-1个元素,它们是被映射到某个CSR格式(结构)的偏移量数组上的节点ID,输出为最终结果时需要将它们映射回在图数据库中的编号,而第N个元素是一个BID&BS块,需要将它解压,得到的每一个编号都能够与前面N-1个元素构成一条最终结果。换而言之,最终结果的形式是一个长度为N,元素为正整数的元组,每个元组表示符合要求的一个连接操作的编号组合;FPGA端计算单元用于在FPGA硬件上执行多个表连接(join)的算法,算法实现在FPGA的逻辑单元上,并且针对硬件运行的特点进行了优化。具体的优化策略为:首先,通过分割数据,放到不同的DRAM(D本文档来自技高网
...

【技术保护点】
1.一种基于FPGA-CPU异构环境的大规模数据查询加速方法,将待查询处理的大规模数据表示为资源描述框架RDF格式的大规模图数据集,基于FPGA-CPU异构环境实现查询加速;包括如下步骤:/n1)将待查询处理的大规模数据识别为多个要素,包括:实体、实体属性及关系;将实体相应表示为RDF格式中的节点,实体固有的属性表示为RDF格式中的节点的属性,实体和实体之间的关系以及实体和属性的关系表示为RDF格式中的边;RDF格式数据由节点和边组成,图中一条边的源点为主语,边上的标签为谓词,被指向的节点为宾语;/n对以RDF格式表示的大规模数据进行数据预处理,执行如下操作:/n11)将大规模图数据集中的图数据按照谓词划分成多个子图,将每个子图数据的邻接矩阵使用优化存储消耗后的CSR格式进行存储;所述邻接矩阵为将所有节点的邻接列表按一定顺序排列构成的二维列表;邻接列表为图中任意节点链接的所有节点的列表;图采用CSR存储格式或CSC存储格式;/n12)对每个CSR格式图数据中的邻接列表,使用块编号与二进制段方法BID&BS方法进行压缩,得到压缩后的CSR格式数据;执行如下操作:/n121)用二进制串来表示正整数数组,所述正整数数组为CSR中的邻接表,串中的元素取值为0或1,数组中元素是节点的编号;/n122)将二进制串划分为多个长度一致的块,每一个块设置同一长度的唯一的编号Block ID;当块内的二进制串均为0,则直接丢弃;/n123)当对两个由多个块构成的集合取交集时,首先匹配块编号,对块编号一致的两个块,按位取交,得到交集结果;/n2)将预处理得到的CSR格式数据写入FPGA端的存储单元上,得到不同谓词对应的子图被压缩成CSR格式的邻接列表在FPGA端存储单元的物理地址;/n3)当用户进行查询时,执行如下操作:/n31)对用户查询进行解析后,根据图中数据,得到候选点表数据;/n32)通过CPU控制单元将候选点表数据及FPGA端计算单元在运算过程中的控制信号传输给FPGA端的计算单元进行表连接计算计算并优化;执行如下操作:/n321)通过分割数据,将数据放到不同的动态随机存取存储器DRAM内存单元端口,提高FPGA硬件上对内存单元的并行访问效率;/n322)利用FPGA硬件上的高速片上随机存取存储器BRAM单元,设置数据缓冲区;/n323)基于FPGA硬件构建数据读取、计算、写回的三级流水线,在每个计算和读取操作中设置并行处理模块;/n33)FPGA端的计算单元完成计算以后,将结果传回给CPU端控制单元,CPU端生成编号结果,再转化成对应的字符串结果,即为输出给用户的查询结果。/n...

【技术特征摘要】
1.一种基于FPGA-CPU异构环境的大规模数据查询加速方法,将待查询处理的大规模数据表示为资源描述框架RDF格式的大规模图数据集,基于FPGA-CPU异构环境实现查询加速;包括如下步骤:
1)将待查询处理的大规模数据识别为多个要素,包括:实体、实体属性及关系;将实体相应表示为RDF格式中的节点,实体固有的属性表示为RDF格式中的节点的属性,实体和实体之间的关系以及实体和属性的关系表示为RDF格式中的边;RDF格式数据由节点和边组成,图中一条边的源点为主语,边上的标签为谓词,被指向的节点为宾语;
对以RDF格式表示的大规模数据进行数据预处理,执行如下操作:
11)将大规模图数据集中的图数据按照谓词划分成多个子图,将每个子图数据的邻接矩阵使用优化存储消耗后的CSR格式进行存储;所述邻接矩阵为将所有节点的邻接列表按一定顺序排列构成的二维列表;邻接列表为图中任意节点链接的所有节点的列表;图采用CSR存储格式或CSC存储格式;
12)对每个CSR格式图数据中的邻接列表,使用块编号与二进制段方法BID&BS方法进行压缩,得到压缩后的CSR格式数据;执行如下操作:
121)用二进制串来表示正整数数组,所述正整数数组为CSR中的邻接表,串中的元素取值为0或1,数组中元素是节点的编号;
122)将二进制串划分为多个长度一致的块,每一个块设置同一长度的唯一的编号BlockID;当块内的二进制串均为0,则直接丢弃;
123)当对两个由多个块构成的集合取交集时,首先匹配块编号,对块编号一致的两个块,按位取交,得到交集结果;
2)将预处理得到的CSR格式数据写入FPGA端的存储单元上,得到不同谓词对应的子图被压缩成CSR格式的邻接列表在FPGA端存储单元的物理地址;
3)当用户进行查询时,执行如下操作:
31)对用户查询进行解析后,根据图中数据,得到候选点表数据;
32)通过CPU控制单元将候选点表数据及FPGA端计算单元在运算过程中的控制信号传输给FPGA端的计算单元进行表连接计算计算并优化;执行如下操作:
321)通过分割数据,将数据放到不同的动态随机存取存储器DRAM内存单元端口,提高FPGA硬件上对内存单元的并行访问效率;
322)利用FPGA硬件上的高速片上随机存取存储器BRAM单元,设置数据缓冲区;
323)基于FPGA硬件构建数据读取、计算、写回的三级流水线,在每个计算和读取操作中设置并行处理模块;
33)FPGA端的计算单元完成计算以后,将结果传回给CPU端控制单元,CPU端生成编号结果,再转化成对应的字符串结果,即为输出给用户的查询结果。


2.如权利要求1所述的基于FPGA-CPU异构环境的大规模数据查询加速方法,其特征是,步骤31)中,具体对大规模图数据集gStore使用SPARQL查询中各个变量的度数和边上的标签对各个变量可能的取值进行过滤解析,得到所述候选点表数据。


3.如权利要求1所述的基于FPGA-CPU异构环境的大规模数据查询加速方法,其特征是,步骤32)中,控制信号包括控制FPGA端计算单元开始计算的信号、CSR格式数据在FPGA端存储单元上的硬件地址和辅助信息。


4.如权利要求1所述的基于FPGA-CPU异构环境的大规模数据查询加速方法,其特征是,步骤33)具体包括如下操作:
331)FPGA端计算单元有序处理表的连接操作;CPU控制单元接受FPGA端计算单元返回的结果,返回结果的形式由多个节点ID和一个BID&BS块构成的一个元组;CPU端控制单元同时控制多个FPGA端计算单元;
332)CPU端控制单元将每个FPGA端计算单元的结果转化成连接操作的最...

【专利技术属性】
技术研发人员:邹磊林殷年苏勋斌
申请(专利权)人:北京大学
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1