| 指令集是CPU所能执行的所有指令的集合,是提高微处理器效率的最有效工具之一,从现阶段主流体系结构讲,指令集可分为复杂指令集和精简指令集两部分,而从具体运用看,多媒体指令集又是其中最引人注目的一种。 精简指令集的运用 在最初发明计算机的N十年里,随着计算机功能日趋增大,性能日趋变强,内部元器件也越来越多,指令集日趋复杂, 过于冗杂的指令严重的影响了计算机的工作效率。 后来一些科学家经过研究发现,在计算机中,80%程序只用到了20%的指令集,基于这一发现,RISC精简指令集被提了出来,这是计算机系统架构的一次深刻革命。 RISC体系结构的基本思路是:抓住CISC指令系统指令种类太多、指令格式不规范、寻址方式太多的缺点,通过减少指令种类、规范指令格式和简化寻址方式,方便处理器内部的并行处理,提高VLSI器件的使用效率,从而大幅度地提高处理器的性能。 RISC指令集有许多特征,其中最重要的有: 指令种类少,指令格式规范 RISC指令集通常只使用一种或少数几种格式。指令长度单一(一般4个字节),并且在字边界上对齐。字段位置、特别是操作码的位置是固定的。 寻址方式简化 几乎所有指令都使用寄存器寻址方式,寻址方式总数一般不超过5个。其他更为复杂的寻址方式,如间接寻址等则由软件利用简单的寻址方式来合成。 大量利用寄存器间操作 RISC指令集中大多数操作都是寄存器到寄存器操作,只以简单的Load和Store操作访问内存。因此,每条指令中访问的内存地址不会超过1个,访问内存的操作不会与算术操作混在一起。 简化处理器结构 使用RISC指令集,可以大大简化处理器的控制器和其他功能单元的设计,不必使用大量专用寄存器,特别是允许以硬件线路来实现指令操作,而不必像CISC处理器那样使用微程序来实现指令操作。因此RISC处理器不必像CISC处理器那样设置微程序控制存储器,就能够快速地直接执行指令。 便于使用VLSI技术 随着LSI和VLSI技术的发展,整个处理器(甚至多个处理器)都可以放在一个芯片上。RISC体系结构可以给设计单芯片处理器带来很多好处,有利于提高性能,简化VLSI芯片的设计和实现。基于VLSI技术,制造RISC处理器要比CISC处理器工作量小得多,成本也低得多。 加强了处理器并行能力 RISC指令集能够非常有效地适合于采用流水线、超流水线和超标量技术,从而实现指令级并行操作,提高处理器的性能。目前常用的处理器内部并行操作技术基本上是基于RISC体系结构发展和走向成熟的。 正由于RISC体系所具有的优势,它在高端系统得到了广泛的应用,而CISC体系则在桌面系统中占据统治地位。而在如今,在桌面领域,RISC也不断渗透,预计未来,RISC将要一统江湖。 多媒体指令集改变生活 对于CPU来说,在基本功能方面,它们的差别并不太大,基本的指令集也都差不多,但是许多厂家为了提升某一方面性能,又开发了扩展指令集,扩展指令集定义了新的数据和指令,能够大大提高某方面数据处理能力,但这也是有前提的,那就是必需要有软件支持。在多媒体指令集方面,最著名的就是Intel的MMX和AMD的3Dnow!. 一、M MX 指令集 MMX(Multi Media eXtension,多媒体扩展指令集)指令集是Intel 公司于1 9 96 年推出的一项多 媒体指令增强技术。M MX 指令集中包括有57 条多媒体指令,通过这些指令可以一次处理多个数据, 在处理结果超过实际处理能力的时候也能进行正常处理 ,这样在软件的配合下,就可以得到更高的性能。M MX 的益处在于,当时存在的操作系统不必为此而做出任何修改便可以轻松地执行M MX 程序。 但是,问题也比较明显,那就是M MX 指令集与x 87 浮点运算指令不能够同时执行,必须做密集 式的交错切换才可以正常执行,这种情况就势必造成整个系统运行质量的下降。 二、S SE 指令集 SSE(Streaming SIMD Extensions,单指令多数据流扩展)指令集是Intel 在Pentium Ⅲ处理器中率 先推出的。其实,早在P Ⅲ正式推出之前,Intel 公司就曾经通过各种渠道公布过所谓的KNI(Katmai New Instruction)指令集,这个指令集也就是SSE 指令集的最早名称,并一度被很多传媒称之为MMX 指 令集的下一个版本,即M M X2 指令集。究其背景,原来“K NI ”指令集是I n t el 公司最早为其下一代 芯片命名的指令集名称,而所谓的“M M X2 ”则完全是硬件评论家们和媒体凭感觉和印象对“KNI ”的 评价,I n t el 公司从未正式发布过关于M M X2 的消息。 而最终推出的SSE 指令集也就是所谓胜出的“互联网S SE ”指令集。S SE 指令集包括了70 条指令, 其中包含提高3D 图形运算效率的50 条SIMD(单指令多数据技术)浮点运算指令、12 条MMX 整数运算增强指令、8 条优化内存中连续数据块传输指令。 理论上这些指令对目前流行的图像处理、浮点运算、3D 运算、视频处理、音频处理等诸多多媒 体应用起到全面强化的作用。S SE 指令与3 D N o w!指令彼此互不兼容,但SSE 包含了3 D N o w!技术的绝大 部分功能,只是实现的方法不同。SSE 兼容M MX 指令,它可以通过SIMD 和单时钟周期并行处理多个浮 点数据来有效地提高浮点运算速度。 在后来Intel为了对付AMD3Dnow!+又在SSE的基础上开发了SSE2,增加了一些指令,使得其P4处理器性能有大幅度提高。SSE2 SIMD 扩展名——一个计算低工控最好的方法是让每指令执行更多的工作。到P4设计结束为止,Intel 增加了一套包括144条新建指令的SSE2指令集。像最早的SIMD 扩展指令集,SSE2涉及了多重的数据目标上立刻执行一单个的指令(即 SIMD)。最重要的是SSE2能处理128位和两倍精密浮点数学运算。处理更精确浮点数的能力使SSE2成为加速多媒体程序、3D处理工程以及工作站类型任务的基础配置。但重要的是软件是否能适当的优化利用它。 
给出了一个由DVD转制MPEG4影像文件软件“FlasK MPEG”,在重新编译和SSE2优化前后的性能比较。很显然软件经过编译后,在Pentium 4上性能表现提高的浮点达 +266%,经过重新编译后软件在 Athlon 和Pentium 3上的表现也有了大幅度的改进。 三、3D Now !指令集 由AMD 公司提出的3DNow!指令集应该说出现在SSE 指令集之前,并被AMD 广泛应用于其K6-2 、K6- 3 以及A t h l o n (K 7)处理器上。3DNow!指令集技术其实就是21 条机器码的扩展指令集。 

支持3Dnow!的Duron处理器 与Intel 公司的M MX 技术侧重于整数运算有所不同,3DNow!指令集主要针对三维建模、坐标变换 和效果渲染等三维应用场合,在软件的配合下,可以大幅度提高3D 处理性能。 后来在Athlon上开发了Enhanced 3DNow!。这些AMD标准的SIMD指令和Intel的SSE具有相同效能,但AMD在说服软件开发商以这些指令实做程序时,经历了较困难的时期。因为受到Intel在商业上以及Pentium III成功的影响,软件在支持SSE上比起3DNow!更为普遍。 Enhanced 3DNow!AMD已经继续增加至52个指令,包含一些 SSE码,因而在针对SSE做最佳化的软件中能获得更好的效能。但我们可以发现在AMD未来的Hammer— 64位处理器中发现,AMD最后还是跟随了Intel的脚步,它将会完全支持SSE2, Intel的Pentium 4所引进的144双准确浮点SIMD指令。而AMD稍后开发的3DNow!+只能算是个过渡方案,并不能真正算一代技术,事实上从技术上分析3DNow!+也已经没有意义,因为它和SSE2相比已经没有任何优势。 |