CN101478311B - bzip2压缩算法硬件加速实现方法 - Google Patents
bzip2压缩算法硬件加速实现方法 Download PDFInfo
- Publication number
- CN101478311B CN101478311B CN2009100955967A CN200910095596A CN101478311B CN 101478311 B CN101478311 B CN 101478311B CN 2009100955967 A CN2009100955967 A CN 2009100955967A CN 200910095596 A CN200910095596 A CN 200910095596A CN 101478311 B CN101478311 B CN 101478311B
- Authority
- CN
- China
- Prior art keywords
- input
- hardware accelerator
- register
- byte
- output
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000007906 compression Methods 0.000 title claims abstract description 16
- 230000006835 compression Effects 0.000 title claims abstract description 16
- 238000000034 method Methods 0.000 title claims abstract description 13
- 239000000872 buffer Substances 0.000 claims abstract description 25
- 238000006243 chemical reaction Methods 0.000 claims abstract description 6
- 238000004891 communication Methods 0.000 claims abstract description 6
- 238000004364 calculation method Methods 0.000 claims description 2
- 230000000052 comparative effect Effects 0.000 claims description 2
- 230000008520 organization Effects 0.000 claims description 2
- 238000013144 data compression Methods 0.000 abstract description 3
- 238000013461 design Methods 0.000 abstract description 3
- 238000005516 engineering process Methods 0.000 description 4
- 238000011160 research Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种bzip2压缩算法硬件加速实现方法。本方法是利用硬件加速器实现在程序中占大量执行时间的前置变换和行程长度编码,以加速程序的压缩速度。有如下特点:首先,以硬件加速器输入输出缓存作为与通用计算***的通信接口,并通过软件为硬件加速器准备输入数据,并整理读取输出数据,简化了硬件加速器的设计;其次,以硬件方式实现前置变换和行程长度编码,并采用全展开的2048位并行比较器和移位器,加速了程序的执行,加快了bzip2算法的数据压缩速度,有效提高程序的性能。
Description
技术领域
本发明涉及软硬件协同设计、数据压缩技术领域、尤其涉及一种bzip2压缩算法硬件加速实现方法。
背景技术
随着新材料的应用和新技术的发展,VLSI技术取得长足进步,这为多核处理器(Chip Multi-Processor,CMP)的发展奠定了基础。CMP就是将多个计算内核集成在一个处理器芯片中,从而提高计算能力。按计算内核的对等与否,CMP可分为同构多核和异构多核。
在未来几年里,处理核的数目将会越来越多,但是,随着单个芯片内集成的处理核数目越来越多,增加处理核数目已经难以带来更大的性能提升,同时通用处理器也已逐渐难以满足融合应用需求,越来越多的多核处理器转向SoC架构,也就是异构多核架构。越来越多的研究机构开展了面向异构多核处理器的研究,这些研究包括了异构多核处理器体系的方方面面,如处理核结构的优化;异构多核处理器上的线程分配和迁移;以及针对视音频处理的CPU+DSP多核处理器结构研究等。并且一些商用处理器已经开始采用异构体系,或者针对特定的应用定制一些专用的加速器。
bzip2比传统的gzip或者ZIP的压缩效率更高,但是它的压缩速度较慢。从这点来说,它非常类似于最近出现的其它一些压缩算法。与RAR或者ZIP等其它不同的是,bzip2只是一个数据压缩工具,而不是归档工具,在这一点上它与gzip类似。程序本身不包含用于多个文件、加密或者文档切分的工具,相反按照UNIX的传统需要使用如tar或者Gnu PG这样的外部工具。
bzip2使用Burrows-Wheeler transform将重复出现的字符序列转换成同样字母的字符串,然后用move-to-front transform进行处理,最后使用哈夫曼编码进行压缩。在bzip2中所有的数据块都是大小一样的纯文本数据块,它们可以用命令行变量进行选择,然后用从π的十进制表示得到的一个任意位序列标识成压缩文本。
虽然bzip2的压缩效率较gzip或者zip高,但是其较慢的压缩速度限制了使用范围。随着VLSI技术的发展,芯片上晶体管数目的增多,可以为bzip2定制专用的加速器,加速其压缩过程。
发明内容
为了满足不断提高的计算性能的需求,通过定制专用的加速器完成bzip2算法的程序热点功能,提高bzip2算法的压缩速度,本发明的目的在于提供一种bzip2压缩算法硬件加速实现方法。
本发明解决技术问题所采用的技术方案是:
一种bzip2压缩算法硬件加速实现方法:
1)软件对硬件加速器的输入输出进行管理:
硬件加速器以输入输出缓存作为与通用计算***的通信接口;
软件直接访问硬件加速器的输入输出缓存,为硬件加速器准备输入数据,并整理读取输出数据:
①硬件加速器开始计算前,软件组织好硬件加速器的输入数据,写入到硬件加速器的输入缓存;
②硬件加速器计算完成后,软件将硬件加速器的输出数据从缓存中取走,写回到***内存;
2)硬件加速器实现前置变换和行程长度编码
硬件加速器主要包括寄存器组、一个2048位并行比较器、一个2048位移位器、一个256-8编码器和一个行程长度编码器;
寄存器组包括本地存储、本地缓存、当前字节寄存器、当前地址寄存器、输出地址寄存器、连续相同字节计数器、2048位的字符列表寄存器;
具体实现步骤如下:
①根据当前地址从输入缓存中读取内容到当前字节寄存器,当前地址加1;
②以当前字节寄存器内容和字符列表寄存器作为2048位并行比较器的输入,进行并行比较;
③以2048位并行比较器的输出作为256-8编码器的输入,进行编码;
I、当编码结果为00000000时,连续相同字节计数器加1,继续步骤①;
II、当编码结果不为00000000,并且连续相同字节计数器为0时,继续执行步骤④;
III、当编码结果不为00000000,并且连续相同字节计数器不为0时,继续执行步骤⑤;
④以2048位并行比较器的输出结果和字符列表寄存器作为2048位移位器的输入,以2048位并行比较器的输出结果中的一位对应字符列表寄存器中的一个字节,将2048位并行比较器的输出结果中‘1’所指向的字节前置到字符列表寄存器的第一个字节,将‘1’左边的‘0’所对应的字符列表寄存器中的字节向后移8位;继续执行步骤⑥;
⑤以连续相同字节计数器计数值作为行程长度编码器的输入,进行行程长度编码,然后继续执行步骤④;
⑥将256-8编码器的编码结果写回到本地存储中输出地址寄存器指向的空间;如果输入数据还没处理完,继续步骤①;
如果输入数据已经全部处理,硬件加速器挂起,通知软件取回结果数据。
本发明具有的有益效果是:
首先,以硬件加速器输入输出缓存作为与通用计算***的通信接口,并通过软件为硬件加速器准备输入数据,并整理读取输出数据,简化了硬件加速器的设计;其次,以硬件方式实现在整个程序中占用时间最多的前置变换和行程长度编码,加速了程序的执行,加快了bzip2算法的数据压缩速度,有效提高程序的性能。
附图说明
图1是本发明的总体流程图。
图2是本发明硬件加速器的模块示意图。
具体实施方式
基于处理器和FPGA混合架构的硬件线程执行方法的具体实现流程如下:
一种bzip2压缩算法硬件加速实现方法,具体步骤如图1所示:
1)软件对加速器的输入输出进行管理
硬件加速器以输入输出缓存作为与通用计算***的通信接口,通用计算***指以传统的桌面计算机为代表的通用计算机。通用计算***通过PCI-E总线访问硬件加速器的输入输出缓存,在本发明中,输入缓存和输出缓存分离,输入缓存称为本地缓存,用作缓存硬件加速器的输入数据,输出缓存称作本地存储,用作存储硬件加速器的计算结果。
软件通过PCI-E总线直接访问硬件加速器的输入输出缓存,为硬件加速器准备输入数据,并整理读取输出数据:
①硬件加速器开始计算前,软件在***内存中组织好硬件加速器的输入数据,然后通过PCI-E将整理在***内存中数据的传输到硬件加速器的本地缓存,然后通知硬件加速器开始计算;
②硬件加速器计算完成后,产生中断,通知软件将硬件加速器的输出数据从本地存储中取走,写回到***内存。
2)硬件加速器实现前置变换和行程长度编码
硬件加速器的模块示意图如图2所示,包括本地存储、本地缓存、寄存器组、一个2048位并行比较器、一个2048位移位器、一个256-8编码器和一个行程长度编码器;
2048位并行比较器有两个输入:1个8位输入和一个2048位输入;输出结果为256位,每1位表示8位输入与2048位输入中的每8位的比较结果,相同则为‘1’,否则为‘0’。
2048位移位器也有两个输入:1个256位输入和一个2048位输入;输出结果为2048位,256位输入的每1位对于2048位输入中的8位,移位器将256位输入中‘1’所对应的2048位输入的字节前置到第一个字节,并将‘1’左边的‘0’所对应的2048位输入中的字节向后移8位,产生2048位的输出结果。
256-8编码器根据256位的输入中‘1’的位置,产生8位的输出结果,其数值为256为中‘1’的位置。
寄存器组包括8位的当前字节寄存器、16位的当前地址寄存器、16位的输出地址寄存器、16位的连续相同字节计数器、2048位的字符列表寄存器。当前地址寄存器、输出地址寄存器和连续相同字节计数器初始值为0,字符列表寄存器初始时从左到右按顺序存储值为0到256的字节。
具体实现步骤如下:
①根据当前地址从本地缓存中读取内容到当前字节寄存器,当前地址加1;
②以当前字节寄存器内容和字符列表寄存器作为2048位并行比较器的输入,进行并行比较;
③以2048位并行比较器的输出作为256-8编码器的输入,进行编码;
I、当编码结果为00000000时,连续相同字节计数器加1,继续步骤①;
II、当编码结果不为00000000,并且连续相同字节计数器为0时,继续执行步骤④;
III、当编码结果不为00000000,并且连续相同字节计数器不为0时,继续执行步骤⑤;
④以2048位并行比较器的输出结果和字符列表寄存器作为2048位移位器的输入,以2048位并行比较器的输出结果中的一位对应字符列表寄存器中的一个字节,将2048位并行比较器的输出结果中‘1’所指向的字节前置到字符列表寄存器的第一个字节,将‘1’左边的‘0’所对应的字符列表寄存器中的字节向后移8位;继续执行步骤⑥;
⑤以连续相同字节计数器计数值作为行程长度编码器的输入,进行行程长度编码,具体如下:
I、如果连续相同字节计数器末位为‘1’,在本地存储中输出地址寄存器指向空间写1,输入地址寄存器加1;
II、如果连续相同字节计数器末位为‘0’,在本地存储中输出地址寄存器指向空间写0,输入地址寄存器加1;
III、如果连续相同字节计数器值小于2,继续执行步骤④;否则,连续相同字节计数器减2并又移1位,继续执行步骤⑤;
⑥将256-8编码器的编码结果写回到本地存储中输出地址寄存器指向的空间,输出地址寄存器内容加1;如果输入数据还没处理完,继续步骤①;
如果输入数据已经全部处理,硬件加速器挂起,通知软件取回结果数据。
Claims (1)
1.一种bzip2压缩算法硬件加速实现方法,其特征在于:
1)软件对硬件加速器的输入输出进行管理:
硬件加速器以输入输出缓存作为与通用计算***的通信接口;
软件直接访问硬件加速器的输入输出缓存,为硬件加速器准备输入数据,并整理和读取输出数据:
①硬件加速器开始计算前,软件组织好硬件加速器的输入数据,写入到硬件加速器的输入缓存;
②硬件加速器计算完成后,软件将硬件加速器的输出数据从输出缓存中取走,写回到***内存;
2)硬件加速器实现前置变换和行程长度编码:
输入缓存和输出缓存分离,输入缓存称为本地缓存,用作缓存硬件加速器的输入数据,输出缓存称作本地存储,用作存储硬件加速器的计算结果;硬件加速器包括本地存储、本地缓存、寄存器组、一个2048位并行比较器、一个2048位移位器、一个256-8编码器和一个行程长度编码器;
寄存器组包括当前字节寄存器、当前地址寄存器、输出地址寄存器、连续相同字节计数器、2048位的字符列表寄存器;其中字符列表寄存器的初始时从左到右按顺序存储值为0到256的字节;
具体实现步骤如下:
①根据当前地址从输入缓存中读取内容到当前字节寄存器,当前地址加1;
②以当前字节寄存器内容和字符列表寄存器作为2048位并行比较器的输入,按如下方式进行并行比较:2048位并行比较器有两个输入,8位的当前字节寄存器输入和2048位的字符列表寄存器输入;输出结果为256位,每1位表示8位输入与2048位输入中的每8位的比较结果,相同则为‘1’,否则为‘0’;
③以2048位并行比较器的输出作为256-8编码器的输入,进行编码;
I、当编码结果为00000000时,连续相同字节计数器加1,继续步骤①;
II、当编码结果不为00000000,并且连续相同字节计数器为0时,继续执行步骤④;
III、当编码结果不为00000000,并且连续相同字节计数器不为0时,继续执行步骤⑤;
④以2048位并行比较器的输出结果和字符列表寄存器作为2048位移位器的输入,以2048位并行比较器的输出结果中的一位对应字符列表寄存器中的一个字节,将2048位并行比较器的输出结果中‘1’所指向的字节前置到字符列表寄存器的第一个字节,将‘1’左边的‘0’所对应的字符列表寄存器中的字节向后移8位;继续执行步骤⑥;
⑤以连续相同字节计数器计数值作为行程长度编码器的输入,进行行程长度编码,然后继续执行步骤④;
⑥将256-8编码器的编码结果写回到本地存储中输出地址寄存器指向的空间;如果输入数据还没处理完,继续步骤①;
如果输入数据已经全部处理,硬件加速器挂起,通知软件取回结果数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100955967A CN101478311B (zh) | 2009-01-22 | 2009-01-22 | bzip2压缩算法硬件加速实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100955967A CN101478311B (zh) | 2009-01-22 | 2009-01-22 | bzip2压缩算法硬件加速实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101478311A CN101478311A (zh) | 2009-07-08 |
CN101478311B true CN101478311B (zh) | 2010-10-20 |
Family
ID=40838949
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100955967A Expired - Fee Related CN101478311B (zh) | 2009-01-22 | 2009-01-22 | bzip2压缩算法硬件加速实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101478311B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102065288B (zh) * | 2010-06-30 | 2013-07-24 | 美商威睿电通公司 | 结合软硬件实现的视频处理***、方法及其装置 |
CN103020205B (zh) * | 2012-12-05 | 2018-07-31 | 中科天玑数据科技股份有限公司 | 一种分布式文件***上基于硬件加速卡的压缩解压缩方法 |
KR101992274B1 (ko) * | 2013-01-02 | 2019-09-30 | 삼성전자주식회사 | 데이터 압축 방법과 상기 방법을 수행할 수 있는 장치들 |
CN107204776A (zh) * | 2016-03-18 | 2017-09-26 | 余海箭 | 一种基于浮点数情况的Web3D数据压缩算法 |
US10783279B2 (en) * | 2016-09-01 | 2020-09-22 | Atmel Corporation | Low cost cryptographic accelerator |
CN107220028B (zh) * | 2017-05-24 | 2020-05-29 | 上海兆芯集成电路有限公司 | 加速压缩方法以及使用此方法的装置 |
CN109639285B (zh) * | 2018-12-05 | 2023-06-13 | 北京安华金和科技有限公司 | 一种基于有限块排序压缩提高bzip2压缩算法速度的方法 |
CN111211787A (zh) * | 2019-10-09 | 2020-05-29 | 华中科技大学 | 一种工业数据压缩方法、***、存储介质及终端 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1779716A (zh) * | 2005-05-26 | 2006-05-31 | 智多微电子(上海)有限公司 | 一种快速游程长度编解码电路的实现方法 |
CN101116342A (zh) * | 2005-03-30 | 2008-01-30 | 英特尔公司 | 带有硬件加速器的多标准变长解码器 |
US20080201718A1 (en) * | 2007-02-16 | 2008-08-21 | Ofir Zohar | Method, an apparatus and a system for managing a distributed compression system |
-
2009
- 2009-01-22 CN CN2009100955967A patent/CN101478311B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101116342A (zh) * | 2005-03-30 | 2008-01-30 | 英特尔公司 | 带有硬件加速器的多标准变长解码器 |
CN1779716A (zh) * | 2005-05-26 | 2006-05-31 | 智多微电子(上海)有限公司 | 一种快速游程长度编解码电路的实现方法 |
US20080201718A1 (en) * | 2007-02-16 | 2008-08-21 | Ofir Zohar | Method, an apparatus and a system for managing a distributed compression system |
Also Published As
Publication number | Publication date |
---|---|
CN101478311A (zh) | 2009-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101478311B (zh) | bzip2压缩算法硬件加速实现方法 | |
Fang et al. | In-memory database acceleration on FPGAs: a survey | |
US10007605B2 (en) | Hardware-based array compression | |
TWI517031B (zh) | 用於呈現各別複數之複數共軛根之向量指令 | |
TWI617978B (zh) | 用於向量索引載入和儲存之方法和設備 | |
CN117724766A (zh) | 用于执行将矩阵变换为行交错格式的指令的***和方法 | |
CN108028665B (zh) | 用于使用硬件和软件进行压缩的***、方法和装置 | |
TWI737651B (zh) | 用於加速圖形分析的處理器、方法及系統 | |
CN103023509A (zh) | 一种硬件lz77压缩实现***及其实现方法 | |
CN107925419B (zh) | 用于使用硬件和软件进行解压缩的***、方法和装置 | |
TW201346739A (zh) | 超級乘加(super madd)指令技術 | |
CN111030702A (zh) | 一种文本压缩方法 | |
Lal et al. | E^ 2MC: Entropy Encoding Based Memory Compression for GPUs | |
CN103427844A (zh) | 一种基于gpu和cpu混合平台的高速无损数据压缩方法 | |
CN103268299B (zh) | 一种应用于PXI Express总线测试***的通用数据压缩IP核 | |
Zu et al. | GLZSS: LZSS lossless data compression can be faster | |
Choi et al. | Design of FPGA-based LZ77 compressor with runtime configurable compression ratio and throughput | |
CN116097212A (zh) | 用于16比特浮点矩阵点积指令的装置、方法和*** | |
Jun et al. | Zip-io: Architecture for application-specific compression of big data | |
Li et al. | HODS: Hardware object deserialization inside SSD storage | |
CN209496362U (zh) | 三输入n位二进制加法器 | |
KR20220100030A (ko) | 패턴 기반 캐시 블록 압축 | |
CN113849770A (zh) | 矩阵数据按行分散和收集 | |
TWI805302B (zh) | 寫入資料到閃存記憶體的方法及電腦程式產品及裝置 | |
Dias et al. | An Approach for Code Compression in Run Time for Embedded Systems–A Preliminary Results |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20101020 Termination date: 20120122 |