哈希混合加速系统及应用其进行哈希连接的方法与流程

文档序号:14728973发布日期:2018-06-19 15:53阅读:337来源:国知局

本公开涉及计算机系统领域,进一步涉及一种哈希混合加速系统,以及应用哈希混合加速系统进行哈希连接的方法。



背景技术:

在设计现代计算机系统时首先要考虑的因素是能耗。为了提高能效,如现场可编程门阵列(FPGA),图形处理器(GPU)和定制加速器一类的硬件加速器已被广泛应用于工业领域。随着靠近数据的处理技术的出现,将硬件加速器集成到动态随机存取存储器(DRAM)堆栈中以降低数据移动的成本成为一种新的系统设计思路。其基本思想是利用3D堆叠技术,将一些包含加速器的逻辑die和多个DRAM die垂直集成到一个芯片中。然而,由于3D堆叠DRAM的面积、功耗、散热和制造等方面的限制,能够集成到DRAM中的加速器的数量和类型是有限的。因此,给定一个加速的目标应用程序,确定其中哪些部分最适合在DRAM中加速是至关重要的。



技术实现要素:

有鉴于此,本公开的目的在于提供一种哈希混合加速系统,以及应用哈希混合加速系统进行哈希连接的方法,以解决以上所述的至少部分技术问题。

本公开的一方面,提供一种哈希混合加速系统,包括:哈希分区加速器,配置为集成于内存上,用于加速处理哈希连接分区(partition)阶段,该哈希分区加速器包括:哈希单元(hash unit),用于从内存中读取分块的关系表中多个元组,然后并行的处理所述多个元组的键,产生多个哈希索引;直方图单元(histogram unit),用于根据所述多个哈希索引,并行的更新存储在该直方图单元中直方图数据的多个副本,并更新后的各副本整合为数据一致性的直方图数据表单;混排单元(Shuffle unit),用于依据所述多个哈希索引,确定各元组存储于目标地址数组中的位置,将关系表中的元组复制到目标数组,实现对关系表的划分;主机处理器,用于处理哈希连接的构造(build)阶段和探测(probe)阶段。

在进一步的实施方案中,还包括总线或者插入器,所述哈希分区加速器与主机处理器通过所述总线或者插入器与所述内存通信。

在进一步的实施方案中,所述内存为3D堆叠DRAM,该哈希分区加速器配置为集成到3D堆叠DRAM的逻辑层上。

在进一步的实施方案中,各3D堆叠DRAM中所述vault的数量为4-16,DRAM层为4-8层,所述哈希分区加速器中哈希单元、直方图单元和混排单元的并行度为16。

在进一步的实施方案中,所述哈希单元包括多个并行处理单元及与所述并行处理单元相同数量的多路选择器:所述并行处理单元用于处理各元组的键,产生各元组对应的哈希索引;所述多路选择器连接于各并行处理单元后端,用于选择哈希索引的输出为直方图单元或者混排单元。

在进一步的实施方案中,所述直方图单元包括多个并行的增量单元和规约单元:所述增量单元分别用于根据所述多个哈希索,并行的更新各直方图数据的副本;所述规约单元用于将各自第一本地存储器的更新后表单整合为数据一致性的表单。

在进一步的实施方案中,所述混排单元包括:多个并行的地址读取子单元:根据各所述哈希索引从目标地址数组中读取目标地址;冲突处理(DECONF)子单元,依据多个目标地址,对有冲突的目标地址,产生基于原始目标地址的偏移,同时也产生相同目标地址的计数值;分散(SCATTER)子单元,用于根据所述偏移和原始目标地址将元组移动到正确的位置,如无冲突则将元组移动至无偏移的目标地址;更新(UPDATE)子单元,根据所述计数值更新目标地址。

在进一步的实施方案中,所述冲突处理单元单元包括复用XNOR网络,输入为冲突的目标地址,输出分别为标地址的偏移和计数值。

在进一步的实施方案中,各所述地址读取子单元包括第二本地存储器,用于存储目标地址。

