Lecture 20:知识 - 控制器的功能和工作原理
408 学习笔记:Lecture 20:知识 - 控制器的功能和工作原理。保留原有知识内容、公式与图示;有对应原件时提供查看和下载入口。
本页目录
描述:控制器是系统指挥中心:取指并形成下一地址、译码并产生微命令、控制 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 总微指令数取对数。