网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 61IC中国电子在线 >> DSP >> C6000文章 >> C64X系列 >> 文章正文
  H.264在DM642的优化         ★★★ 【字体:
H.264在DM642的优化
作者:iAzure    文章来源:本站原创    点击数:    更新时间:2007-8-27    

H.264的DSP实现流程分为三个阶段:

第一个阶段产生和评估C代码,第二个阶段优化和评估C代码,第三个阶段编写和评估线性汇编。

每个阶段完成任务如下:

第一阶段:首先,产生C代码并进行时间评估。一般情况下,这个阶段的代码性能很低。如果经过评估后,仍然满足不了实时要求的话,需要进入第二个阶段以进一步改进代码性能。

第二阶段:利用优化选项、内联函数以及其它优化方法改进C代码。如果代码仍不能达到所期望的效率,则进入第三阶段。

第三阶段:从C代码中抽出对性能影响大的代码段,用线性汇编重新写这段代码,然后利用汇编优化器优化该代码,直到代码满足要求为止。

优化和评估C代码

代码分析结果显示DCT、IDCT变换、运动估计运算量占程序总运算量的比重很大,因此这部分函数是程序优化的重点。为此,我们通过下述方法对C代码进行了优化:

(1) 对于复杂的运算语句,可以用查找表的方法来实现,以节省耗时。比如:在运算表达式中出现了“/”以及“%”等符号时,可以先按照所有可能的输入计算出所有可能的输出,以后的运算就可以省略而只需要查表得到数值。该方法的本质在于用空间换时间。同样,对于if-else关系到数据运算的选择语句,也可根据具体的情况,采用查找表的方法来实现。

(2) 对于通过查找表编码部分个,可以将相关的码表进行合理的编排,以便运用一条指令可以一次查到需要的数据。同时,尽可能用多位的指令来访问少位的数据。比如:使用int型(32位)访问2个short(16位)型数据,将其分别放在32位寄存器的高16位和低16位字段。这样,可以提高一倍的数据读取效率。同样,像使用int型可一次访问两个short型一样,使用double型访问可一次读2个float型数据(4个int型数据),从而减少对内存的访问次数,从而减少运算耗时。

(3) 在C代码中,使用内联函数替代复杂的C代码。内联函数是可直接映射为C6000指令的特殊函数,使用时同调用其它函数一样调用,同时不会破坏系统环境。内联函数用前下划线(如:函数_add2 (int src1,int src2)表示src1,src2的高低半字分别做有符号加法,返回结果)表示,使用内联函数可快速优化C代码。

(4) 代码中循环越多,执行的效率越低。 因此,我们考虑采用循环展开的方法,将多循环变为少循环,甚至是单循环。即运用消除冗余循环的方法来提高指令并行执行的程度,从而提高代码的执行效率。

(5) 为了进一步提高代码性能,经过评估,找出影响速度的关键 C代码段 (DCT/IDCT变换和运动估计)用线性汇编重新编写。线性汇编是C6000系列DSP所特有的类汇编工具。只需按照C代码的自然顺序,写出线性汇编语句,同时不必考虑功能单元的分配,以及指令的并行性。从而,它比编写纯汇编语句耗时要少,又具有较高的执行效率。如果编写线性汇编仍不能达到指标要求的话,在运用纯汇编编写相关的代码,充分利用C6000 DSP结构以及指令集的特点,尽可能并行其中的非相关语句。从而进一步减少代码的执行时间和提高程序的性能。

存储器的优化

与PC机相比,DSP的程序数据存储空间非常有限。因此,对于视频编解码这种需要处理大量数据的程序而言,必须合理安排数据和程序的存储方式,实现对存储器的优化,以便提高程序执行的效率。否则,大量数据的反复搬移会阻碍程序运行效率的提高。

采取以下方法对存储器进行优化:分析代码,把被反复调用的程序段(如DCT变换和DCT反变换)放在片内程序存储区中,把频繁用到的数据段(如编码表)放在片内数据存储器中,把不常用到的程序和数据段放在片外存储器中,以避免对程序或数据进行不必要的反复搬移。

在H.264程序运行过程中,由于一帧图像的数据量很大,故而将参考帧数据放到片外,需要用到当前块和参考窗数据时,再将它们从外存搬运到内存中,以便提高效率。

               欢迎点击进入:TI德州中文网   (国内唯一针对TI应用的中文技术网站)    文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    针对H.264的编译码设计以及各…
    基于工业以太网的H.264煤矿视…
    基于H.264/AVC和AVS的视频解…
    并行处理的H.264到AVS转码器…
    U-Boot在基于ADSP BF533的嵌…
    H.264/AVC中扩展空域可伸缩…
    以全双工模式运行H.264基线的…
    T264关键数据结构解析
    一种新的H.264编码帧间预测模…
    H.264码率控制中基于MAD比率…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61IC 湘ICP备05002478号