1. SIMD发展历程

SIMD指令集总结

SIMD指令集发展历程

1.1 MMX
英特尔在1996年引入了MMX(Multi Media Extensions)多媒体扩展指令集,包括有57条多媒体指令,开创了SIMD(Single Instruction Multiple Data,单指令多数据)指令集之先河,即在一个周期内一个指令可以完成多个数据操作。
MMX寄存器实际上用的就是浮点寄存器(就是原来的ST0、……、ST7)的低64Bit,分别被命名为MM0、MM1、……、MM7,每个寄存器都可以被看作是8个BYTE,4个WORD、2个DWORD或1个QWORD,具体以什么为单位取决于所用的指令。MMX指令可以把这几个数据在一条指令里同时操作,而且相互间各不相干。这对数据密集型的计算(比如图像处理)是个相当大的喜讯,但是因为它实际使用的是浮点寄存器,所以不能和浮点运算同时执行,要执行浮点指令前必须执行一条EMMS指令,通知CPU“我的租期到了,现在该把房子还给你了”。这么一条指令也是要花时钟周期的(可能还绝对不止一个时钟周期),要是频繁的切换MMX状态和浮点状态,会极大降低效率。所以在使用MMX指令集的时候要注意,务必使MMX指令的运算和浮点运算分开来。
如图1,MMX指令可处理8Bit字符型、16bit整型和32bit整型,无法处理浮点型。

你可能感兴趣的:(CPU指令集,SIMD发展历程)