控制器
复习
- 第二十八章:了解了时序逻辑电路的基本原理
- 第三十五章:掌握了指令系统的基础知识
- 第三十六章:了解了程序计数和指令译码的过程
TL;DR
- 控制器是 CPU 的指挥中心,负责按时序发出各种控制信号
- 实现方式主要有两种:硬布线控制器(快但难改)和微程序控制器(灵活但慢)
- 控制信号告诉各部件:什么时候开门、什么时候运算、什么时候写回
正文
指挥中心
到这一步,我们手里已经有 ALU、寄存器、存储器、时钟……但它们都是“哑巴“,只会被动等待命令。谁来发号施令?
答案是控制器(Control Unit)。它做的事情可以概括成三件:
- 指令控制:取指、分析、执行
- 时序控制:按节拍安排每一步
- 数据流控制:开关数据通路,让数据流向正确的地方
如果说 CPU 是计算机的大脑,那控制器就是大脑里那个“决定下一步干什么“的部分。
两种实现思路
控制器怎么把“加法指令“变成一连串具体动作?有两条完全不同的路:
- 硬布线控制器:用组合逻辑电路把控制信号“焊死“
- 速度快
- 但电路一旦做好就很难改,指令系统一变就得重新设计
- 适合指令简单的系统
- 微程序控制器:把每条指令对应的控制信号,当成“微指令“存在一个只读存储器里
- 改指令就像改程序一样,改内容即可,灵活
- 但要多读一次存储器,速度慢一些
- 适合指令复杂的系统
两句话概括:硬布线是“用硬件算出来“,微程序是“把答案查出来“。前者快,后者活。
控制信号
不管哪种实现,最终都要输出一组控制信号,指挥各部件行动。典型的有:
- 时序类:时钟、复位、使能
- 功能类:ALU 选什么运算、寄存器读还是写、要不要访问存储器
- 状态类:更新哪些标志位、要不要响应中断
以一条加法指令为例,控制器大致会这样安排:
T1:取指令,PC 加 4
T2:译码,读出两个源寄存器
T3:命令 ALU 做加法
T4:把结果写回目标寄存器
可以看到,它其实就是一个“按时间表发号施令“的状态机——正是第二十八章讲过的时序逻辑。
思考题
硬布线控制器快、微程序控制器灵活。如果你要为一块主打低功耗、指令集简单的手表芯片选控制器,会选哪种?为什么?
小结
知识点
- 控制器的三大任务
- 硬布线控制器与微程序控制器
- 控制信号的种类与作用
- 用状态机理解控制器
参考资料
- Wikipedia(zh):控制单元:控制器的基本概念
- Wikipedia(zh):微程序:微程序控制的原理
思考题答案(仅供参考)
倾向选硬布线控制器。手表芯片指令集简单、对功耗和成本敏感、也不需要频繁修改指令,硬布线速度更快、电路更省,正合适。反过来,如果是需要不断扩展指令、追求兼容性的通用 CPU,微程序控制的灵活性就更有价值。
协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
封面图
设计师 | 南国微雪