控制器的结构和功能

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)
典型搭配RISCCISC
本章5.4.25.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。

链接