您当前的位置:五五电子网电子知识电子知识资料科研成果MMX技术在视频编码的实时软件实现中的应用探讨 正文
MMX技术在视频编码的实时软件实现中的应用探讨

MMX技术在视频编码的实时软件实现中的应用探讨

点击数:7398 次   录入时间:03-04 11:45:20   整理:http://www.55dianzi.com   科研成果

  结合软件实现PSTN可视电话的实际应用,针对MMX技术单指令多数据(SIMD)的特点,讨论了MMX技术在视频编码的实时软件实现中的具体应用,分析了将MMX技术同具体应用结合的途径,并以二维DCT快速算法的MMX优化为例,分析、比较了算法的MMX技术优化前后的算法效率。

  信息技术的飞速发展使人们对所获取信息的形式与数量的要求越来越高,通信的内容已不局限于文字和声音,图像在通信中以其直观且信息量大的特点成为通信的一个重要部分。实时的视频通信在通信发展中的地位越来越重要。同时,随着信息产业的飞速发展,计算机运算与事务处理能力飞速提高,原来需要专用芯片才能完成的一些功能现在完全可以通过软件来实现。软件具有灵活、可塑性强、升级方便等特点,并且计算机正逐步成为办公和家庭中的基本配置,这就使得软件实现原有的硬件功能具有现实的意义。Intel针对多媒体通信中数据的特点开发的MMX指令,在多媒体通信的软件实时实现中发挥着重要的作用。下面结合软件实现PSTN可视电话的应用,以二维DCT的MMX优化为例,对MMX在实时视频编码中的应用进行了分析,并比较了使用MMX优化前后的系统效率。

  1MMX简介

  MMX(multimediaextension)是Intel公司为提高PC软件处理多媒体和通信的能力而推出的新一代处理器技术,是对Intel体系结构的指令集的扩展,它通过在处理器中增加8个64位寄存器和57条新指令来实现。

  1.1MMX技术的基本思想

  根据多媒体应用中数据位短但是重复程度高的特点,MMX技术采用了SIMD(singleinstructionmultipLEData,即单指令多数据)技术。SIMD技术运用单指令同时并行地处理多个数据元素,从而加速了软件的运行速度。

  为了实现SIMD技术,Intel引入了8个64位寄存器,即mm0~mm7。MMX技术定义了下列4种新的64位数据类型及其紧缩表示:

  (1)紧缩字节是8个字节紧缩在一个64位中;

  (2)紧缩字是4个字节紧缩在一个64位中;

  (3)紧缩双字是2个双字节紧缩在一个64位中;

  (4)4字是一个64位数据。

  下图为这4种数据类型的示意。

54

  MMX技术可对以上4种数据类型的每个数据单元(即紧缩字节中的8个字节单元,或紧缩字节中4个单元等)中的整型数据类型实现并行操作。这种并行操作是利用新增的57条MMX指令实现的。如:paddsb实现紧缩字节的带饱和加。

  1.2MMX技术的应用场合

  MMX技术直接面向短数据类型的循环操作,MMX指令可以并行地对多个紧缩在64位中的不同类型(8位、16位和32位)的数据元素进行算术逻辑运算。一条MMX指令能同时操作8个字节,且一种时钟周期内最多可执行两条指令(U流水线和V流水线),这意味着一个时钟周期能处理完16个字节的数据元素。MMX指令通过采用密集计算算法,对一小段数据进行局部化操作和循环操作,从而增加了应用程序的性能。几乎所有靠重复循环方式对整数数据进行计算的应用程序都能从MMX技术中获益。

  MMX技术的典型应用场合如下:

  (1)短整数数据类型(如8位图像数据和16位声音采样数据);(2)短的但却是高度重复的循环;

  (3)频繁的乘法累加操作(乘加操作在MMX指令集中为一条指令);(4)计算密集型算法;

  (5)高度并行的操作。

  结合具体的应用场合,根据MMX技术的特点加以合理运用,系统的性能将会有很大的提高。下面就结合视频编码中常用的DCT算法的MMX指令优化,来说明具体应用的切人点及应用中应当注意的问题。2应用MMX技术进行系统优化应用MMX技术进行系统优化的基本步骤如下:

  (1)分析系统,确定系统中高时间复杂度模块;(2)分析高时间复杂度模块中数据格式及算法结构,确定应用MMX技术优化系统的可能性;(3)根据数据格式及算法结构具体分析软件流程,应用MMX指令优化该模块;(4)进一步根据MMX技术中的优化准则调整程序结构,完成模块优化。

  利用MMX技术进行系统优化需要结合具体的应用进行分析,根据具体系统进行优化。这里我们结合PSTN可视电话系统中实时视频编码部分的MMX优化问题,以二维DCT为例进行分析。

  2.1确定高时间复杂度模块

  PSTN可视电话系统中视频编码采用H.261/H.263视频编码算法,是传统的运动补偿加帧间预测加帧内分块DCT为主的混合编码算法。这类算法是现在的视频编码应用中最具代表性的一类,对该算法的许多优化也可应用到其他的视频应用如MPEG-1、MPEG-2中。

  分析H.263算法各模块的时间复杂度及其在整个系统中所占的比例,我们首先发现二维快速DCT算法在整个系统中占用时间最多,从整体来看属于高时间复杂度模块。对算法时间复杂度的分析可以有多种方式,我们在这里利用了VisualC++中的Profiling工具,对软件系统中的各个应用模块进行了分析,得出快速DCT算法模块在整个系统中属于高时间复杂度模块,在编码系统中的时间比例约为70%。

  2.2分析应用MMX技术的可能性

  在确定了系统中的高时间复杂度模块后,需要分析该模块是否能够应用MMX技术进行优化。

  首先,因MMX指令是对整数进行操作的,故算法首先应是定点算法,或者是可转化为定点算法。

  其次,为了能够利用MMX技术单指令多数据(SIMD)的特点,操作的数据类型应尽可能是短整数数据类型,如8位或16位数据。

  最后,从结构上看,应用MMX技术对算法实现进行优化,主要利用SIMD技术中的并行性,因此要对算法结构进行整体分析寻找实现并行的可能性。

  二维DCT算法可以转换为水平和垂直方向的一维DCT算法的组合。以8×8的数据块为例,其算法的基本过程如下图所示,先逐行进行一维DCT.再对中间结果逐列进行一维DCT。

