论文部分内容阅读
随着大数据时代来临,大量信息需要通过互联网进行传输,占用的网络资源急剧增加,给网络传输带来极大的压力。数据压缩技术能够节约数据存储空间、传输时间和带宽,从而缓解传输压力。无损压缩Gzip是目前最常用的一种压缩工具,被广泛应用在网络资料的下载和数据备份等领域。其中开源代码zlib是Gzip算法最著名的实现版本,但因其算法本身计算量较大,导致压缩的数据吞吐率较低。FPGA在数据处理速度上有着通用处理器无法比拟的巨大优势,但硬件开发通常需要消耗较长周期。为了缩短开发周期,Xilinx公司推出的高级综合工具Vivado-HLS能够将C/C++、System C等高级编程语言描述的算法或行为级直接转换成硬件电路,并进行RTL级仿真验证。相比传统的硬件开发,使用高级综合工具更易于实现设计模块的仿真验证和迭代优化,从而极大缩短硬件开发周期。为解决Gzip压缩吞吐率较低的问题,本文在仔细研究Gzip压缩原理的基础上,根据算法的特点设计了适合硬件实现的流水和并行结构,并且使用Vivado-HLS工具进行实现。本文的主要工作有:1.提出一种多级流水的Gzip压缩设计架构。将压缩过程划分为读取数据、哈希表更新、匹配查找和选择、Huffman编码、Huffman码流打包以及压缩码流输出六个模块,利用并行处理窗口的设计实现数据压缩的并行处理,通过匹配选择消除了并行处理的相关性。另外在模块间建立起多级流水,最终提高Gzip压缩数据吞吐率。2.利用Vivado-HLS工具完成了满足高吞吐率的Gzip数据压缩架构的实现。针对提出的Gzip压缩硬件架构,利用HLS工具分别对压缩子模块进行实现及优化。通过约束ARRAY_PARTITION将数组的存储结构映射为寄存器,约束UNROLL将顺序执行的循环处理过程映射为并行处理,实现并行窗口结构达到缩短处理时延的目的;通过约束PIPELINE和DATAFLOW实现模块之间的多级流水处理结构;最后利用HLS工具对压缩架构进行RTL仿真验证。本文针对Gzip压缩的硬件实现,提出了一种多级流水的并行处理硬件架构,并通过Vivado-HLS工具进行实现。实验结果表明,该架构能够在227MHz的频率下,当并行处理窗口大小为16时获得3.46GB/s的吞吐率,相比目前zlib提供的软件实现的吞吐率提高了10.4倍。另外本文提供的硬件加速设计结构具备规模可扩充性,其中并行窗口的大小与资源规模和吞吐率成比例增长。本文所提出的Gzip压缩的架构具备数据吞吐率高,可适应不同规模的FPGA进行实现。