← Back to Learning Notes

Lecture 20:知识 - 控制器的功能和工作原理

Chinese-language Computer Science 408 note: Lecture 20:知识 - 控制器的功能和工作原理. Original source available where applicable.

On this page

This note is currently available in Chinese. The original wording, formulas and diagrams are preserved to avoid an unverified technical translation.

描述:控制器是系统指挥中心:取指并形成下一地址、译码并产生微命令、控制 CPU/主存/I/O 数据流。硬布线控制以逻辑电路即时产生命令,微程序控制把命令序列存入控制存储器。

5.1 控制器功能与外部关系

  • 控制器从数据总线接收指令信息、从运算器接收转移相关信息,向地址总线送指令地址,并向各部件发控制信号。
  • 主存与 I/O 从地址总线取得地址、从控制总线取得读写/握手信号、经数据总线传数据;I/O 通过接口接入总线。
核心功能 含义
取指与定址 从主存取指并指出下一条指令位置
译码/测试 分析 OP 和条件,形成所需微操作控制信号
数据流控制 指挥 CPU、主存和 I/O 间数据传输方向与时序

5.2 硬布线控制器

定义:#硬布线控制器

硬布线控制器由组合逻辑和触发器构成,根据操作码、当前机器周期、节拍信号、机器状态条件即时产生微命令;也称组合逻辑控制器。

特点 含义
速度快 纯硬件逻辑产生控制信号,主要受门电路延迟影响
扩展难 新增指令往往要改动较多逻辑,指令越多设计越复杂
适用倾向 常与规则、精简的 RISC 指令系统相配合
并行性 同一节拍可安排多个被控对象不同且相容的微操作
  • 不同指令所需节拍数可不同。同步定长机器周期设计常按可能的最大节拍数确定周期,实际较短指令可把操作安排在周期末端节拍。
  • 设计流程:列取指/间址/执行/中断微操作序列 -> 选定长或不定长机器周期及节拍数 -> 按依赖与相容性排时序 -> 写每个微命令最简逻辑表达式并画逻辑电路。

5.2.1 典型微操作

阶段 典型微操作
取指 PC->MAR,读主存,M(MAR)->MDR->IR,OP(IR)->ID,PC+1->PC
间址 Ad(IR)->MAR,读主存,M(MAR)->MDR->Ad(IR)
执行 CLA: 0->ACC;LDA: Ad(IR)->MAR、读、MDR->ACC;JMP: Ad(IR)->PC
条件转移 如 ACC 为负时按条件选择 Ad(IR)->PC 或 PC 保持/顺序值
  • 排时序原则:保持先后依赖;被控对象不同且相容的操作尽量同节拍;速度很快的寄存器间操作可在同一节拍按先后串接(以题设数据通路为准)。

5.2.2 原资料实例:同一微操作的控制信号

原 PDF 第 3、6 页以 M(MAR)->MDR 为例:该微操作可出现在取指周期的 $T_1$、间址周期的 $T_1$,以及部分指令执行周期的 $T_1$。若 FE、IND、EX 分别表示所处周期,ADD 等表示操作码译码线,控制信号的简化逻辑式为:

$$ C_{MDR\leftarrow M(MAR)}= FE\cdot T_1+ IND\cdot T_1\cdot(ADD+STA+LDA+JMP+BAN)+ EX\cdot T_1\cdot(ADD+LDA) $$

式中“$+$”为逻辑或,“$\cdot$”为逻辑与;各项列举的是不同条件下执行同一微操作,不是要把这些机器指令相加。实际访存还须配合读命令及存储器就绪时序,不能仅凭此式完成数据传送。

原 PDF 第 5 页把取指微操作排成三个节拍,展示了控制器如何利用并行与短寄存器路径:

节拍 安排的微操作 先后条件
$T_0$ PC->MAR,1->R 读命令与地址准备相配合
$T_1$ M(MAR)->MDR,PC+1->PC 主存取数在 PC->MAR 后;PC 自增与取数可并行
$T_2$ MDR->IR,OP(IR)->ID 先把指令送入 IR,再经组合译码形成操作码线

同节拍安排不意味着有依赖的动作严格同时发生;能否串接取决于题设数据通路与节拍长度。

5.3 微程序控制器

5.3.1 微程序层次

程序 -> 机器指令序列 -> 每条机器指令对应的微程序 -> 微程序由微指令序列组成 -> 微指令包含多个微命令/微操作

  • 微指令是控制存储器中由 0/1 组成、可直接控制 CPU 微操作的代码;一条微指令可包含多个可并行微操作。微周期是取出并执行一条微指令的时间。
  • 严格区分:微命令是控制器发出的控制信号,微操作是该信号触发的数据传送或运算动作。教材中二者常按一一对应关系简称,但不能把“信号”和“动作”当成同一个物理对象。
  • 物理上取指与执行可分别画成微指令序列,但逻辑上“一个机器指令对应一个微程序”;取指/间址/中断微程序通常被多条机器指令共用。

5.3.2 基本组成

