微程序设计的基本原理是什么?

微程序设计的基本原理是什么?,第1张

微程序设计技术

微程序设计的关键是如何确定微指令的结构(包括微指令编码和微地址形成方法)。

微指令设计追求的目标 (1) 有利于缩短微指令字长度;

(2) 有利于减小控制存储器的容量;

(3) 有利于提高微程序的执行速度;

(4) 有利于对微指令的修改;

(5) 有利于微程序设计的灵活性。

一、微指令编码

(1)直接表示法---微指令 *** 作控制宇段中的每一位代表一个微命令

· 优点:简单直观,其输出可直接用于控制;

· 缺点:微指令字较长,因而使控制存储器容量较大。

(2)编码表示法---把一组相斥性的微命令信号组成一个小组(即一个字段),然后通过小组(字段)译码器产生 *** 作控制信号。

· 优点:可以用较少的二进制信息位表示较多的微命令信号,使微指令字长大大缩短;

· 缺点:由于增加了译码延时,微程序的执行速度略有减慢。

(3)混合表示法---把直接表示法与编码表示法混合使用,以便综合考虑微指令字长、灵活性和执行微程序速度等方面的要求。

在微指令的控制字段中,每一位代表一个微命令,在设计微指令时,是否发出某个微命令,只要将控制字段中相应位置成"1"或"0",这样就可打开或关闭某个控制门,这就是直接控制法.

在6.3节中所讲的就是这种方法.但在某些复杂的计算机中,微命令甚至可多达三四百个,这使微指令字长达到难以接受的地步,并要求机器有大容量控制存储器,为了改进设计出现了以下各种编译法.

6.4.1 微指令的编译法(编码译码方法)(2)

2.字段直接编译法

在计算机中的各个控制门,在任一微周期内,不可能同时被打开,而且大部分是关闭的(相应的控制位为"0").所谓微周期,指的是一条微指令所需的执行时间.如果有若干个(一组)微命令,在每次选择使用它们的微周期内,只有一个微命令起作用,那么这若干个微命令是互斥的.

例如,向主存储器发出的读命令和写命令是互斥的又如在ALU部件中,送往ALU两个输入端的数据来源往往不是唯一的,而每个输入端在任一微周期中只能输入一个数据,因此控制该输人门的微命令是互斥的.

选出互斥的微命令,并将这些微命令编成一组,成为微指令字的一个字段,用二进制编码来表示, 就是字段直接编译法.

6.4.1 微指令的编译法(编码译码方法)(3)

例如,将7个互斥的微命令编成一组,用三位二进制码分别表示每个微命令,那么在微指令中,该字段就从7位减成3位,缩短了微指令长度.而在微指令寄存器的输出端,为该字段增加一个译码器,该译码器的输出即为原来的微命令.

6.4.1 微指令的编译法(编码译码方法)(4)

字段长度与所能表示的微命令数的关系如下:

字段长度 微命令数

2位 2~3

3位 4~7

4位 8~15

一般每个字段要留出一个代码,表示本段不发出任何微命令,因此当字段长度为3位时,最多只能表示7个互斥的微命令,通常代码000表示不发微命令.

6.4.1 微指令的编译法(编码译码方法)(5)

3.字段间接编译法

字段间接编译法是在字段直接编译法的基础上,进一步缩短微指令字长的一种编译法.

如果在字段直接编译法中,还规定一个字段的某些微命令,要兼由另一字段中的某些微命令来解释,称为字段间接编译法.

本方法进一步减少了指令长度,但很可能会削弱微指令的并行控制能力,因此通常只作为直接编译法的一种辅助手段.

6.4.1 微指令的编译法(编码译码方法)(6)

字段A(3位)的微命令还受字段B控制,当字段B发出b1微命令时,字段A发出a1,1,a1,2,…,a1,7中的一个微命令而当字段B发出b2微命令时,字段A发出a2,1,a2,2,…,a2,7中的一个微命令,仅当A为000时例外,此时什么控制命令都不产生.

6.4.1 微指令的编译法(编码译码方法)(7)

4.常数源字段E

