课件来源:《计算机组成原理》课件第10章(Slide 498–545,含 10.1 组合逻辑设计、10.2 微程序设计),为本章唯一依据;个别衔接性常识已标注「(补充常识)」。本章是控制器设计的收官章,硬布线设计步骤、微指令编码/格式/地址形成、微程序控制器组成与字长计算是期末选择、填空、简答和综合设计题的高频出处。
| 考点 | 常见题型 | 重要度 |
|---|---|---|
| 微程序设计举例:微操作节拍安排、微指令字长计算与优化(20/38→26 位→30 位) | 综合设计、计算 | ★★★ |
| 微指令编码方式:直接/字段直接/字段间接/混合 | 选择、计算 | ★★★ |
| 微指令格式:水平型 vs 垂直型及比较 | 选择、简答 | ★★★ |
| 微地址形成方式(下地址字段、操作码、计数器、分支、测试网络、硬件入口) | 选择、填空 | ★★★ |
| 微程序控制器组成(CM、CMAR、CMDR、微地址形成部件)与工作原理 | 填空、简答 | ★★★ |
| 硬布线 vs 微程序控制器对比 | 简答 | ★★★ |
| 微操作节拍安排三原则;取指/间址/执行/中断周期微操作 | 填空、简答 | ★★ |
| 组合逻辑设计三步骤:操作时间表→最简表达式→逻辑图 | 计算、综合 | ★★ |
| 中断周期微操作与中断隐指令 | 填空、简答 | ★★ |
| 微程序基本概念:微操作/微指令/微程序、存储逻辑、Wilkes | 选择 | ★★ |
| 微指令码点表识读(八进制地址、操作控制位、下地址字段) | 综合 | ★★ |
| CU 外特性与节拍信号(时钟周期/机器周期) | 填空 | ★ |
| 静态/动态微程序设计、毫微程序设计 | 填空 | ★ |
| 串行/并行微程序控制 | 简答 | ★ |
组合逻辑控制单元(CU)是一个组合逻辑网络,其输入/输出关系即「外特性」(课件 p.499):
即:控制信号 = f(操作码译码, 节拍, 标志)。



