2.7. Intel® 64架构
Intel 64架构支持IA-32 Intel架构中几乎所有的特性,并扩展了对64位线性地址空间中运行64位OS以及64位应用程序的支持。Intel64架构提供了一个新的工作模式,称为IA-32e模式,并将软件的线性地址空间增加到64位,并支持高达40位的物理地址空间。
IA-32e模式包含两个子模式:(1)使一个64位操作系统能运行大多数32位遗留软件的兼容模式;(2)使一个64位操作系统能运行访问64位线性地址空间应用程序的64位模式。
在Intel 64架构的在64位模式中,软件可能访问:
· 64位平面线性地址。
· 8个额外的通用寄存器(GRP)。
· 用于流媒体SIMD扩展(SSE,SSE2,SSE3,SSE4.1,SSE4.2,AESNI,PCLMULDQD)的8个额外寄存器。
- 如果支持AVX,F16C,AVX2或FMA,16个256位YMM寄存器(其低128位与相应的XMM寄存器重叠)。
· 64位GR与指令指针。
· 统一的字节-寄存器取址(Uniformbyte-register addressing)。
· 快速的中断优先级机制。
· 一个新的指针指针相对取址模式。
2.8. SIMD技术
SIMD计算(参考图2-15)随着MMX技术引入架构。MMX技术允许在封包的字节,字及长字整数上进行SIMD计算。这些整数被包含在一组8个称为MMX寄存器的64位寄存器中(参考图2-16)。
Pentium III处理器引入流媒体SIMD扩展(StreamingSIMD Extension,SSE)扩展了SIMD计算模型。SSE允许在包含4个封包单精度浮点数据元素的操作数上进行SIDM计算。操作数可以在内存里或在一组8个128位XMM寄存器中(参考图2-16)。SSE通过添加额外的64位MMX指令扩展了SIMD计算的能力。
图2-15显示了一个典型的SIMD计算。在两组4个封包数据元素(X1,X2,X3与X4,以及Y1,Y2,Y3与Y4)上同时进行,在每对数据元素(X1与Y1,X2与Y2,X3与Y3,以及X4与Y4)上执行相同的操作。这四个并行计算的结果也整理为一组4个的封包数据元素。
Pentium 4处理器引入流媒体SIMD扩展2(SSE2),流媒体SIMD扩展3(SSE3),IntelXeon处理器5100系列引入补充流媒体SIMD扩展3(SSSE3),进一步扩展了SIMD计算模型。
SSE2与在内存或XMM寄存器中的操作数一起工作。这个技术将SIMD计算扩展到处理封包双精度浮点数据元素以及128位封包整数。在SSE2中有144条指令工作在2个封包双精度浮点数据元素上,或16个封包字节,8个封包字,4个封包长字,以及2个封包4字整数上。
SSE3通过提供13条可以在特定领域加速应用程序的指令,增强了x87,SSE与SSE2。这些领域包括视频处理,复数,以及线程同步。SSE3以非对称处理SIMD数据,便利水平计算,以及辅助避免分开读入缓存行的指令补充了SSE与SSE2。参考图2-16。
SSSE3以32条数字视频与信号处理的指令,对SIMD计算提供了额外的增强。
SSE4.1,SSE4.2与AENSI是额外的SIMD扩展,它对多媒体处理,文本处理,及块加解密应用程序提供了加速。
在Intel 64架构上SIMD扩展的方式工作与在IA-32架构上相同,带有以下增强:
· 访问XMM寄存器的128位SIMD指令可以访问16个64位模式中XMM寄存器。
· 访问32位通用寄存器的指令可以访问16个64模式中的通用寄存器。
图2-16. SIMD指令的寄存器使用
SIMD提高了3D图形,语音识别,图像处理,科学应用以及具有以下特征的应用程序的性能:
· 内在并行的。
· 循环的内存访问模式。
· 数据上局部化的循环操作。
数据无关控制流