在进一步的实施方案中,所述主机处理器包括SIMD单元或者GPU,该SIMD单元或者GPU用于处理哈希连接的构造阶段和探测阶段;优选的,所述主机处理器包括SIMD单元。

根据本公开的另一方面,提供一种应用以上任一所述系统进行哈希连接的方法,包括:

进行分区操作,包括:应用哈希单元从内存中读取分块的关系表中多个元组,然后并行的处理所述多个元组的键,产生多个哈希索引;应用直方图单元根据所述多个哈希索引,并行的更新存储在该直方图单元中直方图数据的多个副本,并更新后的各副本整合为数据一致性的表单;应用混排单元依据所述多个哈希索引,确定各元组存储于目标地址数组中的位置,将关系表中的元组复制到目标数组,实现对关系表的划分;

进行构造操作,应用主机处理器使用较小的关系表构建内存中的哈希表;

进行探测操作,应用主机处理器在较大的关系表上对哈希表进行核对以完成连接。

本公开混合加速系统,以减少数据移动为出发点,用于加速数据库和大数据系统中的基本操作hash joins。内存端的加速器用于加速数据移动受限的执行阶段,而处理器端SIMD加速单元则用于加速数据移动开销较低成本的执行阶段。与英特尔的Haswell处理器和Xeon Phi相比,本公开的混合加速系统能效大幅提高能效。

附图说明

图1是本公开实施例的哈希分区加速器在3D堆叠DRAM所处位置示意图。

图2是本公开实施例的哈希分区加速器架构示意图。

图3是本公开实施例的DECONF单元中XNOR网络示意图。

图4是本公开实施例的3D堆叠DRAM配置方式示意图。

图5是本公开实施例的不同设计下的混排操作的能量-延迟积示意图。

图6是本公开实施例的混合加速系统示意图。

图7是本公开实施例Intel Haswell和Xeon Phi处理器在本公开实施例哈希分区加速器上操作的对比示意图。

具体实施方式

为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开作进一步的详细说明。在此说明所附附图简化过且做为例示用。附图中所示的组件数量、形状及尺寸可依据实际情况而进行修改,且组件的配置可能更为复杂。本公开中也可进行其他方面的实践或应用,且不偏离本发明所定义的精神及范畴的条件下,可进行各种变化以及调整。

根据本公开的基本构思,提出一种针对哈希分区加速器以及哈希连接(hash joins,也叫散列连接)的混合加速系统,在CPU和DRAM之间进行合适的加速任务划分。该系统包含内存端定制的加速器(也即哈希分区加速器)和主机处理器(例如包含SIMD加速器),这个系统能提高哈希连接的整体能效。

上述哈希分区加速器和混合加速系统的构思基于本发明人的如下研究:对于哈希连接算法(例如optimized version ofradix join algorithm(PRO))进行了详细的性能分析和能耗分析,该算法针对现代多核系统进行了特殊的优化,上述算法主要包含分区(partition)、构造(build)和探测(probe)三个主要执行阶段,分区阶段可以进一步分为四个阶段:直方图化(Local histogram),前缀计算(prefix sum),输出地址(output addressing),以及数据混排(data shuffling)。本公开发明人分析发现,哈希连接本质上是内存受限的,通过进行能耗分析,在分区阶段,总能量的50%以上被用于数据移动和流水线阻塞,这可以通过内存端加速得到显著缓解。在构造和探测阶段,只有大约15%的能量被用于数据移动和流水线阻塞,这仍然可以通过现有的CPU端加速器(如SIMD单元)加速。并且分区阶段中,直方图化和数据混排阶段占总执行时间的99%以上。原因在于这两个阶段有高代价的非规则内存访问。因此,本公开中主要考虑对这个两个阶段采用靠近数据的处理技术。图1是本公开实施例的哈希分区加速器在内存(例如3D堆叠DRAM)所处位置示意图。结合图2所示,根据本公开实施例的一方面,提供一种哈希分区加速器,配置为集成于内存上,用于加速处理哈希连接分区(partition)阶段,该哈希分区加速器包括:

哈希单元(a)(hash unit),用于从内存中读取分块的关系表中多个元组,然后并行的处理所述多个元组的键,产生多个哈希索引;

