CrashCourseComputerScience05算数逻辑单元 ALU

117 阅读3分钟

算数逻辑单元 ALU

二进制表示、存储数字是基础,目标是计算和处理数字,这些操作由 ALU Arithmetic Logic Unit 完成。1970年发布时,它是第一个封装在单个芯片内的完整ALU,能够处理4位输入,使用了70个逻辑门,但不能执行乘除法。
image.png
ALU有两个单元,一个算术单元(Arithmetic Unit),一个逻辑单元(Logic Unit)。

1.算数单元

算术单元:负责计算机里的所有数字操作,比如加减法、增量运算(给某个数字+1)等。
使用逻辑门实现,包括AND门、OR门、NOT门和XOR门。
二进制一位的加法只有四种可能,其中 0+0=00+1=11+0=1,与逻辑 XOR 门的真值表相同;但是 1+1=10 需要进位,这时引入 AND 门作为进位 CARRY 的处理,这样实现了半加器(Half Adder)。
image.png
半加器处理了一位的加法,全加器(Full Adder)处理多位的加法,它有两个输入和一个进位输入,两个输出,一个是和,一个是进位。实现方式是连用两个半加器,A 和 B 的输入使用一个半加器,输出 S 和 CARRY;S 和 C 再使用一个半加器,输出 S 和 CARRY;再用 OR 门对两个半加器的 CARRY 运算。
image.png
由此使用 1 个半加器和 7 个全加器可以实现 8 位加法器 8-bit adder。当最后一位计算后 CARRY 位 TRUE,意味着需要 9 位才能表达计算结果,这时出现了 OVERFLOW
image.png
为了处理溢出的异常,叠加更多的加法器,这样使用了更多的逻辑门,每次进位都需要一些时间,而计算是串行的,所以消耗的时间也越长。在每秒几十亿的计算时,这样的影响不可以忽略,所以现代计算机用了更好的加法电路,称为超前进位加法器(Carry-Look-Ahead Adder)。
ALU通常支持以下操作:加法、带进位的加法、减法、带借位的减法、取反、增1、减1、数字无改变通过。这些操作也是由逻辑门构成的。注意:简单的ALU并不支持乘法,而是把乘法用多次加法来实现,而更好的处理器有专门做乘法的算数单元。

2.逻辑单元

逻辑单元:执行逻辑操作,比如AND、OR和NOT操作,也能做简单的数值测试,比如数字是不是负数。
对整个8位ALU进行抽象,用一个特殊的V形符号进行表示。其中有两个8位输入,并且有一个4位操作码(Operation Code)来告诉ALU对输入执行什么操作,比如1000表示加法命令,1100表示减法命令,然后有一个8位输出。同时ALU会输出一系列1位标志(FLAG),来表示特定状态,比如我们可以计算A-B,然后通过ZERO来判断结果是否为零来判断A与B是否相等,通过NEGATIVE来判断A是否小于B;然后OVERFLOW连接到加法器的进位,来判断是否出现溢出。
image.png