43

  下面我们分析二维DCT算法实现的MMX优化的可行性。首先,二维DCT快速算法有定点实现算法;其次DCT的输入数据格式为8位的图像像素数据或是16位的预测误差数据,并且计算的中间结果为16位数据,满足短整数的要求;至此已经满足了利用MMX技术进行优化的必要条件,现在要分析算法结构,以确定如何利用并行性以及确定如何减小转换到并行结构时产生的开销。

  由前面关于二维DCT算法过程的分析可知,二维DCT被转换成逐行、逐列的一维DCT,而每行(列)DCT均是一个8输入的蝶形运算,并且各行(列)的运算过程完全相同,由此我们考虑将8行和8列的一维DCT转换成并行算法结构。我们先分析行的并行化:因为DCT变换用到的为16位数据,因此可以利用紧缩字作为基本的数据单元进行运算,一个紧缩字可以包含4行的数据同时进行运算。因此8行数据可以用两次并行运算来实现。如果不考虑转并行过程的开销,那么仅从算法上应有4倍的效率提高。为了能够利用并行结构,必须对数据进行必要的组织。合理的组织数据可以尽可能降低转并行的开销,提高算法效率。这里因为是先对行,再对列的运算,我们先将8×8输入矩阵进行转置,这样可一次装入4行数据,两次并行运算后再对8×8的中间结果进行一次转置,再进行与行同样的运算,即可得到DCT输出。基本过程下如所示。

56

  2.3应用MMX指令优化模块

  在确定了应用MMX技术优化软件系统的基本框架之后,就是应用MMX指令来实现各个模块的基本算法。限于篇幅,我们略去了详细的程序说明。

  2.4调整程序结果

  当模块用MMX指令实现后,还需根据MMX技术的优化准则,在不改变算法结果的基础上调整程序结构,这一过程可以结合上一步进行。基本准则包括:

  (1)为利用流水线结构,尽量避免寄存器竞争,减小部分寄存器迟延;(2)利用U、V两条流水线,根据整数指令配对规则,使之最大限度的配对;(3)不要将MMX指令与浮点指令混杂。

  如果一个寄存器被用作基准单元,并且该寄存器是刚执行过程的前一条指令的目标,则需增加一个额外的时钟周期;乘法指令为3个时钟周期,也就是说,乘法的结果只有在3个时钟周期之后才能被利用,如果在紧跟乘法指令的3个时钟周期内使用该结果,将造成延时。这种延时对于优化程度都是不利的,应该避免。因为只有一个MMX移位器单元,两条都使用MMX移位器单元的MMX指令不能配对。因为只有一个乘法单元,两条都使用MMX乘法单元的MMX指令不能配对。应对指令组合作话当调整.如:

78

合理的配对及指令执行顺序,可以减小时钟周期的损失,提高代码的执行效率。更详细的关于指令配对及代码顺序问题参考Intel体系结构MMX技术开发手册。

  2.5效率问题

  通过试验结果测碍,经过MMX优化后的DCT实现算法由原来占编码程序70%时间下降到20%。因为总体编码时间的下降,优化后的DCT实现算法效率提高大大超过3倍。

  为达到高效率的实现,并行算法转化,程序结构优化以及指令间的配对、组合和顺序都是需要仔细考虑的问题,对系统的实现效率有很大的影响,不合理的使用可能导致优化系统的效率不高。应结合具体问题加以认真考虑。

  3结束语

  MMX技术的出现为实时多媒体通信提供了一个非常有用的工具,合理的使用可以大大提高系统执行的效率。试验结果表明,MMX技术的合理使用可以大大提高软件系统的实现效率。在MMX技术成功推出的基础上,Intel又推出了新的多媒体指令集,KNI指令(KatmaiNewInstructions),这说明MMX技术已经取得了成功。MMX技术在系统的软件实现中必将得到越来越广泛的应用。




本文关键字:技术  软件  科研成果电子知识资料 - 科研成果

《MMX技术在视频编码的实时软件实现中的应用探讨》相关文章>>>