要点:非总线结构是「一个节拍内安排多个微操作」的硬件前提;若为单总线结构,同一节拍内通常只能完成一次总线传送(补充常识)。
易错警示:CU 的输入不包括「机器指令的地址码」,地址码 Ad(IR) 是作为数据通路操作数使用的,进入 CU 的只有操作码译码结果、节拍和标志(课件 p.499)。
| 节拍 | 微操作 | 依据 |
|---|---|---|
| T₀ | PC→MAR,1→R | 原则二(被控对象 MAR 与读命令不同) |
| T₁ | M(MAR)→MDR,(PC)+1→PC | 原则二(MDR 与 PC 不同) |
| T₂ | MDR→IR,OP(IR)→ID | 原则三(时间短,允许先送 IR 再译码) |
| 节拍 | 微操作 |
|---|---|
| T₀ | Ad(IR)→MAR,1→R |
| T₁ | M(MAR)→MDR |
| T₂ | MDR→Ad(IR)(有效地址回送 IR 地址字段) |
| 指令 | T₀ | T₁ | T₂ |
|---|---|---|---|
| ① CLA | — | — | 0→AC |
| ② COM | — | — | AC̄→AC(AC 取反送 AC) |
| ③ SHR | — | — | L(AC)→R(AC),AC₀→AC₀(右移,符号位不变) |
| ④ CSL | — | — | R(AC)→L(AC),AC₀→ACₙ(循环左移) |
| ⑤ STP | — | — | 0→G(停机,G 为运行标志) |
| ⑥ ADD X | Ad(IR)→MAR,1→R | M(MAR)→MDR | (AC)+(MDR)→AC |
| ⑦ STA X | Ad(IR)→MAR,1→W | AC→MDR | MDR→M(MAR) |
| ⑧ LDA X | Ad(IR)→MAR,1→R | M(MAR)→MDR | MDR→AC |
| ⑨ JMP X | — | — | Ad(IR)→PC |
| ⑩ BAN X | — | — | A₀·Ad(IR) + Ā₀·(PC)→PC |
说明:A₀ 为 AC 的符号位,BAN 为「AC 为负则转移」:A₀=1 时 Ad(IR)→PC,A₀=0 时 (PC)→PC(顺序执行)(课件 p.506)。注意在 10.1 组合逻辑举例中,单微操作指令的执行微操作统一安排在执行周期 T₂(课件 p.504–506、p.513);而 10.2 微程序举例中同样的微操作安排在微程序的 T₀(课件 p.537),两者前提不同,答题按题设。
| 节拍 | 微操作 | 备注 |
|---|---|---|
| T₀ | 0→MAR,1→W | 同时硬件关中断 |
| T₁ | PC→MDR | 断点送 MDR |
| T₂ | MDR→M(MAR),向量地址→PC | 断点存入 0 号单元,形成服务程序入口 |
上述操作由中断隐指令完成——它不是指令系统中的指令,而是硬件自动完成的操作序列(课件 p.507;「断点保护」的目的为补充常识)。
易错警示:中断周期的「硬件关中断」发生在 T₀,与写存储器命令 1→W 同节拍;不要把它漏掉或移到 T₂(课件 p.507)。
操作时间表 = 以「工作周期标记(FE 取指 / IND 间址 / EX 执行)× 节拍 × 状态条件」为行、以各条指令为列的表格,凡某指令在某节拍需要某微操作,就在对应格填 1(课件 p.511–513 为填 1 后的表)。课件以 CLA、COM、ADD、STA、LDA、JMP 六列为例。
FE 取指周期(课件 p.508、511):
| 节拍 | 状态条件 | 微操作命令 | CLA | COM | ADD | STA | LDA | JMP |
|---|---|---|---|---|---|---|---|---|
| T₀ | PC→MAR | 1 | 1 | 1 | 1 | 1 | 1 | |
| T₀ | 1→R | 1 | 1 | 1 | 1 | 1 | 1 | |
| T₁ | M(MAR)→MDR | 1 | 1 | 1 | 1 | 1 | 1 | |
| T₁ | (PC)+1→PC | 1 | 1 | 1 | 1 | 1 | 1 | |
| T₂ | MDR→IR | 1 | 1 | 1 | 1 | 1 | 1 | |
| T₂ | OP(IR)→ID | 1 | 1 | 1 | 1 | 1 | 1 | |
| T₂ | I(间址特征) | 1→IND | 1 | 1 | 1 | 1 | 1 | 1 |
| T₂ | Ī | 1→EX | 1 | 1 | 1 | 1 | 1 | 1 |
IND 间址周期(课件 p.509、512):T₀ Ad(IR)→MAR、1→R;T₁ M(MAR)→MDR;T₂ MDR→Ad(IR);以及 1→EX;仅 ADD、STA、LDA、JMP(及 BAN)等带地址且可间址的指令填 1。
EX 执行周期(课件 p.510、513):
| 节拍 | 微操作命令 | CLA | COM | ADD | STA | LDA | JMP |
|---|---|---|---|---|---|---|---|
| T₀ | Ad(IR)→MAR | 1 | 1 | 1 | |||
| T₀ | 1→R | 1 | 1 | ||||
| T₀ | 1→W | 1 | |||||
| T₁ | M(MAR)→MDR | 1 | 1 | ||||
| T₁ | AC→MDR | 1 | |||||
| T₂ | (AC)+(MDR)→AC | 1 | |||||
| T₂ | MDR→M(MAR) | 1 | |||||
| T₂ | MDR→AC | 1 | |||||
| T₂ | 0→AC | 1 | |||||
| T₂ | AC̄→AC | 1 | |||||
| T₂ | Ad(IR)→PC | 1 |

