intel历代架构演进6—— SIMD指令集

从奔腾2和带有英特尔MMX技术的处理器家族开始。6个扩展被引入到英特尔64和IA-32架构中扮演单指令多数据(SIMD)操作。这些扩展包括MMX技术,SSE扩展,SSE2扩展,SSE3扩展,补充流式SIMD扩展3,和SSE4.每种扩展提供了一组指令集扮演基于封装过的integer and/or 封装过的浮点数据元素的SIMD操作。


SIMD整型操作可以使用64位MMX或者128位XMM寄存器。SIMD浮点操作可以使用128位XMM寄存器。下图显示了多种SIMD扩展(MMX technology, SSE, SSE2,SSE3, SSSE3, and SSE4)的摘要信息,比如哪些数据可以直接操作,哪些数据类型需要被封装到MMX和XMM寄存器中。


intel历代架构演进6—— SIMD指令集_第1张图片

英特尔MMX技术被引入到了奔腾2和奔腾使用了MMX技术的处理器家族中。MMX指令集在位于MMX寄存器中被包装过的byte,word或double word integers扮演了SIMD的操作。这些指令集在应用中操作整型数组和可以使他们到SIMD操作中的整型数据非常有用。

SSE扩展被引入到了奔腾3处理器家族中。SSE指令集操作基于封装过的单精度额浮点数据值被包含在XMM寄存器中和封装过的整型被包含在MMX寄存器中。多数SSE指令提供了状态管理,缓存控制和内存排序操作。其他SSE指令集被定位在应用中用于操作单精度浮点数据元素的数组(3D几何,3D渲染和视频编解码应用)


SSE2扩展被映入到了奔腾4和志强处理器重。SSE2指令集操作封装过的双境地浮点值被包含在XMM寄存器中,和封装过的整型包含在MMX和XMM寄存器中。SSE2整型指令集通过新的128位SIMD整型操作和扩大了现存的64位SIMD整型操作到128位XMM的能力来扩展了IA-32 SIMD操作。

SSE3扩展被引入到了支持超线程技术的奔腾4处理器(构建在90nm处理技术)。SSE3提供了13条指令他们可以加速流SIMD扩展技术,流SIMD扩展技术2,和X87-FP计算能力的性能。

SSSE3扩展被引入到了英特尔志强处理器5100系列和酷睿2处理器家族中。SSSE3提供了32条指令来加速处理SIMD整型数据。

SSE4扩展提供了54条指令。47条和SSE4.1有关。SSE4.1在志强5400系列和酷睿2 Extreme processor QX9650被使用。另外7条SSE指令和SSE4.2指令相关。

AESNI 和 PCLMULQDQ 引入了7条新的指令。6条为加速基于AES经典加解密算法,以及和AESNI相关的原始指令。

PCLMULQDQ指令加速了通用目的的块加密,他们扮演了一条单独的无进位乘法指令(Carry-less Multiplication)为2个二进制数字提升到64位宽。


英特尔64位架构允许4代128位SIMD扩展可以访问16个XMM寄存器。IA-32架构提供了8个XMM寄存器。英特尔高级向量扩展在流SIMD扩展上比前代带来架构上的增强。英特尔AVX引入了下面的架构增强。

  • 支持256位宽向量和SIMD寄存器几何。

  • 256位浮点指令集增强,相对128位流SIMD扩展提升了2倍性能。

  • 指令语法支持传统的3元操作语法来提升指令编码的灵活性和和新指令扩展的搞笑编码。

  • 增强的遗留的128位SIMD指令扩展来支持3元操作语法和为高级语言表达式提供简单编译向量。

  • 支持灵活部署256位AVX代码,128位AVX代码遗留的128位代码和标准代码。

除了性能考虑外,程序员可能被要求认识到VEX-encode,AVX指令集,通过预期的系统软件组件的影响,他们通过状态组件XCR0来打开。更多信息可以查看 inIntel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 2A.

你可能感兴趣的:(linux内核学习)