Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

运算器总装

复习

  • ALU 根据控制码完成算术或逻辑运算
  • 状态标志记录结果是否为零、负数、进位或溢出
  • ALU 会算,却不会保存任何东西

TL;DR

  • 运算器把输入、ALU、结果和状态标志连成一条数据通路
  • 控制线决定数据走向和运算种类
  • 我们已经造出“会算”的部分,接下来要让它“记住”

正文

  桌上的零件终于够了。来把它们装成第一件真正像计算机部件的东西。

两个入口,一个出口

  运算器最核心的路线很简单:

输入 A ─┐
        ├─> ALU ─> 结果
输入 B ─┘          └─> 状态标志
             ▲
           控制码

  把 A、B 送进去,再给一组控制码,ALU 就给出结果和标志。若控制码是加法,输入 0000010100000011,出口得到 00001000;改成按位与,出口就变成 00000001

  数据走过的这条路线叫作数据通路。控制码不直接搬运数据,它只负责打开正确的门,让数据走向正确的电路。

我们已经造出了什么

  从第七章的与、或、非门开始,我们一路搭出了:

逻辑门
  ↓
半加器与全加器
  ↓
多位加法器
  ↓
加减法与逻辑运算
  ↓
ALU
  ↓
运算器

  第二章画出的计算机有运算器、存储器、控制器、输入和输出。现在,第一大块终于完成了。

但它仍然只有一瞬间

  如果我们想计算 2 + 3 + 4,第一步可以算出 5。可输入一变化,5 就消失了,第二步没有地方取回它。组合逻辑只关心此刻的输入,过去对它来说从未存在。

  所以接下来的目标非常明确:让电路记住一个 0 或 1。

  办法听上去有些离谱——把逻辑门的输出绕回来,再接到自己的输入。下一章,我们试试让电路首尾相连。

思考题

  为什么仅有 ALU 还算不了 2 + 3 + 4?缺少的是新的运算规则,还是保存中间结果的能力?

小结

知识点

  • 运算器的基本数据通路
  • 运算数据与控制信号承担不同职责
  • 组合逻辑不能保存中间结果
  • 计算机的下一块拼图是存储

思考题答案(仅供参考)

  ALU 已经会加法,缺少的是保存中间结果 5 的能力。没有存储,第一步的输出在输入改变后就会消失,第二步无法继续使用它。

协议

  本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

封面图

设计师 | 南国微雪