多语言展示
当前在线:1101今日阅读:60今日分享:41

应知应会的电脑硬件核心知识:[35]多媒体指令

CPU 依靠指令来计算和控制系统,每款 CPU 在设计时,就规定了一系列与其硬件电路相配合的指令系统。指令的强弱,也是 CPU的重要指标。指令集是提高微处理器效率的最有效工具之一。从现阶段的主流体系结构讲,指令集可分为“复杂指令集”和“精简指令集”两部分。而从具体运用看,如 Intel 的 MMX(Multi Media Extended)、SSE、SSE2(Streaming-Singleinstruction multiple data-Extensions 2)和 AMD 的 3DNow! 等都是 CPU的扩展指令集,分别增强了 CPU 的多媒体、图形图象和 Internet 等的处理能力。我们通常会把CPU 的扩展指令集称为“CPU的指令集”。1、精简指令集的运用在最初发明计算机的数十年里,随着计算机功能日趋增大,性能日趋变强,内部元器件也越来越多,指令集日趋复杂,过于冗杂的指令,严重的影响了计算机的工作效率。后来经过研究发现,在计算机中,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 将要一统江湖。2、CPU 的扩展指令集对于 CPU来说,在基本功能方面,它们的差别并不太大,基本的指令集也都差不多。但是许多厂家为了提升某一方面性能,又开发了扩展指令集。扩展指令集定义了新的数据和指令,能够大大提高某方面数据处理能力,但必须要有软件的支持。1) MMX 指令集MMX(Multi Media eXtension,多媒体扩展指令集)指令集,是 Intel 公司于 1996年推出的一项多媒体指令增强技术。MMX 指令集中,包括有 57条多媒体指令,通过这些指令,可以一次处理多个数据,在处理结果超过实际处理能力的时候,也能进行正常处理。这样,在软件的配合下,就可以得到更高的性能。MMX的益处在于,当时存在的操作系统不必为此而做出任何修改,便可以轻松地执行 MMX 程序。但是,问题也比较明显,那就是 MMX 指令集与 x87浮点运算指令不能够同时执行,必须做密集式的交错切换,才可以正常执行。这种情况,就势必造成整个系统运行质量的下降。2) SSE 指令集SSE(Streaming SIMD Extensions,单指令多数据流扩展)指令集,是 Intel 在 Pentium III处理器中率先推出的。其实,早在 PIII 正式推出之前,Intel 公司就曾经通过各种渠道公布过所谓的 KNI(Katmai NewInstruction)指令集,这个指令集也就是 SSE 指令集的前身,并一度被很多传媒称之为 MMX指令集的下一个版本,即 MMX2指令集。究其背景,原来“KNI”指令集是 Intel公司最早为其下一代芯片命名的指令集名称,而所谓的“MMX2”则完全是硬件评论家们和媒体凭感觉和印象对“KNI”的评价,而 Intel公司从未正式发布过关于 MMX2 的消息。最终推出的 SSE 指令集,也就是所谓胜出的“互联网 SSE”指令集。SSE 指令集包括了 70 条指令,其中包含提高 3D 图形运算效率的50 条 SIMD(单指令多数据技术)浮点运算指令、12 条 MMX 整数运算增强指令、8条优化内存中连续数据块传输指令。理论上,这些指令对目前流行的图像处理、浮点运算、3D运算、视频处理、音频处理等诸多多媒体应用,起到了全面强化的作用。SSE 指令与 3DNow! 指令彼此互不兼容,但 SSE 包含了3DNow! 技术的绝大部分功能,只是实现的方法不同。SSE 兼容 MMX 指令,它可以通过 SIMD和单时钟周期,并行处理多个浮点数据来有效地提高浮点运算速度。后来 Intel 为了应对 AMD 的 3Dnow!+ 指令集,又在 SSE 的基础上,开发了 SSE2,增加了一些指令,使得其 P4处理器性能有大幅度提高。到 P4 设计结束为止,Intel 增加了一套包括 144 条新建指令的 SSE2指令集。像最早的 SIMD扩展指令集,SSE2 涉及了多重的数据目标上立刻执行一单个的指令(即SIMD,一个计算低工控最好的方法是让每指令执行更多的工作)。最重要的是,SSE2 能处理128位和两倍精密浮点数学运算。处理更精确浮点数的能力,使 SSE2 成为加速多媒体程序、3D处理工程以及工作站类型任务的基础配置。但重要的是,软件是否能适当的优化利用它。3) 3DNow! 指令集由 AMD 公司提出的 3DNow! 指令集,应该说出现在 SSE 指令集之前,并被 AMD 广泛应用于其 K6-2、K6-3 以及Athlon(K7)处理器上。3DNow! 指令集技术,其实就是 21 条机器码的扩展指令集。与 Intel 公司的 MMX 技术侧重于整数运算有所不同,3DNow!指令集主要针对三维建模、坐标变换和效果渲染等三维应用场合,在软件的配合下,可以大幅度提高 3D 处理性能。后来在 Athlon 上开发了Enhanced 3DNow!。这些 AMD 标准的 SIMD 指令和 Intel 的 SSE 具有相同效能。因为受到Intel在商业上以及 Pentium III 成功的影响,软件在支持 SSE 上,比起 3DNow! 更为普遍。Enhanced 3DNow!AMD 公司继续增加至 52 个指令,包含了一些 SSE 码,因而在针对 SSE 做最佳化的软件中,能获得更好的效能。
推荐信息