指令深入分析AVX指令集

avx指令集  时间:2021-03-10  阅读:()

S N B平台掌上明珠深入分析AVX指令集

指令集是指CPU能执行的所有指令的集合每一指令对应一种操作任何程序最终要编译成一条条指令才能让CPU识别并执行。 CP U依靠指令来计算和控制系统所以指令强弱是衡量CPU性能的重要指标指令集也成为提高CPU效率的有效工具。

CPU都有一个基本的指令集 比如说目前英特尔和AMD的绝大部分处理器都使用的是X86指令集 因为它们都源自于X86架构。但无论CPU有多快 X86指令也只能一次处理一个数据这样效率就很低下毕竟在很多应用中数据都是成组出现的 比如一个点的坐标XYZ和颜色RG B 、多声道音频等。为了提高CPU在某些方面的性能就必须增加一些特殊的指令满足时代进步的需求这些新增的指令就构成了扩展指令集。

英特尔C PU扩展指令集演变

英特尔在1996年率先引入了MMXMulti Media eXtens ions多媒体扩展指令集也开创了SIMDSingle Instruction Multiple Data单指令多数据指令集之先河 即在一个周期内一个指令可以完成多个数据操作MMX指令集的出现让当时的MM XP entium大出风头。

英特尔处理器扩展指令集演变史图片来源后藤弘茂

SSEStreaming SIMD Extensions流式单指令多数据扩展指令集是1999年英特尔在Pentium III处理器中率先推出的并将矢量处理能力从64位扩展到了128位。在Willamette核心的Pentium 4中英特尔又将扩展指令集升级到S SE2 2000年 而S SE3指令集2004年是从Presc ott核心的Pentium 4开始出现。

SSE4 2007年指令集是自SSE以来最大的一次指令集扩展它实际上分成P enryn中出现的S S E4.1和Nehalem中出现的S S E4.2其中S S E4.1占据了大部分的指令共有47条Nehalem中的S SE4指令集更新很少只有7条指令这样一共有54条指令称为SSE4.2。

Sandy Bridge支持AVX指令集

当我们还在惯性的认为英特尔将推出S SE5时不料半路杀出来个程咬金 2007年8月 AMD抢先宣布了SSE5指令集(SSE到SSE4均为英特尔出品)英特尔当即黑脸表示不支持S SE5转而在2008年3月宣布Sandy Bridge微架构将引入全新的AVX指令集 同年4月英特尔公布AVX指令集规范随后开始不断进行更新业界普遍认为支持AVX指令集是Sandy Br idge最重要的进步没有之一。

英特尔AVX指令集简介

AVXAdvanced Vector Extensions高级矢量扩展指令集借鉴了一些AMD SSE5的设计思路进行扩展和加强形成一套新一代的完整S I MD指令集规范。

IDF2010上演示AVX应用

在今年4月的IDF2010上英特尔演示了AVX的应用在两个不同平台上动态跟踪刘翔运行服上的五星红旗结果显示支持AVX的系统视频跟踪的用时为14秒 比不支持AVX的系统快了21秒性能提升了60%以上。

有兴趣的读者可以点击观看AVX应用主题演讲视频时间大概在第33分钟左右。

英特尔AVX的新特性

英特尔AVX指令集主要在以下几个方面得到扩充和加强

·支持256位矢量计算浮点性能最大提升2倍

·增强的数据重排更有效存取数据

·支持3操作数和4操作数在矢量和标量代码中能更好使用寄存器

·支持灵活的不对齐内存地址访问

·支持灵活的扩展性强的VEX编码方式可减少代码

支持256位矢量计算

自1999年SSE将矢量处理能力从64位提升到128位后 SSE系列指令都只能使用128位X MM寄存器这次AVX将所有16个128位XMM寄存器扩充为256位的YMM寄存器从而支持256位的矢量计算。

128位的X MM寄存器扩展到256位的YMM寄存器

这意味着可以同时处理8个32bit的浮点或是一个256bit的浮点在写程序时可以忽略SSE 128bit的限制直接写入一个可以进行多组操作能够充分利用256bit数据位宽的代码理想状态下浮点性能最高能达到前代的2倍水平。

当然有时并不是能完全能利用这256位在大多数情况下这些寄存器的高128位是设为0或者是“LEFTunchanged” 同时所有的S SE/S SE2/S SE3/S S SE3/S SE4指令是被AVX全面兼容的AVX不兼容M MX  因此实际操作的是YMM寄存器的低128位在这一点上与原来的SSE系列指令集无异。

Sandy Bridge最突出的部分

为了满足指令集带来的改进 Lo ad载入单元也要适应一次载入256B it的能力所以增加了一组载入单元完成载入操作并不是单纯的将带宽扩展一倍。这样可以在一个时钟周期内实现256位的乘、加和S huffle运算。

使用新的256位寄存器来提升数据I/O效率更好的标记、传播载入的数据动态的改变数据序列 以此来组织、访问和载入运算所需的数据速度更快效率更高。

AVX增加了很多新的浮点运算指令

AVX还引入了很多新的浮点运算指令浮点运算能力加强不光提升了3D游戏还可以更有效的支持如复杂的flash显示更快的SVG可伸缩矢量图形支持更好的HTM L5效果等等相比用GPU计算来讲功耗更小体积更小成本也小对GPU计算是个不大不小的冲击。

支持3操作数和4操作数

