Alex_McAvoy

想要成为渔夫的猎手

微程序控制器

【程序与微程序】

基本概念

微程序设计思想就是将每一条机器指令编写成一个微程序,每一个微程序包含若干条微指令每一条微指令对应一个或几个微操作命令,这些微程序可以存到一个控制存储器中,用寻址用户程序机器指令的办法来寻址每个微程序中的微指令

微程序设计技术涉及的基本术语有:

  • 微操作:一条机器指令可以分解成一个微操作序列,这些微操作是计算机中最基本的、不可再分解的操作
  • 微命令:在微程序控制的计算机中,将控制部件向执行部件发出的各种控制命令称为微命令,它是构成控制序列的最小单位,微命令和微操作是一一对应的,微命令是微操作的控制信号,微操作是微命令的执行过程,此外,微命令有相容性和互斥性之分:
    • 相容性微命令:可以同时产生、共同完成某一些微操作的微命令
    • 互斥性微命令:在机器中不允许同时出现的微命令
  • 微指令:微指令是若干微命令的集合,一条微指令通常至少包含两大部分信息
    • 操作控制字段:又称操作码字段,用于产生某一步操作所需的各种操作控制信号
    • 顺序控制字段:又称微地址码字段,用于控制产生下一条要执行的微指令地址
  • 微地址:存放微指令的控制存储器的单元地址
  • 微周期:从控制存储器中读取一条微指令并执行相应的微操作所需的时间

程序与微程序

程序是指令的有序集合,用于完成特定的功能,微程序是微指令的有序集合,一条指令的功能由一段微程序来实现

微程序实际上是机器指令的实时解释器,是由计算机设计者事先编制好并存放在控制存储器中的,一般不提供给用户

对于程序员来说,计算机系统中微程序的结构和功能是透明的,无须知道。而程序最终由机器指令组成,是由软件设计人员事先编制好并存放在主存或辅存中的

在计算机中,主存储器用于存放程序和数据,在 CPU 外部,用 RAM 实现;控制存储器(CM)用于存放微程序,在 CPU 内部,用 ROM 实现

此外,与微指令相关的寄存器有:

  • 地址寄存器(MAR):用于存放主存的读/写地址。
  • 微地址寄存器(CMAR):用于存放控存的读/写微指令的地址。
  • 指令寄存器(IR):用于存放从主存中读出的指令
  • 微指令寄存器(CMDR 或 μIR):用于存放从控存中读出的微指令

微程序与机器指令

通常,一条机器指令对应一个微程序

由于任何一条机器指令的取指令操作都是相同的,因此,可将取指令操作的微命令统一编成一个微程序,这个微程序只负责将指令从主存单元中取出送至指令寄存器中

此外,也可以编出对应间址周期的微程序和中断周期的微程序,这样控制存储器中的微程序个数应为机器指令数再加上对应取指、间址和中断周期等共用的微程序数

要注意的是,若指令系统中具有 $n$ 种机器指令,则控制存储器中的微程序数至少是 $n+1$ 个,这里的 $1$ 是指公共的取指微程序

【微程序控制器】

基本组成

微程序控制器主要包括:

  • 控制存储器:它是微程序控制器的核心部件,用于存放各指令对应的微程序,控制存储器可至 CPU 内部和系统总线的控制信号用只读存储器 ROM 构成微地址
  • 微指令寄存器:用于存放从 CM 中取出的形成部件微指令,它的位数同微指令字长相等
  • 微地址形成部件:用于产生初始微地址和后继微地址,以保证微指令的连续执行
  • 微地址寄存器:接收微地址形成部件送来的微地址,为在 CM 中读取微指令作准备

工作过程

微程序控制器的工作过程实际上就是在微程序控制器的控制下计算机执行机器指令的过程,这个过程可以描述如下:

  1. 执行取微指令公共操作:在机器开始运行时,自动将取指微程序的入口地址送入 CMAR,并从 CM 中读出相应的微指令送入 CMDR,取指微程序的入口地址一般为 CM 的 $0$ 号单元,当取指微程序执行完后,从主存中取出的机器指令就已存入指令寄存器中了
  2. 由机器指令的操作码字段通过微地址形成部件产生该机器指令所对应的微程序的入口地址,并送入 CMAR
  3. 从 CM 中逐条取出对应的微指令并执行
  4. 执行完对应于一条机器指令的一个微程序后又回到取指微程序的入口地址,继续第 1 步,以完成取下一条机器指令的公共操作

