王瑞*
基金项目:本课题得到国家自然科学基金资助项目基金(项目编号:60772101)的资助。
作者简介:王瑞(1986—), 男, 山东莱芜人, 硕士, 主要从事视频压缩方面的研究. E-mail:wangruityut@163.com(太原理工大学 信息工程学院,太原 030024)
摘要:帧内预测是AVS 编码器中十分耗时的模块,因此,合理的优化这一模块对AVS 编码器的实时实现具有十分重要的意义。本文根据每种帧内预测模式的特点将其分为三大类,并在TMS320CDM####46 上如何用汇编实现做了详细分析,重新 设计了程序结构,优化后的数据显示,在不影响图像质量的前提下,汇编代码在时钟周期上效率大幅提高,耗时仅为C 代码的30%,优化效果相当明显。
关键词: TMS320CDM####46;帧内预测;AVS 实时编码
中图分类号:TN624Optimize Intra Predicition of AVS by assembly languageWANG Rui(College of Information Engineering,Taiyuan University of Technology Taiyuan, Taiyuan 030024)
Abstract: Intra prediction is one of the most time-consuming model in AVS encoder, therefore,optimizing this module reasonably is very significant to realize the real-time AVS encoding.This divide all intra prediction modes into three categories according to the characteristics of each mode,and do a detailed analysis about various mode of intra prediction model with assembly language onTMS320CDM####46, and redesign the program structure, It demonstrates that the assembly code has anotable increase of the clock cycle efficiency.Under the premise of not affecting the image quality, theassembly code‘s time-consuming is only 30% of C code and the optimization is obvious.
Key words: TMS320CDM####46;Intra Predicition;AVS real time encoding
0 引言
AVS(Audio Video coding Standard)标准是我国具备自主知识产权的第二代信源编码标准[1]。它的编码效率与MPEG-4/H.2#### 相当,但是计算复杂度与 专利费用低,因此在DSP 上实时实现高分辨率视频编码实例是业界努力攻克的目标。本文以TMS320DM####46 为 开发平台,重点分析了AVS 的帧内预测编码模块,并使用汇编 语言对其进行优化,对实时性的实现十分有利。
1 TMS320CDM6000 系列DSP 特点及汇编介绍
TMS320C6000 DSP 具有最高800MIPS 的运算性能和高效的C 编译器。其内核CPU 由两个寄存器组A 和B 组成,每组包含32 个寄存器;内部有8 个功能单元包括2 个乘法器和
6 个算术逻辑单元。C####x+ DSP 具有高级的VLIW(Very Long Instruction Word)体系结构。
VLIW 描述了一种指令集思想[2]。在这种指令集中,编译器把许多简单、独立的指令组合到一条指令字中。当这些指令字从Cache 或内存中取出放到处理器中时,它们被容易地分解成几条简单的指令。这些简单的指令被分派到一些独立的执行单元去执行。C####x+ CPU 一般情况下能将8 条指令组合到一条指令字中,如图2-1 所示:图1 取指包的基本形式Figure1 Basic Format of a Fetch Packet取指包里的八条指令的执行由最低比特位p 控制。p 的值决定两条指令是否并行执行。在C####x+ DSP 中,p 比特的扫描过程遵循从左到右的原则,也就是从低地址位到高地址位的顺序,如图3-2 中,顺序为从指令A 到指令H。如果第i 条指令的p=1,则代表该指令与第i+1 条指令是并行执行的,否则,如果第i 条指令的p=0,则代表该指令与第i+1 条指令不是并行的。一个取指包里所有能够并行执行的指令组成一个执行包。每个执行包里的指令使用的功能单元是互不相同的。一般情况下,通过编写线性汇编代码,然后再通过汇编优化器进行优化,也能达到一个满意的程度。但是对实时性要求比较高的地方,这个优化程度还是远远不够的。因此,需要进一步考虑代码的特点,充分利用C####x+ DSP 的资源安排并行指令,合理安排流水结构,才能最大限度的优化需要的汇编代码。线性汇编与汇编的主要区别是:汇编需要指定并行指令;汇编需要考虑寄存器的使用;汇编需要考虑指令的延时周期;汇编需要考虑功能单元的使用情况;汇编需要自己安排流水线[3]。因此,汇编代码的编写主要有以下优化策略:配合功能单元,利用SIMD、VLIW 思想尽量写并行代码,使得8 个功能单元的利用率都很高;A、B 通道并行,合理使用交叉通路;实现同样操作尽量用数据相关性小易于形成 软件流水的指令,尽量用最少周期的指令,尽量用特殊指令(一般效率比较高)例如:循环体实现一个操作 val = is<0? -val : val,可以用比较和跳转指令实现但破坏软件流水效率低,可以通过比较扩展求或操作得到一个-1 或1 的数,再用乘运算实现这个操作,虽然周期长了一些,但能形成软件流水,实际提高了效率。
2 AVS 帧内预测及其汇编优化
AVS 帧内预测是基于空间域的预测,即利用周围已编码块的重建像素值滤波得到当前块的像素预测值。AVS 编码标准在传统的帧内编码技术的基础上,充分利用了图像在局部空间上的高度相关性来去除图像的空间冗余性,然后再对预测残差图像进行变换编码,有效提高了图像帧内编码的效率。AVS 的亮度和色度都使用8×8 的预测块,且亮度和色度预测模式分别为5 种和4 种,但是根据宏块周围块的存在情况,在AVS 中实际上亮度预测模式有8 种不同的算法,而在色度中7 种不同的算法。但是总体上可以大致分为以下几类:1)赋值运算 亮度和色度模式0,模式DC_Top 为垂直赋值;亮度和色度的模式1,DC_Left 为水平赋值;亮度和色度模式DC_128 为常数赋值。这一类总体思路一样,都采用STDW 指令,一次可以完成一行的赋值。色度DC_Top 和DC_Left 的所需赋的值需要由加权平均运算指令DOTPUS4 求得,其他与亮度相同。如给整个8×8 块赋值128 的运算的汇编代码如下,一次加载8 个数。MVKL 0x80808080,r0MVKH 0x80808080,r0MV r0 , r1STDW r1:r0, *dst++2)要求平均值或加权平均的运算 亮度模式DC_All 和色度模式DC_All,模式3。对亮度模式DC_All,将top 和left 用LDDW 指令分别一次读进来,并把读进来的left 值解包,并把解包的每个值再分别打包,共八个值left[0] 到left[7],将这八个值分别与top 相加并移位,用指令AVGU4,这样可能会存在大1 的误差。解决误差的方法是用SUBABS4 将top值都减1 后再用指令AVGU4 与left 操作得到DST,这样的话仅top 值为0 时可能存在误差。图2 仅top=0 时可能含有误差的算法Figure2 the algorithm only top= 0 may contain error然后采用比较法消除0 值误差,即先用top 值与0 值比较,用指令CMPGTU4,得到CMP1,再用XPND4 将其展开并用NOT 取反,将此值与01010101H 相与,得到CMP1,最后用DST 减去CMP1 就消除了误差得到最终结果。色度与亮度模式DC_All 的主要区别就是所需要的值要由临近top 和left 的值用DOTPUS4 指令加权平均求出。对于色度模式3,主要思路就是用DOTPUS4 指令求得a,b,c 的值,对于中间过程则采用16 位运算指令SADDSUB2,SHR2 等,最后通过SPACKU4 指令把结果饱和为8 位。3)要进行移位运算。如亮度中的模式3 和模式4,采用的是左上和左下的预测方式,即45°角方向的赋值是一样的。对于亮度模式3 ,所需赋的值是top 和left 的均值,所以本文首先两次利用取双字指令LDDW 一次性将我们需要的值全部取出后,采用模式2 中所用的方法求得所需赋的值,然后利用移位指令,不断地组合出下一行的数进行赋值,利用存双字指令STDW 一次存进内存中。亮度模式4 所需赋的值可以直接取出,然后用移位组合出下一行的数。这样的做法明显提高了数据的利用率,减小了算法的复杂性。
3 实验结果分析
表1 帧内预测实验结果Table1 Intra Predicition Experiment Result帧内预测模式 优化的C(CPU 数)汇编(CPU 数)模式0(vetical) 32 13模式1(horizontal) 43 18DC_128 22 11DC_Top 32 13DC_Left 43 18模式2(DC)DC_All 93 31模式3(Down_Left) 88 25亮度模式4 (Down_Right) 73 15模式0(vetical) 32 13模式1(horizontal) 43 18DC_128 22 11DC_Top 96 27DC_Left 78 25模式2(DC)DC_All 139 46色度模式3(Plane) 1#### 48从表1 的实验结果可以看出,通过汇编优化后,各个模式全部有很大程度的降低,与优化过的C 相比降低幅度均在50%以上,相比于线性汇编优化结果其CPU 周期数也有很大程度的下降,降低幅度大部分在30%到50%之间。因此,对实时性要求比较高的编码器而言,汇编能极大地提高运算速度,缩短计算时间。
4 结论
本文用汇编实现了帧内预测的各种模式,在不影响图像质量的情况下有效的提高了编码速率。本实验证明,利用DSP 汇编指令实现AVS 耗时模块可极大节省计算时间,为AVS在TMS320DM####46 上实时实现提供了更大的保障。
[参考文献] (References)
[1]《AVS 视频(报批最终稿)》(标准号GB/T 200090.2-2006) 信息技术先进音视频编码第2 部分:视频[S].
[2] TMS320C####x/C####x+ DSP CPU and Instruction Set Reference Guide. Literature Number: SPRU732A June2005
[3] TMS320C6000 Optimizing Compiler v 6.1 User‘s Guide. Literature Number: SPRU187O May 2008
中国论文中心http://www.wenlun.com
警告:未经本站许可不得采集本站论文内容作为自己网站的资源!(如需要转载请说明出自:http://www.wenlun.com/lwcs/so_article.asp?id=11050680156)
如果本文不完整,请点击这里查看
AVS 帧内预测模式的汇编优化的其它内容