SNB 平台掌上明珠 深入分析 AVX 指令集 指令集是指CPU 能执行的所有指令的集合,每一指令对应一种操作,任何程序最终要编译成一条条指令才能让CPU 识别并执行。CPU 依靠指令来计算和控制系统,所以指令强弱是衡量CPU 性能的重要指标,指令集也成为提高CPU 效率的有效工具。 CPU 都有一个基本的指令集,比如说目前英特尔和AMD 的绝大部分处理器都使用的是X86 指令集,因为它们都源自于X86 架构。但无论CPU 有多快,X86 指令也只能一次处理一个数据,这样效率就很低下,毕竟在很多应用中,数据都是成组出现的,比如一个点的坐标(XYZ)和颜色(RGB)、多声道音频等。为了提高CPU 在某些方面的性能,就必须增加一些特殊的指令满足时代进步的需求,这些新增的指令就构成了扩展指令集。 英特尔CPU 扩展指令集演变 英特尔在1996 年率先引入了 MMX(Mu lti Media eXtensions)多媒体扩展指令集,也开创了 SIMD(Single Instru ction Mu ltiple Data,单指令多数据)指令集之先河,即在一个周期内一个指令可以完成多个数据操作,MMX 指令集的出现让当时的MMX Pentiu m 大出风头。 英特尔处理器扩展指令集演变史(图片来源后藤弘茂) SSE(Streaming SIMD Ex tensions,流式单指令多数据扩展)指令集是1999 年英特尔在Pentiu m III 处理器中率先推出的,并将矢量处理能力从64 位扩展到了128 位。在Willamette 核心的Pentiu m 4 中英特尔又将扩展指令集升级到SSE2(2000 年),而SSE3 指令集(2004 年)是从Prescott 核心的Pentiu m 4 开始出现。 SSE4(2007 年)指令集是自 SSE 以来最大的一次指令集扩展,它实际上分成Penry n 中出现的SSE4.1 和 Nehalem 中出现的SSE4.2,其中SSE4.1 占据了大部分的指令,共有 47 条,Nehalem 中的SSE4 指令集更新很少,只有 7 条指令,这样一共有 54条指令,称为 SSE4.2。 Sandy Bridge 支持AVX 指令集 当我们还在惯性的认为英特尔将推出SSE5 时,不料半路杀出来个程咬金,2007 年8 月,AMD 抢先宣布了SSE5 指令集(SSE 到SSE4 均为英特尔出品),英特尔当即黑脸表示不支持SSE5,转而在2008 年3 月宣布Sandy Bridge 微架构将引入全新的AVX指令集,同年4 月英特尔公布AVX 指令集规范,随后开始不断进行更新,业界普遍认为支持AVX 指令集是Sandy Bridge 最重要的进步,没有之一。 英特尔AVX 指令集简介 AVX(Adv anced...