编辑:
2014-03-24
编码器的大计算量主要集中在以下几个模块:运动估值,半像素匹配,量化反量化,D CT反 D CT变换。其中运动估值中包括了运动搜索算法和S AD模块,半像素匹配中包括图像内插和半像素搜索。这些模块在优化前运算量占到全部运算量的7 8.54 %。表1 给出了编码器的信息特征。将直接反映在编码器的实时效率上。当然其它编码模块的优化也相当重要,因为如果前面运算单元被极大优化后将会导致这些本来不引人注目部分占有芯片时间比例的大幅增长,如图像重建、熵编码、运动补偿、内存操作等。为了能提高芯片的执行效率必须进行有效的优化。
3.1 根据 TM1300芯片结构优化
(1)节约寄存器资源
任何一种芯片的寄存器资源总是有限的, TM1300的通用寄存器总数为1 28个,这对于小规模的应用程序是绰绰有余了,但是在 MPEG4程序中往往会用到比较多的寄存器,所以需要节俭。有2 种方法可用:1 )在能少用寄存器的情况下尽量少使用寄存器,比如一个寄存器的多次使用;2 )在能用小的变量类型的情况下多使用小的变量类型,比如能用short就 不用i nt ,能用c har 就不用s hort。
(2) 减少对外部 RAM的访问次数
减少对外部 RAM的访问次数主要是考虑到所有程序都具有以下的行为特征:程序倾向于再次使用最近刚用过的数据和指令。这样的局部性反映在空间和时间两个方面:·空间局部性( ):如果某个数据或指令被引Spatial Locality用,那么地址邻近的数据或指令不久很可能也将被应用。·时间局部性( ):如果某个数据或者指令Temporal Locality
被引用,那么不久它可能还将再次被引用。其实也就是减少缓存失配(C ache Miss)的次数。 根据以上行为特征在编写代码时就要有意识地将相同的指令和顺序执行的其他指令紧密起来,在中间减少跳转和判断,从而能更加连贯。对于数据应尽量先处理好当前数据,如果还要调用当前数据则最好能放在一起处理,对当前数据邻近的其他数据也要优先处理,不要在跳跃性的地址上分别取数。
3.2汇编优化和语句优化
(1)内部循环的解开
循环的解开其实也是为了增加程序中的并行处理能力。对于解循环,我们不能在解开的循环中保留线性的过程,即指令在执行中的结果不能作为后条指令的输入数据,否则也就失去了并行处理能力,解循环也失去了意义。
(2)尽可能使用限制性指针,将乘法和除法尽量用移位运算来完成
限制性指针能使调用指针的函数更容易找到该指针所指向的区域。而对于 的幂次除法使用移位将会提高效率不少,乘法效率提2高不多,但除法的话一条除法指令使用的周期数远多于移位指令。
(3)尽可能把循环内部的负荷放到循环外面去这点很重要因为许多循环内部包括了一条或者几条运算语句,这些语句将被重复使用,如果事先设定一个变量然后赋上那几条运算语句的值,替换到循环内部也会极大地节省芯片资源,特别是循环中含有除法运算的。
上述是多媒体压缩技术在计算机领域内的广泛运用
相关推荐:
标签:asp论文
精品学习网(51edu.com)在建设过程中引用了互联网上的一些信息资源并对有明确来源的信息注明了出处,版权归原作者及原网站所有,如果您对本站信息资源版权的归属问题存有异议,请您致信qinquan#51edu.com(将#换成@),我们会立即做出答复并及时解决。如果您认为本站有侵犯您权益的行为,请通知我们,我们一定根据实际情况及时处理。