把操作时间表中某微操作命令所有填 1 的格对应的「周期标记·节拍·指令」相或,再化简。以 M(MAR)→MDR 为例:
M(MAR)→MDR = FE·T₁ + IND·T₁·(ADD+STA+LDA+JMP+BAN) + EX·T₁·(ADD+LDA)
= T₁·{ FE + IND·(ADD+STA+LDA+JMP+BAN) + EX·(ADD+LDA) }
用与门、或门、非门按最简表达式搭出组合逻辑网络(课件 p.515 即上式的与-或实现)。硬布线控制器特点(课件 p.515):

易错警示:写表达式时「周期标记」与「节拍」缺一不可:同一微操作在不同周期、不同节拍出现时要分项相或;漏掉 IND 项或 EX 项是最常见错误(课件 p.514)。
1951 年英国剑桥大学教授 Wilkes 提出:把完成一条机器指令所需的微操作命令编成微指令(二进制代码,如 10100000),若干微指令组成微程序,一条机器指令对应一个微程序,微程序存入 ROM。这种用存储逻辑实现控制的方式称为存储逻辑(与硬布线的「组合逻辑」相对)。
层次关系:微操作命令 →(组合成)微指令 →(序列成)微程序 →(解释)机器指令。
控制存储器(CM)中存放:
执行微程序的最后一条微指令把下地址指回取指微程序入口 M,实现「转取指周期微程序」;取指微程序末尾则按操作码「转执行周期微程序」(课件 p.519)。
要点:微程序个数 = 机器指令条数 + 公用的周期微程序数(取指、间址、中断),故微程序数 ≠ 机器指令数(由课件 p.517 布局可知)。
易错警示:微程序存在控制存储器(ROM)中,不是主存;用户程序才在主存(课件 p.516、520、523)。

| 部件 | 功能 |
|---|---|
| 控制存储器 CM | 存放全部微程序(ROM),按微地址读出微指令 |
| CMAR(控存地址寄存器,即微地址寄存器) | 存放欲读微指令的微地址(中文名为补充常识,课件用缩写 CMAR) |
| CMDR(控存数据寄存器,即微指令寄存器) | 存放从 CM 读出的微指令(同上) |
| 微地址形成部件 | 由机器指令操作码 OP(IR) 形成该指令执行微程序的入口微地址 |
| 顺序逻辑 | 在标志、CLK 及下地址/转移方式控制下产生后续微地址,送 CMAR |
| 地址译码 | 对 CMAR 译码选中 CM 单元 |
微指令基本格式 = 操作控制字段 + 顺序控制字段(顺序控制字段含下地址/转移方式)(课件 p.518)。操作控制字段发出「至 CPU 内部和系统总线的控制信号」。
以用户程序 LDA X、ADD Y、STA Z、STP 为例(课件 p.520):
(1) 取指阶段(执行取指微程序,课件 p.521):
M→CMAR
CM(CMAR)→CMDR ;读出微指令 M
由 CMDR 发命令 ;PC→MAR,1→R
形成下条微指令地址 M+1:Ad(CMDR)→CMAR
CM(CMAR)→CMDR ;读出微指令 M+1
由 CMDR 发命令 ;M(MAR)→MDR,(PC)+1→PC
Ad(CMDR)→CMAR ;下地址 M+2
CM(CMAR)→CMDR ;读出微指令 M+2
由 CMDR 发命令 ;MDR→IR

(2) 执行阶段(课件 p.522):OP(IR)→微地址形成部件→CMAR(即 P→CMAR),转入 LDA 执行微程序;依次执行 P、P+1、P+2 三条微指令(Ad(IR)→MAR、1→R;M(MAR)→MDR;MDR→AC),每条之后 Ad(CMDR)→CMAR 形成下地址;最后 M→CMAR 返回取指微程序。
(3) 再取指、再执行……循环直至 STP(课件 p.523)。
关键结论(课件 p.523):全部微指令存在 CM 中,程序执行过程中只需读出(不改写)。由此引出微程序设计的两个关键问题:① 微指令的操作控制字段如何形成微操作命令(→编码方式);② 微指令的后续地址如何形成(→地址形成方式)。
易错警示:CMAR/CMDR 是控存侧的寄存器,MAR/MDR 是主存侧的寄存器,两套不要混用;「CM(CMAR)→CMDR」读的是微指令,「M(MAR)→MDR」读的是机器指令/数据(课件 p.518、521)。
操作控制字段中每一位代表一个微操作命令,某位为「1」表示该控制信号有效,无需译码。速度最快,但微指令字长最长。

