2024.06.26:计算机组成原理微程序学习笔记
第19节 控制器
- 9.1 硬布线控制器(408基本不考)
- 9.2 微程序控制器(好好学)
- 9.2.1 微程序
- (1) 基本概念
- (2) 控制器的组成
- (3) 控制器的工作过程
- 9.2.2 微指令
- (1) 编码方式(如何形成控制信号?)
- 直接编码方式
- 字段直接编码方式
- 字段间接编码方式(知道间接体现在哪里)
- (2) 地址形成方式
- (3) 指令格式
- 水平型微指令
- 垂直型微指令
CPU是由运算器和控制器组成,运算器去执行
控制器的作用就是在指令执行的时候给它发出控制信号,控制这些CPU中的部件取协调工作,以完成指令想要执行的操作
9.1 硬布线控制器(408基本不考)
硬布线控制器其实就是组合逻辑的电路去组成的,408对于电路的考察是基本不会去涉及的。硬布线控制器也就是组合逻辑控制器,它的主要思想是通过设计这个控制器的电路,通过这些器件去发出某一个指令的控制信号
- 由复杂的组合逻辑门电路以及触发器构成,也称组合逻辑控制器
- 根据指令的要求、当前的时序、内外部件的状态,按时间顺序发送一系列微操作控制信号
- 速度快,设计复杂,不易修改和扩展
- IR中会存放即将要执行的机器指令,根据这个操作码的译码,我们会对这个指令前面的操作码进行一个译码,然后传到控制单元CU中
- 控制单元会参考主频(时钟信号)发出的,参考时序以及标志(PSW)
- 按照时间的顺序去发送这一系列的控制信号
9.2 微程序控制器(好好学)
微程序控制器是一个偏软件的控制器,它会把一条指令给你编成一个微程序,就相当于给你复制了一个CPU在控制器里面,然后对每一条机器指令,再去完成这样一个微程序
9.2.1 微程序
微程序控制器的执行思路就是微程序内部会有一个(控制存储器),这个存储器类比了计算机系统中的主存,它会用来存一个一个的微程序。
什么是微程序呢?对于一个机器可能执行的所有的机器指令,每一条机器指令,这个系统都会给它编写一个微程序。
也就是说我想要执行这条机器指令,它在控制器内部呢,会有一个微程序。这个微程序就是存储在控制存储器当中,它是完全类比于主存器设计的
这个微程序又是由一条一条的微指令组成的,一个微指令可以发出多个操作或者说微命令
那么整体的全局来看,IR会给控制器去提供一条机器指令,那么控制器要做的操作呢,是根据这条机器指令,发出相应的控制信号。那机器指令呢会传入到控制器中,控制器呢会在控制存储器里面去寻找这一条机器指令对应的这个微程序,然后去执行微程序里面的微指令,每一条微指令都可以发出不同的微操作信号,这样就可以把控制信号发出去了,就给到了控制器外面的这些器件,它们就会根据这些控制信号来执行自己想要做的操作。
其实不难发现,微程序控制器的设计就是完全仿照整个计算机系统,在这个控制器外部,我们就是根据我想执行一个程序,而这个程序里面有多条机器指令。对应的机器指令,我们就会把它放到控制器里面,然后让它去通过执行微程序,产生这个控制信号,然后再传出去,然后CPU中的其他硬件就可以根据这个控制信号去完成相应的操作,所以里里外外它是有照应关系的
(1) 基本概念
- 微地址:存放微指令的控制存储器的单元地址
- 微指令:每条微指令都存放在控制器的一个控制存储器单元中
-
- 操作控制字段(微操作码):产生操作控制信号
-
- 顺序控制字段(微地址码):控制产生下一条要执行的微指令地址
- 微周期:从控制存储器中读取一条微指令并执行相应微操作所需时间
- 控制存储器CM:存放微程序,在CPU的内部
- 微地址寄存器CMAR:用于存放控制存储器的读写微指令的地址
- 微指令寄存器CMDR/uIR:用于存放从控制存储器中读出的微指令
- 微命令:微程序控制器中控制部件向执行部件发出的控制信号
(2) 控制器的组成
微程序控制器内部的组成以及我们是如何将一条机器指令的操作码解析成对应的控制信号的
控制器外部会有IR,存放机器指令这样一个部件。根据IR中存放的机器指令它的OP(操作码)字段,将操作码字段传入(微地址形成部件)来形成对应的微程序的地址(具体不需要知道)
微程序控制器也需要参考(标志)(CLK)(IR)
微程序的入口地址传到CMAR里面,然后通过地址译码,将这个地址对应的那个微程序对应的地方在(控制存储器)中指出,也就找到了对应的微程序的第一条微指令
将微指令取到CMDR(微IR),然后操作码字段就可以发出对应的控制信号
(3) 控制器的工作过程
因为上述取址过程启发我们对于取指令这个操作也需要控制器去发出控制信号,驱动这些部件去完成相应的操作,控制这些数据在这些部件之间流动。
又由于所有的机器指令,它们的取指操作是一样的,那么我们就有必要给每一个机器指令都单独去写,关于取指这部分的微程序,一个取指的微程序,不管你去执行什么样的机器指令,我们都去调用这样一个微程序。
公共的取指微程序,这个微程序是放在控制存储器CM里面的
- 取机器指令
机器开始运行时,自动将取指微程序的入口地址送⼊CMAR,并从CM中读出取指微程序中的微指令送
入CMDR,发出取机器指令的控制信号 - 机器指令的OP字段->微地址的形成部件,产生该机器指令对应的微程序入口地址,送入CMAR
- 从CM中逐条取出对应的微指令并执行
- 执行完对应于一条机器指令的⼀个微程序后,又回到取指微程序的入口地址,继续第1步,以完成取下⼀条指令的公共操作
9.2.2 微指令
(1) 编码方式(如何形成控制信号?)
直接编码方式
操作码字段是由一位一位的小格子构成的,每一位都代表一个微命令,这个微命令就对应着数据通路中的一个微操作
字段直接编码方式
- 将微命令字段分成若干小字段,把互斥性微命令组合在同一字段中,相容性微命令组合在不同字段中
- 每个字段独立编码,每种编码代表一个微命令且各字段编码含义单独定义
- 一般每段留出一个状态,表示本字段不发出任何微指令
字段间接编码方式(知道间接体现在哪里)
一个字段的某些微命令需要由另一个字段中的某些微命令来解释
(2) 地址形成方式
(3) 指令格式
水平型微指令
定义并执行(n种)并行的基本操作
垂直型微指令
定义并执行(1种)并行的基本操作