Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

控制器

复习

  1. 第二十八章:了解了时序逻辑电路的基本原理
  2. 第三十五章:掌握了指令系统的基础知识
  3. 第三十六章:了解了程序计数和指令译码的过程

TL;DR

  • 控制器是 CPU 的指挥中心,负责按时序发出各种控制信号
  • 实现方式主要有两种:硬布线控制器(快但难改)和微程序控制器(灵活但慢)
  • 控制信号告诉各部件:什么时候开门、什么时候运算、什么时候写回

正文

指挥中心

  到这一步,我们手里已经有 ALU、寄存器、存储器、时钟……但它们都是“哑巴“,只会被动等待命令。谁来发号施令?

  答案是控制器(Control Unit)。它做的事情可以概括成三件:

  1. 指令控制:取指、分析、执行
  2. 时序控制:按节拍安排每一步
  3. 数据流控制:开关数据通路,让数据流向正确的地方

  如果说 CPU 是计算机的大脑,那控制器就是大脑里那个“决定下一步干什么“的部分。

两种实现思路

  控制器怎么把“加法指令“变成一连串具体动作?有两条完全不同的路:

  1. 硬布线控制器:用组合逻辑电路把控制信号“焊死“
    • 速度快
    • 但电路一旦做好就很难改,指令系统一变就得重新设计
    • 适合指令简单的系统
  2. 微程序控制器:把每条指令对应的控制信号,当成“微指令“存在一个只读存储器里
    • 改指令就像改程序一样,改内容即可,灵活
    • 但要多读一次存储器,速度慢一些
    • 适合指令复杂的系统

  两句话概括:硬布线是“用硬件算出来“,微程序是“把答案查出来“。前者快,后者活。

控制信号

  不管哪种实现,最终都要输出一组控制信号,指挥各部件行动。典型的有:

  • 时序类:时钟、复位、使能
  • 功能类:ALU 选什么运算、寄存器读还是写、要不要访问存储器
  • 状态类:更新哪些标志位、要不要响应中断

  以一条加法指令为例,控制器大致会这样安排:

T1:取指令,PC 加 4
T2:译码,读出两个源寄存器
T3:命令 ALU 做加法
T4:把结果写回目标寄存器

  可以看到,它其实就是一个“按时间表发号施令“的状态机——正是第二十八章讲过的时序逻辑。

思考题

  硬布线控制器快、微程序控制器灵活。如果你要为一块主打低功耗、指令集简单的手表芯片选控制器,会选哪种?为什么?

小结

知识点

  • 控制器的三大任务
  • 硬布线控制器与微程序控制器
  • 控制信号的种类与作用
  • 用状态机理解控制器

参考资料

  1. Wikipedia(zh):控制单元:控制器的基本概念
  2. Wikipedia(zh):微程序:微程序控制的原理

思考题答案(仅供参考)

  倾向选硬布线控制器。手表芯片指令集简单、对功耗和成本敏感、也不需要频繁修改指令,硬布线速度更快、电路更省,正合适。反过来,如果是需要不断扩展指令、追求兼容性的通用 CPU,微程序控制的灵活性就更有价值。

协议

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

封面图

设计师 | 南国微雪