把控制字段分成若干「段」(字段),每段经译码后发出控制信号;每个字段中的命令是互斥的(不能同时有效的命令放同一段,可并行的命令放不同段)。又称显式编码。效果:缩短了微指令字长,增加了译码时间,微程序执行速度较慢。

又称隐式编码:某一字段代码的含义还需由另一字段的代码来解释(课件 p.526 图中字段 2 的译码输出参与字段 1、字段 n 的译码),可进一步压缩字长(补充常识)。

混合编码 = 直接编码和字段编码(直接和间接)混合使用,兼顾字长与速度;课件另列「5. 其他」。
| 编码方式 | 是否译码 | 字长 | 速度 | 并行能力 |
|---|---|---|---|---|
| 直接编码 | 否 | 最长(=微操作数) | 最快 | 强(各位独立) |
| 字段直接 | 每段译码 | 较短 | 较慢 | 段间可并行 |
| 字段间接 | 多级译码 | 更短(补充常识) | 更慢(补充常识) | 受限 |
| 混合 | 部分译码 | 折中 | 折中 | 折中 |
字段直接编码位数计算口径:每段除 nᵢ 个互斥命令外通常还需留一个「不发命令」状态,故该段位数 = ⌈log₂(nᵢ+1)⌉(「留空状态」为补充常识,若题中未说明则按题设)。
易错警示:「互斥」是字段内的要求,不是字段间;把可并行的微操作编进同一字段会丧失并行性(课件 p.525)。
课件 p.527–528 共给出 6 种方式:
(「断定方式」「计数器方式」这两个术语为补充常识,分别对应课件方式 1、3。)

原理图(课件 p.529):多路选择器在「微程序入口(硬件)」「OP(IR) 经微地址形成部件」「分支逻辑输出(标志+转移方式)」「CMDR 下地址」「CMAR+1」之间选择,送 CMAR→地址译码→CM。
易错警示:下地址字段给出的是微指令地址(控存地址),不是机器指令地址;取指微程序入口和中断微程序首地址不能靠下地址字段给出,必须硬件产生(课件 p.527–528)。
| 对比项 | 水平型 | 垂直型 |
|---|---|---|
| 并行能力 | 强 | 弱 |
| 微指令字长 | 长 | 短 |
| 微程序长度(条数) | 短 | 长 |
| 执行速度 | 快 | 慢 |
| 与机器指令相似度 | 差别大 | 相似 |
| 编码 | 直接/字段/混合 | 微操作码 |
易错警示:「水平型微程序短」指微指令条数少,不是字长短;字长恰恰是水平型长(课件 p.531 第 3 条)。
两级控制存储器组成(课件 p.533):第一级 CM(微程序)由 CMAR₁ 寻址,读出垂直型微指令送 CMDR₁(含微操作码 MOP 字段);MOP 作为第二级 CM(毫微程序)的微地址送 CMAR₂,读出水平型微指令送 CMDR₂,由其发出控制信号。即「垂直型微指令 → 水平型毫微指令」两级解释。

易错警示:动态微程序用 EPROM 而非 RAM(课件 p.532);毫微程序解释的对象是微程序,不是机器指令(课件 p.532)。

