上节课我们学习了如何用二进制表示和存储数字,但是真正的目标是计算与有意义地处理数字。计算机的算术逻辑单元(ALU)用于实现计算机的算术操作,ALU被称作计算机的数学大脑。ALU是计算机里负责运算的组件,基本上其他所有部件都用到了他。Intel 74181是第一个封装到芯片中的ALU。本节课将尝试制造一个简单的ALU电路,实现和74181一样的功能。然后我们在余下的几集中将使用它制造出一台计算机。
ALU有着2个单元:1个算术单元和1个逻辑单元。ALU负责计算机的所有运算,包括加减乘除以及自增等等。我们尝试使用逻辑门(与或非门、异或门)电路建立ALU。
最简单的加法电路,将两个bit相加得到1个bit的结果。输入和输出的对应关系恰好是一个异或门。因为1+1=10,所以我们还需要1个位作为进位的标识,这个进位值我们可以用一个与门实现,如下所示。这样的逻辑电路就是一个半加器,然后我们还可以将半加器继续抽象化。
如果我们需要进行超过1+1的、超过两个bit之间运算,我们就需要“全加器”。因为超过两个bit的数之间的运算必然会产生进位,因此全加器的逻辑表一定是3个输入和两个输出的(进位与总和)。全加器可以使用两个半加器组成,根据逻辑表设计的逻辑电路如下所示。然后我们在将全加器的电路抽象化。