服务器 频道

IA32多媒体指令集革命 Intel SSE4前瞻

  SSE4——Penryn搭载的SSE4.1指令集主要分为三个部分,分别是SSE4视频编码加速部分、SSE4图形加速部分和SSE4流加载部分,其中SSE4视频编码加速部分包括了14条指令,用于加速4x4绝对差和、子像素过滤一击数据查找方面的性能。

  在进行视频编码时,需要进行大量的Motion Estimation(动态预测),动态预测是视频编码过程中极其重要的一个环节,它的算法效率对整个编码效率有很大的影响,而这个动态预测需要进行大量的SAD(Sums of Absolute Difference,差分绝对值和)的运算,该运算是大部分视频编码算法中运动估计一步常采用的方法。SAD算法将会在相邻两个连续视频帧中找出一个大块的运动情况,以纪录其运动数据代替纪录像素数据而节约存储容量、压缩视频。为此,SAD需要计算两个大块中每一组对应的像素值之间绝对差值的累加和。这本身就是一个非常复杂的大数据量运算动作,即使依靠SIMD指令的一条指令就处理大量数据的优势,要组合成SAD操作代码也需要大量的指令。

  现在,SSE4指令集内特别加入了SAD加速运算指令,只需要一条指令就可以快速高效地完成这些工作。例如,在SSE4之前,一个SAD工作代码如下:

  非常的冗长繁琐,而在有了SSE4之后,这些指令就可以简化为一条指令:

  MPSADBW xmm0,xmm1,0

  简化量是非常巨大的。而在复杂的动态预测程序中,要执行复杂的SAD代码,这时SSE4还可以额外提供更高的方便性:

   SSSE3可以看作是SSE4的一个提前“泄露”的子集,同样的工作,右边的SSE4代码无疑要比SSSE3更为简捷。

  SSE4当中还加入了快速查找的指令,虽然并不仅仅是视频编码才能具有作用,然而对于整位像素和子像素运动估计方面具有特别好的效果,如下图的指令可以在8个元素中找到最小的一个元素,并找到其位置:

  在Intel的SSE4展示当中,使用搭载SSE4指令集的2.66G Wolfdale Core 2系统对比2.33G Core 2 Duo E6550进行Pegasys TMPGEnc 4.0 XPress HDTV编码,最后得到了55%的性能提升,其中加速的SAD处理和快速查找在各自的领域的性能提升达到了2~3倍,SSE4指令集的作用可见一斑:

  其中,CPU的频率提升只有14%,总应用程序提升却达到了55%,这就是SSE4视频编码加速指令的作用了。

0
相关文章