要点:并行方式下「取微指令 i+1」与「执行微指令 i」同时进行,类似指令级流水的思想(补充常识)。
前提:CPU 结构与组合逻辑举例相同(课件 p.535)。
取指阶段:若一个 T 内安排一条微指令,取指本需 3 条微指令;但还要安排形成后续微地址的微操作 Ad(CMDR)→CMAR 与 OP(IR)→微地址形成部件→CMAR,故展开为 6 个节拍(课件 p.535–536):
| 节拍 | 微操作 |
|---|---|
| T₀ | PC→MAR,1→R |
| T₁ | Ad(CMDR)→CMAR |
| T₂ | M(MAR)→MDR,(PC)+1→PC |
| T₃ | Ad(CMDR)→CMAR |
| T₄ | MDR→IR,OP(IR)→微地址形成部件 |
| T₅ | OP(IR)→微地址形成部件→CMAR |
执行阶段(课件 p.537–541):取指微程序入口地址 M 由(执行微程序末条)微指令下地址字段指出。
统计:全部微操作 20 个,微指令 38 条(课件 p.541)。38 条中含 19 条「纯送地址」微指令(18 条 Ad(CMDR)→CMAR + 1 条 OP(IR)→微地址形成部件→CMAR)。
38 条微指令中有 19 条只完成「后续微地址→CMAR」(其中 18 条 Ad(CMDR)→CMAR、1 条 OP(IR)→微地址形成部件→CMAR)。若让 Ad(CMDR) 直接送控存地址线、OP(IR) 经微地址形成部件也直接送控存地址线(用多路选择器),则省去输至 CMAR 的时间、省去 CMAR,从而省去 19 条微指令、2 个微操作:

微指令地址用八进制表示。课件码点表(节选可见列):
| 微程序 | 微地址(八进制) | 置 1 的操作控制位(可见列) | 下地址字段(二进制) | 后继微地址(八进制) |
|---|---|---|---|---|
| 取指 | 00 | 0、1 | 000001 | 01 |
| 取指 | 01 | 2、3 | 000010 | 02 |
| 取指 | 02 | 4 | ×××××× | 由 OP(IR) 形成 |
| CLA | 03 | (在省略列中) | 000000 | 00(回取指) |
| COM | 04 | (在省略列中) | 000000 | 00 |
| ADD | 10 | 1、10 | 001001 | 11 |
| ADD | 11 | 2 | 001010 | 12 |
| ADD | 12 | — | 000000 | 00 |
| LDA | 16 | 1、10 | 001111 | 17 |
| LDA | 17 | 2 | 010000 | 20 |
| LDA | 20 | — | 000000 | 00 |
由码点表可读出位定义:0=PC→MAR,1=1→R,2=M(MAR)→MDR,3=(PC)+1→PC,4=MDR→IR,10=Ad(IR)→MAR(课件 p.545;CLA/COM 等的操作位位于表中省略的列)。每个执行微程序末条微指令的下地址为 000000,即返回取指微程序入口 00;取指微程序末条(02)的下地址为×,因其后继地址由操作码经微地址形成部件形成。

