
(以下内容全部出自上述课程)
目录
- 微程序控制器的基本原理
-
- [1. 设计思路](#1. 设计思路)
- [2. 基本结构](#2. 基本结构)
- [3. 工作原理](#3. 工作原理)
- [4. 小结](#4. 小结)
- 微指令的设计
-
- [1. 微指令的格式](#1. 微指令的格式)
- [2. 微指令的编码方式](#2. 微指令的编码方式)
-
- [2.1 直接编码方式](#2.1 直接编码方式)
- [2.2 字段直接编码方式](#2.2 字段直接编码方式)
- [2.3 字段间接编码方式](#2.3 字段间接编码方式)
- [3. 微指令的地址形成方式](#3. 微指令的地址形成方式)
- [4. 小结](#4. 小结)
- 微程序控制单元的设计
-
- [1. 控制单元的设计](#1. 控制单元的设计)
-
- [1.1 分析微操作序列](#1.1 分析微操作序列)
- [1.2 节拍安排](#1.2 节拍安排)
- [1.3 剩下两步](#1.3 剩下两步)
- [2. 设计的分类(了解)](#2. 设计的分类(了解))
- [3. 硬布线 vs 微程序](#3. 硬布线 vs 微程序)
- [4. 小结](#4. 小结)
- 指令流水线的基本概念和性能指标
-
- [1. 指令流水的定义](#1. 指令流水的定义)
- [2. 流水线的表示方式](#2. 流水线的表示方式)
- [3. 流水线的性能指标](#3. 流水线的性能指标)
-
- [3.1 吞吐率](#3.1 吞吐率)
- [3.2 加速比](#3.2 加速比)
- [3.3 效率](#3.3 效率)
- [4. 小结](#4. 小结)
微程序控制器的基本原理
大体上和硬布线控制器的设计思路基本相同,具体可见:硬布线控制器

1. 设计思路
- 一条指令可以分为不同周期完成,一个周期可以分为不同节拍,一个节拍可以分为一个或多个微操作
- 程序-->指令=微程序-->周期-->节拍=微指令-->微操作=微命令(=是对应关系)
- 微指令基本格式:操作控制+顺序控制-->操作+地址
- 微程序 在 控制器存储器(ROM) 中

2. 基本结构
可对比专用通路结构:专用通路结构
CPU(芯片)=计算器(很多种)+控制器(很多种)
控制器=硬布线控制器+微程序控制器+...
DRAM-->主存=内存条
ROM-->是芯片,哪儿都有,但是CPU上也有且只用于微程序控制
寄存器-->芯片,哪儿都有,除了RAM(内存条)
Cache(SRAM)-->全部在CPU芯片里
- 微程序控制器:相当于小CPU
- OP:操作码
- 微地址形成部件 :产生初始微地址和后继微地址
- 顺序逻辑 :过去+现在=未来,根据之前和现在的情况思考下一条微指令的有效地址
- CMAR=μPC=MAR+PC:融合地址寄存器和计数寄存器的功能
- 地址译码:上一步得到地址码,把地址码转化为控制信号
- CM:相当于小主存,存有微程序
- CMDR=μIR=MDR+IR:融合了数据寄存器和指令寄存器的功能
- 下地址 :顺序逻辑根据下地址、标志位、CLK来生成下一条微指令的有效地址。

3. 工作原理
过程:
java
[取机器指令]
↓
存入 IR
↓
IR 操作码 → 微程序入口地址 → 写入 CMAR
↓
从 CM[CMAR] 读微指令 → 存入 CMDR
↓
CMDR 发出控制信号 → 执行微操作
↓
顺序逻辑计算下一条微地址 → 更新 CMAR
↓
↻(循环,直到微程序结束)
↓
跳转回 "取指" 微程序 → 执行下一条机器指令
-
取指周期:公共操作
-
间址周期:不一定有,结束后转为执行周期
-
中断周期:不一定有,结束后转为取指周期
-
执行周期:执行什么操作什么
-
标志位影响顺序逻辑:看是否跳过间址周期
-
CLK影响顺序逻辑 :判断是否进入中断周期

间址周期和中断周期可能不存在,所以会只留下取指周期和执行周期
虽然这两个周期是两个微程序,但逻辑上把它们视为一个整体,也就是一个微程序
所以,一条指令对应一个微程序 ,是正确的

4. 小结
- 程序 vs 微程序:食谱(告诉厨房做什么菜) vs 厨房的操作手册(告诉厨师怎么切菜、加热、翻炒)
- 指令 vs 微指令:一个长一个短,前者包括后者
- 主存储器 vs 控制器存储器:图书馆(存放所有书籍)vs 图书馆的管理手册(规定如何借书、还书)
- MAR vs CMAR:MAR 是"数据通路"的地址寄存器,CMAR 是"控制通路"的地址寄存器
- PC vs μPC(即 IR vs CMDR):PC 是"程序计数器",指向主存中的指令,μPC(CMAR)是"微程序计数器",指向控制存储器中的微指令
- MDR vs CMDR:传送带上的货物(数据)vs 传送带上的操作卡(如"左转"、"加速")
- 主存 → MAR → MDR → 数据通路:执行"做什么"
- CM → CMAR → CMDR → 控制通路 :决定"怎么做"

微指令的设计
1:1-->微命令=微操作=输出线

1. 微指令的格式
- 水平型:优点:矮,缺点:胖
- 垂直型:优点:瘦,缺点:高
- 混合型 :融合上面两种的优点

2. 微指令的编码方式
2.1 直接编码方式
一个微操作命令 对应 一位,1就是有效,0就是无效
如下图 :1-->R下面对应的那位是1,就代表这个微操作有效,需要执行
缺点 :一位对应一个微操作,容量要求太大

2.2 字段直接编码方式
字段字段,就是把控制字段分成了好几段儿,用了一段儿就发出一次控制信号
- 互斥同一段 :相当于红绿灯只能亮一个(使用同一个电源,相互制约)
如下图中:(PC)-->MAR和(PC)+1-->PC,两个指令都需要用到PC,就是互斥的,把这两个指令放在一个段中,001表示(PC)-->MAR,010表示(PC)+1-->PC,就将互斥的指令可以分开执行了 - 相容不同段 :相当于并联电路,可以同时执行
如下图中:(PC)-->MAR和1-->R,两个指令可以同时执行,把这两个指令放在不同段中,001表示(PC)-->MAR,111表示1-->R,就将相容的指令可以同时执行了
同理,同一个段中可以表示很多微指令:23=8-1个000不执行=7条
即一个段可以指代7条互斥的微指令

5个互斥类(5个段):7、3、12、5、6
都加回000:8、4、13、6、7
都是2的几次幂:3、2、4、3、3
所以至少3+2+4+3+3=15
如果按照直接编码一位对应一个微命令的话,就需要33位

2.3 字段间接编码方式
间接,就是这条指令还需要借助别的指令才能执行,可以缩短字长
但是因为要互相借助,就没办法同时执行,所以并行能力下降

3. 微指令的地址形成方式
- 微指令的下地址字段 直接指出-->断定方式
- 机器指令的操作码-->CMDR+微地址形成部件
- 计数器法:类比PC+1
- 分支转移:类比JMP
- 测试网络
- 硬件生成


4. 小结

微程序控制单元的设计
和硬布线控制器的设计类似,具体可见:硬布线控制器的设计
1. 控制单元的设计
1.1 分析微操作序列
就是把需要执行的微操作全部都列出来。
图片示例-取指周期:

和硬布线控制器相比,微程序控制器还需要寻找下一次的地址:
- Ad(CMDR)-->CMAR
- OP(IR)-->微地址形成部件-->CMAR

1.2 节拍安排
因为需要寻找下一次的地址,所以每个微指令之间还需要插入一个确认下一条微指令的地址的这一步(红字),当这个指令周期结束的时候,需要根据指令操作码确定即将进入的指令周期的微指令的首地址(紫字)
简单来看 :微指令a-->找下一条微指令地址-->微指令b-->找...-->微指令c-->找执行周期的微指令首地址

最后两步融合成一步也可以:

取指周期和执行周期每步结束后必加的内容:
- 每个微指令结束后必须确认下一条微指令的地址
- 取指周期结束必须确认执行周期微指令的首地址
- 地址!地址!地址!

1.3 剩下两步
- 确认微指令格式:上面讲过了(水平、垂直、混合)
- 编写微指令码点:根据编码方式来编写(直接、字段直接、字段间接)

2. 设计的分类(了解)

3. 硬布线 vs 微程序

4. 小结

指令流水线的基本概念和性能指标

1. 指令流水的定义
就是为了让操作过程更快而研究的方法。
顺序执行方法 :
就单纯一个周期结束后才执行下一个周期,超级浪费时间。

- 一次重叠执行方法 :上一条的指令还在执行周期就同时把下一条的指令的取指周期执行了。
第一个指令需要三个周期,剩下的都只需要两周期就可以执行完。 - 二次重叠执行方法 :重叠的更多了。
第一个指令需要三个周期,剩下的都只需要一个周期就可以执行完。

2. 流水线的表示方式
- 指令执行过程图:横着的是同一个指令,一行一行地表示
- 时空图 :斜着向上的是同一个指令,用来分析性能。

3. 流水线的性能指标
3.1 吞吐率
吞吐率=完成指令总数/完成时间=斜着的多少组块/横轴

3.2 加速比
加速比=不使用流水线的时间/使用流水线的时间

3.3 效率
效率=红色拼接3*3长方形的面积/蓝色整体长方形的面积

4. 小结