以上是一条机器指令的执行过程,如此周而复始,直到整个程序执行完毕为止

【微指令编码方式】

微指令的编码方式又称为微指令的控制方式,它是指如何对微指令的控制字段进行编码,以形成控制信号,编码的目标是在保证速度的情况下,尽量缩短微指令字长

直接编码方式

直接编码方式无须进行译码,微指令的微命令字段中每一位都代表一个微命令

设计微指令时,选用或不选用某个微命令,只要将表示该微命令的对应位设置成 $1$ 或 $0$ 即可,每个微命令对应并控制数据通路中的一个微操作

这种编码的优点是简单、直观,执行速度快,操作并行性好,缺点是微指令字长过长,$n$ 个微命令就要求微指令的操作字段有 $n$ 位,造成控存容量极大

字段直接编码方式

将微指令的微命令字段分成若干小字段,把互斥性微命令组合在同一字段中,把相容性微命令组合在不同的字段中,每个字段独立编码,每种编码代表一个微命令且各字段编码含义单独定义,与其他字段无关,这就是字段直接编码方式

这种方式可以缩短微指令字长,但因为要通过译码电路后再发出微命令,因此比直接编码方式慢

微命令字段分段的原则如下:

  1. 互斥性微命令分在同一段内,相容性微命令分在不同段内
  2. 每个小段中包含的信息位不能太多,否则将增加译码线路的复杂性和译码时间
  3. 一般每个小段还要留出一个状态,表示本字段不发出任何微命令,例如:当某字段的长度为 $3$ 位时,最多只能表示 $7$ 个互斥的微命令,$000$ 表示不操作

字段间接编码方式

一个字段的某些微命令需由另一个字段中的某些微命令来解释,由于不是靠字段直接译码发出的微命令,故称为字段间接编码,又称隐式编码

这种方式可进一步缩短微指令字长,但因削弱了微指令的并行控制能力

因此,通常作为字段直接编码方式的一种辅助手段

【微指令地址形成方式】

后继微地址的形成主要有以下两大基本类型:

  • 断定方式:直接由微指令的下地址字段指出,微指令格式中设置一个下地址字段,由微指令的下地址字段直接指出后继微指令的地址
  • 操作码方式:根据机器指令的操作码形成。当机器指令取至指令寄存器后,微指令的地址由操作码经微地址形成部件形成

而微指令序列地址的形成方式有以下几种:

  1. 增量计数器法:即 $(CMAR)+1\rightarrow CMAR$,适用于后继微指令的地址是连续的情况
  2. 根据各种标志决定微指令分支转移的地址
  3. 通过网络测试形成
  4. 由硬件直接产生微程序入口地址

当电源加电后,第一条微指令的地址可由专门的硬件电路产生,也可由外部直接向 CMAR 输入微指令的地址,这个地址即为取指周期微程序的入口地址

【微指令格式】

微指令格式与微指令的编码方式有关,通常分水平型微指令、垂直型微指令、混合型微指令

1.水平型微指令

从编码方式看,直接编码、字段直接编码、字段间接编码和混合编码都属水平型微指令

指令字中的一位对应一个控制信号,有输出时为 $1$,否则为 $0$,一条水平型微指令定义并执行几种并行的基本操作

水平型微指令的微程序短,执行速度快,但是微指令长,编写微程序较麻烦

2.垂直型微指令

一条垂直型微指令只能定义并执行一种基本操作,垂直型微指令的特点是采用类似机器指令操作码的方式,在微指令中设置微操作码字段,采用微操作码编译法,由微操作码规定微指令的功能

垂直型微指令格式的微指令短、简单、规整,便于编写微程序,但是微程序长,执行速度慢,工作效率低

3.混合型微指令

混合型微指令是在垂直型的基础上增加一些不太复杂的并行操作

该方式的微指令较短,仍便于编写,同时微程序也不长,执行速度较快

【微程序控制单元的设计步骤】

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

无论是组合逻辑设计,还是微程序设计,对应相同的 CPU 结构,两种控制单元的微操作命令和节拍安排都是极相似的,如微程序控制单元在取指阶段发出的微操作命令及节拍安排如下:

  • $T_0$:$PC\rightarrow MAR,1\rightarrow R$
  • $T_1$:$M(MAR) \rightarrow MDR,(PC)+1\rightarrow PC$
  • $T_2$:$MDR\rightarrow IR,OP(IR)\rightarrow$ 微地址形成部件

