精简版 · 小杯2026-08 冻结,已停止更新(发布前修订了 4 处已知错误)。后续勘误与新增内容只在正式版。看正式版(中杯)→
Skip to content

微程序控制器

大纲定位

五(四)控制器的功能和工作原理

要求:说清微程序控制器把控制信号"存起来"的思路,理解微指令、微程序、控制存储器三者关系,并能与硬布线方式对比。

考情分析

微程序控制器的考法有两类:综合题让你"写出某指令的微程序""分析微指令格式";选择题则集中在水平型与垂直型微指令的区别上。两类题都建立在同一件事上——看懂一条微指令的每个字段控制什么。

基本概念

微程序控制器将每条机器指令的执行过程用一段微程序来实现。

层次关系:

机器指令对应微程序微指令序列包含微操作
概念说明
微操作CPU 的最基本操作,如"A → ALU"
微命令控制微操作的信号(与控制信号对应)
微指令一条微指令包含若干微命令,表示一个时钟周期内可并行执行的操作
微程序实现一条机器指令的微指令序列
控制存储器(CM)存放所有微程序的只读存储器

微程序控制器的结构

机器指令 IR

    ↓ 操作码
  映射逻辑(入口地址形成电路)

    ↓ 微程序入口地址
  微地址寄存器(μAR / CMAR)


  控制存储器(CM)

    ↓ 读出微指令
  微指令寄存器(μIR / CMDR)

    ├──→ 操作控制字段 ──→ 各微命令(控制信号)
    └──→ 顺序控制字段 ──→ 下条微指令地址 ──→ μAR
图 5.29 微程序控制器的基本结构
图 5.29 微程序控制器的基本结构
(袁春风《计算机组成与系统结构》第 3 版,见文末教材出处)

和硬布线的根本差别在于:控制信号不再由组合逻辑出来,而是事先编好存进控制存储器,运行时按微地址一条条出来。所以图上多了控制存储器、微指令寄存器和微地址形成部件这三块。

微指令格式

微指令包含两个主要字段:

  • 操作控制字段:指明本条微指令需要发出哪些微命令
  • 顺序控制字段:给出下一条微指令的地址(或计算方式)

水平型微指令

操作控制字段中每一位对应一个微命令,1 表示有效,0 表示无效。

C1 C2  Cn操作控制字段,nA1 A2  Ak顺序控制字段,k

特点:

  • 微命令多则微指令字长大
  • 并行性强:同一条微指令可同时激活多个微命令
  • 微程序短(指令少),执行速度快
  • 指令格式不规整,编写微程序较繁琐

垂直型微指令

操作控制字段使用操作码编码,类似于机器指令格式,每条微指令只完成少量操作。

微操作码指定操作类型目的/源字段操作对象下址字段顺序控制

特点:

  • 微指令字长短,控制存储器空间小
  • 并行性弱:通常一次只做一个操作
  • 微程序长(指令多),执行速度较慢
  • 格式规整,易于编写和理解

水平型微指令的编码方式

水平型微指令的操作控制字段有三种编码方式:

1. 直接编码(直接控制)

每一位直接对应一个微命令,1=有效,0=无效。

  • 优点:简单直观,速度快(不需译码)
  • 缺点:微指令字长大(微命令数=控制位数)

2. 字段直接编码

将互斥的微命令分成若干组(字段),每个字段内用二进制编码。k 位编码可表示 2k1 个微命令(全 0 表示该字段不发出任何命令)。

  • 优点:显著缩短微指令字长
  • 缺点:需要字段译码器,速度略慢
  • 分组原则:互斥的微命令分在同一字段,相容的微命令分在不同字段

字段直接编码示例:某处理器有 20 个微命令,经分析可分为 4 组互斥的微命令,各组分别有 3、5、8、4 个微命令。

  • 第 1 组:3 个微命令 + 1 个空操作 = 4 种状态,需 log24=2
  • 第 2 组:5 + 1 = 6 种状态,需 log26=3
  • 第 3 组:8 + 1 = 9 种状态,需 log29=4
  • 第 4 组:4 + 1 = 5 种状态,需 log25=3

操作控制字段总共 2+3+4+3=12 位(而直接编码需要 20 位,压缩了 40%)。

3. 字段间接编码

一个字段的含义取决于另一个字段的值,进一步压缩编码长度,但译码更复杂。

对比

对比项水平型垂直型
微指令字长
并行性
微程序长度
执行速度
编写难度较复杂简单

下址字段的获取方式

