[SIMD]单指令多数据指令集(一)——SIMD简介

SIMD简介
       关于SIMD,百度上一搜一大堆(MMX/SSE/AVX/3DNow/NEON),我就不再浪费版面。这里想和大家分享的是一些自己的心得体会,之后会陆续提供一些自己做的例程,是分享,也算是一种总结。

       主流的几个CPU架构都有推出自己的SIMD指令集,X86的MMX/SSE/AVX,ARM Cortex-的NEON,MIPS架构的X-Burst。SIMD指令集最直接的是可以大幅提高多媒体应用的性能,比如图像里的像素点,可以用SIMD指令集一次性计算N个8-bit像素点;比如音频数据中大量的浮点运算,也可以一次性计算N个音频采样值。SIMD指令集的设计目标就是为了提高多媒体应用的性能。随着芯片工艺的不断发展,摩尔定律将会逐步失效。在可以预见的未来,并行计算是未来提高芯片处理性能的大方向,多线程主要完成任务并行,SIMD技术则主要完成数据并行。这里要补充一点的是,类似于北京君正,所推出的xburst也有基于SIMD的指令集,出于某种原因,这类芯片厂商目前还对他们的SIMD指令集加以保护,并未公开。

       最早接触SIMD指令集是在2008年的时候学习x264的时候,x264里主要用的是SSE2.2,针对宏块、子块的DCT变化、SAD、运动搜索、熵编码、运动补偿、帧内预测、帧间预测等。那时对SIMD指令集有了初步的认识,因为图像数据的像素点都是8bit的数值,原本用一个32bit寄存器一次计算一个值就够浪费了,所以一经SSE的优化,性能提高还是很客观的。不过之后的很长时间X86架构下的x264没有什么新的进展,一是因为x264已经优化到了一定地步,也不见SSE推出一些新的更加匹配的指令集,另一方面265已经出来了,有识之士肯定会把精力话到新标准上。在2010年接触到了基于SSE指令集的数学库,因为兴趣,也做了一些学习研究;后来又接触到了基于ARM的NEON指令集,仍然是在学习学习学习。

       一直到参加工作后(我所在的行业是信息安全领域),才开始自己动手对一些算法进行SIMD指令集的改造,个人觉得这项工作还是非常有意思的。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值