第三章 算术逻辑
前言
二进制在计算机中的表示部分已经完成,下一步该进入如何用这些二进制数字完成计算机中的计算。
一、ALU
1.ALU介绍
ALU(Arithmetic & Logic Unit)算术逻辑单元。计算机中完成数据加减的部分,也是计算机的核心,基本所有的部件都会用到它。
如图是最早的ALU硬件展示,英特尔的74181.
2.ALU实现
ALU一般分为两部分,逻辑部分和算术部分,这两部分将分开讲解。
1.半加器实现
算数,简单理解,就是将数字相加,或者相减,我们之前已经通过晶体管完成了逻辑门,很容易想到用晶体管也可以实现数字的加减,如果这里使用晶体管来进行一步步运算,晶体管结构很快会变的相当复杂,所以我们将逻辑门向上抽象,来完成电路。
这里从最简单的开始构建思路,也就是加1.
0+0 =0 , 1+0=1,0+1=1
很显然可以发现,这一组算术得到的结果和异或门完全一样。
但是有一个问题,就是当1+1时,会完成进位
也就是1+1 = 0
那么这个进位,就再加一根线来计算,作为进位线。
这样一个半加器就完成了,它的作用主要是处理1或0的加减。
全加器实现
要实现更为复杂的计算,就要完成一个全加器。这里对半加器再做一次抽象。
S是余位,C是进位。
将余位作为下一次计算的其中一个输入,另外一个加数作为第二个输入,这样完成了一个全加器。这里可以想象一下列竖式,先两个相加,把得到的余数再和下一位相加。
八位加法器
在上边已经完成了全加器,接下来可以再进一步,将全加器进行抽象,把8个全加器连在一起,完成一个8位加法器。
这里可能有人会问,如果A7全加器仍有进位,怎么办,这个问题挺好,结果就是数据溢出,程序异常。
逻辑单元
对于一个计算单元来说,不仅要能进行计算,还要知道进行什么计算,这就是逻辑单元的作用。
8位的数据,以及8位的操作符。
总结
实在是太精妙了,看完这一部分感觉好像自己就在做一个计算机一样,把复杂的计算通过精妙的晶体管来完成,速度快到难以想象,在这里的时候已经有了计算机的初步模型,我也很期待下一步要做什么。