浅谈面向云计算数据中心的新型解压缩方法
2020-05-19赵雷杨怀朋
赵雷 杨怀朋
目的:解决云计算时代,海量数据传输占用超大的带宽,严重影响了云计算数据中心中网络传输性能的相关问题。
方法:采用一种面向CPU+FPGA异构加速平台的解压缩方法,通过采用OpenCL高级语言完成解压缩算法的描述,然后通过Altera SDK for OpenCL高层次综合工具实现解压缩算法到FPGA硬件执行比特流的自动化映射。
结果:本发明采用FPGA硬件平台执行解压缩算法核心模块,能够通过并行流水的优化方式提高算法的并行度,从而改善算法执行时的吞吐率性能。与通用的RTL硬件描述语言实现方式相比,本发明采用OpenCL语言进行FPGA硬件比特流的生成,能够有效改善算法实现效率,减少算法实现的开发周期。
结论:设计合理的OpenCL描述的gzip解压缩算法描述,使得可以映射生成更高效的FPGA硬件电路结构,进而提升FPGA对解压缩算法的硬件加速效果。
一、技术背景介绍
云计算是计算机时代又一次新的变革,诞生出很多前沿的技术和崭新的模式,逐渐应用到社会的各个行业,如政府、教育、医疗、金融、企业等领域都在从传统的部署模式向云计算模式转型,云计算模式在带来便利的同时也使得用户对云计算体验有了更高的要求,如云计算时代文件的信息量与日俱增,文件的传输过程对性能的要求越来越高,就需要有新的技术来实现解压缩的整个过程。本文主要介绍云计算数据中心技术领域中一种面向CPU+FPGA异构加速平台的解压缩方法。
在云计算时代,海量数据传输需要占用超大的带宽,严重影响了云计算数据中心中网络传输的性能。
基于上述问题,本发明提出了一种面向CPU+FPGA异构加速平台的解压缩方法,通过采用OpenCL高级语言完成解压缩算法的描述,然后通过Altera SDK for OpenCL高层次综合工具实现解压缩算法到FPGA硬件执行比特流的自动化映射。在缩短产品研发周期的同时,提高FPGA对解压缩算法的硬件加速效果。
二、技术手段的详细阐述
(一)技术详解
本文章提出了一种面向CPU+FPGA异构加速平台的解压缩方法。该方法采用OpenCL高级语言进行gzip解压缩算法的描述,使用通用处理器CPU作为主机端运行主程序,FPGA作为协处理器进行解压缩算法的硬件加速单元,通过Altera SDK for OpenCL高层次综合工具完成高级语言描述的解压缩算法到FPGA硬件执行比特流的自动化映射,完成对gzip解压缩算法的异构加速系统的自动部署过程。
本方法用FPGA作为协处理器,可以有效的提升解壓缩核心算法的执行性能,同时该实现方式可以有效缩短将解压缩算法部署到基于FPGA的异构加速平台时的时间,从而提高产品研发周期。
(二)技术实现的具体操作方式
面向CPU+FPGA异构加速平台的解压缩方法实现具体操作过程如下:
首先,采用OpenCL高级语言完成gzip解压缩算法的描述,分别生成在通用处理器CPU上运行的主机端程序,以及面向FPGA平台的Kernel程序。然后,采用GCC编译器对主机端程序进行编译,生成可在通用处理器CPU上执行的可执行程序文件;采用Altera SDK for OpenCL(AOC)高层次综合工具对Kernel程序文件进行编译综合,生成可在FPGA上运行的AOCX文件。最后,在通用处理器CPU上运行主机端程序,调用FPGA上的解压缩核心算法硬件电路进行硬件加速,CPU与FPGA之间采用PCI-E接口连接,进行数据通信,采用FPGA开发板上的DDR3内存作为数据缓存Buffer。
主机端程序实现时主要包括以下几个步骤:
首先是创建主机端与FPGA端进行数据通信的缓存,将该缓存存放在FPGA开发板的DDR内存上;
把需要解压缩的数据传输到步骤101创建的缓存中;
设置FPGA端运行时所需要的参数信息;
控制启动FPGA端的gzip解压缩算法;
最后等待FPGA端的解压缩算法运行结束后,从FPGA端DDR内存上的缓存中,将解压缩后的数据读取到主机端,从而完成解压缩过程。
运用OpenCL语言描述的gzip解压缩算法Kernel程序主要包括以下步骤:
(1)接收到主机端的启动信号后,逐个字节读取缓存中的待解压缩数据;
(2)对于每个字节,根据缓存中的huffman码表进行huffman解压缩;
(3)将完成huffman解压缩的数据再次存放到缓存中;
(4)逐个字节读取huffman解压缩后的数据缓存,其中,第一个字节是标记位,在后续字节读取中,如果遇到标记位,则进入步骤(5),否则进入步骤(6);
(5)遇到标记位后,读取后续字节,得到重复字节长度和偏移量,根据重复字节长度和偏移量进行解压缩,将解压缩后的数据写入DDR上的缓存中;
(6)不是标记位时,直接将读取的数据作为解压缩后的数据写入DDR缓存中;
(7)重复上述步骤,直至缓存中待解压缩数据处理结束,向主机端返回完成信号。
(三)技术方案带来的有益效果
采用FPGA硬件平台执行解压缩算法核心模块,能够通过并行流水的优化方式提高算法的并行度,从而改善算法执行时的吞吐率性能。与通用的RTL硬件描述语言实现方式相比,本发明采用OpenCL语言进行FPGA硬件比特流的生成,能够有效改善算法实现效率,减少算法实现的开发周期。
(四)技术关键点
1.本发明的主要创新点/发明点
我们这个方法的关键点是:设计合理的OpenCL描述的gzip解压缩算法描述,使得可以映射生成更高效的FPGA硬件电路结构,进而提升FPGA对解压缩算法的硬件加速效果。
2.创新点如下:
(1)一种面向CPU+FPGA异构加速平台的解压缩方法。其特征在于:通过OpenCL高级描述语言进行gzip解压缩算法的描述,采用Altera SDK for OpenCL高层次综合工具进行面向FPGA的硬件比特流生成,实现FPGA对gzip解压缩算法的硬件加速。这样不仅可以有效的提高产品的研发周期,同时可以提高gzip解压缩算法的执行性能。
(2)根据(1)所描述的面向CPU+FPGA异构加速平台的解压缩方法,其另一特征在于:采用CPU作为主机端进行硬件加速过程的控制,主要包括如下几个步骤:
要建立主机端与FPGA端进行数据通信的缓存,该缓存要在FPGA开发板的DDR内存上进行存放;
将需要解压缩的数据传输到步骤101创建的缓存中;
设置FPGA端运行时所需要的参数信息;
控制启动FPGA端的gzip解压缩算法;
最后需要等到FPGA端的解压缩算法运行结束后,将FPGA端DDR内存上的缓存中解压缩后的数据读取到主机端,从而完成解压缩过程。
作者单位:山东道普测评技术有限公司