与硬布线控制单元相比,只在 $T_2$ 节拍内的微操作命令不同

微程序控制单元在 $T_2$ 节拍内要将指令的操作码送至微地址形成部件,即 $OP(IR)\rightarrow $ 微地址形成部件,以形成该条机器指令的微程序首地址,而硬布线控制单元在 $T_2$ 节拍内要将指令的操作码送至指令译码器,以控制 $CU$ 发出相应的微命令,即 $OP(IR)\rightarrow ID$

如果把一个节拍 $T$ 内的微操作安排在一条微指令中完成,上述微操作对应 $3$ 条微指令,但是由于微程序控制的所有控制信号都来自微指令,而微指令又存在控存中,因此,欲完成上述这些微操作,必须先将微指令从控存中读出,即必须先给出这些微指令的地址

在取指微程序中,除第一条微指令外,其余微指令的地址均由上一条微指令的下地址字段直接给出,因此上述每一条微指令都需增加一个将微指令下地址字段送至 $CMAR$ 的微操作,记为 $Ad(CMDR)\rightarrow CMAR$

取指微程序的最后一条微指令,其后继微指令的地址是由微地址形成部件形成的,即微地址形成部件$\rightarrow CMAR$,为反映该地址与操作码有关,故记为:$OP(IR)\rightarrow$ 微地址形成部件 $\rightarrow CMAR$

综上所述,考虑到需要形成后继微指令地址,上述分析的取指操作共需 $6$ 条微指令完成,即:

  • $T_0$:$PC\rightarrow MAR,1 \rightarrow R$
  • $T_1$:$Ad(CMDR)\rightarrow CMAR$
  • $T_2$:$M(MAR)\rightarrow MDR,(PC)+1\rightarrow PC$
  • $T_3$:$Ad(CMDR) \rightarrow CMAR$
  • $T_4$:$MDR\rightarrow IR$
  • $T_5$:$OP(IR)\rightarrow $ 微地址形成部件 $\rightarrow CMAR$

执行阶段的微操作命令及节拍安排,分配原则类似,但与硬布线控制单元微操作命令的节拍安排相比,多了将下一条微指令地址送至 $CMAR$ 的微操作命令,即:$Ad(CMDR)\rightarrow CMAR$,此外,其余的微操作命令与硬布线控制单元相同

确定微指令格式

微指令格式包括微指令的编码方式、后继微指令地址的形成方式和微指令字长等

根据微操作个数决定采用何种编码方式,以确定微指令的操作控制字段的位数,由微指令数确定微指令的顺序控制字段的位数,最后按操作控制字段位数和顺序控制字段位数就可确定微指令字长

编写微指令码点

根据操作控制字段每一位代表的微操作命令,编写每一条微指令的码点

【动态微程序设计和毫微程序设计】

动态微程序设计

在一台微程序控制的计算机中,假如能根据用户的要求:变微程序,那么这台机器就具有动态微程序设计功能

动态微程序的设计需要可写控制寄存器的支持,否则难以改变微程序的内容

实现动态微程序设计可采用可擦除可编程只读存储器(EPROM)

毫微程序设计

在普通的微程序计算机中,从主存取出的每条指令是由放在控制存储器中的微程序来解释执行的,通过控制线对硬件进行直接控制

如果硬件不由微程序直接控制,而是通过存放在第二级控制存储器中的毫微程序来解释的,这个第二级控制存储器称为毫微存储器,直接控制硬件的是毫微微指令

【硬布线和微程序控制器的对比】

硬布线控制器的优点是由于控制器的速度取决于电路延迟,所以速度快;缺点是由于将控制部件看做专门产生固定时序控制信号的逻辑电路,所以把用最少元件和取得最高速度作为设计目标,一旦设计完成,不可能通过其他额外修改添加新功能

微程序控制器的优点是同组合逻辑控制器相比,微程序控制器具有规整性、灵活性、可维护性等一系列优点;缺点是由于微程序控制器采用了存储程序原理,所以每条指令都要从控制存储器中取一次,影响了速度

为了便于比较,下面以表格的形式对比二者的不同

感谢您对我的支持,让我继续努力分享有用的技术与知识点!