Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

中央处理器

复习

  • 运算器负责计算,寄存器保存眼前的数据
  • PC 与 IR 分别保存下一条地址和当前指令
  • 控制器按拍完成取指、译码与执行

TL;DR

  • 运算器、寄存器组和控制器合起来,就是 CPU 的核心
  • CPU 不断重复取指、译码、执行和写回
  • 从这一刻起,机器能自己沿着程序运行

正文

  零件终于凑齐了。把 ALU、状态标志、寄存器、PC、IR 和控制器放进同一个盒子,这个盒子就是中央处理器,简称 CPU

            ┌──────── CPU ────────┐
指令与数据 ─> 寄存器 <─> ALU      │
            │   ▲        │        │
            │   └── 控制器 ──> 控制信号
            └─────────────────────┘

让一条加法指令跑起来

  假设 IR 取到“把 A 与 B 相加,结果写进 R”:

  1. 控制器译出加法操作码
  2. A、B 寄存器的输出进入 ALU
  3. ALU 控制码切到加法,得到结果和状态标志
  4. 下一个时钟边沿,结果写入 R
  5. 控制器回到取指状态,按 PC 取得下一条指令

  没有人再拨开关。时钟每走一拍,控制器就推动数据向前一步。

数据通路与控制通路

  数值经过寄存器、ALU 和存储器走的路线,叫数据通路;控制器发出的选择、读写和使能信号走的路线,叫控制通路。

  可以把数据想成车,数据通路是道路,控制信号是红绿灯。道路决定能去哪里,红绿灯决定这一刻谁可以走。

我们的第一台自动机器

  回头看,第二章画出的运算器、存储器和控制器已经不再是几个陌生方框。每一块都是从逻辑门、触发器和选择器一点点搭起来的。

  这台 CPU 已经能正确执行程序。它还不快,也还没和键盘、屏幕见面。在继续连接外界之前,有两篇补充分别讨论怎样缩短取数据的等待、怎样让多条指令重叠前进;不关心性能的读者可以直接去看总线。

思考题

  若控制器误把“写入 R”的使能信号提前一拍打开,R 可能收到什么?为什么时序和逻辑功能同样重要?

小结

知识点

  • CPU 的核心由运算器、寄存器组和控制器构成
  • CPU 循环执行取指、译码、执行与写回
  • 数据通路搬运数值,控制通路安排动作

思考题答案(仅供参考)

  R 可能收下 ALU 尚未稳定的旧值或中间值。电路即使“最终会算对”,若在错误时刻采样,保存下来的仍会是错误结果。

协议

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

封面图

设计师 | 南国微雪