基于DSP的实时MPEG-4编码的软件优化设计

以运用TMS320C6200定点DSP芯片完成MPEG-4标准中结合开发工具TMS320C6201EVM板的结构和特点,阐述了在实现MPEG-4实时视频编码中,对算法的软件优化所做的工作。

武汉华中科技大学电信系图像与信息实验室(430074)焦 晓 
武汉华中科技大学电信系通信与系统实验室(430074)马明罡 
武汉华中科技大学电信系图像与信息实验室(430074)朱光喜

TMS320C6201芯片是TI公司新推出的并行处理的数字信号处理器。它的最高处理能力高达1600MIPS,即16亿万次每秒定点运算,是目前市场上所有的DSP芯片中速度较快、处理功能较强的DSP处理器。其应用前景十分广泛。本文利用C6201开发工具EVM(模拟评估)板,用软件实现实时MPEG-4编码。详细探讨了MPEG-4视频编码中的关键模块,并针对TMS320C6000的物理指令结构,对软件优化的特殊处理做了较深入的研究。
   


   1 开发工具的介绍
   
   笔者采用的评估工具是TI公司的C6XEVM[2]。它的结构如图1所示。
   
   C6XEVM除核心DSP之外,还提供了如下工具:一个64K×32bit、133MHz的z同步脉冲静态随机存取存储器(SBSRAM);两个1M×32bit、100MHz的同步动态RAM(SDRAM);内含基于PCI或外部XDS510支持的JTAG仿真;支持采样速率为5.5kHz~48kHz的立体声16位音频边界码;1.8V/2.5V直流电压3.3V直流电单板转换电压调整器;模拟5V直流电压的单板线电压调整器;3个LED指示器(电压,2个自定义指示)等。
   
   SBSRAM映射到DSP的CE0存储空间,把它用于程序自举。通常SBSRAM都工作在133MHz。当采用全速接口时,CPU时钟就等于SBSRAM的时钟;当采用半速接口时,SBSRAM的速度是CPU时钟速度的一半。
   
   EVM提供的两个1M×32bit的字存储区间的SDRAM,每一个存储空间包含两512×2banks×16位的器件。它们映射到DSP的CE2和CE3存储空间,每一个空间使用16Mbit的地址空间。SDRAM通常是CPU时钟速度的一半。
   
   EVM提供的异步存储连接器允许给子板附加一个存储区间或者存储映射区间。扩展存储的界面被映射到DSP的4M异步CE1存储空间的低3M空间。CE1中扩展空间的地址从0x100000~12FFFFF,在MAP0和MAP1方式下为0x1400000~16FFFFF,CE1的最上面的1M字节可分配给板上外围。CE1存储空间的这种分配方式容许了板上器件和扩展器件的共存。
   


   2 MPEG-4视频编码
   
   MPEG-4编码是基于VOP的编码[3]。所谓VOP是指视频目标平面,即视频对象VO在某一时间的存在。VOP编码器的结构框图如图2所示。
   
   编码器主要由两部分组成:一是形状编码器;另一个是传统的运动估计和补偿及纹理VOP编码器。VOP可采用帧内编码(Intera-VOP,简称I-VOP)和帧间预测编码(Inter-VOP)。帧间预测编码又可以分为前向因果预测编码(P-VOP)和前后向非因果编码(B-VOP)。帧间预测编码消除了视频信息的时间冗余。对于VOP的编码,首先将各个VOP从上到下分成16×16大小的宏块(MB)。具体的形状、运动和纹理编码基于MB进行,所以一个MB的信息是形状、运动、纹理(Shape-Motion-Texture)的总和。进行MB编码时,再把它分成4个8×8块(Block)的亮度Y分量,和2个8×8块的色度Cr和Cb分量分别进行编码。然后对6个Block分别进行8×8DCT二维变换、量化和Huffman编码。
   
   进行测试使用的图像是QCIF格式(176×144象素),图像数据从主机读入。通过CCS测得其各个模块所消耗的时间周期比率如下:
   
   其各个部分占总运算量的比例分别为:
   
   分析显示,运动估计和运动补偿模块及纹理编码模块是MPEG-4实现的最主要的瓶颈。所以在程序优化上所做的工作主要是基于这两个模块进行。
   
   3 程序的优化考虑
   
   要想充分发挥TMS320C6201的运算能力,必须从它的硬件结构出发,最大程度地利用八个功能单元,使用软件流水线,尽量让程序无冲突地并行执行。并行执行的优点在于,在处理彼此无冲突地并行执行。并行执行的优点在于,在处理彼此之间没有承接关系的运算时,在CPU资源允许的情况下可以并行完成。但对于前后有承接关系或者判断、跳转频繁的情况就无法发挥其优势。一般循环体都满足并行处理的条件,并且循环体往往是程序中中耗时最长的。因此在进行优化时将重点放在循环体上。
   
   3.1 跳转指令的优化
   
   DSP的指令多为单周期指令,但是转移类指令却通常要耗费较多的时钟周期,每个跳转都有5个延迟间隙,从性能上考虑是一项很耗时的工作,因此应尽可能地减少程序中的分支。
   
   事实上,通过对程序的分析,可以看到许多判断转移用简单的条件组合就可以得到实现。例如下面的小程序。
   
   if(rcoeff[i]>(lim-1)) rcoeff[i]=(lim-1);
   
   else if(rcoeff[i]<(-lim)) rcoeff[i]=(-lim);
   
   可以改为:rcoeff[i]=MIN(rcoeff[i],(lim-1));
   
   rcoeff[i]=MAX(rcoeff[i],(-lim));
   
   还有一种常用的减少判断转移的方法是将循环展开。特别是对多重循环的控制,若外层循环较少,可将内层循环直排,把转移条件结合起来,以减少层与层之间的相互联系。
   
   3.2 使用库函数
   
   TI公司对TMS320C62XX的用户提供了功能强大的IMAGE LIB[4]库支持。在这个库中,包含许多常用函数,可以完成DCT/IDCT变换、小波变换、DCT量化、自适应滤波等功能。这些函数都是优化过的,完全能够实现软件流水,效率很高。
   
   3.3 改写线性汇编
   
   线性汇编语言是TMS320C6000中独有的一种编程语言,介于高级语言和低级语言之间。为了提高代码的性能,可以用线性汇编来重写影响速度的关键代码段。线性汇编中不需要给出使用的寄存器、指令的延迟周期及使用的哪个功能单元等信息,C6201强大的汇编优化器会根据代码的情况自动确定这些信息[5]。然而很多时候,为了提高代码的效率,必须指出使用哪个功能单元。使用线性汇编时要注意:对循环体进行优化时不能使用跳转到循环体外的跳转指令;计数器使用减计数等。
   
   进行优化时,首先要确定循环次数。对于循环次数是变量的情况,优化器不能并行优化;其次,要尽可能使用双字或字存取操作。例如运动估计和补偿中的一个小程序段:
   
   void MC_case_a(uchar ref[NUM_ROWS][NUM_COLS],
   
   uchar curr[UNM_ROWS][NUM_COLS],const int r_x,const int c_x,const int r_y,const int c_y,const int size)
   
   {
   
   int m,n;
   
   for(m=0;m   
   for(n=0;n   
   cuff[c_x+m][c_y+n]=ref[r_x+m][r_y+n];
   
   }}
   
   {
   
   相应的线性汇编程序如下:
   
   .def_MC_case_a
   
   .sect ".text"
   
   _MC_case_a: .cproc ref,curr,r_x,c_x,r_y,c_y,mum_cols
   
   .reg r_temp1,r_temp2,c_temp1,c_temp2
   
   .reg p_r,P_c,np_r
   
   .reg lshift,rshift,count
   
   .reg r_w1,r_w2,r_w3,r_w4
   
   .reg temp
   
   SHL r_x,0x05,r_temp1
   
   SHL c_x,0x05,c_temp1
   
   ADD r_y,ref,r_temp2
   
   ADD c_y,curr,c_temp2
   
   ADD r_temp1,r_temp2,p_r
   
   ADD c_temp1,c_temp2,p_c
   
   SUB num_cols,2,num_cols
   
   MVK 8,count ; 循环次数为8
   
   MVK 0xFFFc,temp
   
   AND p_r,temp,np_r
   
   AND p_r,0x0003,rshift
   
   SUB.L 0x04,rshift,lshift
   
   SHL rshift,0x03,rshift
   
   SHL lshift,0x03,lshift
   
   loo:.trip 8
   
   LDW *np_r++[1],r_w1
   
   LDW *np_r++[1],r_w2
   
   LDW *np_r++[num_cols],r_w3
   
   SHRU r_w1,rshift,r_w1
   
   SHL r_w3,lshift,r_w3
   
   SHL r_w2,lshift,r_w4
   
   SHRU

 

作者:焦晓   更新日期:2004-12-31
来源:internet   浏览次数:

相关文章

相关评论   发表评论