在微指令中,一般设有一个常数源字段E就如指令中的直接 *** 作数一样.E字段一般仅有几位,用来给某些部件发送常数,故有时称为发射字段.

该常数有时作为 *** 作数送入ALU运算有时作为计算器初值,用来控制微程序的循环次数等.

6.4.2 微程序流的控制 (1)

当前正在执行的微指令,称为现行微指令,现行微指令所在的控制存储器单元的地址称现行微地址,现行微指令执行完毕后,下一条要执行的微指令称为后继微指令,后继微指令所在的控存单元地址称为后继微地址.

所谓微程序流的控制是指当前微指令执行完毕后,怎样控制产生后继微指令的微地址.

与程序设计相似,在微程序设计中除了顺序执行微程序外还存在转移功能和微循环程和微子程序等,这将影响下址的形成.

下面介绍几种常见的产生后继微指令地址的方法.

6.4.2 微程序流的控制 (2)

(1)以增量方式产生后继微地址.

在顺序执行微指令时,后继微地址由现行微地址加上一个增量(通常为1)形成的而在非顺序执行时则要产生一个转移微地址.

机器加电后执行的第一条微指令地址(微程序入口)来自专门的硬件电路,控制实现取令 *** 作,然后由指令 *** 作码产生后继微地址.接下去,若顺序执行微指令,则将现行微地址主微程序计数器( PC中)+1产生后继微地址若遇到转移类微指令,则由 PC与形成转移微地址的逻辑电路组合成后继微地址.

6.4.2 微程序流的控制 (3)

6.4.2 微程序流的控制 (4)

(2)增量与下址字段结合产生后继微地址

将微指令的下址字段分成两部分:转移控制字段BCF和转移地址字段BAF,当微程序实现转移时,将BAF送 PC,否则顺序执行下一条微指令( PC+1).

执行微程序条件转移时,决定转移与否的硬件条件有好几种.例如,"运算结果为零","溢出","已完成指定的循环次数"等.

我们假设有八种转移情况,定义了八个微命令(BCF取3位),在图中设置计数器CT用来控制循环次数.如在执行乘(或除)法指令时,经常采用循环执行"加,移位"(或减,移位)的方法,指令开始执行时,在CT中置循环次数)每执行一次循环,计数器减1,当计数器为零时结束循环.又考虑到执行微子程序时,要保留返回微地址,因此图中设置了一个返回寄存器RR.

程序计数器PC工作原理如下:程序计数器是包含当前正在执行的指令的地址,当某个指令获取,程序计数器的存储地址加-一,指向顺序中的下一个指令。在程序开始执行前,必须将它的起始地址,即第一条指令所在的内存单元地址送入程序计数器。当执行指令时,处理器将自动修改PC的内容,即每执行一条指令PC增加一个量,这个量等于指令所含的字节数,以便使其保持的总是将要执行的下一条指令的地址。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单的对PC加1,但是,当遇到转移指令如JMP指令时,后继指令的地址必须从指令寄存器中的地址字段取得。在这种情况下,下一条从内存取出的指令将由转移指令来规定,而不像通常一样按顺序来取得。微程序计数器uPC工作原理如下:一般情况下,由 uPC+1来指向下条微指令在控存中的地址,只有遇到转移类微指令才会改变uPC的内容以实现微程序的转移。这种结构的优点是微指令的字长有效缩短,从而可减少控制存储器的容量。

两者在预置条件上的区别如下:(1)对于uPC,当RES=0时,uPC被清0:当IREN-=0时,在CK的上升沿,预置数据被打入uPC。指令总线(IBUS)上的数据可来自一片74HC245。当IREN=1时在CK的上升沿,uPC加1。(2)对于PC,当ELP=1时,LDPC=1,不允许PC被预置:当

ELP=0,IR3=0),IR2=0时,且Cy=l时,LDPC=非Cy,当PC被预置:当ELP=0,IR3=0,IR2=1时,且Z=1时,LDPC=非Z,当PC被预置当ELP=0,IR3=1,IR2=X时,LDPC=0,PC被预置。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7763813.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存