关键词:
无损压缩
Zstandard
硬件设计
UVM验证
摘要:
计算机技术和互联网技术的快速发展,使许多应用领域产生和存储的数据不断增多,数据压缩已经成为数据存储和传输过程中不可缺少的环节。Zstd(Zstandard)是一种快速高效的无损压缩算法,相较同类算法具有更好的压缩率和压缩速度,广泛应用于大数据传输和存储等应用领域。由软件实现的Zstd算法在压缩数据时会占用大量中央处理器(Central Processing Unit,CPU)资源,且因软件串行执行的特性导致性能瓶颈,使其难以应用于实时压缩领域。硬件实现Zstd压缩算法可以充分利用硬件并行计算的特性,提高压缩速度,并且在压缩过程中无需使用中央处理器的资源,是有效解决上述问题的一种方法。
本文通过对Zstd及其相关压缩算法的研究和分析,设计并验证了一种由硬件实现的Zstd压缩模块,工作内容具体如下:
1.对Zstd压缩算法展开研究,分析Zstd压缩算法的实现流程和输出格式,对Zstd中的LZ77算法、Huffman编码和有限状态熵编码(Finite State Entropy,FSE)进行分析。基于软件模型测试确定LZ77中哈希函数的选择和哈希表的大小,均衡压缩模块的压缩性能和硬件开销。
2.基于Verilog硬件描述语言完成了Zstd压缩模块的RTL实现和电路优化。根据算法流程将硬件设计划分为LZ77模块、Huffman模块、FSE模块和数据打包模块。在电路优化方面,使用资源共享的方式实现Huffman模块和FSE模块中具有相同功能的统计排序子模块,根据压缩数据的信息确定压缩表的大小,达到优化面积的目的;加入门控时钟电路控制子模块的时钟使能,减少子模块时钟的无效翻转,达到降低功耗的目的。
3.对Zstd压缩模块进行功能验证和逻辑综合。搭建了基于UVM(Universal Veri-fication Methodology)的Zstd压缩模块的验证平台,并对相关组件进行设计,实现了对Zstd压缩模块的数据驱动和采集,通过回归测试生成覆盖率报告,代码覆盖率各项在95%以上。之后在TSMC 12nm工艺库下,逻辑综合报告显示时序无违例,时钟频率可以达到666MHz,面积为58024.45um2,功耗为4.8m W。
4.使用Silesia数据集作为标准压缩源进行性能测试,测试表明,Zstd压缩算法的硬件压缩率基本可以和软件持平,硬件压缩速度是软件压缩速度的10倍以上,最快压缩速度达到了1126.2MB/s。
综上所述,本文设计的Zstd压缩模块结构完整,硬件电路功能正确,验证工作完备,具有良好的压缩性能,可以满足实时压缩海量数据的需求。