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

2025-05-21 05:54:54

CPU 依靠指令来计算和控制系统,每款 CPU 在设计时,就规定了一系列与其硬件电路相配合的

汜枸赓觅指令系统。指令的强弱,也是 CPU

的重要指标。指令集是提高微处理器效率的最有效工具之一。

从现阶段的主流体系结构讲,指令集可分为“复杂指令集”和“精简指令集”两部分。

而从具体运用看,如 Intel 的 MMX(Multi Media Extended)、SSE、SSE2(Streaming-

Single

instruction 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 New

Instruction)指令集,这个指令集也就是 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 做最佳化的软件中,能

获得更好的效能。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