bzip2压缩算法硬件加速实现方法

文档序号:7525869阅读:364来源:国知局
专利名称:bzip2压缩算法硬件加速实现方法
技术领域
本发明涉及软硬件协同设计、数据压縮技术领域、尤其涉及一种bzip2压縮 算法硬件加速实现方法。
背景技术
随着新材料的应用和新技术的发展,VLSI技术取得长足进步,这为多核处 理器(Chip Multi-Processor, CMP)的发展奠定了基础。CMP就是将多个计算 内核集成在一个处理器芯片中,从而提高计算能力。按计算内核的对等与否, CMP可分为同构多核和异构多核。
在未来几年里,处理核的数目将会越来越多,但是,随着单个芯片内集成 的处理核数目越来越多,增加处理核数目已经难以带来更大的性能提升,同时 通用处理器也已逐渐难以满足融合应用需求,越来越多的多核处理器转向SoC 架构,也就是异构多核架构。越来越多的研究机构开展了面向异构多核处理器 的研究,这些研究包括了异构多核处理器体系的方方面面,如处理核结构的优 化;异构多核处理器上的线程分配和迁移;以及针对视音频处理的CPU+DSP 多核处理器结构研究等。并且一些商用处理器已经开始采用异构体系,或者针 对特定的应用定制一些专用的加速器。
bzip2比传统的gzip或者ZIP的压縮效率更高,但是它的压縮速度较慢。从 这点来说,它非常类似于最近出现的其它一些压縮算法。与RAR或者ZIP等 其它不同的是,bzip2只是一个数据压縮工具,而不是归档工具,在这一点上它 与gzip类似。程序本身不包含用于多个文件、加密或者文档切分的工具,相反 按照UNIX的传统需要使用如tar或者GnuPG这样的外部工具。
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时,连续相同字节计数器加l,继续步骤①;
II、 当编码结果不为00000000,并且连续相同字节计数器为O时,继续执行 步骤④;
III、 当编码结果不为00000000,并且连续相同字节计数器不为0时,继续 执行步骤⑤;
以2048位并行比较器的输出结果和字符列表寄存器作为2048位移位器 的输入,以2048位并行比较器的输出结果中的一位对应字符列表寄存器中的一 个字节,将2048位并行比较器的输出结果中所指向的字节前置到字符列表寄存器的第一个字节,将",左边的'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位的比较结果,相同
则为'r,否则为'0'。
2048位移位器也有两个输入1个256位输入和一个2048位输入;输出结 果为2048位,256位输入的每1位对于2048位输入中的8位,移位器将256位 输入中'T所对应的2048位输入的字节前置到第一个字节,并将左边的 '0'所对应的2048位输入中的字节向后移8位,产生2048位的输出结果。
256-8编码器根据256位的输入中T的位置,产生8位的输出结果,其数 值为256为中的位置。
寄存器组包括8位的当前字节寄存器、16位的当前地址寄存器、16位的输 出地址寄存器、16位的连续相同字节计数器、2048位的字符列表寄存器。当前 地址寄存器、输出地址寄存器和连续相同字节计数器初始值为O,字符列表寄存 器初始时从左到右按顺序存储值为0到256的字节。
具体实现步骤如下
① 根据当前地址从本地缓存中读取内容到当前字节寄存器,当前地址加1;
② 以当前字节寄存器内容和字符列表寄存器作为2048位并行比较器的输 入,进行并行比较;
(D以2048位并行比较器的输出作为256-8编码器的输入,进行编码;
I、 当编码结果为00000000时,连续相同字节计数器加l,继续步骤①;
II、 当编码结果不为00000000,并且连续相同字节计数器为O时,继续执行 步骤④;
III、 当编码结果不为00000000,并且连续相同字节计数器不为0时,继续 执行步骤⑤;
④以2048位并行比较器的输出结果和字符列表寄存器作为2048位移位器 的输入,以2048位并行比较器的输出结果中的一位对应字符列表寄存器中的一 个字节,将2048位并行比较器的输出结果中所指向的字节前置到字符列 表寄存器的第一个字节,将左边的'0'所对应的字符列表寄存器中的字
节向后移8位;继续执行步骤⑥;⑤以连续相同字节计数器计数值作为行程长度编码器的输入,进行行程长 度编码,具体如下
I、 如果连续相同字节计数器末位为"',在本地存储中输出地址寄存器指 向空间写l,输入地址寄存器加l;
II、 如果连续相同字节计数器末位为飞',在本地存储中输出地址寄存器指 向空间写0,输入地址寄存器加l;
III、 如果连续相同字节计数器值小于2,继续执行步骤④;否则,连续相同 字节计数器减2并又移1位,继续执行步骤⑤;
◎将256-8编码器的编码结果写回到本地存储中输出地址寄存器指向的空 间,输出地址寄存器内容加l;如果输入数据还没处理完,继续步骤①;
如果输入数据已经全部处理,硬件加速器挂起,通知软件取回结果数据。
权利要求
1、一种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压缩算法硬件加速实现方法。本方法是利用硬件加速器实现在程序中占大量执行时间的前置变换和行程长度编码,以加速程序的压缩速度。有如下特点首先,以硬件加速器输入输出缓存作为与通用计算系统的通信接口,并通过软件为硬件加速器准备输入数据,并整理读取输出数据,简化了硬件加速器的设计;其次,以硬件方式实现前置变换和行程长度编码,并采用全展开的2048位并行比较器和移位器,加速了程序的执行,加快了bzip2算法的数据压缩速度,有效提高程序的性能。
文档编号H03M7/30GK101478311SQ20091009559
公开日2009年7月8日 申请日期2009年1月22日 优先权日2009年1月22日
发明者严力科, 冯德贵, 刘敬伟, 吴斌斌, 罡 王, 王勇刚, 威 胡, 度 陈, 陈天洲 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1