MMX技术概况 MMX是英立Multi-media Extension的缩写,中文为多媒体扩展指令集。这些指令桌能够加速处理有关图形、影像、声音等的应用,MMX Pent
ium CPU加强了Pentium CPU在多媒体处理功能的不足,它可以利用其内建的多媒体指令来模拟3D绘图的处理、 MPEG的压缩/解压缩。立体声的音效等,只要是软件支持MMX CPU,即可以取代这些硬件的接口而达到多媒体的功效。英特尔开发的最早期SIMD指令集,可以增强浮点和多媒体运算的速度。
MMX是Intel公司为增强 Pentium CPU 在音像、图形和通信应用方面而采取的新技术。这一技术为CPU增加了全新的57条MMX指令,还将CPU芯片内的L1缓存由原来的16KB增加到32KB(16K指命+16K数据),因此MMX CPU比普通CPU在运行含有MMX指令的程序时,处理多媒体的能力上提高了60%左右。即使不使用MMX指令的程序,也能获得 15% 左右的性能提升。MMX已经成为选择CPU的一个基本标准,目前CPU基本都具备MMX技术,除Pentium P55C(Pentium MMX)和Pentium ⅡCPU还有K6、K6 3D(K6-2)、MII,6X86MX,IDT C6等。不支持MMX指令的CPU可以不用考虑了。
MMX Pentium 的接脚与Pentium CPU相同,但是其内部的结构和CPU使用的电压不同,内部除了提供MMX多媒体的电路,其使用的电压必须为2.8V与3.3V的两组电压,故主板的一些芯片组和BIOS,也必需配合支持MMX的功自,才能把电脑升级使之发挥MMX的功效。[1]
Intel(美国英特尔公司)的MMX(TM)技术拟在加速多媒体及通信应用程序的运行。这项技术包含一些新的指令及数据类型,从而使得应用程序获得更高水平的性能。它采用众多多媒体及通信算法中固有的并行机制,同时仍然保持了与现有操作系统及应用程序的完全兼容。
多媒体软件具有如下显著的特点:
1、 小整型数据类型(图形数据为8位 ,声频数据为16位)
2、 对小整型数据的频繁且重复的计算操作(例如被频繁的调用的核心算法);
3、 许多操作具有内存的并行性(例如对大量的数据进行同一个加,减或乘法运算操作);
MMX技术设计了一套基本的,通用的紧缩整形指令,共57条。
所谓“紧缩整形数据”是指多个8/16/32位的整形数据组合成为一个64位的数据.MMX指令主要就是使用
这种紧缩整形数据,它又分成4种整形类型:紧缩字节、紧缩字、紧缩双字、紧缩4字
。紧缩字节(Packed Byte): 8个字节组合成一个64位的数据;
。紧缩字 (Packed Word): 4个字组合成一个64位的数据;
。紧缩双字(Packed Doubleword): 2个双字组合成一个64位的数据;
。紧缩4字 (Packed Quadword):一个64位数据
这样一条MMX指令就能够同时处理8/4/2个数据单元,这就是所谓的“单指令多数据SIMD”结构。这种结构是MMX技术把机器性能提高的最根本因素。
为了方便使用64位紧缩整形数据,MMX技术含有8个64位的MMX寄存器(MM0-----MM7),只有MMX指令可以使用MMX寄存器。
值得一提的是,MMX寄存器是随机存取的,但实际上是借用了8个浮点数据寄存器实现的。浮点处理单元FPU有8个浮点寄存器FPR,以堆栈方式存取。每个浮点数据寄存器有80位,高16位用于指数和符号,低64位用于有效数字。MMX利用其64位有效数字部分用做随机存取的64位的MMX寄存器。
1、算术运算:
PADD[B、W、D] 环绕加[字节,字,双字]
PADDS[B , W] 有符号饱和加[字节,字]
PADDUS[B , W] 无符号饱和加[字节,字]
PSUB[B、W、D] 环绕减[字节,字,双字]
PSUBS[B,W] 有符号饱和减[字节,字]
PSUBUS[D,W] 无符号饱和减【字节,字】
PMULHW 紧缩字乘后取高位
PMULLW 紧缩字乘后取低位
PMADDWD 紧缩字乘,积相加
2、比较:
PCMPEQ[B,W,D] 紧缩比较是否相等【字节,字,双字】
PCMPGT[B,W,D] 紧缩比较是否大于【字节,字,双字】
3、类型转换:
PACKUSWB 按无符号饱和压缩【字成字节】
PACKSS[WB,DW] 按有符号饱和压缩【字/双字成/字节/字】
PUNPCKH[BW,WD,DQ] 扩展高位【字节,字,双字成字,双字,4字】
PUNPCKL[BW,WD,DQ] 扩展地位【字节,字,双字成字,双字,4字】
4、逻辑运算:
PAND 紧缩逻辑与
PANDN 紧缩逻辑与非
POR 紧缩逻辑或
PXOR 紧缩逻辑异或
5、位移:
PSLL[W,D,Q] 紧缩逻辑左移[字,双字,4字]
PSRL[W,D,Q] 紧缩逻辑右移[字,双字,4字]
PSRA[W,D] 紧缩算术右移【字,双字】
7、数据传送:
MOV[D,Q] 从MMX寄存器传人/传出【双字/4字】
8、状态清除
MMX技术是继Intel386(TM)处理器(将体系结构扩展至32位)之后对Intel体系结构的最重要的加强。采用MMX技术的处理器拥有充分的能力,可在执行有大量计算的通信及多媒体任务的同时,留出足够的余地来运行其他任务或应用程序。它们使得软件开发商可为个人电脑设计更加丰富、更激动人心的应用程序。MMX技术被吸收到Intel生产的多代处理器产品中,从1997年起采用这一技术的系统的数量已经快速增长。
MMX技术的构想源于Intel微处理器体系结构设计师及软件开发商的共同努力。他们分析了大量的软件应用程序,如图形、MPEG视频、音乐合成、语音压缩、语音识别、图像处理、游戏、视频会议等。而后,他们将这些应用程序分解,从而找出计算最密集的例行程序,接下来再利用先进的计算机辅助工程工具来详细分析这些例行程序。大量分析的结果显示,在这些不同的软件类别中存在着一些共同的基本特征。这些应用程序的主要特征是:
* 小型整数数据类型(例如:8位图形象素、16位音频样本)
* 小型、高度重复循环
* 经常的相乘与累加
* 计算密集型算法
* 高度并行的操作
MMX技术被设计为一套基本的、通用的整数指令,可简便地应用于各种多媒体及通信应用程序。此项技术的重点为:
* 单指令、多数据(SIMD)技术
* 57条新指令
* 8位64位宽的MMX寄存器
* 四种新的数据类型
MMX技术的基础是一项称为单指令、多数据(SIMD)的技术。它使得许多条信息可由一条单一指令来处理,这种平行操作使性能得以大幅度地提高。MMX技术被集成到Intel体系结构的处理器中,同时保持了与现有操作系统(如MS DOS,Windows 3.1,Windows95,OS/2及UNIX)的充分兼容。除此之外,所有Intel体系结构的软件将能够在采用MMX技术的系统中运行。
MMX技术的定义十分简单。这项技术通用性极高,可满足建立在当前及未来算法上的个人电脑应用程序的大部分需求。MMX指令不具特许性,可用于应用程序、编码译码器、算法及驱动程序。
MMX技术给多媒体和通信应用程序带来了新的动力。MMX技术增加了一些新的数据类型和指令,从而能并行处理数据。MMX技术与现有的操作系统和应用软件完全兼容。MMX技术使个人电脑平台更上一层楼。它能运行一些新的应用程序,并增加了一些个人电脑的新用途。它帮助建立起一种把新的个人电脑用作更有效的通信和多媒体装置的范例。Intel将MMX技术集成到多代处理器中,配置了该技术的系统已经从1997年大规模生产。
MMX的另一个特征是在计算结果超过实际处理能力的时候也能进行正常处理。若用传统的X86指令,计算结果一旦超出了CPU处理数据的限度,数据就要被截掉,而变成较小的数。MMX利用所谓的“饱和(Saturation)”功能,圆满的解决了这一问题。计算结果一旦超过了数据大小的限度,就能在可处理范围内自动变换成最大值。