直方图单元(b)(histogram unit),用于根据所述多个哈希索引,并行的更新存储在该直方图单元中直方图数据的多个副本,并更新后的各副本整合为数据一致性的表单;

混排单元(c)(Shuffle unit),用于依据所述多个哈希索引,确定各元组存储于目标地址数组中的位置,将关系表中的元组复制到目标数组,实现对关系表的划分。

在一些实施例中,所述内存为3D堆叠DRAM,该哈希分区加速器配置为集成到3D堆叠DRAM的逻辑层上。垂直3D die堆叠技术允许将多个存储器die直接叠加在处理器die上,从而提高内存带宽。这些die与短,快速,密集的通过硅片通道(TSV)集成在一起,提供了非常高的内部带宽。

对于哈希单元(a),其可以从内存中读取分块的关系表中多个元组,然后并行的处理所述多个元组的键,产生多个哈希索引。该阶段,哈希单元(a)以流式访问的方式从内存中读取关系表中的多个元组,然后并行的处理它们的键,以位移或者掩码的方式来产生哈希索引。

在一些实施例中,所述哈希单元(a)包括多个并行处理单元,分别用于处理各元组的键,产生各元组对应的哈希索引。通过并行处理,可以提高哈希连接的效率,而且该种并行处理可以通过内存端加速得以实现。

在一些实施例中,哈希单元还包括与所述并行处理单元相同数量的多路选择器,连接于各并行处理单元后端,用于选择哈希索引的输出为直方图单元或者混排单元。由于哈希单元(a)会被直方图单元(b)和混排单元(c)复用,所以加入了多路选择器11(MUX)用于决定哈希索引的输出目标。

对于直方图单元(b),其可以扫描分块的关系表,建立一个直方图数组。该单元主要实现功能在于根据哈希索引值并行更新直方图数据,可以包括两个阶段,即并行增量(INC)阶段和最后的归约(RED)阶段。在并行阶段,哈希单元(a)产生的哈希索引用于更新对应的各副本中当前的直方图数据值。在处理完从内存中读取的所有键后,最后的规约阶段进行所有LM的整合,以获得一个保持数据一致性的完整的表单。

在一些实施例中,所述直方图单元包括并行增量单元21,分别用于根据所述多个哈希索引,并行的更新各直方图数据的副本。进一步的,所述直方图单元(b)可以包括与多个第一本地存储器22,用于存储更新前和更新后的直方图数据的各个副本;优选的,所述副本数量为16,相对应的第一本地存储器22数量为16。

在一些实施例中,所述直方图单元还包括规约单元23,用于将各自第一本地存储器22的更新后表单整合为数据一致性的表单。该规约单元23设置于并行增量单元21和第一本地存储器22的后端,用于在处理完所有键后,进行所有第一本地存储存储器22中数据的整合,以获得一个保持数据一致性的完整的直方图数据表单。

对于混排单元(c)可以用于将分块的关系表中多个元组同时写入到各自在目标数组中的目标地址,然后更新目标数组中的目标地址。如果多个处理路径中具有相同目标地址的元组,需要处理目标地址冲突问题。

在一些实施中,该混排单元(c)可以包括多个并行的地址读取子单元31,其根据各所述哈希索引从目标地址数组中读取目标地址;冲突处理(DECONF)子单元32,依据多个目标地址,对有冲突的目标地址,产生基于原始目标地址的偏移,同时也产生相同目标地址的计数值;分散(SCATTER)子单元33,用于根据所述偏移和原始目标地址将元组移动到正确的位置,如无冲突则将元组移动至无偏移的目标地址;以及更新(UPDATE)子单元,根据所述计数值更新目标地址。

在一些实施例中,,所述冲突处理子单元32包括复用XNOR网络,该网络输入为冲突的目标地址,输出分别为标地址的偏移和计数值。如图3所示,是一个典型的二进制网络的示例,四个目标地址的数值d0,d1,d2和d3从dst数组中并行的读出。为了计算d0的总数量,例如count(d0),首先d0分别与d1,d2和d3进行同或操作,然后所有同或的数值进行求和。同样的,count(d1)通过加xnor(d1,d0),xnor(d1,d2)和xnor(d1,d3)计算得出。计算目标地址偏移也可以通过复用XNOR网络来实现。例如,offset(d1)是xnor(d1,d2)和xnor(d1,d3)的求和。

