Intel AVX 指令集对视频处理的影响

公司BBS有位老外最近提出了他对AVX的看法和分析,总体跟我不谋而合,触发了我想写一篇关于AVX的文章的想法,现将我的想法整理如下:

AVX是Intel在这么多年SIMD技术应用和发展的实践中诞生的全新指令集。号称”它引入了256位向量处理能力,丰富的数据重排新指令,直观的3、4操作数指令,完整的源和目的操作数Mask体系等,将SIMD指令集的成熟度提升到一个新的水平!更高带宽、更低延时、更小代码 “。但实际情况是不是这样呢?

   我觉得比MMX/SSE/SSE2/SSE3/SSSE3/SSE4这些指令集对大多数video处理没有提高多少,除非这个视频流处理需要很多的浮点运算,

所谓256位向量处理能力,该是指的是他引入的256位寄存器YMM0, YMM1, …, YMM15.但是现在在大多数情况下,在特定模式设定下,这些寄存器的高128位是设为0或者是”left unchanged”,同时所有的MMX/SSE/SSE2/SSE3/SSSE3/SSE4指令是被AVX全面兼容的,只是换了一种encoding 方式,同样操作的是YMM寄存器的低128位,所以这点毫无区别。

AVX最大的变化是引入了很多浮点运算指令,但是对于精度要求不高的普通视频流影响有限,除非是3D游戏这样的要求。但是浮点运算能力加强,不光提升了3D游戏,还可以更有效的支持如复杂的flash显示,更快的SVG支持,更好的HTML5效果、以及一些考显示效果过日子的软件产品,相比用GPU来讲功耗更小,体积更小,成本更少,所以还有很有应用前景的(感谢nick yang的启发)

另外,AVX的另一个好处是支持不对齐地址访问, 因为SSE指令除了load 和store,都是要求16字节对齐的。据说这就满足减少代码量的要求了。但是我为什么能用一个load 16字节数据指令 到寄存器,再用寄存器指令操作来代替两个在内存里的load ,运算指令流呢,两种方法对代码量能差多少?

最后一个问题,虽说AVX能调用256位指令一次32个字节,但是你准备的数据量也多了一倍,所以指望它能提高一倍的效率从原理上讲,就是不可能的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值