易错警示:优化后「省去 CMAR」不等于「不要下地址字段」——下地址字段经多路选择器直接送控存地址线(课件 p.543–544);字长计算必须用优化后的 19 条/18 个重新求位数,再留余量取 24+6=30(课件 p.544)。
| 对比项 | 硬布线(组合逻辑) | 微程序 |
|---|---|---|
| 实现方式 | 组合逻辑网络(门电路)(p.515) | 存储逻辑:CM+微程序(p.516) |
| 控制信号产生 | 译码+节拍+标志直接组合产生(p.499) | 读微指令、由操作控制字段发出(p.518、523) |
| 速度 | 快(p.515) | 较慢(需读控存/译码,补充常识) |
| 规整性/可修改性 | 庞杂,调试、修改困难(p.515) | 规整,改微程序即可改指令,动态微程序利于仿真(p.532) |
| 典型应用 | RISC(p.515) | CISC(补充常识) |
| 核心部件 | 节拍发生器、操作码译码、逻辑网络(p.499) | CM、CMAR、CMDR、微地址形成部件(p.518) |
要点:速度要求极高选硬布线;指令系统复杂、要求易修改易仿真选微程序(由 p.515、p.532 特点归纳)。
题:写出微操作 M(MAR)→MDR 的最简逻辑表达式。
解:① 查操作时间表找所有出现该微操作的格:FE·T₁(全部指令)、IND·T₁(ADD、STA、LDA、JMP、BAN)、EX·T₁(ADD、LDA)。② 相或:FE·T₁ + IND·T₁·(ADD+STA+LDA+JMP+BAN) + EX·T₁·(ADD+LDA)。③ 提公因子 T₁:T₁·{FE + IND·(ADD+STA+LDA+JMP+BAN) + EX·(ADD+LDA)}。④ 用与-或门实现即逻辑图(课件 p.515)。教学提示:IND 项的指令集合是「带地址且可间址」的指令,EX 项只有读内存的 ADD、LDA,STA 是写内存故不在其中。
题:举例机共 20 个微操作、38 条微指令,采用直接编码。求微指令字长;若省去 CMAR 优化后再求最小字长与留余量后的字长。
解:① 操作控制字段 ≥ 20 位;下地址字段 k:2⁵=32<38≤64=2⁶ → 6 位;字长 = 20+6 = 26 位。② 优化:38 条中 19 条为纯送地址微指令(18 条 Ad(CMDR)→CMAR + 1 条 OP(IR)→微地址形成部件→CMAR),直送控存地址线后省去这 19 条及 2 个微操作 → 19 条微指令、18 个微操作。③ 下地址字段:2⁴=16<19≤32=2⁵ → 5 位;操作控制字段 ≥ 18 位;最小 18+5=23 位。④ 留余量取 24+6 = 30 位(位 0–23 操作控制、24–29 下地址)。
题:说明取指微程序为何由 3 条微指令展开为 6 个节拍;写出微指令 00 的码点含义及 02 的下地址为何为×。
解:① 取指本身 3 拍(PC→MAR、1→R;M(MAR)→MDR、(PC)+1→PC;MDR→IR、OP(IR)→微地址形成部件),一拍一条微指令即 3 条;但每条微指令执行后还需形成下地址(Ad(CMDR)→CMAR 或 OP(IR)→微地址形成部件→CMAR),各占一拍,故 6 拍、优化前 6 条微指令。② 微指令 00:位 0=1(PC→MAR)、位 1=1(1→R),下地址 000001→微指令 01。③ 微指令 02 执行 MDR→IR 后,后继微地址应由 OP(IR) 经微地址形成部件产生(转入执行微程序),故下地址字段无意义,记×。
周期微操作速查
| 周期 | T₀ | T₁ | T₂ |
|---|---|---|---|
| 取指 | PC→MAR,1→R | M(MAR)→MDR,(PC)+1→PC | MDR→IR,OP(IR)→ID |
| 间址 | Ad(IR)→MAR,1→R | M(MAR)→MDR | MDR→Ad(IR) |
| 中断 | 0→MAR,1→W,硬件关中断 | PC→MDR | MDR→M(MAR),向量地址→PC |
微程序举例关键数据:微操作 20 个、微指令 38 条(p.541);初取字长 20+6=26 位(p.542);省 CMAR 后 19 条/18 个 → 最少 18+5 位(p.543);留余量 24+6=30 位,位 0–23 操作控制、24–29 下地址(p.544);码点八进制地址:取指 00–02、CLA 03、COM 04、ADD 10–12、LDA 16–20(p.545)。
字长公式:直接编码操作控制位数 ≥ 微操作个数;下地址位数 k 满足 2ᵏ ≥ 微指令条数;字段直接编码操作控制位数 = Σ⌈log₂(nᵢ+1)⌉(nᵢ 为第 i 段互斥命令数,+1 为留空状态,补充常识)。
编码/格式/地址形成速记:直接编码最快字长最长;字段直接=显式、段内互斥;字段间接=隐式;混合=折中。水平型=并行强、字长长、条数少、速度快;垂直型=似机器指令、字长短、条数多。地址形成 6 法:下地址字段、操作码、(CMAR)+1、分支转移、测试网络、硬件入口(首条/中断首地址)。
器件与方式速记:静态微程序 ROM;动态微程序 EPROM、利于仿真;毫微程序解释微程序,两级控存=垂直型微指令→水平型毫微指令;串行微程序取执串行、并行微程序取 i+1 与执 i 重叠;硬布线快而难改(RISC),微程序慢而易改(CISC,补充常识)。