其他分享
首页 > 其他分享> > 四. 控制器与运算器(CPU)

四. 控制器与运算器(CPU)

作者:互联网

四. 控制器与运算器

前面我们已经造出了加法机,但是这种机器其实并没有什么卵用;首先需要人伺候着,不停地按动开关输入数据;其次它还只能计算两个数字,如果是多个数字就需要每次记下前两个数的结果,然后再输入这个结果和下一个数再运算,这会很麻烦;显然,我们还有一段路要走。

1.使用寄存器保存中间数

前面我们也造出了寄存器,就可以用到这里来保存中间数(即前两个数的运算结果),最后计算的结果也一样保存到寄存器。寄存器符号如下图:
在这里插入图片描述
注意: cp端左侧的三角形表示该寄存器只在cp脉冲的上升沿才工作;

将寄存器与加法器按照下图连接:
在这里插入图片描述
如图,左侧的开关可以将二进制数输入寄存器RA中,RA直接输入到加法器中;也可以开关直接输入到加法器的另一端,加法器输出结果也可以进入RA中保存或作为中间数参加下次运算;KRA为一个按键开关,按一下,RA就会保存左侧输入的二进制数;

可以看到,这个装置的输入和输出共用了一段线路,在逻辑电路里,大家共用的公共线路称为总线,而这容易引起混乱;想解决这个问题可以使用传输门,即电子开关。

2. 使用传输门来轮流使用总线
在这里插入图片描述
如图,RA和TR是临时寄存器,GA、GB是传输门(通过KGA、KGB控制);下面来看看这个装置怎么来操作,例如计算10 + 5 + 7 + 2 + 6;

首先要做的是用左边那排开关扳出第一个数“10”,并将其保存到寄存器RA中称之为装载

装载的过程是这样的:假设数已经扳好了,接下来,按住KGA不要松开,使传输门GA打开,于是数据到达寄存器RA;接着,再按一下KRA将数据锁进RA中;最后,松开KGA。

可以看出,这个数不但到达寄存器RA,还到达加法器的另一个输入端,以及传输门GB。同时,加法器也一直在工作。但是,因为传输门GB没有打开,这里不会出什么乱子。

这是个单一的过程,但却需要两只手操作,同时还有一个手法问题比较讲究。什么手法呢?那就是不允许同时按下KGA和KRA。当按下KGA时,数据还没有稳定下来,要是RA在这个当口工作,它保存的数据就很有可能是错的。

装载过程已经结束,第一个数“10”已经位于寄存器RA中了。现在,我们要用第二个数与它相加。这需要再次扳动那排开关,得到第二个数“5”。然后,按住KGA不要松开,使“5”进入加法器的另一个输入端。加法器是自动即时相加的,它会立即计算出相加的结果“15”。此时,按一下KTR将其保存到临时寄存器TR中,然后松开KGA。

因为是要做一连串的加法,所以当前的计算结果还必须参与下一次计算,这意味着要把数据从临时寄存器TR移动到RA。

通常情况下,传输门GA是断开的,所以不用担心数据冲突,直接按住KGB不要松手,使计算结果从寄存器TR通过GB流向RA;接着,按一下KRA将数据锁存,最后将KGB松开。

有趣的是,一旦数据从传输门GB流出来,它不但会等待RA将其保存,同时也流向加法器的另一个输入端,并和RA中原有的数相加。不过不用担心,寄存器TR会将结果拦住。

很明显,在这道加法题中,除了第一个数字“10”需要预先保存到寄存器RA之外,从第二个数字“5”开始,一直到最后一个数字“6”,所有数字在相加时的操作过程都是一样的,都要经历用开关扳数、相加并保存到寄存器TR,然后从TR移动到RA的过程,这个过程可以简单地称为相加。当最后一个数加完之后,最终的结果仍然在寄存器RA中。

3. 简化操作过程

这个机器虽然能做一连串的加法,但操作过于复杂,怎么可以去掉那些开关以简化操作?一个方法就是使用逻辑电路替代那些开关;如图:
在这里插入图片描述
图中,K字开头的开关就可以通过“我们的新电路”来完成连续相加(这里先不关心具体过程),再简化可以到下图:
在这里插入图片描述
这就是一个极其简单的控制器,他可以控制运算器按照规定的步骤有条不紊的计算,而控制器和运算器是cpu主要的组成部分。

4. 说明

本文为《穿越计算机的迷雾》读书笔记,如有错误,还请兄弟们指正,大家一起进步。

标签:控制器,TR,KGA,开关,加法器,RA,寄存器,CPU,运算器
来源: https://blog.csdn.net/weixin_50260670/article/details/119297672