Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

一台会记事的小计算机

复习

  • 运算器负责计算
  • 寄存器与存储器负责保存眼前数据和大量数据
  • 地址、数据与控制信号决定一次读写

TL;DR

  • 把运算器、寄存器和存储器接起来,机器就能读取、计算、写回
  • 数据通路决定数据怎么走,控制信号决定何时开门
  • 目前仍需人逐步拨动控制线

正文

  我们已经拥有两大块:一块会算,一块会记。今天把它们接起来。

存储器 ──> 输入寄存器 ──> ALU ──> 结果寄存器
  ▲                                  │
  └──────────────────────────────────┘

  再加上地址线和几个控制开关,这台机器就能完成三种基本动作:

  1. 从指定地址读一个数进寄存器
  2. 让 ALU 对寄存器里的数做运算
  3. 把结果写回指定地址

算一次 3 + 5

  假设地址 20 保存 3,地址 21 保存 5,我们想把结果写到地址 22:

  1. 地址设为 20,发出读信号,把 3 收进寄存器 A
  2. 地址设为 21,发出读信号,把 5 收进寄存器 B
  3. ALU 控制码设为加法,把 8 收进结果寄存器
  4. 地址设为 22,发出写信号,把 8 写进存储器

  每一步都由时钟边沿整齐地完成。机器已经能读、算、写,而且结果不会在下一步消失。

还站着一个忙碌的人

  问题是,这四步全靠人在外面拨地址、切控制码、按时钟。换一道题,人又要重新安排一遍。我们虽然没有亲手做加法,却成了专职指挥员。

  能不能把“先读 20,再读 21,然后相加,最后写 22”也编码成数据,放进存储器,让机器自己照着做?

  这就是程序。下一章,我们先发明机器能听懂的一句话。

思考题

  在上述四步中,如果第 4 步误把地址设为 21,会发生什么?运算结果本身是否仍然正确?

小结

知识点

  • 运算器与存储器通过寄存器和数据通路配合
  • 一次计算可拆成读取、运算与写回
  • 机器目前仍依赖人工发出控制信号

思考题答案(仅供参考)

  ALU 算出的 8 仍然正确,但它会覆盖地址 21 原来的 5,而地址 22 不会得到结果。数据正确不代表送达的位置正确。

协议

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

封面图

设计师 | 南国微雪