上述混排单元(c)的四个子单元对应于其实施的四个具体阶段,分别可以为如下阶段:

第一阶段,多个地址读取子单元31根据哈希索引从目标数组中并行的多个目标地址;各所述地址读取子单元31包括第二本地存储器,用于存储目标地址。

第二阶段,冲突处理子单元32检测多个路径之间有冲突的目标地址,产生基于原始目标地址的偏移,同时也产生相同目标地址的计数值来更新目标数组。第三阶段,分散子单元33将元组移动到正确的位置,该位置根据第二阶段的偏移和第一阶段的存储在目标数组的原始的目标地址计算出;

第四阶段,更新子单元34根据DECONF阶段产生的计数值更新目标地址。

在一些实施中,哈希分区加速器还包括编程接口,外部可通过该编程接口对直方图单元和混排单元进行操作。该编程接口可以是在现有技术已知的编程库上进行搭建。所使用的库函数包括内存管理库以及加速器控制库。其中的加速器控制库通过扩展,能够控制直方图单元和混排单元的操作。因此,本领域技术人员可以很容易地在程序中使用哈希分区加速器。本发明实施例的编程接口本质上是一个顺序编程模型,所以可以减轻异构系统的编程负担。

请继续看考图1和图2,本发明实施例还提供一种含哈希分区加速器和内存组合装置,包括:

内存,包括数据存储区和逻辑区;

哈希分区加速器,集成于所述内存的逻辑区上,用于加速处理哈希连接分区(partition)阶段。

对于该哈希分区加速器,可参照上述实施例中哈希分区加速器进行设计,在此不予赘述。在此主要介绍两者配置关系,以及为提高整体的处理效率以及降低整体功耗相应的设计方式。

在一些实施例中,内存可以为3D堆叠DRAM,该哈希分区加速器配置为集成到3D堆叠DRAM的逻辑层上。对于每个3D DRAM堆,都可集成多个该加速器,用于加速分区阶段。每个3D堆叠DRAM包含一个或者多个vault,并且每个vault都由逻辑层的vault控制器访问,可以将一个哈希分区加速器通过半导体工艺附加到vault controller上。将加速器集成在DRAM中的好处在于从各方面减少partition阶段的能耗(减少数据移动的能耗、流水线阻塞的能耗、计算的能耗),从而减少总体能耗。

如图2所示,每个哈希分区加速器主要包括部分:哈希单元(hash unit),直方图单元(histogram unit)和混排单元(shuffle unit),这些单元通过vault控制器访问DRAM层(vault控制器再通过TSV访问上层的DRAM层),并且与逻辑层的开关电路相连。所述逻辑层包括vault控制电路,所述哈希单元、直方图单元和混排单元均电性连接所述vault控制电路,通过该控制电路访问DRAM层。

在一些实施例中,所述直方图单元中的并行度可以为16。具体分析如下:

在哈希分区加速器的设计过程中,存在着诸如并行度和频率上的多种设计选择,3D堆叠DRAM也有不同的配置。图4列出了三种可能的3D堆叠DRAM配置,即高配置(HI),中配置(MD)和低配置(LO)。内部带宽范围在860GB/s到360GB/s之间。通过研究每个vault的并行度(1到512),操作频率(0.4GHz到2.0GHz)和DRAM配置组成的设计空间,以寻找在性能和功耗之间的平衡。

对于直方图单元的操作,以能量-延迟积(EDP)为标准,在所有的DRAM配置下,在并行度是32左右时,EDP达到了最小值。举例来说,针对HI配置,在1.2GHz下,最优化的EDP需要并行度64的配置。一般来说,相比HI配置,MD和LO DRAM配置具有更好的能效(每个vault),特别是在像64之类较大的并行度的情况下。图5为不同设计下的混排操作的能量-延迟积示意图。其显示每个vault的混排操作能量-延迟积(EDP)和面积。达到最佳EDP的并行度是在32到128之间。例如,在2GHz下,并行度为32的EDP是并行度为512的EDP的1.77倍。在所有的这些配置中,获得最佳EDP的配置为并行度=64,频率=1.2GHz和DRAM配置=LO。最优配置下,每个vault的面积为0.18mm2。

