点击查看【bilibili】

算术逻辑单元 ALU

定义

  • 表示和存储数字是计算机的重要功能,但真正的目标是计算,有意义的处理数字,比如把两个数字相加,这些操作由计算机的 “算术逻辑单元 “(ALU)处理
  • ALU 是计算机里负责运算的组件

**

典型设备

  • 典型的 ALU 设备:英特尔 74181,1970 年
    • 第一个封装在单个芯片内的完整 ALU

组成

ALU 有 2 个单元:1 个算术单元和 1 个逻辑单元 5、算术逻辑单元(ALU) How Computers Calculate-the ALU - 图1

算术单元

  • 负责计算机里的所有数字操作(eg. 加减法、增量运算/+1)
  • 8个基础功能:加法 ADD、带进位的加法 ADD WITH CARRY 、减法 SUBTRACT、带借位的减法 SUBTRACT WITH BORROW、取反 NEGATE、增量(+1) INCREMENT、减量(-1) DECREMENT、数字无改变通过 PASS THROUGH
  • 乘除法:
    • 简单处理器通过多次ALU(加法)实现乘法
    • 更好的处理器有专门做乘法的算术单元

      半加器(处理1个bit的加法,2个输入)

      半加器用来处理两个输入的加法运算,输出进位(CARRY)和(SUM)

用 AND,OR,NOT 和 XOR 逻辑门构建半加器电路:
image.pngimage.png
把 “半加器” 封装成一个单独组件:
image.png

全加器(处理1个bit的加法,3个输入)

全加器用来处理3个输入的加法运算(两个加数 + 上一级传过来的进位)

用半加器和逻辑门构建全加器:
image.pngimage.png
把 “全加器” 封装成一个单独组件:
image.png

8位行波进位加法器(处理8bit加法,1个半加器 + 7个全加器)

image.png

溢出 overflow

上图8bit加法器,最后一个全加器有 “进位” 的输出。如果该进位输出1,说明两个数字的和超过了8-bits,这就是溢出(overflow)

现代计算机用的加法电路有点不同,叫 “超前进位加法器“,也是把二进制数相加,但更快。

逻辑单元

  • 逻辑单元执行逻辑操作,eg. AND,OR 和 NOT 操作;做简单的数值测试,比如判断一个数字是不是负数
  • example:检测数字是否为0的电路:

image.png

ALU 符号

将 ALU 抽象成一个 V 符号
image.png
利用ALU输出的flag,可以用来检测是否溢出、是否相等、是否小于等