文献标识码:A
DOI:10.16157/j.issn.0258-7998.2017.06.011
中文引用格式:彭益智. 一种基于TMS320C6678多核处理器的JPEG实时解码优化算法[J].电子技术应用,2017,43(6):45-47.
英文引用格式:Peng Yizhi. A JPEG real-time decoding optimization algorithm based on multicore DSP TMS320C6678[J].Application of Electronic Technique,2017,43(6):45-47.
0 引言
在舰船指挥控制系统中,要求数字视频信号准确、实时地传输,共享图像资源。随着微电子技术的发展,DSP厂商尝试采用多核处理器构架来满足电子信息系统日益增长的实时处理性能要求。针对数字视频在电子信息系统应用中的实时处理要求,本文基于TI公司TMS320C6678(简称C6678)多核DSP的系统架构,提出了多核DSP任务并行设计方法,设计了基于C6678的JPEG解码系统,实现了核间高效通信和解码任务并行流水,提高了JPEG解码系统的实时处理能力。
1 JPEG解码算法原理
JPEG是成熟的图像压缩标准,根据人眼视觉特性,去除数据冗余信息,达到压缩图像的目的。JPEG编码算法先将源图像数据分块,经前向离散余弦变换(FDCT)、量化和熵编码处理,输出压缩数据[1]。
JPEG解码算法流程是编码算法的逆过程。压缩数据输入解码器,按位读取以识别Huffman码字,对照编码表进行熵解码,输出8×8的DCT系数矩阵,经反量化、反向离散余弦变换(IDCT),8×8的DCT系数矩阵变换为8×8的数据块,经反向层平移、色彩模型转换,重建图像[2]。JPEG编解码算法流程如图1所示。
2 基于TMS320C6678多核处理器的JPEG实时解码优化算法
2.1 多核DSP任务并行设计方法
多核DSP任务并行设计方法适用于解决复杂算法在多核DSP平台的设计问题,包含算法模块化分解、模块间通信分析、模块间通信优化和模块的多核加载4个步骤。任务并行方式主要有主从模式和数据流模式[3]。
主从模式的特点是集中控制和分散执行。一个处理核设为Master,它调度所有的任务,其他的处理核都为Slave。该模式要解决好处理核之间实时负载平衡问题。主从模式如图2所示。
数据流模式的特点是分散控制和分散执行。处理核加载不同的运算法则处理数据,再将数据传递到下一个处理核,通过查询数据的有效性或发送消息来激活处理核。适用数据流模式的程序通常包含较高计算复杂度的模块,且模块间存在紧密的数据依赖。运用该模式时,各个处理核之间有大量的数据要传输,要求系统带宽高,并且难以平衡核间负载,处理性能受限于计算负载最大的核[2]。数据流模式如图3所示。
2.2 实时解码优化算法设计
TMS320C6678是基于先进的KeyStone处理器构架,集成8个C66x核,运算能力强,网络性能优越,支持图像、视频等信号处理应用。运用多核DSP任务并行设计方法,在C6678平台上设计JPEG解码算法,主要步骤包括算法分解、通信分析、通信优化和多核加载。
2.2.1 算法分解
将算法尽可能分解为小的模块,有利于发现算法的并行性。分解时,要结合考虑模块计算量以及模块之间的结合性、耦合性,分解点一般选择在结合性较高、耦合性较低的地方[2]。JPEG解码算法可分为下面8个模块[1]:(1)初始化;(2)熵解码;(3)DC系数解码;(4)AC系数解码;(5)反Z字形扫描;(6)反量化;(7)逆向离散余弦变换(IDCT);(8)色彩空间转换。
模块之间数据联系紧密,且熵解码和IDCT模块的计算复杂度较高,所以为JPEG解码算法选择数据流任务并行模式。压缩图像数据经熵解码,输出解码中间符号,然后经DC系数、AC系数解码,输出64个DCT系数,经反Z字形扫描、反量化、IDCT和色彩空间转换,最后重建图像。解码过程中发现,DC系数解码和AC系数解码模块存在数据联系,模块间耦合性较强,Z字形扫描、反量化、IDCT和色彩空间转换模块间结合性较强。
2.2.2 通信分析
算法分解后,一般这些模块不能独立执行,因为模块之间需要传输命令和数据,这是模块间的通信需求。
控制流程表示模块的执行顺序,加载到不同处理核的模块通过发送消息来实现同步,模块间还有数据传输需求,这些通信会给系统带来延迟时间,控制流程的设计目的是系统处理能力最大化。数据流程表示模块间数据传输的方向,描述数据与模块的关系,数据流程的设计目的是模块间数据通信量最小化。
JPEG解码算法通信分析如图4所示,分为模块层和数据层,实线箭头代表数据传输,虚线箭头代表命令传输。
2.2.3 通信优化
通信分析后,为了实现多核DSP内核间高效通信,使算法高效执行,模块间通信需要优化。模块计算量小且与其他模块耦合性较强,可将模块与其他模块合并为子系统,模块间数据传输转变为子系统内数据读写。
针对JPEG解码算法,DC系数解码和AC系数解码模块共同处理DCT系数的DC系数和AC系数,这两个模块间耦合性较强,且模块的计算量较小,将DC系数解码、AC系数解码和熵解码合并为解码子系统。反Z字形扫描、反量化、IDCT和色彩空间转换模块结合性较强,在解码过程中,这4个模块间传输的数据量相当庞大,除了IDCT,其他3个模块的计算量都很小,将它们合并为DCT子系统,这样模块间通信变为子系统内数据读取,减少了模块间通信。优化后的JPEG解码算法分为初始化模块、解码子系统和DCT子系统3部分,减少了模块数量,优化了模块间通信。
通信优化后的模块通信如图5所示,分为模块层和数据层,实线箭头代表数据传输,虚线箭头代表控制命令的传输。
2.2.4 多核加载
通信优化后,根据算法适合的任务并行模式,将模块、子系统加载到不同处理核,实现算法的任务级并行流水处理。
将初始化模块、解码子系统和DCT子系统加载到不同处理核,实现算法的任务级流水。由于解码和DCT子系统计算复杂度较高,限制了任务级流水的处理速度,为了充分发挥多核处理器性能,也对应于JPEG编码算法采用的映射方式,将这两个子系统映射到多个处理核,以核级并行流水来提升系统的解码速度。C6678的8个C66x核的编号为0~7,核0负责系统初始化,核1、2、3执行解码子系统,解码后的数据分别传递到核4、5、6,并执行DCT子系统,核1与4、2与5、3与6组成3条处理核级的并行流水线,如图6所示。
2.3 设计实现
利用CCS5.0提供的SYS/BIOS和IPC组件,SYS/BIOS组件用于任务调度,IPC组件用于核间通信。
C6678的8个处理核为CORE0~CORE7,处理核初始化完成后等待同步消息。为实现内核间高效通信,CORE0与CORE1、2、3间的通信采用最小通信模式,CORE1与CORE4、CORE2与CORE5、CORE3与CORE6间的通信采用数据传输模式。基于C6678的并行JPEG解码系统的整个处理流程如图7所示。
3 实验结果分析
为检验基于C6678的JPEG解码系统的处理能力,将相同的算法运行在C6416、C6678的单C66x核上比较,实验数据如表1所示。
根据测试结果可知,优化前,JPEG解码算法具有基本相同的复杂度,基于C66x内核的系统处理能力是基于C6416的系统的4.03倍;基于C6678的JPEG解码系统的处理能力是基于C66x内核的系统的4.65倍,是基于C6416的系统18.77倍。优化后,JPEG解码算法复杂度略有不同,基于C66x内核的系统处理能力是基于C6416的系统的2.93倍;基于C6678的并行JPEG解码系统的运行时间为11 ms,系统的处理能力是基于C66x内核的系统的5.36倍,是基于C6416的系统的15.73倍。
4 结束语
随着先进视频处理技术在电子信息装备中的应用,本文针对TI公司TMS320C6678多核DSP的系统架构,提出了基于TMS320C6678的多核DSP解码任务并行处理算法,提升了视频处理实时能力。由于本文只采用了编译器优化途径,后续可以在流水线设计、内存调整控制等方面进一步优化,基于C6678的JPEG解码系统的实时处理能力将进一步增强。
参考文献
[1] WALLACE G K.The JPEG still picture compression standard[J].IEEE Transaction on Consumer Electronics,1992,38:18-34.
[2] 彭益智,霍家道,徐伟.一种基于TMS320C6678的JPEG编码算法并行实现方法[J].指挥控制与仿真,2012,34(1):119-122.
[3] 刘波,孙书为,孙永节.H.264视频编码器的并行性分析[C].第十一届全国计算机工程与工艺学术年会论文集,合肥,2007:194.
作者信息:
彭益智
(江苏自动化研究所,江苏 连云港222061)