CPU系列-什么是加法器
CPU的基本构型如下:
首先能看到的是总线绕了一个大圈,分别连接在RAM的数据端和地址端。有六个寄存器挂在总线上,分别是:R0, R1, R2, R3, TMP, ACC。其中R0, R1, R2, R3是CPU用于短期存储数据的寄存器,他们的输入输出都是通过总线与外界连接,这四个寄存器用处很多,称得上是万金油寄存器,通用叫法是“通用寄存器”。TMP称为临时寄存器,它的输入来自总线数据,输出到一个粉色的框框,只有“写”指令,没有“读”指令,也就是说这个寄存器会一直输出。ACC称为累加器,它接受来自问号框框的数据,输出连接到总线上,所以它的输出数据可以搬运到任何总线到达的地方。
中间有一个大框,写着“Control Section”称之为控制单元,是CPU中最复杂的部分,它控制了CPU和RAM中所有“读”和“写”(s和e)使能情况,这个后面会详细讲。
左侧还有一个带“问号”的框框是什么呢?——它的名字叫ALU(Arithmetic and Logic Unit),也就是算数与逻辑单元。我们先来研究一下它。
逻辑门
在介绍ALU之前,我们有必要再学习几种新的逻辑门电路,具体如下:
分别为与非门、与门、或门及异或门。前三个都比较简单,简单说一下异或门,从真值表上可以看出,它的逻辑是通入相同为0,不同为1。为什么说它呢?——因为加法器会用到它。
什么是加法器
说道算数与逻辑,一个首先要解决的问题就是加法问题。我们先从最简单的1位加法开始。
对于1位加法器,我们知道:
我们把上述语法用逻辑门电路来实现,非常简单,一个与门,一个异或门:
其中,a和b为1位的输入,sum为和,carry为进位,这称之为半加器,我们可以把它抽象成:
现在难度升级,假如输入也有进位,该如何处理呢?——那就在加一个半加器!两个半加器只要有一个有进位,那carry out就是1,因此可以用一个或门来实现。
这称之为全加器,其真值表为:
具体实现为:
能看出来其中的逻辑吗?我们把全加器抽象为:
有了一位全加器,还会发愁8位全加器吗?
8位全加器可以抽象为: