首页 > 其他分享 >[转帖]AVX-512指令集的前世今生

[转帖]AVX-512指令集的前世今生

时间:2024-02-24 23:01:01浏览次数:21  
标签:AVX 英特尔 转帖 指令 指令集 512 CPU

https://zhuanlan.zhihu.com/p/136099964

 

什么是指令集

计算机上的任何程序最终要编译成一条条指令才能让CPU识别并执行,指令集是指CPU能执行的所有指令的集合,每一指令对应一种操作,CPU依靠指令来计算和控制系统,指令执行能力是衡量CPU性能的重要指标,指令集也与CPU效率有密切关系。CPU都有一个基本的指令集,比如说目前英特尔和AMD的绝大部分处理器都使用的是X86指令集,因为它们都源自于X86架构。

1978年6月8日,Intel发布了新款16位微处理器“8086”,也同时开创了一个新时代:x86架构诞生了。x86指的是特定微处理器执行的一些计算机语言指令集,定义了芯片的基本使用规则。

为什么会有扩展指令集

无论CPU有多快,X86指令也只能一次处理一个数据,这样效率就很低下,毕竟在很多应用中,数据都是成组出现的,比如一个点的坐标(XYZ)和颜色(RGB)、多声道音频等。为了提高CPU在某些方面的性能,就必须增加一些特殊的指令满足时代进步的需求,这些新增的指令就构成了扩展指令集。

扩展指令集的演变过程

英特尔在1996年率先引入了MMX(Multi Media eXtensions)多媒体扩展指令集,也开创了SIMD(Single Instruction Multiple Data,单指令多数据)指令集之先河,即在一个周期内一个指令可以完成多个数据操作,MMX指令集的出现让当时的MMX Pentium处理器大出风头。

SSE(Streaming SIMD Extensions,流式单指令多数据扩展)指令集是1999年英特尔在Pentium III处理器中率先推出的,并将矢量处理能力从64位扩展到了128位。

在Willamette核心的Pentium 4中英特尔又将扩展指令集升级到SSE2(2000年),而SSE3指令集(2004年)是从Prescott核心的Pentium 4(第一次接触电脑时就是奔4)开始出现。

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

2007年8月,通用CPU领域Intel友商AMD抢先宣布了SSE5指令集(SSE到SSE4均为英特尔出品),英特尔当即表示不玩SSE了也不再支持SSE5。

AVX出现了

2008年3月Intel宣布Sandy Bridge微架构将引入全新的AVX指令集,同年4月公布AVX指令集规范,随后开始不断进行更新,业界普遍认为支持AVX指令集是Sandy Bridge最重要的进步,没有之一。

其中AVX全称是Advanced Vector Extension,高级矢量扩展,什么是矢量?学过矩阵论的也应该知道,学过线性代数的也应该知道,高中物理里面也会提到:方向+大小的三维或四维标量组合,一般常用N维矩阵表示,计算机编程中就是用数组来表示。

AVX指令集“借鉴”了一些AMD SSE5的设计思路,进行扩展和加强,形成一套新一代的完整SIMD(上文提到过,单指令多数据)指令集规范。

在2010年4月的IDF2010上,英特尔演示了AVX的应用,在两个不同平台上动态跟踪刘翔运行服上的五星红旗,结果显示,支持AVX的系统视频跟踪的用时为14秒,比不支持AVX的系统快了21秒,性能提升了60%以上。最后AMD为了不让广大程序员精神分裂,无奈宣布支持AVX。

英特尔AVX指令集主要在以下几个方面得到扩充和加强:
  • 支持256位矢量计算,浮点性能最大提升2倍
  • 增强的数据重排,更有效存取数据
  • 支持3操作数和4操作数,在矢量和标量代码中能更好使用寄存器
  • 支持灵活的不对齐内存地址访问
  • 支持灵活的扩展性强的VEX编码方式,可减少代码。
(回忆一下计算机专业的理论基础课计算机组织结构、汇编语言吧)

比SSE4浮点性能最大提升了2倍。

在2011年发布的AVX2则在此基础上加入了以下新内容:

  • 整数SIMD指令扩展至256位
  • 2个新FMA单元及浮点FMA指令
  • 离散数据加载指令“gather”
  • 新的位移和广播指令

用人话说就是,整数和浮点计算理论性能又翻倍了,这个世界变化太快发现计算机专业的人不学习真的不行啊

2013年,英特尔正式发布了AVX-512指令集,和之前的 AVX/AVX2一样(只是为了迷惑大家,用位数512命名下一代),AVX-512(个人觉得也可以叫AVX3)是一组新的指令集,都属于向量运算指令,将指令宽度进一步扩展到了512bit,相比AVX2在数据寄存器宽度、数量以及FMA单元的宽度都增加了一倍,所以在每个时钟周期内可以打包32 次双精度和 64 次单精度浮点运算,或者8个 64 位和16个 32 位整数,因此在图像/音视频处理、数据分析、科学计算、数据加密和压缩以及人工智能/深度学习等密集型计算应用场景中,会带来前所未有的强大性能表现,理论上浮点性能翻倍,整数计算则增加约33%的性能。

