运算器总装
复习
- ALU 根据控制码完成算术或逻辑运算
- 状态标志记录结果是否为零、负数、进位或溢出
- ALU 会算,却不会保存任何东西
TL;DR
- 运算器把输入、ALU、结果和状态标志连成一条数据通路
- 控制线决定数据走向和运算种类
- 我们已经造出“会算”的部分,接下来要让它“记住”
正文
桌上的零件终于够了。来把它们装成第一件真正像计算机部件的东西。
两个入口,一个出口
运算器最核心的路线很简单:
输入 A ─┐
├─> ALU ─> 结果
输入 B ─┘ └─> 状态标志
▲
控制码
把 A、B 送进去,再给一组控制码,ALU 就给出结果和标志。若控制码是加法,输入 00000101 与 00000011,出口得到 00001000;改成按位与,出口就变成 00000001。
数据走过的这条路线叫作数据通路。控制码不直接搬运数据,它只负责打开正确的门,让数据走向正确的电路。
我们已经造出了什么
从第七章的与、或、非门开始,我们一路搭出了:
逻辑门
↓
半加器与全加器
↓
多位加法器
↓
加减法与逻辑运算
↓
ALU
↓
运算器
第二章画出的计算机有运算器、存储器、控制器、输入和输出。现在,第一大块终于完成了。
但它仍然只有一瞬间
如果我们想计算 2 + 3 + 4,第一步可以算出 5。可输入一变化,5 就消失了,第二步没有地方取回它。组合逻辑只关心此刻的输入,过去对它来说从未存在。
所以接下来的目标非常明确:让电路记住一个 0 或 1。
办法听上去有些离谱——把逻辑门的输出绕回来,再接到自己的输入。下一章,我们试试让电路首尾相连。
思考题
为什么仅有 ALU 还算不了
2 + 3 + 4?缺少的是新的运算规则,还是保存中间结果的能力?
小结
知识点
- 运算器的基本数据通路
- 运算数据与控制信号承担不同职责
- 组合逻辑不能保存中间结果
- 计算机的下一块拼图是存储
思考题答案(仅供参考)
ALU 已经会加法,缺少的是保存中间结果 5 的能力。没有存储,第一步的输出在输入改变后就会消失,第二步无法继续使用它。
协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
封面图
设计师 | 南国微雪