在微处理器中,真正对数据进行处理的是算术逻辑部件,即ALU(Arithmetic Logic Unit)。ALU的基本操作包括加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、比较和传送等操作。在ALU基础上加上累加寄存器、数据缓冲寄存器和状态条件寄存器等部件即组成运算器,运算器接受控制器的命令而进行动作,完成各种数据处理与计算。
数据运算器的处理对象是数据,所以数据长度和计算机数据表示方法,对运算器的性能影响极大。20世纪70年代微处理器常以1个、4个、8个、16个二进制位作为处理数据的基本单位。而当前的大多数通用计算机则以32、64位作为运算器处理数据的长度。按照数据的不同表示方法,可以有二进制运算器、十进制运算器、十六进制运算器、定点整数运算器、定点小数运算器、浮点数运算器等。按照数据的性质,有地址运算器和字符运算器等。
ALU最基本的操作是加法,由加法可以衍生出多种不同的运算器操作,比如:一个数与零相加,等于简单地传送这个数;将一个数的代码求补,与另一个数相加,相当于从后一个数中减去前一个数;将两个数相减可以比较它们的大小,等等。目前绝大多数微处理器的ALU都使用提前进位的加法器(Carry look-ahead adders,又称先行进位加法器),以获得更高的运算速度。
左右移位也是ALU的基本操作。在有符号数的移位中,符号不动而只移数据位的移位称为算术移位;若数据连同符号的所有位一齐移动,则该移位被称为逻辑移位;如果将数据的最高位与最低位链接进行逻辑移位,称为循环移位。移位一般使用专用的移位电路(或者称作移位器)来完成。
逻辑操作是另外一种ALU的基本操作,它可将两个数据按位进行与、或、异或,以及将一个数据的各位求非,有的运算器还能进行二值代码的16种逻辑操作。
乘、除法操作较为复杂,并非ALU的基本操作,但是绝大多数计算机的ALU能直接完成这些操作。乘法操作是以加法操作为基础的,由乘数的一位或几位译码控制逐次产生部分积,部分积相加得乘积。除法则又常以乘法为基础,即选定若干因子乘以除数,使它近似为1,这些因子乘被除数则得商。没有执行乘法、除法硬件的计算机可用程序实现乘、除,但速度慢得多。有的ALU还能执行在一批数中寻求最大数,对一批数据连续执行同一种操作,求平方根等更加复杂操作,从而为计算机提供更加强大的功能。(www.xing528.com)
运算器是微处理器中最基础的部分,也是微处理器用以实现数据处理功能的关键手段,其数量与性能对于微处理器的性能至关重要。在早期的微处理器中,受限于芯片比较低的集成度,微处理器中一般只设计一个用来进行通用数据处理的算术逻辑部件ALU和一个用来完成物理地址计算的地址加法器(或者地址生成器,实际上也是一种专用的ALU),而且这个ALU的处理能力(数据宽度)也比较有限。比如在Apple Ⅱ微机所使用的6502微处理器中只有一个能够处理8位数据的ALU,而且这个ALU还不支持乘法和除法指令,乘法和除法必须通过调用一个子程序来完成。IBM PC所使用的8088微处理器中的ALU在功能上要强大一些,一方面它在能够处理8位数据的同时还能够处理16位数据,另一方面8088微处理器的ALU能够支持硬件乘法和除法,通过单个指令在多个周期内完成一次整数乘法或除法。在当时,这已经是很了不起的成就了。
随着微电子技术的不断发展,微处理器中集成的晶体管数越来越多,微处理器越来越复杂,相应地所包含的ALU的数量也不断增加,功能也越来越强大。1989年Intel推出的80486处理器成功地将用于处理浮点数的协处理器集成到了处理器之中,这就意味着处理器中不再只有一个用来进行整数处理的算术逻辑部件ALU,新增加的用来处理浮点数的专用算术运算部件提供了对浮点数进行处理的能力,对浮点数的处理不再依赖于外接的80387协处理器。但是,80486中的整数处理部件和浮点处理部件只能交替使用,并没有真正提供两个不同运算的并发处理。真正提供这种并行处理能力的是Pentium微处理器:Pentium处理器具有被称作U-pipeline和V-pipeline的两条处理流水线,虽然V-pipeline只能处理简单的整数及FXCH浮点数指令,但是两条可以实现并发处理的流水线使得Pentium微处理器的峰值处理能力达到了同频率80486微处理器的两倍,性能上得到了巨大的提高。
当前流行的多核微处理器在一个处理器内部集成多个处理器核心(Core),而每个核心中又包含可以并发完成更加复杂数据处理的多个运算器,从而为微处理器带来更加强大的数据处理能力。
在8086/8088微处理器中,处理单元(EU)的核心就是一个16位算术逻辑部件,用来完成算术运算、逻辑运算及处理机内部数据传送等操作。由于集成度的限制,8086微处理器中的运算器只能进行整数的算术运算、逻辑运算和移位处理等,并不支持浮点数的处理。在基于8086微处理器构建的计算机系统中,浮点数的处理要依靠8087协处理器或者浮点仿真程序实现。这种依靠数学协处理器处理浮点数的设计方案一直持续到80386微处理器和80387协处理器,直到80486微处理器将浮点处理部件集成到微处理器之中为止。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。