控制器的结构和功能
5.3 把数据通路上所有的开关都摆出来了:Xin、Xout、ALUop、SRop、MUX 的选择端。5.4 只回答一个问题:这些开关的值从哪来。
本章第一条主线到这里走完最后一环。链条是:
这一节讲这条链的中段接口,5.4.2 和 5.4.3 讲中段内部的两种做法。 注意后两节是同一个方框的两种实现,不是两个不同的部件——这是本节最需要先立住的框架。
机制
控制器 = 一个函数
把控制器看成一个组合函数,它的形态立刻就清楚了:
三类输入缺一不可,5.1.2 已经提过,这里说清每一类为什么必须:
| 输入 | 来自 | 缺了会怎样 |
|---|---|---|
| 操作码 | IR 的操作码字段 → 指令译码器 | 不知道这是加法还是转移,发不出任何有意义的信号 |
| 节拍信号 | 时序系统(脉冲源 + 节拍发生器) | 知道要做什么,但不知道现在该做第几步 |
| 状态标志 | PSW(ZF/SF/CF/OF)、主存 Ready、中断请求线 | 条件转移无法工作;无法等待慢速主存;无法响应中断 |
第三类最容易被忽略,但它是控制器不能是纯组合逻辑的原因——同样的操作码、同样的节拍,标志位不同则输出不同。Jcc 的”转”与”不转”就差在这里(4.3.2)。
控制器的组成
| 部件 | 作用 |
|---|---|
| PC | 提供下一条指令的地址 |
| IR | 存放当前指令,其操作码字段供译码 |
| 指令译码器 ID | 操作码 → “是哪条指令”( |
| 时序系统 | 时钟脉冲源 + 环形脉冲发生器 + 节拍发生器 + 启停控制 |
| 微操作信号发生器(CU) | 核心:三类输入 → 控制信号组 |
ID 是一个译码器——5.3.2 那条判据在这里再次适用:一进多出、只中一根、输出是控制信号。 它的输出是 CU 的输入。
时序系统的产物是”节拍”。 一个机器周期被划分成若干节拍
这个布尔表达式就是 5.4.2 硬布线控制器要设计的东西。
控制器的功能
教材列的五项,其实是 5.1.1 五项 CPU 功能里归控制器的那四项,加上”控制输入输出”:
| 功能 | 落到哪一节 |
|---|---|
| 取指令 | 取指周期的微操作序列,5.2.2 |
| 分析指令 | 操作码译码 + 寻址方式判断(是否进间址周期) |
| 执行指令(发出控制信号) | 本节 + 5.4.2、5.4.3 |
| 控制程序和数据的输入输出 | 第 7 章 I/O,7.1.3 |
| 处理异常和中断 | 5.5 |
「地址」这个词在控制器里的三重含义
这是 5.4 全节最值得先立住的辨析,因为 5.4.3 的微指令格式里”地址”会连着出现两次,和机器指令的地址码混在一起。
| 名字 | 指的是什么地址 | 在哪一层 | 有多大 |
|---|---|---|---|
| 机器指令的地址码 | 主存单元地址 | 程序可见 | 主存地址位数 |
| 微指令的下地址字段 | 控制存储器 CM 中下一条微指令的地址 | 程序不可见 | |
| 微指令的源/目的地址 | CPU 内部寄存器的编号 | 程序不可见 |
三者都叫”地址”,但分属三个完全不同的地址空间,位数、单位、寻址对象都不一样。
判据:碰到”地址”两个字,先问它索引的是哪个存储体。 主存?控制存储器?还是寄存器堆?——这和 4.2.1 那条”先定位它在地址翻译链的哪一层”是同一种思维动作,只是那里的六层是纵向的翻译链,这里的三个是横向的不同空间。
同样的混淆在 5.3.4 已经以另一种面目出现过一次:转移指令的偏移量是数据、微指令的下地址是控制器内部的产物,二者都是”地址”,但一个走数据线、一个根本不出控制器。
两类控制器的定位
CU 这一个方框,有两种做法:
| 硬布线控制器 | 微程序控制器 | |
|---|---|---|
| CU 是什么 | 一片组合逻辑电路 | 一个只读存储器(CM)+ 取微指令的逻辑 |
| 控制信号怎么来 | 布尔表达式直接算出来 | 从 CM 里读出来 |
| 改一条指令 | 改电路 | 改 CM 的内容 |
| 速度 | 快(一级门延迟) | 慢(要访问 CM) |
| 典型搭配 | RISC | CISC |
| 本章 | 5.4.2 | 5.4.3 |
“典型搭配”只是历史相关性,不是定义。 4.4.1 和 4.4.3 强调过因果强度不对称:RISC → 硬布线较硬(指令少而规整,组合逻辑才做得出来),CISC → 微程序只是便利(指令太多太杂,用查表比布线容易)。现代 x86 两者都有:常用指令走硬布线快速路径,复杂指令走微码。
边界
层次辨析:三个「地址」
- 机器指令的地址码 → 主存地址,程序可见
- 微指令的下地址字段 → 控制存储器 CM 的地址,程序不可见
- 微指令的源/目的地址 → 寄存器编号,程序不可见
判据:它索引的是哪个存储体。
边界辨析:指令译码器 ID / 微操作信号发生器 CU
- ID 只吃操作码,输出”是哪条指令”——
条指令 根线 - CU 吃操作码、节拍、状态三类输入,输出”这一拍发哪些信号”——每根控制线一个输出
ID 的输出是 CU 的输入。 硬布线控制器里,CU 就是接在 ID 输出线上的一大片与或门。
边界辨析:控制器 ≠ 控制单元 CU
控制器包含 PC、IR、ID、时序系统、CU;CU 只是其中产生控制信号的那一块。
题目说”两种控制器”时,变的只有 CU 这一块,PC、IR、ID、时序系统在两种方案下都一样。
对照速查
| 问的是 | 答案 |
|---|---|
| CU 的输入有哪几类 | 操作码、节拍信号、状态标志(漏第三类是最常见失分) |
| 为什么控制器需要标志位输入 | 条件转移要根据 PSW 决定发不发转移信号 |
| 时序系统的产物 | 节拍(机器周期内的时钟划分) |
| 硬布线与微程序的差别在哪 | 只在 CU 这一块:组合逻辑 vs 查存储器 |
| 指令译码器输出几根线 | 指令条数 |
考点
- CU 的三类输入:默写题,必须写全状态标志这一项。
- 控制器的组成:PC、IR、ID、时序系统、CU。MAR/MDR 一般不算控制器,算接口。
- 三个”地址”的辨析:微程序题的高频陷阱,尤其是”下地址字段的位数”要按微指令条数算,不是按主存容量。
- 两类控制器的定位:变的只有 CU。
- 本节多为概念题,大题都落在 5.4.2 和 5.4.3。
链接
- 🏠 返回总览:计算机组成原理第 5 章:中央处理器总览
- ⬅️ 上一节:5.3.4 数据通路的操作举例
- ➡️ 下一节:5.4.2 硬布线控制器
- 🔗 数据通路一侧:5.3.1 数据通路的功能
- 🔗 因果强度不对称:4.4.3 CISC 和 RISC 的比较
- 📖 名词库:第 5 章名词库