支持的数据宽度更大了。更大数据宽度的向量指令一直(在深度学习流行起来以前) 被用于加速各种实际运算,例如多媒体编解码、加密解密和数值运算等。用英语说就是:
Intel® AVX-512 is a set of new instructions that can accelerate performance for workloads and usages such as scientific simulations, financial analytics, artificial intelligence (AI)/deep learning, 3D modeling and analysis, image and audio/video processing, cryptography and data compression.

比较巧的是近期兴起的深度学习也刚好需要这类运算和需求,所以 AVX-512 乘着深度学习的东风不断发展壮大,目前AVX-512逐步全面普及,但CPU支持最新指令集,并不表示你的商业软件和科学计算算法能够有效利用。

为什么不出AVX-1024或下一代其他名字的指令集呢,个人觉得Intel也不用太着急,毕竟AMD在Intel发布AVX2的6年后才在Zen2中引入,而国内的自主可控CPU,还有很多值得国人深思的问题,好在国家战略层面已经认识到了这个问题!

总体来讲,结合核数的增加,这么多年下来计算机计算速度的增加依然遵循着摩尔定律。

摩尔定律:当价格不变时,集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也将提升一倍。换言之,每一美元所能买到的电脑性能,将每隔18个月翻两倍以上。

更为恐怖的是:反摩尔定律

就是反过来看摩尔定律。一个IT公司如果今天和18个月前卖掉同样多的、同样的产品,它的营业额就要降一半。IT届把它称为反摩尔定律。

标签:AVX,英特尔,转帖,指令,指令集,512,CPU
From: https://www.cnblogs.com/jinanxiaolaohu/p/17981790

相关文章

  • [转帖]Oracle Exadata x8m-2的更新
    http://www.ohsdba.cn/index.php?g=Home&m=Article&a=show&id=425 如非注明,本站文章皆为原创。欢迎转载,转载时请注明出处和作者信息。在2019年9月16日的OOW大会上,LarryEllison发布了OracleExadata下一代的数据库云平台X8M,在数据库基础设施领域又树立了一个新的标杆。和Exa......
  • [转帖]IB和RoCE,谁更适合AI数据中心网络?
    https://zhuanlan.zhihu.com/p/668576216 超高带宽、超低延迟、超高可靠,这是大模型训练对于网络的要求。多年来,TCP/IP协议一直是互联网通信的支柱,但对于AI网络来说,TCP/IP在某些方面存在着致命的缺点。TCP/IP协议的时延较高,通常在数十微秒左右,同时还会对CPU造成严重的负......
  • [转帖]nginx利用request_body记录POST body(location中用proxy_pass)
    https://www.cnblogs.com/freedom-try/p/14699538.html1.完整过程1.1在nginx.conf中http里面添加配置如下:http{ ... log_formatpostdataescape=json'$remote_addr-$remote_user[$time_local]"$request" '$status$bod......
  • [转帖]一次搞定 Unicode、字节序、UTF-*
    茫茫人海中与你相遇相信未来的你不会很差作者:Tomson                                      来源:https://segmentfault.com/a/1190000038171151什么是字符集顾名思义,字符集就是字符的......
  • 【转帖】阿里云ssh远程连接短时间就会断掉的解决方案
    https://zhuanlan.zhihu.com/p/423385471 本文已收录公众号《极客运维之家》,欢迎关注公众号一起交流学习文章目录问题重现问题分析问题解决打开sshd的配置文件修改如下参数重启服务:补充总结问题重现阿里云服务器,使用Finalshell远程连接,在操作中没有出现任务......
  • [转帖]Oracle NUMBER Data Type
    https://www.oracletutorial.com/oracle-basics/oracle-number-data-type/ Summary:inthistutorial,youwilllearnabouttheOracle NUMBER datatypeandhowtouseittodefinenumericcolumnsforatable.IntroductiontoOracleNUMBERdatatypeTheOrac......
  • [转帖]NUMBER长度的误解
    https://cloud.tencent.com/developer/article/1615838 我们看下官方文档对NUMBER类型的介绍,TheNUMBERdatatypestoreszeroaswellaspositiveandnegativefixednumberswithabsolutevaluesfrom1.0x10-130tobutnotincluding1.0x10126.Ifyouspecif......
  • Tomcat官网下载版本:如何选择tar.gz (pgp, sha512)和zip (pgp, sha512)?
    先上结论:选择tar.gz格式还是zip格式的文件下载,主要取决于操作系统和个人偏好:tar.gz(pgp,sha512):这是一种在Unix-like系统(如Linux和macOS)中常用的压缩格式。tar是一种将多个文件合并为单个文件(归档)的工具,而gz是gzip,用于压缩归档文件。pgp和sha512分别提供了文件......
  • P4512 【模板】多项式除法
    为什么不能直接用\(F(x)\timesG(x)^{-1}\)做?\(G(x)^{-1}\)是模\(x^{m+1}\)意义下的,\(n-m>m\)时得到的\(Q(x)\)就是错的。记\(F'(x)\)为\(F(x)\)系数翻转后的多项式,即若\(F(x)=\sum\limits_{i=0}^nf_ix^i\),则\(F'(x)=\sum\limits_{i=0}^nf_{n......
  • [转帖]Oracle number类型详解
    Oraclenumber类型详解简介基本说明容易出错情况Number与MySQL数据类型简介Oracle的number类型比较复杂,很多限制,但是掌握一点小技巧就能轻松搞定。基本说明number(precision,scale)precision表示数字中的有效位,从左边第一个不为0的数算起,小数点和负号不计入有效......