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

本文分享了SIMD指令集的核心概念及其在多媒体应用领域的显著性能提升。通过回顾早期的学习经历,作者深入剖析了X86架构下SIMD指令集(如MMX/SSE/AVX)在图像处理和音频数据处理中的应用。同时,文章阐述了SIMD技术与并行计算的关系,以及其在未来提高芯片处理性能中的潜力。此外,文章还提及了类北京君正的XBurst指令集,强调了其在特定领域的独特价值和当前的保护状态。最后,作者分享了个人在工作期间对SIMD指令集进行改造的经验,体现了实践中的创新与挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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指令集的改造,个人觉得这项工作还是非常有意思的。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值