李瑞珍,张晓旭,马 德,黄 凯,严晓浪
(1.浙江大学超大规模集成电路设计研究所,杭州310027;2.杭州电子科技大学微电子CAD所,杭州310018)
一种灵活可配置的JPEG编解码器软硬件架构
李瑞珍1,张晓旭1,马 德2,黄 凯1,严晓浪1
(1.浙江大学超大规模集成电路设计研究所,杭州310027;2.杭州电子科技大学微电子CAD所,杭州310018)
JPEG压缩标准由于其压缩比高和实用性强已被广泛应用于静态图像编解码中。为满足更高的实时性与高速率需求,根据JPEG算法抽象出的基本运算,提出一种灵活可配置的JPEG编解码加速器结构,实现向量加法、向量乘法、向量点乘和移位饱和等基本运算操作,并驱动此加速器完成JPEG解码的反向离散余弦变换、反量化和色度空间转换过程,配合软件代码处理解码的其他部分,实现JPEG解码的软硬件协同工作。实验结果表明,在增加0.229 mm2面积的前提下,硬件实现的部分耗时只为优化前的35%左右,JPEG解码过程总耗时为优化前的60%左右。该方法提高了JPEG编解码速度,并且加速器的软件和硬件灵活可配性决定了其适用范围的广泛性。
联合图像压缩标准;加速器;离散余弦变换;色度空间转换;量化;软硬件协同设计
JPEG是联合图像专家组(Joint Picture Experts Group)于1991年发布的第一代国际静态图像压缩标准[1],由于其压缩率高、失真小和实现复杂度低等特点,被公认为是静态图像编解码方面最有效实用的压缩算法,在数字图像、数码相机、网页图像等领域均有广泛应用,特别在嵌入式应用中,要对高质量的图像进行实时采集、压缩、存储和回放,需同时支持JPEG编解码功能。随着嵌入式系统实时性、高性能和可扩展性要求的进一步提高,设计出一个高速高效可扩展的JPEG编解码器已成为重要的研究方向。
目前,JPEG编解码器在嵌入式领域中的实现方式可分为3种:ASIC图像专用编解码芯片[2-3],FPGA实现[4-5]以及基于处理器[6]或 DSP的软件实现[7]。采用ASIC JPEG图像专用编解码芯片的优点是速度快,一旦专用芯片设计成功,其生产成本相对较低,而且方便集成,功耗低,适合大规模生产。然而ASIC编解码芯片的缺点是可配置扩展性差,一旦设计完成就只能以固定模式进行编解或解码,而JPEG算法为满足不同应用领域的需求,提出了3种不同的系统:基本系统,扩展系统和专用无失真功能系统[1]。在ASIC芯片中同时实现3种系统的编解码会显著提高芯片面积和功耗,文献[2]中提出的JPEG解码IP模块就需消耗206 000门硬件资源,而只支持一个系统的编码或者解码的ASIC芯片应用范围又受到限制。文献[6-7]分别提出了一种JPEG解码算法在多核架构和DSP上的实现方法,这种方式的好处是灵活性高、可扩展性好。但为了实现实时编解码,需要占用较多的计算资源,必须采用较高性能的DSP和处理器,显著增加了嵌入式系统的成本和功耗,不适合低端系统的应用。FPGA具有较高的性能和灵活性,升级方便[4-5],但其成本较高,不适合大规模生产。
针对以上3种实现方式的缺陷,本文提出一种灵活可配置的JPEG编解码器的软硬件协同工作架构。通过对JPEG软件算法的分析研究,评估算法中各主要任务的复杂性,采用自顶向下的设计方法,将JPEG编解码算法中色度空间转换、离散余弦变换(Discrete Cosine Transform,DCT)、量化等复杂性高的任务划分为基本向量操作,设计相应的硬件加速单元。根据JPEG算法应用的特点,由处理器对硬件加速单元进行灵活配置,由此构建由RISC处理器和细粒度硬件加速单元组成的灵活可配JPEG编解码系统。
2.1 JPEG编解码原理
JPEG算法利用人的视觉系统特性,使用量化和无损压缩编码相结合的方式去掉视觉和图像本身的冗余信息来达到压缩的目的。它可以分为基本模式和扩展模式。其中基本模式应用尤为广泛。本文以基于DCT的基本模式为讨论对象进行JPEG性能分析和软硬件划分。JPEG的编码器和解码器的组成分别如图1和图2所示。当JPEG编码时,图像数据需先从原来的RGB色度空间转换到YCrCb色度空间,然后将二维图像分成 8×8的最小编码单元(Minimum Code Unit,MCU),各MCU按从左到右、从上到下的顺序对于色度和亮度分量依次进行正向离散余弦变换(Forward DCT,FDCT)和量化,得到的结果按照“之”字重新排序后进行熵编码,即可得到压缩后的数据。JPEG解码是相反的过程,包括熵解码、反zig-zag排序、反量化、反向离散余弦变换(Inverse DCT,IDCT)和YCrCb到RGB的色度空间转换[8]。
图1 JPEG压缩过程
图2 JPEG解码过程
2.2 JPEG编解码复杂度分析
为了对JPEG算法进行软硬件划分,本文选用了独立JPEG小组发布的第9版JPEG自由软件作为参考模型[1],通 过采用 GNU GCC的 Profiling工具[9]对软件代码各函数的执行时间进行统计,从而分析JPEG算法中各模块的复杂度。对多个 JPEG图像编解码的各函数性能评估如图3所示。
图3 JPEG编解码函数性能评估
通过图3的统计数据得到的JPEG编解码各模块的平均复杂度如图4所示。
图4 JPEG编解码函数比例
在图4中,DCT、量化/反量化、熵编解码和色度空间转换4个部分的执行时间占了JPEG编解码总时间的80%~95%,复杂性的集中度很高,便于分析优化,尤其是DCT和量化/反量化,占用了将近一半的时间。这是由于图像中每个8×8的MCU都要执行此类操作,重复性高,而且加法和乘法的运算量大,因此提高这些过程的执行效率是提高JPEG编解系统性能的关键。JPEG编解码中的其他时间用于一些初始化工作和预处理等操作,例如分析文件头、取量化表、将图像补齐到8×8的整数倍、哈夫曼解码后的校正等。
这些操作大多是图像级的,对于整个图像只执行一次,占用的时间少,特别是对于较大的图像几乎可以忽略。所以硬件加速主要集中在色度空间转换、熵编解码、DCT和量化/反量化这4个部分。
(1)色度空间转换
色度空间转换虽不属于JPEG标准的组成部分,但图像一般以RGB格式进行显示,而JPEG算法以YCrCb格式作为编解码对象,这使得RGB和YCrCB之间的色度空间转换成为JPEG编解码算法不可或缺的一部分。如式(1)所示,完成一个像素点的YCrCb到RGB色度空间转换需4次浮点乘法和6次加法,对于cif图像需进行352×288=10 137次色度空间转换,即10 137×4=405 504次乘法和10 137× 6=608 256次加法,计算复杂性高。图4的分析结果表明,色度空间转换在JPEG编解码软件算法中占了10~20%的计算时间,因此,采用硬件加速对提升JPEG解码性能、减少处理器负载具有重要意义。
(2)熵编解码
熵编码主要利用图像空间相关性,对每一个MCU的直流分量采用差分编码,对zig-zag方式排列的交流分量采用游程编码,最后对各部分进行哈夫曼编码,熵解码是其相反的过程。熵编解码虽在软件算法占较高的运算,但其主要通过查表、逐位比较判断[10]等操作完成,且前后数据之间相关性大,计算量小,更加适合处理器实现,本文提出的架构中采用RISC处理器完成JPEG算法的熵编解码。
(3)量化/反量化
如图1所示,JPEG编码过程中对DCT转换后的MCU进行量化操作。经DCT变换后得到8×8的二维频率矩阵M,左上角代表图像低频部分,右下角代表图像高频部分,量化实际上相当于低通滤波器,滤掉高频部分,因此,量化矩阵Q低频系数小,高频系数大。量化得到的像素频域矩阵F中对应元素F(u,v)=M(u,v)×Q(u,v),每完成一次反量化需要64次乘法,一幅 cif图像有(352/8)×(288/8)= 1 584个MCU,需要1 584次量化操作,即1 584×64= 101 376次乘法,运算复杂性较高。与量化过程类似,反量化过程也需要大量规律性的乘法操作,因此,用硬件加速单元实现量化/反量化操作将大幅度地优化JPEG编解码性能。
(4)离散余弦变换
离散余弦变换对图像信息进行时域与频域间的转换,将低频信息与高频信息分开,是JPEG算法的重要组成部分。JPEG以8×8块为DCT的基本单位,公式如下:
3.1 自顶向下的硬件加速器设计
由上节对JPEG编解码关键算法的分析可知, JPEG编解码中计算复杂性高且适合硬件加速的主要操作有色度空间转换、FDCT/IDCT变换及量化/反量化。为使硬件架构在软件协同工作下能够同时支持以上3种操作,必须对算法进行分析,提取三者的相同基本操作,从而设计硬件加速器功能。本文采用自顶向下的设计方法分析三者的基本操作。图5展示了色度空间转换的分析过程。首先,如式(1)所示,色度空间转换包含大量浮点乘法,不适合硬件实现。因此,为简化硬件加速器设计,把色度空间转换中的浮点操作替换成定点操作:把各系数转换为Cij=Coefficient/2N形式。综合考虑转换精度与硬件实现的开销,选择 N为16。则当系数为1.402时,系数 Coefficient为 91 881,则 91 881/ 65 536=1.401 993,其与浮点实际值的误差只有0.000 4%,满足色度空间转换精度要求,整个替换过程如图5步骤1所示。经转换后,色度空间转换主要包括对原像素的补偿(加减)、系数相乘和移位操作。通过观察可以发现RGB的3种色度的转换对YCrCb的补偿均相同为向量(0,128,128),所以把色度空间转换过程统一为矩阵的形式,如图5步骤2所示。最后,为增加硬件加速器配置的灵活性,把色度空间转换进一步细化为向量加法、向量乘法和向量移位操作[11],如图5步骤3所示。与色度空间转换分析类似,DCT变换主要是矩阵乘法,一维FDCT的一次矩阵乘法可以通过64次向量乘法实现,量化和反量化分别是把DCT变换或熵解码得到的8×8块与量化表相乘,也可细化为向量点乘操作(本文中符号为※,定义为目标向量中的每个点等于2个源向量中对应的点相乘)。综合考虑以上分析结果,提出的硬件架构需实现向量加减法、向量点乘、向量乘法(MAC)、向量移位及饱和操作。
图5 色度空间转换的细化
3.2 JPEG硬件加速器架构
综合考虑上节的众多因素,提出如图6所示的4路并行硬件加速器架构。该架构中操作数读取和结果回写采用独立接口:2个AHB[12]主接口用于操作数的读取,一个AHB主接口用于结果的回写。在系统中通过合理安排存储器架构可以使读写同时进行,有效提高加速器的吞吐量。加速器计算核心是多路向量运算单元,支持向量加减、向量乘法和向量点乘等基本操作,对于计算结果可进一步进行移位和饱和运算,向量维数通过软件灵活可配。由于JPEG编解码中像素位宽通常为8 bit而片上系统(System on Chip, SoC)的总线带宽多为32 bit,为有效利用系统带宽,加速器最多支持4路向量操作并行;同时考虑到像素值的取值范围通常为0~255,而DCT或者色度空间转换以后的值可能超出这个界限,在硬件中增加对向量运算结果的饱和运算,这使硬件加速器既具有通用性,又有利于JPEG的编解码。
由于总线带宽限制,硬件加速器一个时钟周期内通常只能读回2个32 bit数据,而JPEG应用中往往有大量数据需要同时处理,例如每次IDCT变换中往往针对8×8的矩阵进行,因此需要连续进行多次操作。而且一次向量操作所需的数据本身也很难一次取回,所以硬件加速器需要并行读取数据和计算。针对JPEG编解码应用以上特点,本文采用4级流水线架构实现硬件加速器,如图7所示。
图6 加速器硬件架构
图7 硬件加速器流水线架构
各级流水线功能分别介绍如下:
第1级:AG级(Address Generation)。图像处理往往以宏块为单位进行,例如在 JPEG中 FDCT/ IDCT变换均以8×8的MCU为单位。如图8所示,一个宏块的数据在存储器中往往不是按顺序保存的,对于一个8×8的MCU,同一行像素点的保存地址是按像素点位宽增加的,而进行下一行像素处理时,地址需要跳转一行像素点的大小。为了满足图像处理中像素读取的这个特点,本文提出的地址生成级(AG级)支持2层嵌套循环工作模式,2层循环支持不同的寻址模式。例如对于8×8块的DCT变换,内层循环进行一行向量的乘法,地址逐像素增加;而外层循环控制对哪一行像素进行变换,地址按行增加。通过这种模式,可以显著减少软件对硬件的配置时间。
图8 地址的跳变
第2级:DF级(Data Fetch级)。读取相应的数据,并对数据进行预处理。AG级向总线发起数据读取请求,DF级根据总线的状态对数据进行采样,若总线未及时返回数据则将导致流水线停顿。采样完成数据以后,根据操作类型和配置对数据进行预处理,例如如果是4路向量减法,则对其中一个操作数按8 bit为单位进行取反处理。为了使硬件加速器具有通用性,还支持操作数的移位和取绝对值操作,这些操作在音视频应用中会频繁使用。
第3级:CAL级(Calculation级)。根据配置的数据位宽和并行路数,对操作数进行乘法、加法或者乘累加操作。对于乘累加操作,WB级的结果被返回到CAL级与当前的相乘结果相加。
第4级:WB级(Write Back级)。WB级主要负责对计算结果作移位取饱和等后处理,同时根据计算状态决定是否有数据要回写到存储器并产生相应的地址。例如对于2个8维的向量相乘,需要进行8次乘累加操作,所以WB级把前7次的结果都返回到CAL级,只有在得到第8次的结果后才向总线发起数据写操作。
JPEG编解码软硬件协同工作如图9所示,以处理器为控制核心,对加速器进行配置实现向量加减、向量乘法、向量点乘、移位和饱和等原子操作。根据JPEG编解码性能的需求,硬件层可以实例化多个加速器,使得多个向量操作可以被同时调用,提高处理的并行性。然后,以原子操作为基本单位开发JPEG编解码驱动函数,如量化/反量化、FDCT/IDCT、色度空间转换,同时以纯软件方式实现熵编解码函数。最后,调用驱动函数实现JPEG编解码应用函数。
图9 JPEG编解码软件映射整体流程
因为JPEG编解码应用主要通过调用驱动函数实现,硬件加速器对其完全透明,所以即使在硬件加速器结构调整的情况,应用层也无需作任何修改。本文中软硬件协同工作的核心在于驱动函数与原子操作之间的映射,以YCrCb到RGB的色度空间转换过程为例说明驱动函数到原子操作的映射优化过程。色度空间通常是在编码之前或者解码之后,以整幅图像为对象进行操作,但为保证像素地址连续性同时减少向量操作的次数,本文以一行所有像素点的同一种操作作为一次向量运算。由图5可知,矩阵乘法中多个系数为0,所以可以对矩阵操作进行优化,从而减少向量操作的维数,如图10步骤1和步骤2所示,每个点的计算过程转换成图中操作5和操作6这2个向量加法,其中的相关变量如图中虚线框中间变量所示。由于浮点系数与结果的移位操作在向量运算中同时进行,故图10中没有给出,只列出核心操作过程。
图10 色度空间转换的映射过程
对于一幅cif图像(352×288)的一行操作如表1所示,只需按照图10中操作1~操作6进行6次加速器向量运算。整个cif图像的转换则需按照表1进行288次加速器调用。
表1 YCrCb到RGB的映射过程
本文实验通过构建一个简单的片上系统(SoC)平台用于评估JPEG解码器软硬件协同工作的性能。该平台主要包含高性能RISC处理器CK610、时钟发生器(CLOCK GEN)、复位器(RESET GEN)、AHB总线、片上SRAM(SMS)、片外SDRAM、JPEG加速器模块、显示器(LCD)和一些辅助IP,架构如图11所示。系统采用48 MHz时钟频率,处理器指令存放在片上SRAM中,图像数据保存在片外SDRAM,CPU使用了8 Kb的指令cache和8 Kb的数据cache。实验结果在FPGA板上通过LCD显示器显示出来。
图11 SoC架构
实验中选取大小不同的5幅JPEG压缩图像作为测试激励,在FPGA开发板分别采用纯软件和基于硬件加速器的软硬件协同工作方式进行解码,实验结果如表2所示。实验结果表明,基于硬件加速器的反量化和IDCT过程时间优化了64%~72%,色度空间转换过程优化了57%~72%,整个JPEG解码过程优化了35%~41%,与纯软件方式相比性能有显著提高。在TSMC13工艺下CPU的面积是2.25 mm2,而硬件加速器的面积只有0.229 mm2,与纯软件方式相比,在不足10%的面积开销下使得JPEG解码性能提高了近40%。
表2 纯软件与硬件加速结果对照
本文通过分析JPEG的编解码过程,提出了一种灵活可配的硬件加速器。并基于此加速器,将解码过程中的IDCT、反量化和色度空间转换部分映射到加速器上,实现了JPEG解码的软硬件协同设计,在只增加10%面积的代价下,与纯软件相比,将JPEG的解码速度提高了40%左右。另外,此加速器单元的高灵活性和可配性使得其可用于基于向量运算的其他算法,在同一个SoC中多个子模块都可以使用加速器,系统性能将大幅提高。
[1] JPEG.JPEG Homepage[EB/OL].(2013-01-06).http:// www.jpeg.org/jpeg/index.html.
[2] 张奇惠.JPEG静止图像压缩技术的ASIC实现[D].郑州:河南大学,2007.
[3] Xie Xiang,Li Guolin,Chen Xinkai,et al.A Low Complexity Near-lossless Image Compression Method and Its ASIC Design for Wireless Endoscopy System[C]//Proceedings of the 6th International Conference on ASIC.[S.l.]:IEEE Press,2005:37-40.
[4] Shan Junming,Wang Duyao,Yang Eyan.High Performance JPEG Decoder Based on FPGA[C]//Proceedings of Asia Pacific Conference on Postgraduate Research in Microelectronics and Electronics.[S.l.]:IEEE Press,2011:57-60.
[5] 赵 辉,孙红星.基于DSP_FPGA的视频压缩系统的设计[C]//2009年中国控制与决策会议论文集.桂林:[出版者不详],2009:1985-1990.
[6] 朱梦宇,杨裕亮.基于硬件加速的无损医学图像压缩研究[EB/OL].(2010-12-01).http://cpfd.cnki.com.cn/Article/CPFDTOTAL-ZNXX201012013075.htm.
[7] 耿 倩,王耀南,余 浩.基于DSP的JPEG静态图像压缩编码设计与实现[J].计算机工程与应用,2006, 42(23):82-84.
[8] 刘瑞祥,赵 珊,鲍 泓.基于DCT压缩的JPEG图像检索算法[J].计算机工程,2010,36(5):225-227.
[9] Free Software Foundation Inc..GNU gprof[EB/OL].(2011-04-13).http://www.cs.utah.edu/dept/old/ texinfo/as/gprof.html.
[10] 刘 洋,陈 杰.JPEG解码器的软硬件协同设计[J].微电子学与计算机,2005,22(3):23-27.
[11] Chouliaras V A,Nunez J L,Mulvaney D J,et al.A Multi-standard Video Accelerator Based on a Vector Architecture[J].IEEE Transactionson Consumer Electronics,2005,51(1):160-167.
[12] Synopsys.AMBA Specification[EB/OL].(2012-12-23).http://www.synopsys.com/IP/SoCInfrastructureIP/Design Ware/AMBA/Pages/default.aspx.
编辑 顾逸斐
A Flexible and Configurable Architecture of Software and Hardware for JPEG Codec
LI Ruizhen1,ZHANG Xiaoxu1,MA De2,HUANG Kai1,YAN Xiaolang1
(1.Institute of Very Large Scale Integrated Circuits Design,Zhejiang University,Hangzhou 310027,China;
2.Institution of Microelectronics CAD,Hangzhou Dianzi University,Hangzhou 310018,China)
Joint Picture Experts Group(JPEG)compression standard is widely used in static image codec for its high compression ratio and strong practicality,while it requires better performance in feature of real-time and compression speed.According to the basic vector arithmetic extracted from JPEG process,a flexible and configurable accelerator for JPEG codec is proposed to achieve the vector addition,multiplication,dot multiplication,shifting and saturation operations.Software and hardware cooperation is used in driving the accelerator to finish the Inverse Discrete Cosine Transform(IDCT),inverses quantization and color space conversion,while doing the other part in JPEG decoding with software.In the condition of increasing 0.229 mm2area,the process doing with accelerator costs 35%of the time costs in software,and the JPEG decoding costs only 60% of the time.This method improves the JPEG codec speed and can be used widely according to its flexibility and configurability.
Joint Picture Experts Group(JPEG);accelerator;Discrete Cosine Transform(DCT);color space conversion;quantization;software and hardware co-design
1000-3428(2014)11-0266-07
A
TP391.41
10.3969/j.issn.1000-3428.2014.11.053
李瑞珍(1989-),女,硕士,主研方向:SoC设计与验证;张晓旭,博士;马 德,讲师;黄 凯,副教授;严晓浪,教授。
2013-10-31
2013-12-31E-mail:made@hdu.edu.cn
中文引用格式:李瑞珍,张晓旭,马 德,等.一种灵活可配置的JPEG编解码器软硬件架构[J].计算机工程,2014, 40(11):266-272.
英文引用格式:Li Ruizhen,Zhang Xiaoxu,Ma De,et al.A Flexible and Configurable Architecture of Software and Hardware for JPEG Codec[J].Computer Engineering,2014,40(11):266-272.