然后我们来看模型机的运算器。
运算器顾名思义是用来完成运算的。
运算主要可分为算术运算和逻辑运算,
常见最基本的算术运算就是加法和减法。稍微复杂一些还有乘法和除法等等。
那常见的逻辑运算包括非、与、或等等。
运算器主要有如下的部件构成。
其核心部分是LU,也就是 算数逻辑单元的简称。它用于完成算数运算和逻辑运算,
我们从图中可以看出这个LU有两个输入,一个输出,比如我们要完成一个
加法,那么加法的两个操作数也就是被加数和加数非标从A端口和B端口
输入,经过LU计算后,将加法的运算结果送到输出端口,
为了便与描述,我们将LU的输入和输出
分别设置了暂时保存数据用的计时器。
分别记为X,Y和Z。
也就说LU将会对X和Y所保存的数据 进行控制器所指定的运算并将结果
输送到Z, 此外,LU在运算时
还会产生相应的状态,比如这个运算的结果是否产生进位,
是否会有溢出等等。那这样的运算结果的状态会保存在F这个寄存器, F是标志的简称。
那运算器所要运算的数据
实际是从存储器来的。但是不能每一次运算都去存储器取数。
这样的话效率就太低了。
所以有一些常用的数需要提前从存储器中
取出来。那我们就需要在运算器中有临时存放这些数的部件。
这就是通用寄存器。在我们的模型机中设置了N个通用寄存器,
其编号从R0一直到RN-1,
通用寄存器当中的数据可以来自于存储器,
也可以来自于其他通用寄存器。或者来自于LU的
输出,也就说我们可以在两个不同的通用寄存器之间传递数据,
也可以在LU和通用寄存器之间
传递数据。在通用寄存器和LU
已经刚才提到的控制器当中的若干寄存器之间要传递数据的话, 就必须要经过CPU的内部总线。
内部总线是用于在CPU内部跟各个部件之间传递数据的装置。
我们举一个例子。例如我们需要将数据从R0传送到RX,
也就是可能为下一次运算进行准备,那么 数据会通过内部总线从R0
传到了X,那么所谓这个传送的过程指的是什么呢? 在之后我们具体讲电路实现的时候会为大家详细解释,
在这里为了便于理解,我先为大家打一个比方, 如果我们把内部总线看作是
输水的水管的话,那我们可以把这些通用寄存器等部件看作是蓄水的水池,
比如在这个例子中我们要从R0传送数据到X, R0和X都可以看做两个蓄水池,
它们分别有自己的进水口和出水口,那么R0我们看它有个双向
的箭头,证明它既可以输入又可以输出,所以它既有进水口
又有出水口。而X就一个单向的箭头,说明它只有进水口没有出水口,
因为我们知道X和Y作为LU的数据输入的临时寄存器的,
所以它不需要输出。从R0传送数据到X,
我们可以理解成在控制电路的控制下, 将R0的出水管打开,
再将X的入水管打开,与此同时 将其他所有部件的出水管和入水管都关闭,
这样R0里面保存的数据就像水流一样,经过了内部总线会留到了X当中,
那么经过一段时间之后,X中所保存的数就跟R0当中的数一样了。
这个我们就可以用来形象的理解,从R0传送输入到X, 这就是内部总线的作用。
那这样, 我们这个计算机结构的简化模型就构造完成了。