算术逻辑单元 ALU
定义
- 表示和存储数字是计算机的重要功能,但真正的目标是计算,有意义的处理数字,比如把两个数字相加,这些操作由计算机的 “算术逻辑单元 “(ALU)处理
- ALU 是计算机里负责运算的组件
典型设备
- 典型的 ALU 设备:英特尔 74181,1970 年
- 第一个封装在单个芯片内的完整 ALU
组成
算术单元
- 负责计算机里的所有数字操作(eg. 加减法、增量运算/+1)
- 8个基础功能:加法 ADD、带进位的加法 ADD WITH CARRY 、减法 SUBTRACT、带借位的减法 SUBTRACT WITH BORROW、取反 NEGATE、增量(+1) INCREMENT、减量(-1) DECREMENT、数字无改变通过 PASS THROUGH
- 乘除法:
用 AND,OR,NOT 和 XOR 逻辑门构建半加器电路:
把 “半加器” 封装成一个单独组件:
全加器(处理1个bit的加法,3个输入)
全加器用来处理3个输入的加法运算(两个加数 + 上一级传过来的进位)
用半加器和逻辑门构建全加器:
把 “全加器” 封装成一个单独组件:
8位行波进位加法器(处理8bit加法,1个半加器 + 7个全加器)
溢出 overflow
上图8bit加法器,最后一个全加器有 “进位” 的输出。如果该进位输出1,说明两个数字的和超过了8-bits,这就是溢出(overflow)。
现代计算机用的加法电路有点不同,叫 “超前进位加法器“,也是把二进制数相加,但更快。
逻辑单元
- 逻辑单元执行逻辑操作,eg. AND,OR 和 NOT 操作;做简单的数值测试,比如判断一个数字是不是负数
- example:检测数字是否为0的电路:
ALU 符号
将 ALU 抽象成一个 V 符号
利用ALU输出的flag,可以用来检测是否溢出、是否相等、是否小于等