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