基于TMS320DM642的MPEG-4編码软件优化设计.docxVIP

  • 2
  • 0
  • 约 5页
  • 2016-11-27 发布于重庆
  • 举报

基于TMS320DM642的MPEG-4編码软件优化设计.docx

基于TMS320DM642的MPEG-4編码软件优化设计

摘要:结合TI公司C64系列DSP芯片指令并行处理的特点,在自主开发的以TMS320DM642为核心的嵌入式MPEG-4视频监控平台上,通过对编码软件进行C语言级、线性汇编级的优化,实现了高效运行的MPEG-4算法,完成了系统对视频编码的实时性要求。 关键词:TMS320DM642;优化;MPEG-4;线性汇编 ? ? 0?引言 ??? 随着数字信号处理器(DSP)芯片集成度、运算速度、数据吞吐率等性能的不断提高,DSP已被广泛应用于许多实时视频处理和传输领域。本文采用TI公司C64系列的TMS320DM642芯片应用于自主开发的视频监控平台中。该芯片以其高速的处理能力和出色的对外接口能力使其设计出的产品在图像质量、硬件成本、灵活性方面都优于专门的视频编解码芯片。但由于DSP与PC机的指令集和外围存储器、接口等条件不同,在DSP平台上程序的执行效率往往比较低,难以将DSP的性能全部发挥出来。本文的目标在于采用合理的开发和优化流程,提高指令执行的并行度,研究适合在TMS320DM642高效运行的MPEG-4算法,满足系统对视频编码的实时性要求。 1?TMS320DM642芯片的主要性能特点 ??? TMS320DM642是TI公司最新推出的一款针对多媒体处理领域的DSP芯片,芯片内核采用VelociTI先进的超长指令字(VLIW)结构,每个时钟周期最高可提供8条32位指令,具有高度的并行性和快速的运行能力。有500MHz/600MHz/720MHz三种时钟频率,根据图像处理实时性的需求,选用600MHz时钟频率,其最大处理能力可达到4800×106条指令/s。 ??? TMS320DM642芯片在C64系列的基础上增加了很多外围设备和接口,包括三个可配置的视频接口,可以和视频输入、输出或传输流输入无缝连接;64个独立通道的增强EDMA控制器;多通道音频串行端口(McASP);66 MHz 32-bit的PCI接口;10/100Mbps以太网口(EMAC)及通用I/O端口(GPIO)等外围接口。 ??? 可见,TMS320DM642是一个强大的多媒体处理器,其丰富的外围接口并且其完全的可编程性是构成多媒体通信的良好平台,完全能够满足视频图像处理的实时性要求。 2?MPEG-4视频编码 ??? 本文选用面向多媒体应用的MPEG-4作为视频压缩标准,图1是编码器的结构框图。进行测试的图像是CIF格式(352×288象素)。通过TI公司为DSP开发者提供的集成开发环境CCS(Code Composer Studio) 中的profile clock(剖析时钟)工具测得各个模块所消耗的时间周期比例如表1所示。 ? 图1? MPEG-4视频编码结构图 表1? 各个模块所占时间周期比例 ??? 分析显示,运动估计和运动补偿模块及纹理编码模块是MPEG-4实现的最主要瓶颈。所以程序优化工作主要是基于这两个模块进行的。 3?软件优化流程 ??? 软件的优化流程一般分为三个阶段:产生C代码、C语言级的优化和汇编级的优化。 3.1?产生C代码 ??? 在实际的DSP应用中,许多算法都是非常复杂,直接用汇编代码编写,虽然优化效率很高,可是实现的难度却很大,所以一般都采用先按照需要用C语言实现功能,编译运行,然后利用profile clock工具确定代码中可能存在的低效率段,若不能满足要求,则进行第二阶段。 3.2?C语言级的优化 ??? 优化C语言程序是优化流程的第二阶段。要想充分发挥TMS320DM642的运算能力,必须从它的硬件结构出发,最大程度地利用八个功能单元,尽量让程序无冲突地并行执行。通过下述方法改进C程序,可使编译出的代码性能显著提高: ??? (1)软件流水线技术 ??? 软件流水用来对一个循环结构的指令进行调度安排,使循环的多次迭代能够并行执行。在编译代码时,选择编译器的-o2或-o3项,编译器将根据程序尽可能地安排软件流水线。在软件流水线的运用上,最典型的方法就是循环展开,即在程序里把小循环的迭代展开,使得可能并行的指令数增加,从而改进软件流水编排,改善代码性能。循环体往往是程序中中耗时最长的,因此优化时将重点放在循环体上。 ??? (2)数据打包处理 ??? C6000访问存储器是很费时的,要提高数据处理率,应使一条存/取指令能访问多个数据。当程序需要对连续的short型数据流操作时,应该转化成对int型数据流的操作,这样一次可以把两个16位的数据读入一个32位的寄存器,然后使用相应的指令对数据进行运算(如_sub2等),以减少对内存的访问,从而大大提高程序的执行效率。 ??? (3)使用内联函数 ??? 内联函数Intrinsics是直接与C6000汇编指令映射的在线函数,能提供绝对值运算、饱和加、乘法、移位等运算。通过调用

文档评论(0)

1亿VIP精品文档

相关文档