计算机加法器原理
了解加法器原理之前,先介绍下继电器和门电路。
继电器
继电器我们并不陌生,在高中物理我们都学习过它。原理就是电和磁,利用电磁铁控制开关。 继电器的一个很大用处在于可以通过电流控制而非人工控制。利用多个继电器可以实现多种逻辑门电路。
继电器图例:闭合开关后,会让灯泡变亮
逻辑门
利用多个继电器,我们来实现各种逻辑门。
与门
AND | 0 | 1 |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
两个继电器串联:
只有当两个开关都关闭的时候,灯泡才能亮。这就是与门。
与门的简单符号:
或门
OR | 0 | 1 |
---|---|---|
0 | 0 | 1 |
1 | 1 | 1 |
两个继电器并联:
关闭一个或者两个都能让灯泡变亮。这就是或门。
或门的简单符号:
逻辑反
开关断开,灯泡亮;关闭开关后,灯泡就灭了。
这种继电器就是反向器。(反向器不是逻辑门,一个逻辑门通常有两个或多个输入)。
逻辑反的简单符号:
或非门
NOR | 0 | 1 |
---|---|---|
0 | 1 | 0 |
1 | 0 | 0 |
两个开关均断开,灯泡亮。闭合任一个或者都闭合,灯泡灭。 这就是或非门。
或非门的简单符号:或门加一个取反器标识
与非门
NAND | 0 | 1 |
---|---|---|
0 | 1 | 1 |
1 | 1 | 0 |
闭合一个或者都断开,灯泡亮;两个开关均闭合,灯泡灭。这就是与非门。
与非门的简单符号:与门加一个取反器标识
还有一个异或门,我们在加法器中介绍。
二进制加法器
0、1 二进制相加
+ | 0 | 1 |
---|---|---|
0 | 00 | 01 |
1 | 01 | 10 |
从中可以看出,1bit的0 1相加,最多会产生两个bit。把低位叫做加法位(sum bit),高位叫进位位(carry bit)。
分别看一下加法位和进位位:
进位位:
进位位 | 0 | 1 |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
进位位中只有两个输入都是1,才会有进位1。这和前边介绍的逻辑与门的结果是一样的。
加法位
加法位 | 0 | 1 |
---|---|---|
0 | 0 | 1 |
1 | 1 | 0 |
加法位的输入输出和前边介绍的逻辑门并不相同。仔细观察,它和或门相似,除了右下角的输出不一致;它和与非门也相似,除了左上角的输出不一致。
我们把每个具体的case罗列出来,和加法位的输出放在一起分析下:
输入A | 输入B | 或门输出 | 与非门输出 | 加法位输出 |
---|---|---|---|---|
0 | 0 | 0 | 1 | 0 |
0 | 1 | 1 | 1 | 1 |
1 | 0 | 1 | 1 | 1 |
1 | 1 | 1 | 0 | 0 |
我们把或门输出再当做输入A1,与非门输出当做输入B1,那么两者的与操作就是加法位输出了。
也就是或门器件并联与非门器件,再串联到与门器件即可。用简单的器件图示:
实际上加法位的输入输出结果就是另一个逻辑门:异或门。
简单表示:
半加器
从上边介绍的加法位和进位位两个元件,我们就可以开始计算两个二进制数相加了。
这个被称作半加器(Half Adder)。
因为目前它还只是实现单个bit相加。如果多个bit相加,需要多个半加器连接。
全加器
如图是两个半加器相连组成的全加器(Full Adder):
半加器A中的加法位,和进位输入,连到半加器B。最终的进位输出是利用或门,这里比较有趣。这是因为两个半加器中的进位位不能同时为1。
半加器输出的进位位和加法位不会同时为1(只有输入A和输入B都是1,进位位才是1,并且此时加法位是0)。因此假设半加器A中的CO是1,那么S一定是0,这样半加器B的CO也只能是0,所以两个半加器中的CO同样不可能同时为1。因此一个或门就可以表示最终的进位输出了~
全加器的简单表示图:
下面是8位的加法器,利用8个全加器实现如图:
同理16位加法器也一样道理,两个8位加法器级联起来即可。
好了,现在我们再来看看,实现一个8bit的加法器需要多少个继电器元件?
一个半加器需要一个加法位和进位位:加法位是异或门(或门、与非门、与门),需要2*3=6
个继电器;进位位是一个与门,需要2个继电器。所以一个半加器需要8个继电器元件。一个全加器是两个半加器,就是16个,8bit的全加器就是16*8=144
个继电器元件。
以上这些对继电器、逻辑门、半加器等知识的介绍即是现代计算机加法运算的基本原理。
当然也有些许不同:
- 从现在搭建的8位加法器,我们知道它的总体速度等于全加器件的速度乘以位数,这被称作行波进位(ripple carry)。现代更快的加法器运用一个被称为『前置进位』的电路来提高速度。
- 目前计算机的电子元件已经都是晶体管了,了解计算机硬件发展史知道,继电器后来被真空管替代,真空管被晶体管代替。他们工作方式基本相同,晶体管计算速度更快,体积更小,噪音小,功耗弱,也更便宜。因为工作原理相同,晶体管做8位加法器仍然也要需要144个元件。
参考:
- 《编码》