5.4 微程序控制器

image-20260304164425715

一、基本原理

设计思路⭐

  • ==一条机器/汇编/高级指令对应一个微程序==
    • ==一个微程序有多条微指令==(==微周期==,通常为一个机器周期)
      • ==一条微指令可以做多个微操作(微命令)==(构成控制序列的最小单位)
  • 简记:微程序→微指令/周期→微操作/命令

image-20260304165200244

基本结构

CU的输入信号来源:

  • ①译码器产生的指令信息
  • ②时序系统产生的节拍信号
  • ③执行单元的反馈信息(标志)

image-20260304172033137

工作原理⭐

  • ==一条机器/汇编指令 的执行过程== = 取指微程序(入口地址一般为CM的0号单元) + 执行微程序(不同指令微程序不同)
  • ==微程序个数== = 机器指令数(每一条指令都有自己的执行微程序) + 公共微程序数(取址,间址(非必须),中断周期,分别共用一个微程序)

①执行取指操作(公共)

  • 启动取指: 机器开始运行时,自动将取指微程序入口地址(⭐通常为CM的0号单元,即微指令的微操作码字段)送入μPC,并开始从CM中读取并执行取指微指令。

  • 取指完成:取指微程序执行完毕后,在其控制下,==从主存中取出的机器指令==已被存入指令寄存器(IR)中。

②产生执行微程序入口

  • 由机器指令的操作码字段通过微地址形成部件,产生该机器指令所对应的微程序入口地址,并送入μPC。

③执行指令对应的微程序

  • 从CM中逐条取出该指令对应的微指令并执行,直到该微程序执行完毕。

④返回取指微程序

  • 执行完一条机器指令对应的微程序后,自动回到取指微程序的入口地址(0号单元),继续第①步,以完成取下一条指令的公共操作。

image-20260304173110441

二、微指令设计

微指令的具体格式应该如何设计?

如何根据微指令发出相应的微命令(微操作)?

微指令的格式/类型

==微指令基本格式:==

  • 操作控制==(微操作码字段)== ==+== 顺序控制字段==(微地址字段)==

类型:

水平型微指令:

  • 一条微指令可以定义==多个==可==并行==的微命令。【==长条状指令==,多条微命令都塞到一条指令里面了。】

  • 基本格式:操作控制+顺序控制 【水平控制信号是来实现并行多条微命令的基础】

垂直型微指令:

  • 一个微指令只能定义==一个==微命令。由微操作码字段规定具体功能。【短短的微指令】

  • 基本格式:微操作码+目的地址+源地址

  • 垂直型串行编码就行,不用并行。

image-20260304175804421

编码方式(水平型微指令)

编码目标:保证速度,尽量缩短字长

1.直接编码方式 ==【效率最高】==

  • 把操作字段的每一位bit,代表一个微操作命令。

image-20260305163115809

2.字段直接编码方式

  • 把操作控制部分分成几段。
  • 把相同的微命令放在不同段内,把互斥的微命令放在同一段内。
  • 每一段留出一个状态位(表示本字段不发出微命令)
  • ==微地址总位数:==微命令位数+微命令位数+…+判断测试位数+后继地址位数

3.字段间接编码方式

下一条微指令的地址形成方式

image-20260304182749430

三、==微程序控制单元μCU的设计==

设计步骤:

1.分析每个阶段的微操作序列

2.写出对应机器指令的微操作命令及节拍安排

3.确定微指令格式

4.编写微指令码点

1.分析每个阶段的微操作序列

eg取值周期(公共)

image-20260304191133745

2.写出对应机器指令的微操作/命令及节拍安排

可看出微程序控制器速度比硬布线控制器要慢。

image-20260304191241943

  • 微程序控制器(相比于硬布线)特有的微操作:

image-20260305164310237

3 4

image-20260304192017615

硬布线VS微程序

微程序规整,速度慢

==硬布线快,不规整(纯硬件嘛)==

image-20260304192538982

总结

image-20260304192655495

补充:

微处理器:是相对于大型处理器而言的,和微控制器没有必然联系。

汇编程序员可见的寄存器:基址寄存器,PSW,PC,通用寄存器组

==汇编程序员不可见的:MAR,MDR,IP指令寄存器,微程序控制器。==