408计算机组成原理:微程序控制器——概念串联记忆版
复习位置:计算机组成原理 -> CPU / 控制器 -> 微程序控制器
目标:这部分不靠“秒杀口诀”硬背,而是把机器指令、微程序、微指令、微命令、微操作、CMAR、CMDR、控制存储器、微地址形成、微指令编码串成一条完整逻辑链。
只要这条链不断,选择题里的概念就不容易混。
一、先搭整个框架:把它看成“机器指令的翻译系统”
微程序控制器本质上是在做一件事:
把一条机器指令 拆成若干个更细的控制步骤 再一步一步控制CPU内部部件完成动作所以先建立最重要的五层关系:
机器指令 ↓ 微程序 ↓ 微指令 ↓ 微命令(控制信号) ↓ 微操作(硬件真正执行的动作)这是整章的主干。
以后任何概念忘了,都先回到这条链。
二、五个概念到底是什么
1. 机器指令
就是程序员和CPU指令系统层面看到的指令,例如:
ADD R1, R2 LOAD R1, [1000] JMP 2000一条机器指令完成的是一个相对完整的功能。
但是CPU内部不能“一步”完成它。
例如一条ADD可能需要:
取指 译码 取操作数 执行加法 写回结果因此需要继续拆。
2. 微程序
一条机器指令对应一段用于解释执行它的微程序。
也就是:
一条机器指令 ≈ 一段微程序微程序本质上是一串按顺序执行的微指令。
例如:
ADD机器指令 ↓ 对应的微程序 微指令1 微指令2 微指令3 微指令4 ...所以:
微程序 = 多条微指令组成的程序3. 微指令
微程序中的“一条指令”。
一条微指令决定:
这一拍CPU内部要同时做哪些微操作 + 下一条微指令去哪里所以一条微指令通常包含两大类信息:
① 操作控制信息 ② 顺序控制 / 下地址信息可以把它理解为:
微指令 = “这一拍干什么” + “下一拍去哪”4. 微命令
控制器向CPU内部各部件发出的控制信号,称为微命令。
例如:
PCout MARin Read MDRout IRin ALUadd这些本质上都是:
控制信号所以:
微命令 ≈ 控制信号5. 微操作
硬件收到微命令后真正执行的最基本动作。
例如:
PC -> MAR M(MAR) -> MDR MDR -> IR R1 + R2 -> R1所以:
微命令:命令硬件“做什么” 微操作:硬件实际“做了什么”可以简单理解为:
微命令 = 发号施令 微操作 = 真正动作三、必须形成的层次关系
这是408概念题最常考的地方。
一条机器指令 ↓ 一段微程序 ↓ 多条微指令 ↓ 一条微指令中可包含若干微命令 ↓ 微命令控制微操作所以不要再把这些概念混在同一层。
四、微程序控制器硬件结构:只抓4个东西
微程序控制器图看起来复杂,其实最核心只有:
CM CMAR CMDR 微地址形成部件1. CM:控制存储器
Control Memory,控制存储器。
它存放:
微程序而微程序又是:
很多条微指令所以更准确地说:
控制存储器CM中存放微指令注意它不是主存。
主存存的是:
机器指令和数据控制存储器存的是:
实现机器指令所需要的微程序2. CMAR:微地址寄存器
CMAR保存:
下一条要从控制存储器中取出的微指令地址它和主存系统中的MAR很像。
可以类比:
MAR -> 指向主存中的地址 CMAR -> 指向控制存储器中的微指令地址3. CMDR:微指令寄存器
从控制存储器中读出的微指令,要先送到:
CMDR然后CMDR中的:
操作控制字段产生微命令。
而:
顺序控制 / 下地址字段参与形成下一条微指令地址。
4. 微地址形成部件
它负责解决:
下一条微指令到底在哪?最后形成的新微地址送入:
CMAR五、把整个执行过程串成一个循环
这是这部分最应该在脑中形成的动态图。
CMAR ↓ 控制存储器 CM ↓ 取出一条微指令 ↓ CMDR ↓ 操作控制字段产生微命令 ↓ CPU执行若干微操作 ↓ 顺序控制信息 + 条件状态 ↓ 形成下一条微地址 ↓ CMAR然后继续下一轮。
所以微程序控制器可以记成一个循环:
地址 -> 取微指令 -> 发控制信号 -> 算下一地址 -> 再取六、最容易混的地方:机器指令操作码和微地址
这里是高频易错点。
1. 微程序入口地址从哪里来
CPU取到一条机器指令后,必须先知道:
这条机器指令对应的微程序从哪里开始?例如:
ADD -> 加法微程序入口 SUB -> 减法微程序入口 LOAD -> 访存微程序入口谁能区分ADD、SUB、LOAD?
当然是:
机器指令的操作码所以:
机器指令操作码 ↓ 微地址形成部件 ↓ 对应微程序入口地址结论:
微程序入口地址 由机器指令的操作码形成。2. 下一条微指令地址从哪里来
进入微程序以后,已经不是在问:
“执行哪一条机器指令?”而是在问:
“当前微程序下一步执行哪一条微指令?”这时要看:
微指令中的下地址字段 + 条件状态 + 顺序控制逻辑所以一定区分:
微程序入口地址 -> 机器指令操作码 微程序内部下一条微指令地址 -> 微地址 / 下地址字段等顺序控制信息这两个问题非常容易被题目故意混在一起。
七、后继微地址到底怎么形成
下一条微指令地址并不只有一种来源。
常见来源包括:
1. 当前微地址 + 1 2. 微指令中的下地址字段 3. 根据条件标志决定分支地址 4. 根据机器指令操作码形成某个微程序入口可以把它们统一理解成:
“顺序执行” + “转移” + “从机器指令跳到对应微程序入口”八、一条微指令为什么可以控制多个微操作
CPU内部某些微操作可以同时发生。
例如:
PC -> MAR 同时 PC + 1 -> PC只要两者之间没有资源冲突,就可以安排在同一个时钟周期。
所以一条微指令往往可以同时发出多个微命令。
这也是为什么会出现:
微指令编码方式这个考点。
九、微指令的三种编码思想
重点理解:
如何用有限的微指令位数 表示大量微命令?1. 直接编码法
最简单粗暴。
一个微命令对应一个控制位:
某位=1 -> 发出对应微命令 某位=0 -> 不发例如:
PCout | MARin | Read | MDRout | IRin 1 1 1 0 0表示这一拍同时发出前三个微命令。
优点
不需要复杂译码 速度快 并行性强缺点
微指令很长 控制存储器容量大记忆:
直接编码: “一个命令占一个坑” 所以长,但快。2. 字段直接编码法
这是408更喜欢考计算的方式。
把互斥的微命令分到同一个字段里。
所谓互斥,就是:
这些微命令不可能在同一拍同时执行例如:
R1out R2out R3out R4out总线同一时刻通常只能有一个寄存器输出,所以可以放在同一字段中编码。
假设一个字段中有:
7个互斥微命令通常还需要保留一种:
“不发任何微命令”因此需要表示:
7 + 1 = 8种状态字段位数:
log2(8) = 3位更一般地:
若某字段有n个互斥微命令 需要位数: ceil(log2(n+1))其中+1就是:
无操作状态优点
比直接编码短 还能保持不同字段之间的并行性缺点
需要译码 速度比直接编码稍慢3. 字段间接编码法
某个字段的含义还需要通过另一个字段解释。
本质:
进一步压缩微指令长度代价:
译码更复杂 速度更慢 并行能力受到更多限制强化阶段记住:
越编码 -> 越短 但译码越复杂 -> 越慢即可。
十、水平型微指令和垂直型微指令
这也是非常容易混的一组。
水平型微指令
特点:
一次能表示很多微命令 并行能力强 字长较长 编码较直接 译码少 执行速度快可以理解成:
一条微指令横向铺开很多控制位所以叫“水平型”。
关键词:
长 快 并行强垂直型微指令
更像普通机器指令:
需要操作码译码 一条微指令表达的微操作较少 字长短 并行性弱 译码复杂 速度较慢关键词:
短 慢 类似机器指令一张表记住
| 对比 | 水平型 | 垂直型 |
|---|---|---|
| 微指令长度 | 长 | 短 |
| 微命令表示 | 较直接 | 编码程度高 |
| 并行能力 | 强 | 弱 |
| 译码 | 少 | 多 |
| 速度 | 快 | 慢 |
| 控制存储器容量 | 较大 | 较小 |
记忆:
水平:铺得开 -> 长、并行、快 垂直:压得紧 -> 短、译码、慢十一、微程序控制器为什么比硬布线控制器灵活
硬布线控制器的控制逻辑:
直接做在组合逻辑电路里如果要增加或修改机器指令:
可能需要重新设计硬件逻辑而微程序控制器的控制逻辑:
主要写在控制存储器中的微程序里所以修改功能时:
修改微程序通常比改硬件方便。
因此:
微程序控制器:灵活,易修改 硬布线控制器:速度快,但修改困难十二、为什么微程序控制器通常更慢
硬布线控制器:
组合逻辑直接产生控制信号微程序控制器:
还要访问控制存储器 取出微指令 再产生控制信号多了:
访问控制存储器这个过程。
所以总体:
硬布线:快 微程序:稍慢这和前面的“灵活性”正好形成交换:
速度换灵活性十三、把硬布线和微程序控制器放在一起记
| 项目 | 硬布线控制器 | 微程序控制器 |
| 控制信号来源 | 组合逻辑电路 | 微指令 |
| 速度 | 快 | 较慢 |
| 设计 | 较复杂 | 较规整 |
| 修改扩展 | 困难 | 容易 |
| 适合 | RISC等简单控制 | 复杂指令系统更方便 |
不要机械理解最后一行,408主要还是考:
硬布线:快 微程序:灵活十四、你之前容易混的三个典型题
题1:微程序入口地址由什么形成?
正确:
机器指令的操作码字段原因:
操作码决定“这是哪条机器指令” -> 也就决定“去哪个微程序入口”不要选:
微指令的微地址码字段那是微程序内部找下一条微指令时使用的重要信息。
题2:机器指令与微指令是什么关系?
正确表述:
一条机器指令由一段用微指令编成的微程序解释执行。关系:
机器指令 -> 微程序 -> 多条微指令不是:
一条机器指令 = 一条微指令题3:哪项关于微程序控制器正确?
正确:
微程序控制器比硬布线控制器更加灵活。因为:
控制逻辑主要以微程序形式存放 修改微程序通常比重新设计硬件方便十五、几个特别容易错的概念
1. “控制器产生的控制信号都叫微指令”
错误。
正确:
控制信号 = 微命令 微指令 = 包含若干微命令编码及顺序信息的一条控制字2. “微处理器运行的程序就叫微程序”
错误。
微处理器只是:
CPU实现形式微程序是:
微程序控制器内部的控制程序两者没有这个定义关系。
3. “采用微程序控制器的CPU叫微处理器”
错误。
微处理器和:
微程序控制器是两个完全不同的概念。
4. “微程序存在主存中”
错误。
微程序通常存放在:
控制存储器CM十六、如何把所有东西真正串起来
建议脑中保留三张“心智图”。
心智图1:层级关系
机器指令 ↓ 微程序 ↓ 微指令 ↓ 微命令 ↓ 微操作解决:
谁包含谁? 谁控制谁?心智图2:微程序控制器循环
CMAR ↓ CM ↓ CMDR ↓ 发出微命令 ↓ CPU完成微操作 ↓ 形成下一微地址 ↓ CMAR解决:
CMAR、CMDR、CM分别干什么? 下一条微指令怎么取?心智图3:两个地址问题
机器指令操作码 -> 微程序入口地址 微指令下地址/顺序控制信息 -> 下一条微指令地址解决:
操作码和微地址为什么总分不清?十七、做题时的判断顺序
看到微程序控制器选择题,不要先搜索记忆碎片。
先判断题目属于哪层。
如果问:
机器指令执行想到:
微程序如果问:
微程序由什么组成想到:
微指令如果问:
控制信号叫什么想到:
微命令如果问:
CPU内部最基本动作想到:
微操作如果问:
微程序入口想到:
机器指令操作码如果问:
当前微程序下一步去哪想到:
下地址 / 顺序控制如果问:
存放微程序想到:
控制存储器CM十八、考前速记表
机器指令 -> 微程序 -> 微指令 -> 微命令 -> 微操作 CM:存微程序/微指令 CMAR:存微地址 CMDR:存当前微指令 机器指令操作码 -> 微程序入口地址 微指令下地址字段 + 条件 -> 下一微指令地址 直接编码: 长、快、并行强 字段编码: 短一些,要译码 水平型: 长、并行强、快 垂直型: 短、并行弱、译码多 硬布线: 快,不灵活 微程序: 灵活,较慢十九、这部分对应回去复习哪里
408计算机组成原理 -> CPU -> 控制器 -> 微程序控制器重点复习顺序建议:
1. 五层关系 2. 微程序控制器基本结构 3. 微地址形成 4. 微指令格式与编码 5. 水平型/垂直型 6. 微程序与硬布线控制器对比二十、最后用一个完整例子收口
CPU取到:
ADD R1,R2首先:
IR中的机器指令操作码告诉微地址形成部件:
去ADD微程序入口入口地址进入:
CMAR控制存储器根据CMAR:
取出ADD微程序的第一条微指令送入:
CMDRCMDR中的操作控制字段发出微命令,例如:
R1out R2out ALUadd R1inCPU内部完成对应微操作。
与此同时:
CMDR中的顺序控制信息 + 条件状态形成下一条微指令地址,送回CMAR。
如此反复:
微指令1 -> 微指令2 -> 微指令3 ...直到ADD对应的整段微程序执行完毕。
然后CPU再去执行下一条机器指令。
最后的记忆主线
如果过几天又忘了,只重新默写这一段:
一条机器指令对应一段微程序; 微程序由多条微指令组成; 微指令发出若干微命令; 微命令控制CPU完成微操作。 CMAR给地址, CM取微指令, CMDR装微指令, 控制字段发命令, 顺序字段找下一地址。 操作码找微程序入口, 微地址找下一条微指令。只要这条主线还在,其他零碎知识基本都能重新推出来。