综合直方图操作和混排操作,当输入的大小是128M时,HPA的最优设计决策是并行度=16,频率=2.0GHz,DRAM配置=HI。此外,相应的面积只有1.78mm2,加速器的功耗(不含DRAM功耗)只有7.52w。

如图6所示,根据本发明实施例的另一方面,还提供一种哈希混合加速系统,包括:

哈希分区加速器,配置为集成于内存上,用于加速处理哈希连接分区(partition)阶段,该哈希分区加速器包括:

哈希单元(hash unit),用于从内存中读取分块的关系表中多个元组,然后并行的处理所述多个元组的键,产生多个哈希索引;

直方图单元(histogram unit),用于根据所述多个哈希索引,并行的更新存储在该直方图单元中直方图数据的多个副本,并更新后的各副本整合为数据一致性的直方图数据表单;

混排单元(Shuffle unit),用于依据所述多个哈希索引,确定各元组存储于目标地址数组中的位置,将关系表中的元组复制到目标数组,实现对关系表的划分;

主机处理器,用于处理哈希连接的构造(build)阶段和探测(probe)阶段。

主机处理器可以通过高速连接(用于传统的HMC系统中)或者插入器与3D DRAM堆进行通信。主机处理器可以通过引入加速器增强自身性能,从而提高大多数应用的性能。在混合加速系统中,主机处理器主要侧重于加速构造和探测阶段。

在进一步的实施方案中,哈希混合加速系统还包括总线或者插入器所述哈希分区加速器与主机处理器通过所述总线或者插入器与所述内存通信。

在进一步的实施方案中,所述内存为3D堆叠DRAM,该哈希分区加速器配置为集成到3D堆叠DRAM的逻辑层上。

对哈希分区加速器与3D堆叠DRAM之间的设置关系,以及哈希分区加速器的具体设置,可参照以上所述的实施例进行,在此不予赘述。此处主要介绍主机处理器端以及描述主机处理器与哈希分区加速器联系进行哈希联系操作的方法。整个系统配合能提高哈希连接的整体能效。

在一些实施例中,所述主机处理器包括SIMD单元、定制的加速器或GPU等,用于处理哈希连接的构造阶段和探测阶段;优选的,所述主机处理器包括SIMD单元。

本发明实施例还提供一种应用以上所述系统进行哈希连接的方法,包括:

进行分区操作,包括:应用哈希单元从内存中读取分块的关系表中多个元组,然后并行的处理所述多个元组的键,产生多个哈希索引;应用直方图单元根据所述多个哈希索引,并行的更新存储在该直方图单元中直方图数据的多个副本,并更新后的各副本整合为数据一致性的表单;应用混排单元依据所述多个哈希索引,确定各元组存储于目标地址数组中的位置,将关系表中的元组复制到目标数组,实现对关系表的划分;

进行构造操作,应用主机处理器使用较小的关系表构建内存中的哈希表;

进行探测操作,应用主机处理器在较大的关系表上对哈希表进行核对以完成连接。

如图7所示,通过比较HPA与基准平台的性能、能效和EDP。平均而言,与Intel Haswell处理器相比,哈希分区加速器的性能、功耗和EDP分别提升了30、90和2725倍。与Xeon Phi处理器相比,EDP提升甚至超过了6000倍。性能和能效的显著提高主要来源于定制加速器和由3D堆叠的DRAM提供的高带宽。

本公开实施例的混合加速系统不需要额外的芯片面积,因为哈希分区加速器可以很容易地放置到现有的3D堆叠DRAM的逻辑层中。在功耗方面,所提出的系统仅需要增加7.52W的功耗,就能相对于Haswell获得6.70和47.52倍的性能和能效提升。

以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1