05 算术逻辑单元(How Computers Calculate-the ALU)

307 阅读4分钟

5. 算术逻辑单元-How Computers Calculate-the ALU_哔哩哔哩_bilibili

1. 简介

在第 05 集中,视频主要介绍了算术逻辑单元(Arithmetic Logic Unit,简称 ALU)的架构和功能。通过理解 ALU 的设计和运行原理,可以掌握现代计算机的基础构造。视频还演示了如何从基本逻辑门开始逐步构建一个简单的 ALU 电路,并展示了 ALU 在计算机执行计算和逻辑操作中的作用。

2. ALU 的基本概念

ALU 是计算机的运算核心,负责执行各种算术和逻辑操作。其名称中的“算术”指的是加法、减法等数值运算,而“逻辑”则指的是 AND、OR、NOT 等逻辑操作。ALU 是中央处理单元(CPU)中一个至关重要的部分,几乎所有计算和逻辑决策都依赖于它的处理能力。

3. ALU 的设计与功能

ALU 有 2 个单元,1 个算术单元和 1 个逻辑单元。

3.1 算术单元

算术单元负责处理计算机中的数值操作,包括加法、减法以及其他基本的数学运算。视频通过示例详细讲解了如何从基础构造一个 1 位的半加器(Half Adder)和能够处理进位的全加器(Full Adder),并扩展到较复杂的 8 位行波进位加法器(8-bit Ripple Carry Adder)。

3.1.1 半加器(Half Adder)

半加器可以处理两个二进制位(bit)的加法,利用 XOR 门来确定总和,利用 AND 门来确定进位。

逻辑门组成的半加器 封装成组件的半加器

3.1.2 全加器(Full Adder)

如果想处理超过 1 + 1 的运算,我们需要全加器。全加器在半加器的基础上添加了处理上一个进位的功能(一共 3 个输入),通过两个半加器和一个 OR 门来实现。

全加器表格

半加器和逻辑门组成的全加器

封装成组件的全加器

3.1.3 构建 8 位行波进位加法器

一个半加器(第一步不需要处理进位)和多个全加器级联使用,以构建一个可以处理 8 位二进制数相加的电路。在加法过程中,进位会逐步向前传播,这种方式被称为 "行波进位"。

8 位行波进位加法器

3.1.4 溢出

注意上面演示的 8 位行波进位加法器,最后一个全加器有“进位”的输出。如果第 9 位有进位,代表两数的和过大,超过了 8 位,这叫“溢出”(overflow)。“溢出”会导致错误和不可预期的后果。
我们可以通过加更多全加器,可以操作 16 位或 32 位数字,让溢出更难发生。这么做的代价是更多逻辑门和耗时。

3.1.5 支持的运算

算术单元支持的运算

3.2 逻辑单元

逻辑单元执行逻辑操作,例如 AND、OR 和 NOT 操作。这些操作用于测试和比较数值,如检查一个数是否为零、是否为负数等。

3.2.1 常用逻辑操作举例:零测试(Zero Test)

使用 OR 门测试任一位是否为 0,再通过 NOT 门取反,实现 8 位全为 0 就输出 True 的零测试。

零测试

4. ALU 的抽象

ALU 的抽象

  • 2 个 8 位的输入(INPUT A / INPUT B)。
  • 1 个 4 位的操作码(OPERATION CODE),告诉 ALU 执行什么操作。
  • 1 个 8 位的输出(OUTPUT)。
  • 若干个 1 位的标志(FLAGS),最普遍的 3 种:
    • Overflow Flag:发生溢出时置为 1,即为 True。
    • Zero Flag:结果为零时置为 1,即为 True。
    • Negative Flag:结果为负时置为 1,即为 True。

5. ALU 的发展

5.1 74181 ALU 实例

视频介绍了历史上著名的 Intel 74181,这是一个 4 位的 ALU 电路,尽管其仅能处理 4 位输入,且无法进行乘法和除法运算,但它代表了计算机小型化的一大进步。

ALU 的抽象

Intel 74181 的逻辑门

5.2 现代 ALU 的扩展

现代 ALU 通常使用更复杂的电路,例如“超前进位加法器”以提高速度,并支持更多操作,比如乘法和除法。它们还会输出标志(Flag)用于指示特定状态和条件。

6. 总结

  • ALU 是计算机的运算核心,负责算术和逻辑操作。
  • 简单的 ALU 可以通过基础的逻辑门,如 AND、OR、XOR 和 NOT 来构建。
  • 复杂的运算,如乘法和除法,可以通过组合基本运算来实现,或使用专用电路。
  • 现代 ALU 输出包括不同状态的标志,用于指示运算结果的特定情况。