MMX(Multimedia Extensions,多媒体扩展指令集)是Intel在1996年推出的一项多媒体指令增强技术,是 Intel公司第一次对x86 指令集进行的多媒体指令扩展,它增加了4个新的数据类型、8个64位寄存器和57条指令,并且采用了SIMD技术,同时保持了与现有软件的兼容。MMX指令集使CPU处理图像、动画、多媒体通信、语音识别以及音频解压缩等方面的能力有了显著提高。浮点运算能力是关系到CPU对多媒体、3D图形处理能力的一个重要指标,而MMX指令集没有大力加强浮点运算能力。在3D图形、Internet 3D网页应用日趋增多的情况下,MMX指令集难以完全满足需要。
SIMD 技术SIMD(Single Instruction Multiple-Data,单指令多数据流)是Intel 为MMX技术设计的一组基本的、通用的指令集,以满足各种多媒体和通信应用的需要。该技术允许利用任何新增加的单个指令处理多组数据,以并行方式处理多个数据元素,从而提高了多媒体和通信软件的运行速率。3D Now!是AMD公司开发的多媒体扩展指令集,共有 27条指令。与MMX技术侧重的整数运算不同,3DNow!主要针对三维建模、坐标变换、效果渲染等三维应用场合而设计,在软件的配合下,可以大幅度提高3D处理性能。但由于指令有限,该指令集主要应用于3D游戏,而对其他商业图形的应用处理支持不足。SSE(Internet Streaming SIMD Extension)被 Intel公司首次应用于Pentium Ⅲ中。SSE共有近70条指令,其中包含50条SIMD浮点运算指令、12条MMX整数运算增强指令、8条优化内存连续数据块传输指令。它包括了原MMX和3D Now!指令集中的所有功能,特别加强了SIMD浮点处理能力,并针对Internet的发展,加强了处理3D网页的能力。SSE指令集与3D Now!指令集互不兼容,但SSE包含了3D Now!技术的绝大部分功能,只是实现的方法不同。SSE兼容MMX指令。SSE2是Intel在Pentium 4处理器中推出的扩展指令集。和SSE指令集相比,SSE2指令集总共有144条指令,其中包括原有的68个SSE指令和新增加的76个SSE2指令。SSE2指令将传统整数MMX寄存器扩展成128位,还提供了128 位SIMD整数运算操作和128位双精密度浮点运算操作。
MMX指令集实质是一种SIMD数据处理方式(单指令流,多数据流)。由Intel公司开发,它允许CPU同时对2-4个甚至8个数据进行并行处理。
它有效的提高了CPU对视频、音频等多媒体方面的处理速度,但3D运算多为浮点运算,而MMX指令集对CPU的浮点运算能力没有什么贡献,因此MMX指令集在制作3D上没有实际意义。
扩展指令集是指CPU增加的多媒体或3D处理指令,这些扩展指令可以提高CPU处理多媒体和3D图形的能力,著名的有MMX(多媒体扩展指令)、SSE(因特网数据流单指令扩展)和3D Now!指令集。
它也是一种SIMD数据处理方式,但它的加速对象却是CPU浮点运算。它是一个时钟周期内可以同时处理4个浮点运算指令或两条MMX指令。
究其背景,原来"KNI"指令集是Intel公司最早为其下一代芯片命名的指令集名称,而所谓的"MMX2"则完全是硬件评论家们和媒体凭感觉和印象对"KNI"的 评价,Intel公司从未正式发布过关于MMX2的消息。而最终推出的SSE指令集也就是所谓胜出的"互联网SSE"指令集。SSE指令集包括了70条指令,其中包含提高3D图形运算效率的50条SIMD(单指令多数据技术)浮点运算指令、12条MMX 整数运算增强指令、8条优化内存中连续数据块传输指令。理论上这些指令对流行的图像处理、浮点运算、3D运算、视频处理、音频处理等诸多多媒体应用起到全面强化的作用。S SE指令与3DNow!指令彼此互不兼容,但SSE包含了3DNow!技术的绝大部分功能,只是实现的方法不同。SSE兼容MMX指令,它可以通过SIMD和单时钟周期并行处理多个浮点数据来有效地提高浮点运算速度。