6.10-微程序控制器
微程序控制器基本思想
- 硬布线:同步逻辑,繁,快,贵,难改
1)一条指令多个时钟周期
2)一个时钟周期一个状态
3)一个状态对应一组并发信号
4)如果需要新增一条指令,这些所有的状态机,以及对应的硬布线控制器的组合逻辑,要全部重新设计,修改增加比较复杂
- 微程序:存储逻辑,简,慢,廉,,易改
在硬布线控制器里面,一条指令会对应多个周期,每个周期实际上对应一个状态,一个状态就会产生一组可以并发的控制信号,注意在这里面一个时钟周期里面,对应一组可以并发的信号,而这个信号逻辑是通过组合逻辑电路实现的,可以换个思路,如果把这组可以并发的信号,事先存储在一个存储器里面,那么就可以有效的规避,设计这么复杂的组合逻辑电路,这就是早期存储程序的微程序设计的基本思想,将我们并发的信号存储成微指令,一条指令对应多个时钟周期,就安排多条微指令,一个微指令就是一组并发的控制信号,所以状态机里面的状态字,就演变成了我们微程序里面的控制存储其里面的微程序地址
- 将并发信号
- 一条指令对应多个微指令
- 状态等同存储器地址
微程序控制器的基本原理
- 微程序是利用软件方法来设计硬件的技术
- 将完成指令所需要的控制信号按格式编写成微指令,存放到控制存储器
- 一条机器指令对应一段微指令(多条微指令)
- 指令取指执行->微程序的执行->执行多条微指令->依次生成控制信号
- 微程序采用存储技术和程序设计相结合,回避复杂的同步时序设计逻辑
单总线架构CPU,微程序设计的实现
操作控制字段
- 我们将一组并发的信号封装存一条微指令,将整个单总线架构里面所有的控制点都在微指令中进行体现
- 微指令中操作控制字段,每一位对应一个控制信号,整个控制信号我们也也称为微命令,一个微命令会带来一个微操作,会带来执行部件的动作,同一时刻会给出多个操作信号,和硬布线时序是一样的
- 有了操作控制字段,一位对应一个控制信号以后,这条微指令在执行的时候就非常简单,因为这些信号都是链接到功能部件的控点,所以通过控制总线,把这些控制的比特位连接到控点,这一个微指令就可以执行
顺序控制字段:用于控制微程序的执行顺序
- 判别逻辑微0,下一条微指令地址从下址字段获取,否则按照约定规则生成
- 判别字段不为0,下址字段无效,按照事先约定规则执行
程序,微程序,指令,微指令对应关系
- 给出一个主存,在主存中存放的是程序,假设给出一个MIPS指令,构成的程序里面一共有五条指令,所以我们的机器指令是存放在主存中的,指令构成程序,而程序执行有赖于机器指令的执行,而机器指令在微程序控制器,每一条机器指令都会对应控存里面的一段微程序
- 假设第一条指令R型指令32这是一条加法指令,对应这一段微程序,需要两条微指令
- Load指令在执行阶段,需要三条微指令,,SW指令对应两条微指令
- 在指令控存的最上面有两条微指令,这两条微指令是负责取指令的微程序,一段微程序包括一条或多条微指令,取指微指令的第二条微指令里面有一个红色的标记这是要给判断字段,红色表示最后一条微指令的字段是有效的,是非0的表示当执行到这条微指令的时候,要根据指令的功能进行跳转,有可能要跳转到下面的LW指令的这个微程序,也可能是加法指令的微程序,红色标致就是用来进行微程序执行顺序的控制,根据指令功能跳转到不同的位置,每一条指令执行完毕之后,下一条微指令都应该回到取指微指令,完成不断循环
微程序控制器组成原理框图(下址字段)
- 给出指令寄存器IR,微程序控制器的,最基本的输入,它将指令的操作码,送到一个地址转移逻辑中,生成不同指令微程序入口地址,每一条指令完成取指令之后,要进入到不同的执行状态,就是进入到不同的微指令入口,地址转移逻辑负责这个功能
- 有了入口地址之后,在经过一个多路选择器进行选择,有可能走不同指令的入口地址,也有可能直接由微指令的微指令的下址字段给出的下址部分,由判别字段来选择,当判别字段为1,表示要跳转,要根据指令的功能选择不同的微程序入口如果判别字段为0那么微指令字段的下址字段就变成了下一条指令的地址,得到正确的微地址之后,送入到为地址寄存器中,微地址寄存器受时钟控制,基本的时钟脉冲,每来一个时钟对应的微地址寄存器会重新更新新的这样一个地址,地址输入到控存,控存存放微程序,通常采用ROM来实现,也有容RAM,就会得到一条微指令
- 将微指令进行解析一部分用来形成下址字段,一部分判别字段,形成下一条指令的微指令地址,微操作控制字段,就是生成的需要并发的操作控制信号,这些信号会送到对应的功能部件,这些信号不需要执行,只需要链接到执行的控制点就可以了
- 整个框架,系统初始化上电的时候uAR初始值为0,代表最开始需要访问的是0号存储单元的微指令,上电后就要进入取机器指令执行机器指令的循环,从0号开始执行微指令,依次执行1,2号指令,当执行指令最后一条微指令执行的时候这条微指令的判别字段一定是非0的根据这个判断字段要进行地址跳转,由我们的地址转移逻辑,根据指令的操作码翻译成在控存里面的,不同的入口地址。地址转移逻辑的设计,比较简单,根据不同的指令把指令的微程序地址安排好放在控存里面,输出和输入是唯一对应的
微程序的优势劣势
- 速度慢,访存频繁,成本低廉
- 设计规整,设计简单,易于修改,扩展指令系统功能
- 硬布线执行速度快,设计复杂,代价昂贵,不变修改