微程序设计
思想
- 一条机器指令对应一个微程序(存入 ROM)

框图及工作原理
-
机器指令对应的微程序
-
控制单元的基本框图
工作原理
全部微指令存在 CM 中,程序执行过程中 只需读出

-
取指阶段(执行 LDA 取指微程序)
-
执行阶段(执行 LDA 执行微程序)
微指令的编码方式
-
直接编码(直接控制)方式
-
在微指令的操作控制字段中,每一位代表一个微操作命令
-
某位为 “1” 表示该控制信号有效
-
速度最快
-
-
字段直接编码方式
- 将微指令的控制字段分成若干 “段”,每段经译码后发出控制信号
- 每个字段中的命令是 互斥 的,缩短了微指令字长,增加了译码时间
-
字段间接编码方式
-
混合编码
- 直接编码和字段编码(直接和间接)混合使用
-
其他
微指令序列地址的形成
-
形成方式
-
地址来源
-
微指令的 下地址字段 指出
-
根据机器指令的 操作码 形成
-
增量计数器
- ( CMAR ) + 1 -> CMAR
-
分支转移
-
其他
-
微指令格式
- 水平型微指令
- 一次能定义并执行多个并行操作
- 如 直接编码、字段直接编码、字段间接编码、直接和字段混合编码
- 垂直型微指令
- 类似机器指令操作码 的方式
- 由微操作码字段规定微指令的功能
- 两种微指令格式的比较
- 水平型微指令比垂直型微指令并行操作能力强 ,灵活性强
- 水平型微指令执行一条机器指令所要的微指令数目少,速度快
- 水平型微指令 用较短的微程序结构换取较长的微指令结构
- 水平型微指令与机器指令差别大
微程序设计举例
-
1、写出对应机器指令的微操作及节拍安排(注意:每条微指令结束都要指明下一条的地址)
-
取指阶段
-
执行阶段
-
非访存指令
-
访存指令
-
转移类指令
-
-
-
2、确定微指令格式
-
微指令的编码方式
- 采用直接控制
-
后续微指令的地址形成方式
- 由机器指令的操作码通过微地址形成部件形成
- 由微指令的下地址字段直接给出
-
微指令字长
- 由 20 种微操作确定 操作控制字段 ,最少 20 位
- 由 38 条微指令确定微指令的 下地址字段 为 6 位
- 微指令字长 可取 20 + 6 = 26 位
-
微指令字长的确定
- 38 条微指令中有 19 条38 条微指令中有 19 条是关于后续微指令地址 -> CMAR
- 1 条:OP ( IR ) -> 微地址形成部件 -> CMAR
- 18 条:Ad ( CMDR ) CMAR
- 若用 Ad ( CMDR ) 直接送控存地址线,则 省去了输至 CMAR 的时间,省去了 CMAR
- 同理
- OP ( IR ) -> 微地址形成部件 -> 控存地址线,可省去 19 条微指令,2 个微操作
- 即:
- 下地址字段最少取 5 位:38 - 19 = 19
- 操作控制字段最少取 18 位:20 - 2 = 18
- 38 条微指令中有 19 条38 条微指令中有 19 条是关于后续微指令地址 -> CMAR
-
省去了 CMAR 的控制存储器
-
最终确定(考虑留有一定的余量)
- 取操作控制字段:18位 -> 24位
- 下地址字段:5位 -> 6位
-
-
3、编写微指令码点(只要对指令译码,然后执行控制字段对应操作即可)
-
操作
-
对应指令码点
-