运算器包括ALU、阵列乘除器、寄存器、多路开关、三态缓冲器、数据总线等逻辑部件。运算器的设计,主要是围绕ALU和寄存器同数据总线之间如何传送操作数和运算结果进行的。在决定方案时,需要考虑数据传送的方便性和操作速度,在微型机和单片机中还要考虑在硅片上制作总线的工艺。计算机的运算器大体有如下三种结构形式: (1)单总线结构的运算器 单总线结构的运算器如图2-22(a)所示。由于所有部件都接到同一总线上,所以数据可以在任何两个寄存器之间,或者在任一个寄存器和ALU之间传送。如果具有阵列乘法器或除法器,那么它们所处的位置应与ALU相当。对这种结构的运算器来说,在同一时间内,只能有一个操作数放在单总线上。为了把两个操作数输入到ALU,需要分两次来做,而且还需要A,B两个缓冲寄存器。这种结构的主要缺点是操作速度较慢。虽然在这种结构中输入数据和操作结果需要三次串行的选通操作,但它并不会对每种指令都增加很多执行时间。只有当两个操作数都来自寄存器时,单总线结构的运算器才会造成一定的时间损失。但是由于它只控制一条总线,故控制电路比较简单。 (2)双总线结构的运算器 双总线结构的运算器如图2-22(b)所示。在这种结构中,两个操作数同时加到ALU进行运算,只需一次操作控制,而且马上就可以得到运算结果。图中,两条总线各自把其数据送至ALU的输入端。特殊寄存器分为两组,它们分别与一条总线交换数据。这样,通用寄存器中的数据就可进入到任一组特殊寄存器中去,从而使数据传送更为灵活。ALU的输出不能直接加到总线上去。这是因为,当形成操作结果的输出时,两条总线都被输入数据占据,因而必须在ALU输出端设置缓冲寄存器。为此,操作的控制要分两步完成:在ALU的两个输入端输入操作数,形成结果并送入缓冲寄存器;把结果送入目的寄存器。假如在总线1、2和ALU输入端之间再各加一个输入缓冲寄存器,并把两个输入数据先放至这两个缓冲寄存器,那么,ALU输出端就可以直接把操作结果送至总线1或总线2上去。 (3)三总线结构的运算器 三总线结构的运算器如图2-22(c)所示。在三总线结构中,ALU的两个输入端分别由两条总线供给,而ALU的输出则与第三条总线相连。这样,算术逻辑操作就可以在一步的控制之内完成。由于ALU本身有时间延迟,所以打入输出结果的选通脉冲必须考虑这个延迟。另外,设置了一个总线旁路器。如果一个操作数据不需要修改,而直接从总线2传送到总线3,那么可以通过控制总线旁路器把数据传出;如果一个操作数传送时需要修改,那么就借助于ALU。显然,三总线结构运算器的特点是操作时间快。 图2-22 运算器基本结构图 从上面的讨论可以看出,除加法器外,其他部分的逻辑实现是比较简单的。 |