Intel 的AVX2指令集解读
在Intel Sandy Bridge微架构中,Intel引入了256位SIMD扩展AVX,这套指令集在兼容原MMX、SSE、SSE2对128位整点SIMD支持的基础上,把支持的总向量数据宽度扩展成了256位。新增了若干条256位浮点SIMD指令。
昨天,Intel刚刚发布了AVX2指令集,这套指令集在AVX基础上做了扩展,不过要在2013年发布的Haswell处理器上才能支持。参考1给出了AVX2的详细特性。
AVX2指令集概述
相比AVX,AVX2在如下方面做了扩展。
- 支持的整点SIMD数据宽度从128位扩展到256位。Sandy Bridge虽然已经将支持的SIMD数据宽度增加到了256位,但仅仅增加了对256位的浮点SIMD支持,整点SIMD数据的宽度还停留在128位上,
- 增强广播、置换指令支持的数据元素类型、移位操作对各个数据元素可变移位数的支持、跨距访存支持。
跨距访存支持
跨距访存支持即访存时,每个SIMD数据的向量数据元素可以来自不相邻的内存地址。AVX2的跨距访存指令称为”gather”指令,该指令的操作数是一个基地址加一个向量寄存器,向量寄存器中存放着SIMD数据中各个元素相对基地址的偏移量是多少。有了这条指令,CPU可以轻松用一条指令实现若干不连续数据”聚集”到一个SIMD寄存器中。这会对编译器和虚拟机充分利用向量指令带来很大便利,尤其是自动向量化。另外,参考2中对跨距访存指令的功能描述中可以看到,当该指令的偏移地址向量寄存器中任何两个值相同时,都会出GP错。这意味着编译器还是需要些特殊处理才能利用好这条指令。
跨距访存指令
但跨距访存指令仅仅支持32位整点、64位整点、单精度浮点、双精度浮点的跨距访存操作。从参考4可以猜测其实gather指令只是在硬件上分解成若干条32位或64位的微访存指令实现。这就移位着其实一条32×8的SIMD访存其实就是8次32位普通数据访存,其访存延时和延时不确定性会非常大,聊剩于无。
拓宽原有整点SIMD指令
理论上从128位到256位的成倍SIMD宽度扩展能带来一倍的加速。
从128位扩展到256位的整点SIMD指令
位操作指令支持
这些指令在加速数据库压缩、哈希,大数的算术计算方面会有帮助。
新增的位访存操作指令
任意位置的SIMD数据置换支持
这一支持将使编译器可以更灵活的使用这条指令协助自动向量化。像参考5这类工作就能实施在Intel的芯片中。
任意位置数据置换指令支持
向量-向量移位支持
之前Intel上的所有SIMD扩展指令的移位操作仅支持所有SIMD数据同时移位相同的位数,有了向量-向量移位支持,就可以为每个SIMD数据做不同的移位操作。
向量-向量移位操作支持
浮点乘法累积操作
之前的X86处理器上的累积操作多数针对整点数据,这次针对浮点数据增加的60条SIMD操作会给Intel跑浮点Benchmark,比如linpack之类的带来很多加速。
《编译点滴》评论
之前几乎所有在通用微处理器上的SIMD指令,都倾向于一刀切策略,即所有的SIMD操作都针对SIMD数据实施完全相同的操作,并不存在特性化的指令。比如访存都是从一块连续的地址空间直接访存、移位时所有的数据都移动相同的位数,数据置换指令的支持也是最近才出现在通用CPU中的。AVX2的这些支持再次肯定了个性化的趋势,CPU中的SIMD支持朝着GPU的方向大踏步前进,并最终赶上并超越向量机。不得不称赞一下IBM的超前思想。AVX2中的这些特性支持在几年前的Power处理器中就已经出现了。
虽然AVX号称可以扩展到512位甚至1024位的SIMD支持,但是所带来的问题怎么解决,期待AVX3或者AMD的小宇宙爆发,或者威盛的黑马:
- 理论上,增加1倍的向量数据宽度,将带来2倍的晶体管数量提升。目前,Intel的AVX指令集只实现在片上每个core里,作为core中的一个功能部件,若扩展到1024位,将增加4倍的晶体管。虽然制造工艺也会改进,但功耗还是会很大,怎么解决?
- 在自动向量化仍然不好用的前提下,普通程序很难利用到这些功能做加速,白白的浪费这些晶体管吗?
- 这么大的数据计算能力,访存怎么供数?对齐貌似还是没有好的方法。还是要程序员自己吭哧吭哧写向量化代码,调试吗?芯片厂商可以每几年升级一次宽度,但兼容性如何保证,原来有64位、128位、256位分别对应MMX、XMM、YMM寄存器,以后呢?
参考
- http://software.intel.com/en-us/blogs/2011/06/13/haswell-new-instruction-descriptions-now-available/
- http://software.intel.com/file/36945
- http://en.wikipedia.org/wiki/Haswell_%28microarchitecture%29
- http://software.intel.com/en-us/forums/showthread.php?t=83459&o=a&s=lr
- http://portal.acm.org/citation.cfm?id=1133996
Intel 的AVX2指令集解读相关推荐
- Intel的AVX2指令集解读
原文链接:http://blog.csdn.net/vbskj/article/details/38408213 在Intel Sandy Bridge微架构中,Intel引入了256位SIMD扩展A ...
- 关于dorisdb 本地搭建virtual_box虚拟机设置CPU支持AVX2指令集
dorisdb安装文档要求 https://docs.dorisdb.com/zh-cn/main/quick_start/Deploy 解决办法 Intel VT-x和AMD-V是intel和amd ...
- python指令集_Tensorflow不支持AVX2指令集的解决方法
这几天研究了一下FCN(全卷积网络),由于电脑配置不够,用GPU训练直接报OOM(内存溢出)了, 于是转战CPU,当然,这样会很慢,之后会继续搞一下,减小一下网络的复杂度,对一些参数设置一波,看能不能 ...
- Intel SIMD: AVX2
AVX2 资料: Intel 内部指令 - AVX和AVX2学习笔记 Intel Intrinsics - AVX & AVX2 Learning Notes Module x86 AVX 向 ...
- 查看cpu是否支持avx2指令集
也就是查看服务器支持的指令集 cat /proc/cpuinfo
- CPU版的Tensorflow不支持AVX2指令集问题解决方案
这个问题遇到第三次了,回想查找解决方案的艰辛,为自己以后方便解决也为各位减少时间浪费,特说明自己遇到问题情况以及自己的解决方案.主要写两点:1.pip导入whl文件和PyCharm使用pip内部库2. ...
- 一文读懂SIMD指令集 目前最全SSE/AVX介绍
SIMD指令集 SSE/AVX 概述 参考手册 Intel® Intrinsics Guide Tommesani.com Docs Intel® 64 and IA-32 Architectures ...
- 多核cpu应用场景_多核?高频?不同需求哪种CPU最适合自己呢?
原标题:多核?高频?不同需求哪种CPU最适合自己呢? [PConline 杂谈]如今的办公场景中,混杂着各种各样的应用:文档处理,网页浏览,多媒体编辑.人们装机来办公,茶余饭后时间可能还想玩几局游戏放 ...
- 多核cpu应用场景_2019电脑CPU怎么选_多核cpu和单核的区别|哪个好-太平洋电脑网...
[PConline 杂谈]如今的办公场景中,混杂着各种各样的应用:文档处理,网页浏览,多媒体编辑.人们装机来办公,茶余饭后时间可能还想玩几局游戏放松放松,最起码的要求就是"流畅不卡" ...
最新文章
- GitHub上传代码、更新代码、token设置
- JavaScript 学习中的帮助记忆(日积月累)
- GDCM:gdcm::SequenceOfItems的测试程序
- 网络流-最大流 dinic+当前弧优化(模板)
- C++中的继承(二)
- jenkins java_具有WildFly,Arquillian,Jenkins和OpenShift的Java EE 7部署管道
- 风靡全球的儿童编程语言:Scratch
- 深入理解Transformer及其源码
- 《设计模式详解》行为型模式 - 命令模式
- 磁盘位置_ORACLE RAC ASM磁盘组迁移到新的ASM磁盘组方法
- Excel如何冻结多行多列
- win10强制关闭飞行模式_win10笔记本突然连不上wifi怎么办?
- arduino智能浇花系统_基于Arduino单片机的智能浇花器
- 机器人搭建记录 HoshinoBot
- MT8735芯片技术资料解析,MT8735处理器简介
- mysql刷新当前数据库_sqlyog刷新数据库
- GPS接收机(三)低噪放设计和版图仿真优化
- 流媒体协议之RTMP详解
- java 汇编_大话+图说:Java 汇编指令——只为让你懂
- 齐博 4.0 ditu.inc.php,齐博系统全版本后台无限制可getshell
热门文章
- 信号相角位移量的计算与信号位移计算-附Matlab代码
- 浏览器新建标签页被篡改
- matlab simhash,最大非负的序列和 - 轻舞凋零的个人空间 - OSCHINA - 中文开源技术交流社区...
- Linux运维网络基础
- 网络与串口调试工具TCPCOM
- JSP+Servlet+MySql超市管理系统项目源码
- 配置法 求解1D第二类线性的Fredholm积分方程 +MATLAB
- [附源码]计算机毕业设计校园订餐管理系统Springboot程序
- 嵌入式:I/O接口扩展
- matlab 提示秩 1,Cholesky 分解的秩 1 更新