赞
踩
异构计算主要是指使用不同类型计算单元(CPU、GPU等协处理器、DSP、ASIC、FPGA等),不同类型的指令集和不同的体系结构组成的一个混合的系统。
异构计算是一种并行计算的特殊方式 ,采用分布式布局,它能将结构不同、 性能不同的各种机器部件合理的分配安排 ,充分发挥各个硬件的特性来满足计算的需求 ,并且使得代码或者代码段所支配的资源更加合理的使用,以达到性能最大化的目的。
异构就是将CPU、图形处理器(Graphics Processing Unit, GPU)、专用集成电路(Application Specific Integrated Circuit, ASIC)、数字信号处理器(Digital Signal Processing, DSP)、现场可编程门阵列(Field Programmable Gate Array, FPGA)、精简指令集计算机(Reduced Instruction Set Computer, RISC)等各种计算单元组合成一个混合的系统,充分发挥各个硬件性来满足计算的需求,并且使得代码或者代码段所支配的资源更加合理的使用,以达到性能最大化的目的。
下图是一个异构计算加速平台的结构,四片FPGA芯片同时放置在一张FPGA板卡上,四片FPGA芯片通过RapidIO互联。
英文全称:Central Processing Unit
中文全称:中央处理器
功能:是一台 PC 的核心(运算核心和控制核心)。
缺点:算力最弱,处理复杂性高的计算时,计算性能不理想;核处理数(最少)
优点:
英文全称:Graphics Processing Unit
中文全称:图形处理器
功能:
传说中的 “显卡”,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器,同时也是显卡的 “心脏”,专为执行复杂的数学和几何计算而设计的。
缺点:管理能力(最弱),功耗(最高)
优点:
英文全称:Field Programmable Gate Array
中文全称:现场可编程门阵列
功能:是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程逻辑器件门电路数有限的缺点
缺点:
英文全称:Digital Signal Processing
中文全称:数字信号处理
功能:DSP 芯片,也称数字信号处理器,是一种特别适合于进行数字信号处理运算的微处理器,其主要应用是实时快速高性能地实现各种数字信号处理算法,而与通用微处理器相比,DSP芯片的其他通用功能相对较弱些。
英文全称:Application Specific Integrated Circuit
中文全称:专用集成电路
功能:在集成电路界 ASIC 被认为是一种为专门目的而设计的集成电路。是指应特定用户要求和特定电子系统的需要而设计、制造的集成电路;ASIC 的特点是面向特定用户的需求,ASIC 在批量生产时与通用集成电路相比具有体积更小、功耗更低、可靠性更高、性能更高、保密性增强、成本降低等优点。
In-memory database(IMDB),即内存数据库,是一种依赖于主存作为数据存储介质的一种数据库管理系统。相比传统的基于磁盘的数据库管理系统,IMDB速度快得多。这取决于CPU能够直接访问IMDB,在I/O路径与延迟方面有了质的飞跃。另外,CPU本身提供的原子操作,内存栅障以及高速缓存冲刷指令可以为IMDB提供简单高效的原子性,一致性服务。
如下图所示,一块 FPGA 芯片由可配置逻辑模块(CLB)、互连结构和本地内存构成,每个 CLB 都包含特定的结构,如:查找表(LUT)、多路复用器、进位链、触发器等。
每个LUT是一个n个输入和一个输出的表,根据n个输入的组合产生一个期望的输出。多个LUT可以通过可配置的互连结构连接在一起,形成一个更复杂的模块。LUT如下图:
除此之外,一块 FPGA 卡上还有 BRAM(Block RAM)来作为本地存储器,存储中间结果的寄存器。最近,FPGA芯片配备了更强大的资源,如内置的CPU核、数字信号处理器(DSP)块、UltraRAM(URAM)、高带宽内存(HBM)、预配置的I/O块和内存接口控制器。
FPGA中的用户定义逻辑通常是使用硬件描述语言(HDL)进行编程:VHDL or Verilog。HDL是电子系统硬件行为描述、结构描述、数据流描述的语言。利用这种语言,数字电路系统的设计可以从顶层到底层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。然后,利用电子设计自动化( EDA )工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。接下去,再用专用集成电路 ASIC 或现场可编程门阵列 FPGA 自动布局布线工具,把网表转换为要实现的具体电路布线结构。
对于计算密集型数据库,cpu是其瓶颈。计算密集型任务的例子包括连接、排序、分组和聚合、压缩等。这类任务一般是 FPGA被用作IO设备,CPU 把任务卸载(offload)给 FPGA 去执行。
图2说明了使用FPGA作为IO连接加速器的体系结构。在这种体系结构中,FPGA通过PCIe等总线连接到CPU,而FPGA和CPU都有自己的内存空间。
当FPGA从CPU接收到任务时,它首先将数据从主机内存(host memory)复制到设备内存(device memory)中。然后,FPGA从内存中获取数据,并在处理完数据后将结果写回设备内存,最后将结果复制回主机内存中。
缺点:需要反复的复制(从主机内存到设备内存),这会导致更长的处理延迟。
FPGA可以直接访问主机内存,CPU和FPGA之间的通信是通过共享内存来实现的。
传统数据库的操作都在纯CPU上进行,计算压力大====>需要更强大的处理器,GPU或者FPGA
FPGAs使用高带宽和低延迟的互连进行连接,并且由于共享内存编程模型而易于编程,这使得FPGAs在数据库加速方面再次具有吸引力。
DRAM带宽改善有限===>新的高带宽内存技术HBM提供了更多的带宽和更低的功耗,这使得FPGA也适用于数据密集型的工作。
尽管还没有一个商业的FPGA加速内存数据库,但大量关于加速数据库操作符或组件的工作正在推动这个方向的进展。FPGA能够加速一些数据库操作符,如解压、聚合、算术、排序、连接等。
解压缩算法广泛应用于数据库中,以节省存储和减少带宽。解压缩器读取由tokens组成的压缩流,将tokens转换为数据,并输出解压缩流。
排序是数据库系统中用于对记录进行排序的一种常用操作。它可以在SQL中和更复杂的查询中使用,以提高性能。大规模排序性能是衡量数据库性能的关键指标。传统的基于cpu的排序算法,不仅算法速度较慢,且抢占cpu系统资源。近年提出了很多基于FPGA的排序算法或系统,充分利用FPGA的并行处理能力,极大的提升算法的速度,解决了传统的基于cpu的排序算法的缺点。
FIFO合并排序器可以将两个预先排序好的数据流进行合并,如图7(a)。FIFO合并排序器的缺点是从小数据流合并到最终排序流需要多次经过合并,数据需要在内存和FPGA之间移动多次,数据传输开销大。
这个问题可以通过级联多个FIFO合并排序器来解决。如图7b所示,FIFO较小的FIFO在早期放置,而较大的FIFO在后期插入。
归并树可以在一次将几个排序的流合并。
上述所有三种排序方法都可以通过制造更强的引擎或部署更多的引擎来充分利用接口带宽。但是,大的排序可能需要多次传递,每次传递都需要访问主机内存。通过这种方式,整个排序的总体吞吐量取决于通过次数和每个通过的吞吐量,或者总体吞吐量不超过带宽除以通过次数的带宽。通过更广泛的合并,合并更多的流,可以减少通过的数量。但是,由于每个输入流都需要缓冲,因此构建一个更广泛的合并树需要大量的分支,这使得设计分支受到了限制。
连接是数据库系统中常用的一种操作,它在特定的约束下将两个或多个表组合成一个复合表。最常见的一个是等连接,它通过一个公共字段组合两个表。在本文的其余部分中,我们将等式连接称为连接。有许多不同的连接算法,包括嵌套循环连接、哈希连接(HJ)和排序-合并连接(SMJ)。在本文中,我们主要关注HJ和SMJ,因为它们的算法复杂度较低,因此对数据库社区更感兴趣
哈希连接是一种用于关系型数据库中的连接算法,只能用于有等连接条件的连接中(on a.b = c.b)。它通常比嵌套循环算法更高效(探测端非常非常小除外),尤其是在没有命中索引的情况下。
简单来说,哈希连接算法就是先把一张小表加载到内存哈希表里,然后遍历大表的数据,逐行去哈希表中匹配符合条件的数据,返回到客户端。
在cpu中,哈希函数很难同时具有很强的鲁棒性和高速性。在FPGA允许在一个电路中实现复杂的代数函数,计算速度比CPU快。
分区哈希连接可以通过将数据划分为小的分区来避免随机访问,这样每个分区的哈希表就可以存储在FPGA内存中。
设计一个基于FPGA的哈希连接算法的关键之一是有一个有效的哈希表结构。一方面,哈希表结构会影响哈希连接引擎的性能。不适当的散列表设计可能会导致停顿,从而降低吞吐量。另一方面,由于FPGA内部有有限数量的分支,为了确保多引擎实例在一个FPGA中可行,哈希表不应该消耗太多的分支。
内存中的数据库应该被设计为支持多种类型的计算元素(CPU、GPU、FPGA)的结构。
- 我们还可以考虑探索使用CPU-GPU-FPGA组合来构建更多异构性的数据库系统。不同的处理器有不同的特性和不同的优点。cpu擅长于复杂的控制和任务调度,GPU擅长在大量数据量的并行性批处理模式下工作,而FPGAs可以通过数据流和管道设计提供高吞吐量和低延迟。将这些处理器集成在一个系统中,并将工作负载分配给最适合的处理器,很可能会带来优势。然而,构建这个系统需要解决一些挑战,包括如何将任务划分为软件和硬件,如何管理系统中的计算资源,以及如何支持不同类型的处理器之间的数据一致性。
In-memory database acceleration on FPGAs: a survey
FPGA: What’s in it for a Database?
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。