部件 作用
控制存储器 CM 存放微指令序列,常用 ROM;位于 CPU 内部,与主存不同,按地址访问
微地址寄存器 CMAR 保存当前要访问的微指令地址,类似主存 MAR
微指令寄存器 CMDR 保存从 CM 读出的微指令,位数等于微指令字长,类似 MDR/IR 的控制层角色
微地址形成部件 根据 OP、下地址、条件、硬件入口等形成初始/后继微地址
地址译码与顺序逻辑 选中 CM 单元并控制微指令执行顺序
flowchart LR
    OP["机器指令 OP"] --> NEXT["微地址形成/顺序逻辑"]
    COND["状态条件与周期入口"] --> NEXT
    CMDR["CMDR 中的下地址字段"] --> NEXT
    NEXT --> CMAR["CMAR"]
    CMAR --> CM["控制存储器 CM"]
    CM --> CMDR["CMDR:当前微指令"]
    CMDR --> CTRL["操作控制字段译码"]
    CTRL --> SIG["微命令/控制信号"]
    SIG --> DP["数据通路执行微操作"]
    DP --> COND

5.3.3 工作过程与下地址

  • 取指微程序从固定入口执行;依据寻址/标志信息决定是否进入间址微程序;执行微程序入口通常由 OP(IR) 经微地址形成部件给出;中断微程序入口也可由专用硬件给出。
  • 下地址形成方式包括:微指令内下地址字段(断定法)、CMAR+1 增量计数、由机器指令操作码形成、按条件分支转移、硬件固定入口。
  • 按源 PDF 把每条机器指令的执行微程序与公共取指微程序分开计数时,若有 $n$ 条机器指令,CM 中至少记为 $n+1$ 个微程序;公共间址/中断是否另计依具体 CPU。不同教材也可能把公共取指段视为每条机器指令微程序的共享入口,因此答题必须沿用题目的计数口径;“微程序条数”与“微指令条数”更不能混淆。

原页第 10 页的控存布局示例把公共取指微指令放在 #1~#3,间址/中断各占另一段,而 LDA X 的执行入口为 #13,随后执行 #14、#15;STA 的入口为 #16,随后执行 #17、#18。是否经过间址段取决于寻址标志;取指结束后依据 OP(IR) 转到对应执行入口,执行段末再回取指入口。图中编号只是这份示例的控存地址,不是机器指令地址;后面设计步骤图另把公共入口记为 #0,两张示意图采用不同编号,不能拼成一张连续地址表。

微程序控制相对硬布线还须安排“下一条微指令从哪里取”:普通顺序步可用 Ad(CMDR)->CMAR 读当前微指令的下地址字段;取指末步用 OP(IR)->微地址形成部件->CMAR 选择机器指令的执行微程序;执行末步再把公共取指入口地址送入 CMAR。只有数据通路中的 PC->MAR、MDR->IR 等微操作还不足以让微程序本身继续运行。

题型:#下地址字段位数

若控制存储器总共需容纳 $N$ 条微指令,断定法下地址字段至少为:

$$\lceil\log_2 N\rceil\text{ 位}$$

例:32 条机器指令、每条平均 4 条微指令,加公共取指 2 条,共 $32\times4+2=130$ 条微指令,需 $\lceil\log_2 130\rceil=8$ 位下地址字段。

5.4 微指令格式与编码

格式 一条微指令可定义的微命令 优缺点
水平型 多个可并行微命令 微程序短、快、并行性好;微指令长且编写复杂
垂直型 通常一个微命令,由微操作码译出 微指令短、规则易写;微程序长、速度低、并行性弱
混合型 在垂直基础上加入部分并行字段 在长度和并行度间折中

5.4.1 水平型操作控制字段

编码 方法与权衡
直接编码 每位对应一个微命令,1 表示有效;最快最直观、并行性好,但 $n$ 命令需 $n$ 位,控存大
字段直接编码 控制字段分段,各段译码;互斥命令同段、相容命令异段,每段留“不操作”编码,缩短字长
字段间接编码 一个字段的命令还受另一字段解释(隐式/两次译码);更短但削弱并行性,常作辅助

字段直接编码中,若一互斥类有 $k$ 个命令且需一个空操作码,字段位数为 $\lceil\log_2(k+1)\rceil$。例如五类含 7、3、12、5、6 个命令,所需位数为 $3+2+4+3+3=15$ 位。

5.5 微程序设计与两类控制器比较

微程序控制器设计:分析各阶段微操作 -> 安排机器指令/节拍并补充 CMAR/CMDR 特有操作 -> 依微操作数和 CM 总微指令数确定控制/顺序字段 -> 编写微指令码点。

对比 硬布线控制 微程序控制
实现 专用逻辑电路 控制存储器中的微程序,体现存储程序思想
速度 快 需访问 CM,通常较慢
灵活性 差,改指令需改电路 好,修改/扩充微程序相对容易
适用 指令少、规则 复杂指令、兼容/扩展需求强
  • 静态微程序通常不需改变,控制存储器可用 ROM;动态微程序若要求运行时修改微指令,应使用 RAM 等可写控制存储器。EPROM 可在停机并经过擦写后重新编程,但严格说不等于运行时动态可写。毫微程序设计则用更低层毫微程序解释微程序。

相关知识

5.6 本节复盘

  • 控制器取指、译码、生成控制信号并协调 CPU/主存/I/O;硬布线由 OP、周期、节拍、状态即时产生微命令。
  • 硬布线快而难扩展;微程序用 CM、CMAR、CMDR 和微地址形成部件实现,慢一些但灵活。
  • 一条机器指令逻辑上对应一个微程序,微程序由微指令构成,微指令可含多个微操作。
  • 水平型快且长,垂直型短且慢,字段编码按“互斥同段、相容异段、每段留空码”计算位数;断定法下地址字段按 CM 总微指令数取对数。