Appearance
微程序控制器
考情分析
微程序控制器是408考研的重点章节,综合题曾考过"写出某指令的微程序""分析微指令格式"。微指令格式中水平型和垂直型的区别是高频选择题考点。
基本概念
微程序控制器将每条机器指令的执行过程用一段微程序来实现。
层次关系:
| 概念 | 说明 |
|---|---|
| 微操作 | CPU 的最基本操作,如"A → ALU" |
| 微命令 | 控制微操作的信号(与控制信号对应) |
| 微指令 | 一条微指令包含若干微命令,表示一个时钟周期内可并行执行的操作 |
| 微程序 | 实现一条机器指令的微指令序列 |
| 控制存储器(CM) | 存放所有微程序的只读存储器 |
微程序控制器的结构
机器指令 IR
│
↓ 操作码
映射逻辑(入口地址形成电路)
│
↓ 微程序入口地址
微地址寄存器(μAR / CMAR)
│
↓
控制存储器(CM)
│
↓ 读出微指令
微指令寄存器(μIR / CMDR)
│
├──→ 操作控制字段 ──→ 各微命令(控制信号)
└──→ 顺序控制字段 ──→ 下条微指令地址 ──→ μAR微指令格式
微指令包含两个主要字段:
- 操作控制字段:指明本条微指令需要发出哪些微命令
- 顺序控制字段:给出下一条微指令的地址(或计算方式)
水平型微指令
操作控制字段中每一位对应一个微命令,1 表示有效,0 表示无效。
特点:
- 微命令多则微指令字长大
- 并行性强:同一条微指令可同时激活多个微命令
- 微程序短(指令少),执行速度快
- 指令格式不规整,编写微程序较繁琐
垂直型微指令
操作控制字段使用操作码编码,类似于机器指令格式,每条微指令只完成少量操作。
特点:
- 微指令字长短,控制存储器空间小
- 并行性弱:通常一次只做一个操作
- 微程序长(指令多),执行速度较慢
- 格式规整,易于编写和理解
水平型微指令的编码方式
水平型微指令的操作控制字段有三种编码方式,408 高频考点:
1. 直接编码(直接控制)
每一位直接对应一个微命令,1=有效,0=无效。
- 优点:简单直观,速度快(不需译码)
- 缺点:微指令字长大(微命令数=控制位数)
2. 字段直接编码
将互斥的微命令分成若干组(字段),每个字段内用二进制编码。
- 优点:显著缩短微指令字长
- 缺点:需要字段译码器,速度略慢
- 分组原则:互斥的微命令分在同一字段,相容的微命令分在不同字段
字段直接编码示例:某处理器有 20 个微命令,经分析可分为 4 组互斥的微命令,各组分别有 3、5、8、4 个微命令。
- 第 1 组:3 个微命令 + 1 个空操作 = 4 种状态,需
位 - 第 2 组:5 + 1 = 6 种状态,需
位 - 第 3 组:8 + 1 = 9 种状态,需
位 - 第 4 组:4 + 1 = 5 种状态,需
位
操作控制字段总共
3. 字段间接编码
一个字段的含义取决于另一个字段的值,进一步压缩编码长度,但译码更复杂。
对比
| 对比项 | 水平型 | 垂直型 |
|---|---|---|
| 微指令字长 | 长 | 短 |
| 并行性 | 强 | 弱 |
| 微程序长度 | 短 | 长 |
| 执行速度 | 快 | 慢 |
| 编写难度 | 较复杂 | 简单 |
下址字段的获取方式
微指令执行完后,如何得到下一条微指令的地址?
- 直接给出:微指令中有专门的下址字段,直接送入 μAR
- 计数器方式:类似 PC 自增,μAR+1(顺序执行微程序时)
- 条件转移:根据状态条件(CF、ZF 等)在两个地址中选一个
- 由机器指令操作码映射:每条机器指令开始执行时,由操作码转换为微程序入口地址
微程序设计步骤
- 分析每条机器指令的功能,写出微操作序列
- 将同一时钟周期可并行的微操作归并为一条微指令
- 编写微指令序列(微程序)
- 确定每条微指令的下址字段
- 将微程序存入控制存储器(ROM)
交互可视化
例题
例1:某微程序控制器有20个微命令,采用水平型微指令。若顺序控制字段为8位,求微指令的最小字长。
解:水平型微指令中,操作控制字段每一位对应一个微命令,20个微命令需要20位。加上8位顺序控制字段,最小字长 =
例2:某CPU有40条机器指令,每条指令的微程序平均包含6条微指令,另有公共的取指微程序包含3条微指令。控制存储器至少需要多少单元?
解:40条机器指令对应40段微程序,共
例3:水平型微指令和垂直型微指令各自的优缺点是什么?408考研中某题指出"微指令字长为50位,其中操作控制字段38位,采用直接编码",这是哪种类型?
解:直接编码(每位对应一个微命令)是水平型微指令的特征。38位操作控制字段意味着最多可以同时发出38个微命令。水平型的优点是并行性强、微程序短、执行快;缺点是微指令字长大、编写复杂。
易混淆知识点
1. 控制存储器(CM)和主存是什么关系?
CM 是 CPU 内部的 ROM,存放微程序,CPU 取指时从主存取机器指令,取到后根据操作码从CM中读微指令。二者独立、互不干扰。CM 的地址由微地址寄存器(CMAR)给出,不占用主存地址空间。
2. 微指令周期和机器指令周期的关系?
一条机器指令的执行需要一段微程序,即多条微指令。每条微指令对应一个时钟周期。因此机器指令周期 = 该指令对应的微指令条数
3. 字段直接编码中的"全 0 表示不操作"为什么重要?
每个字段必须留一个编码表示"该组不发出任何微命令"。否则该字段在每个时钟周期都必须激活一个微命令,丧失了灵活性。所以
4. 硬布线和微程序哪个快?
硬布线更快(组合逻辑直接产生控制信号,无须从 CM 读取微指令)。微程序更灵活(修改 CM 内容即可改变指令功能,适合 CISC)。现代 RISC 处理器普遍使用硬布线控制器。
考点清单
- 控制存储器(CM)存放微程序,是 ROM(只读),不是主存的一部分
- 取指微程序是公共微程序,所有机器指令共享
- 机器指令的操作码经过映射逻辑得到对应微程序的入口地址
- 水平型:字长长、并行性强、速度快;垂直型:字长短、并行性弱、速度慢
- 字段直接编码:互斥微命令分同一字段,
位表示 个微命令(全 0 = 不操作) - 微程序控制器修改灵活(改 ROM 内容),硬布线控制器速度快
- 微程序控制器适合 CISC(复杂指令集),如 x86 历史上的实现