64-ia-32架构优化手册(11)

来源:互联网 发布:香蕉网络电视tv 编辑:程序博客网 时间:2024/05/22 13:47

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图形,语音识别,图像处理,科学应用以及具有以下特征的应用程序的性能:

·        内在并行的。

·        循环的内存访问模式。

·        数据上局部化的循环操作。

数据无关控制流
阅读全文
0 0
原创粉丝点击