指令集
计算机指令就是指挥机器工作的指示和命令,程序就是一系列按一定顺序排列的指令,执行程序的过程就是计算机的工作过程。指令集,就是CPU中用来计算和控制计算机系统的一套指令的集合,而每一种新型的CPU在设计时就规定了一系列与其他硬件电路相配合的指令系统。而指令集的先进与否,也关系到CPU的性能发挥,它也是CPU性能体现的一个重要标志。指令的强弱也是CPU的重要指标,指令集是提高微处理器效率的最有效的工具之一。从现阶段的主流体系结构讲,指令集可分为复杂指令集和精简指令集两部分。
常见的指令集有:Intel的x86,EM64T,MMX,SSE,SSE2,SSE3,SSSE3 (Super SSE3),SSE4A,SSE4.1,SSE4.2,AVX,AVX2,AVX-512,VMX等指令集;和AMD的x86,x86-64,3D-Now!指令集
其中AVX全称是Advanced Vector Extension,高级矢量扩展
在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%的性能。
搬运 https://zhuanlan.zhihu.com/p/136099964
本文来自博客园,作者:45645+56,转载请注明原文链接:https://www.cnblogs.com/qiuyq/p/16493090.html

浙公网安备 33010602011771号