指令深入分析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)”革新的指令编码方式。

Friendhosting,美国迈阿密机房新上线,全场45折特价优惠,100Mbps带宽不限流量,美国/荷兰/波兰/乌兰克/瑞士等可选,7.18欧元/半年

近日Friendhosting发布了最新的消息,新上线了美国迈阿密的云产品,之前的夏季优惠活动还在进行中,全场一次性45折优惠,最高可购买半年,超过半年优惠力度就不高了,Friendhosting商家的优势就是100Mbps带宽不限流量,有需要的朋友可以尝试一下。Friendhosting怎么样?Friendhosting服务器好不好?Friendhosting服务器值不值得购买?Friendho...

搬瓦工香港 PCCW 机房已免费迁移升级至香港 CN2 GIA 机房

搬瓦工最新优惠码优惠码:BWH3HYATVBJW,节约6.58%,全场通用!搬瓦工关闭香港 PCCW 机房通知下面提炼一下邮件的关键信息,原文在最后面。香港 CN2 GIA 机房自从 2020 年上线以来,网络性能大幅提升,所有新订单都默认部署在香港 CN2 GIA 机房;目前可以免费迁移到香港 CN2 GIA 机房,在 KiwiVM 控制面板选择 HKHK_8 机房进行迁移即可,迁移会改变 IP...

HostKvm开年促销:香港国际/美国洛杉矶VPS七折,其他机房八折

HostKvm也发布了开年促销方案,针对香港国际和美国洛杉矶两个机房的VPS主机提供7折优惠码,其他机房业务提供8折优惠码。商家成立于2013年,提供基于KVM架构的VPS主机,可选数据中心包括日本、新加坡、韩国、美国、中国香港等多个地区机房,均为国内直连或优化线路,延迟较低,适合建站或者远程办公等。下面列出几款主机配置信息。美国洛杉矶套餐:美国 US-Plan1CPU:1core内存:2GB硬盘...

avx指令集为你推荐
怎么查询商标手机上能查询商标吗?怎么查?硬盘工作原理高人指点:电子存储器(U盘,储存卡,硬盘等)的工作原理mathplayer西南交大网页上的 Mathplayer 安装了为什么还是用不了?甲骨文不满赔偿公司倒闭员工不满一年怎么赔偿bbs.99nets.com怎么打造完美SFxyq.163.cbg.com梦幻CBG的网站是什么。月神谭有没有什么好看的小说?拒绝言情小说!同一ip网站同IP的网站互相链接会被K吗?bbs2.99nets.com这个"风情东南亚"网站有78kg.cn做网址又用bbs.风情东南亚.cn那么多此一举啊!kb123.net连网方式:wap和net到底有什么不一样的
域名服务商 高防服务器租用 汉邦高科域名申请 什么是域名地址 qq云存储 godaddy支付宝 好看的桌面背景大图 淘宝双十一2018 jsp空间 佛山高防服务器 网络空间租赁 爱奇艺会员免费试用 Updog 国外视频网站有哪些 www789 下载速度测试 东莞服务器托管 东莞主机托管 华为k3 114dns 更多