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

一键去除宝塔面板各种计算题与延时等待

现在宝塔面板真的是越来越过分了,删除文件、删除数据库、删除站点等操作都需要做计算题!我今天升级到7.7版本,发现删除数据库竟然还加了几秒的延时等待,也无法跳过!宝塔的老板该不会是小学数学老师吧,那么喜欢让我们做计算题!因此我写了个js用于去除各种计算题以及延时等待,同时还去除了软件列表页面的bt企业版广告。只需要执行以下命令即可一键完成!复制以下命令在SSH界面执行:Layout_file="/w...

ATCLOUD.NET-OVH海外高防云主机,采用KVM架构,稳定安全且便宜好用,仅3刀起

官方网站:点击访问ATCLOUD.NET官网优惠码:目前提供Cloud VPS与Storage VPS两款产品的六折优惠活动(续费同价,截止至2021年5月31日)优惠码:UMMBPBR20Z活动方案:一、型号CPU内存磁盘流量优惠价格购买链接VPS-1GB0.5×2.6+GHz1GB20GB1TB$3立即购买VPS-2GB1×2.6+GHz2GB50GB2TB$6立即购买VPS-4GB2×2.6...

hosthatch:14个数据中心15美元/年

hosthatch在做美国独立日促销,可能你会说这操作是不是晚了一个月?对,为了准备资源等,他们拖延到现在才有空,这次是针对自己全球14个数据中心的VPS。提前示警:各个数据中心的网络没有一个是针对中国直连的,都会绕道而且ping值比较高,想买的考虑清楚再说!官方网站:https://hosthatch.com所有VPS都基于KVM虚拟,支持PayPal在内的多种付款方式!芝加哥(大硬盘)VPS5...

avx指令集为你推荐
刘祚天还有DJ网么?比肩工场比肩接踵的意思陈嘉垣马德钟狼吻案事件是怎么回事丑福晋爱新觉罗.允禄真正的福晋是谁?他真的是一个残酷,噬血但很专情的一个人吗?m.2828dy.comwww.dy6868.com这个电影网怎么样?www.7788dy.com回家的诱惑 哪个网站更新的最快啊www.mywife.ccmywife哪部最经典杨丽晓博客明星的最新博文汴京清谈汴京平,众争趋赀货,璋独无所取,惟载书数千卷而还什么意思彪言彪语很多的话:( )言( )语 豪迈雄壮:( )言( )语 含有讽刺意味的风凉话:( )言( )语
www二级域名 net主机 阿云浏览器 softbank官网 gomezpeer 私有云存储 牛人与腾讯客服对话 中国智能物流骨干网 毫秒英文 美国在线代理服务器 空间合租 ftp免费空间 微软服务器操作系统 根服务器 空间登入 阿里云邮箱登陆地址 腾讯网盘 美国主机侦探 godaddyssl 卡巴斯基官方下载 更多