前言
前面我们学习了CU控制器的硬布线方式实现,硬布线方式完全采用逻辑电路来实现,适用于RSIC精简指令集;对于CSIC复杂指令集不适用,即可以采用以下即将要讲解的方式---------微程序控制方式来实现。
2.1微程序控制方式
在硬布线方式中,一条指令的执行被划分为了多个指令的执行周期,每个执行周期内,都有严格顺序的执行每一个微操作来实现指令的执行,即通过时序(时钟节拍和指令周期阶段)+指令操作码译码后的操作信号+状态 来决定CU要发出的控制信号;在微程序控制的方式中,将每一个指令执行所需要的所有微操作叫做一个微程序 ,所以任意一条指令的执行过程被封装成为了一个微程序,然后采用存储程序的方式将其都存储在存储器中,当一条指令的操作码被送至操作码译码电路,就可以找到存储在存储器中的微程序,并由CU发出相应的控制信号,从而实现指令的执行。
①控制存储器CM(Control Memery)
每条指令的微程序被存储在存储器中,那么存储在哪个存储器中呢?其每条指令对应的微程序被存储在控制存储器中,该存储器位于CU内部,由ROM组成,ROM具有非易失的特性,即掉电信息不丢失。
控存中也有类似于存储器中的MDR和MAR,控存中的MDR叫做CMDR ,用于存储从控存中取出的微指令 (微指令就有点类似于指令,微程序由很多个微指令组成),别名也叫 μ I R \mu IR μIR ;对于控存中的MAR叫做CMAR ,用于存储此次要从控存读取的微指令的地址,别名叫做 μ P C \mu PC μPC。
微指令的格式如下,由操作控制字段+顺寻控制字段组成 ;操作控制字段指明此值CU的要发出的控制信号 ,顺序控制字段指令下一次要执行的微指令的地址。
②指令操作码如何找到对应的微程序,并发出相应的控制信号
首先一条指令首先被取到IR寄存器,IR寄存器将操作码部分送入微地址形成部件,即寻找该操作码对应的微程序,形成的微程序地址会进一步送入顺序逻辑电路,同时各种标记标记信息和CLK的控制信号有效的情况下,才会进一步将微程序起始地址送入CMAR,是在各种控制信号允许的情况下才能被送入CMAR,CMAR中的地址数据进一步送入地址译码器,找到其在控存中存储的数据,将存储到数据送入CMDR,由微指令的操作控制字段直接发出相应的控制信号,由顺序控制字段指明下一个微指令的地址,将其送入顺序控制逻辑,控制下一条微指令的取出。
③那么对于一条指令的执行,其取址周期、间址周期和中断周期的微指令是否可以使用同一个呢?
一条指令的执行仍然分为取址阶段,间址阶段,执行阶段和中断阶段,其取址阶段、中断阶段和间址阶段所需要干的事情是一摸一样的,即可以使用同一个微指令来实现该功能,那么我们在存储微程序的时候是否可以不同存储每一条指令的所有周期的微操作,而只存取每条指令在执行周期内的微指令就可以,对于取址阶段,间址阶段和中断阶段共同使用一个微指令。
取址周期、间址阶段和中断阶段的微指令被单独存储,每条指令的执行周期对应的微程序也单独存储。
LDA
指令为例,假设取址周期已将下一条指令,即LDA指令取到IR中存储中,LDA指令的操作码部分就会被送入微地址形成部件 ,从而将地址输出到顺序逻辑电路,CLK以及标志也被送入顺序逻辑,标记比如此时是间接寻址,说明形成的微指令地址就是假地址,从而控制其产生间址周期的指令,若标记是直接寻址,就会直接的进行执行周期,从而产生执行的微指令信号,如MARout
MDRin
等。
- n条指令,需要的微程序(段)个数最少是n+1。
- 一条指令对应一个微程序。
2.2微指令的设计
①微指令的类型
在前面我们已经了解了微指令的格式了,微指令就是由微指令操作控制字段 +时序控制字段组成,操作控制字段给出各微操作信号,时序控制字段也叫下地址字段,给出下一个微指令地址。微指令本身又可以分为三种类型
- 水平型微指令:表示一个微指令包含多个微操作(微命令),即操作控制字段发出的微操作信号可以同时并行执行多个微操作。(执行速度快,缺点就是该种指令的字长较长,因为控制字段的每一位都对应一个微操作信号)
- 垂直型微指令:一个微指令只对应一个微操作。(执行速度慢,但微指令短,微程序就会很长)
- 混合型微指令:是两者的结合。
②微指令的编码方式
在前面我们知道了微指令的操作字段会直接给出各种微操作的控制信号,实际上这些控制信号的给出也有很多种方式,有直接编码方式,字段直接编码方式,字段间接编码方式。
- 直接编码方式:就是对操作控制字段采用直接编码的方式,即操作字段中的每一个bit位都表示一个微命令的信号;这种方式要是微命令的种类很多的话,就会导致其微指令字长特别的长。
- 字段直接编码方式:是将操作控制字段分成多个字段,每个字段中的微指令指令执行互斥,不同字段中的微指令可以并行执行;这样可以大大的降低微指令的字长。(每个字段需要留一个标志表示不操作)
- 字段间接编码方式:也叫隐式编码,这种方式进是得进行两次译码,才能得到最后的操作信号。
③微指令的下地址字段(如何找到下一个微指令的地址)
- 由微指令的下地址字段直接给出(也称断定方式)
- CMAR有自动加1的功能
- 由机器指令的操作码部分给出
- 又硬件电路直接给出
- 分支转移指令的地址
硬布线和微程序控制方式的对比
对比项 \ 类别 | 硬布线方式 | 微程序控制方式 |
---|---|---|
工作原理 | 逻辑电路+时序控制 | 存储微程序 |
速度 | 快 | 慢 |
应用场景 | RISC CPU | CISC CPU |
扩充性 | 难 | 容易 |
规整性 | 规整 | 不规整 |