通常一条计算机指令包括有操作码和操作数operands 操作码决定要完成的操作操作数指参加运算的数据及其所在的单元地址。 比如movaps xmm1,xmm0就是一个双操作数 SSE指令movaps为操作码其功能是将xmm0寄存器的内容复制给xmm 1 。

新的3操作数和4操作数格式

AVX指令集改进和加强了原有的在3个操作数指令的编码和语法使之更灵活。 比如要实现xmm 10=xmm9+xmm 1的功能 以前需要两个指令执行movapps xmm 10,xmm9 将xmm9寄存器数据c opy到xmm 10addpd xmm 10,xmm 1 将xmm 1和xmm 10寄存器数据相加并存放到xmm 10

应用AVX指令集新的3操作数方式可以直接由一条指令就能完成vaddpd xmm 10,xmm9,xmm 1

显然AVX三操作数能带来更少的寄存器复制并且代码也更精简。

4操作数虽然是AMD在S S E5中首先提出的但英特尔的AVX也能支持这一方式其最终收益是对AVX 128和AVX 256使用非破坏性语法减少寄存器间的拷贝精简代码增加load/op fusion的机会。movaps xmm0,xmm4movaps xmm 1,xmm2blendvps xmm 1,m 128

比如上面的三条指令利用4操作数可以不需要使用隐含的xmm0直接由下面一条指令完成vblendvp s xmm 1,xmm2,m 128,xmm4

支持灵活的不对齐内存地址访问

CPU在工作时只能按照内部数据位宽长度比如说32bit的整倍数为边界进行内存操作即只能从地址0、 32、 64、 96. ..处进行存取而不能从27、 58、 83等非边界地址处进行。如果一定要取这些非边界地址处的内容则必须用若干个操作将其凑出来 因而大大影响存取效率。

一个结构体的设计长度却并不一定是32的倍数例如一个六个字符的结构其长度为48位如果多个这样的结构在内存中顺着摆放则许多结构的起始地址将不在边界处 因此编译程序总是会将每个结构的尾部都加入一些必要的空白将其凑成32的整数倍这就是边界对齐的基本道理。

传统的指令中 当访问不对齐内存unaligned memory ac c es s时需要相当大的访问周期甚至会有惩罚性延时极大地降低速度。

而在AVX指令集中 以VE X前缀编码的算术指令和内存访问指令在访问内存时更灵活既可访问对齐的内存地址也可访问未对齐的数据。当然访问未对齐数据多少都会有损失但相对传统的指令来说所承受的惩罚要小得多。

革新的VEX指令编码方式

英特尔在2008年春天的I DF上介绍AVX的时候就表示AVX的重点在于采用了称为“VEX(Vector Extension)”革新的指令编码方式。

DiyVM(50元起)老牌商家,香港沙田CN2直连vps/不限流量/五折终身优惠

diyvm怎么样?diyvm是一家国内成立时间比较久的主机商家了,大约在6年前站长曾经用过他家的美国机房的套餐,非常稳定,适合做站,目前商家正在针对香港沙田机房的VPS进行促销,给的是五折优惠,续费同价,香港沙田机房走的是CN2直连的线路,到大陆地区的速度非常好,DiyVM商家采用小带宽不限流量的形式,带宽2Mbps起步,做站完全够用,有需要的朋友可以入手。diyvm优惠码:五折优惠码:OFF50...

热网互联33元/月,香港/日本/洛杉矶/韩国CN2高速线路云主机

热网互联怎么样?热网互联(hotiis)是随客云计算(Suike.Cloud)成立于2009年,增值电信业务经营许可证:B1-20203716)旗下平台。热网互联云主机是CN2高速回国线路,香港/日本/洛杉矶/韩国CN2高速线路云主机,最低33元/月;热网互联国内BGP高防服务器,香港服务器,日本服务器全线活动中,大量七五折来袭!点击进入:热网互联官方网站地址热网互联香港/日本/洛杉矶/韩国cn2...

触摸云 26元/月 ,美国200G高防云服务器

触摸云触摸云(cmzi.com),国人商家,有IDC/ISP正规资质,主营香港线路VPS、物理机等产品。本次为大家带上的是美国高防2区的套餐。去程普通线路,回程cn2 gia,均衡防御速度与防御,防御值为200G,无视UDP攻击,可选择性是否开启CC防御策略,超过峰值黑洞1-2小时。最低套餐20M起,多数套餐为50M,适合有防御型建站需求使用。美国高防2区 弹性云[大宽带]· 配置:1-16核· ...

avx指令集为你推荐
酒店回应名媛拼单泰国酒店写错入住人姓名有影响吗?openeuler电脑上显示openser是什么意思?怎么查询商标如何查询商标注册月神谭求几个个性网名:同ip站点同IP做同类站好吗?haole16.com高手们帮我看看我的新网站WWW.16mngt.com怎么不被收录啊?抓站工具抓鸡要什么工具?partnersonline我家Internet Explorer为什么开不起来baqizi.cc和空姐一起的日子电视剧在线观看 和空姐一起的日子全集在线观看javlibrary.comImage Library Sell Photos Digital Photos Photo Sharing Photo Restoration Digital Photos Photo Albums
海外虚拟主机空间 大硬盘 highfrequency 安云加速器 全球付 香港cdn mysql主机 hnyd 网站挂马检测工具 帽子云 hostker admit的用法 速度云 qq云端 服务器监测 华为云服务登录 cloudlink 512mb 西安服务器托管 lamp兄弟连 更多