微指令执行完后,如何得到下一条微指令的地址?

  1. 断定方式(下地址字段法):微指令中有专门的下地址字段,直接给出后继微地址送入 μAR
  2. 计数器方式:类似 PC 自增,μAR+1(顺序执行微程序时)
  3. 条件转移:根据状态条件(CF、ZF 等)在两个地址中选一个
  4. 由机器指令操作码映射:每条机器指令开始执行时,由操作码转换为微程序入口地址

下地址字段要几位

关键是"能指向控制存储器里的任何一条微指令"

断定方式的下地址字段要能表示控制存储器中全部微指令的地址,所以

下地址字段位数=log2(微指令总条数)

难点全在微指令总条数怎么数——它不是指令条数,要把公共取指微程序也算进去:

微指令总数=指令条数×每条指令的微指令数各指令的微程序+公共取指微程序的微指令数别漏掉

公共取指微程序只有一份,所有指令共用,所以是上去,不是乘进去。

:某机采用微程序控制器,共 32 条指令,公共的取指微程序含 2 条微指令,各指令对应的微程序平均由 4 条微指令组成,采用断定法确定下条微指令地址。求下地址字段至少几位。

微指令总数=32×4+2=130下地址字段位数=log2130=8 

27=128<130256=28

两个坑:① 漏掉公共取指的 2 条,算成 log2128=7;② 把"32 条指令"当成微指令数,算成 log232=5。两个错数都在选项里。

微程序设计步骤

  1. 分析每条机器指令的功能,写出微操作序列
  2. 将同一时钟周期可并行的微操作归并为一条微指令
  3. 编写微指令序列(微程序)
  4. 确定每条微指令的下址字段
  5. 将微程序存入控制存储器(ROM)

交互可视化

加载可视化中...

例题

例1:某微程序控制器有20个微命令,采用水平型微指令。若顺序控制字段为8位,求微指令的最小字长。

解:水平型微指令中,操作控制字段每一位对应一个微命令,20个微命令需要20位。加上8位顺序控制字段,最小字长 = 20+8=28 位。

例2:某CPU有40条机器指令,每条指令的微程序平均包含6条微指令,另有公共的取指微程序包含3条微指令。控制存储器至少需要多少单元?

解:40条机器指令对应40段微程序,共 40×6=240 条微指令。取指微程序是公共的,只需存一份,3条微指令。控制存储器至少需要 240+3=243 个单元。

例3:水平型微指令和垂直型微指令各自的优缺点是什么?408考研中某题指出"微指令字长为50位,其中操作控制字段38位,采用直接编码",这是哪种类型?

解:直接编码(每位对应一个微命令)是水平型微指令的特征。38位操作控制字段意味着最多可以同时发出38个微命令。水平型的优点是并行性强、微程序短、执行快;缺点是微指令字长大、编写复杂。

易混淆知识点

1. 控制存储器(CM)和主存是什么关系?

CM 是 CPU 内部的 ROM,存放微程序,CPU 取指时从主存取机器指令,取到后根据操作码从CM中读微指令。二者独立、互不干扰。CM 的地址由微地址寄存器(CMAR)给出,不占用主存地址空间。

2. 微指令周期和机器指令周期的关系?

一条机器指令的执行需要一段微程序,即多条微指令。每条微指令对应一个时钟周期。因此机器指令周期 = 该指令对应的微指令条数 × 微指令周期(时钟周期)。

3. 字段直接编码中的"全 0 表示不操作"为什么重要?

每个字段必须留一个编码表示"该组不发出任何微命令"。否则该字段在每个时钟周期都必须激活一个微命令,丧失了灵活性。所以 k 位编码最多表示 2k1 个微命令(而非 2k 个)。

4. 硬布线和微程序哪个快?

硬布线更快(组合逻辑直接产生控制信号,无须从 CM 读取微指令)。微程序更灵活(修改 CM 内容即可改变指令功能,适合 CISC)。现代 RISC 处理器普遍使用硬布线控制器。

考点清单

  • 控制存储器(CM)存放微程序,是 ROM(只读),不是主存的一部分
  • 取指微程序是公共微程序,所有机器指令共享
  • 机器指令的操作码经过映射逻辑得到对应微程序的入口地址
  • 水平型:字长长、并行性强、速度快;垂直型:字长短、并行性弱、速度慢
  • 字段直接编码:互斥微命令分同一字段,k 位表示 2k1 个微命令(全 0 = 不操作)
  • 微程序控制器修改灵活(改 ROM 内容),硬布线控制器速度快
  • 微程序控制器适合 CISC(复杂指令集),如 x86 历史上的实现

真题练习

教材出处

  • 微程序控制器的基本结构(图 5.29):袁春风《计算机组成与系统结构》第 3 版 §5.3 多周期处理器,印刷页 p157