【硬布线控制单元】
硬布线控制器的基本原理是根据指令的要求、当前的时序及外部和内部的状态情况,按时间的顺序发送一系列微操作控制信号,它由复杂的组合逻辑门电路和一些触发器构成,因此又称为组合逻辑控制器
指令的操作码是决定控制单元发出不同操作命令(控制信号)的关键,为了简化控制单元 CU 的逻辑,将指令的操作码译码和节拍发生器从 CU 分离出来,便可得到简化的控制单元图
CU 的输入信号来源如下:
- 经指令译码器译码产生的指令信息:现行指令的操作码决定了不同指令在执行周期所需完成的不同操作,故指令的操作码字段是控制单元的输入信号,它与时钟配合产生不同的控制信号
- 时序系统产生的机器周期信号和节拍信号:为了使控制单元按一定的先后顺序、一定的节奏发出各个控制信号,控制单元必须受时钟控制,即一个时钟脉冲使控制单元发送一个操作命或发送一组需要同时执行的操作命令
- 来自执行单元的反馈信息即标志:控制单元有时需依赖 CPU 当前所处的状态产生控制信号
节拍发生器产生各机器周期中的节拍信号,使不同的微操作命令 C(控制信号)按时间的先后发出,个别指令的操作不仅受操作码控制,还受状态标志控制,因此 CU 的输入来自操作码译码电路 ID、节拍发生器及状态标志,其输出至 CPU 内部或外部控制总线上
此外,控制单元还接收来自系统总线(控制总线)的控制信号,如:中断请求、DMA 请求等
【硬布线控制器的时序系统及微操作】
时序系统
- 时钟周期:用时钟信号控制节拍发生器,可以产生节拍,每个节拍的宽度正好对应一个时钟周期,在每个节拍内机器可完成一个或几个需同时执行的操作
- 机器周期:机器周期可看做所有指令执行过程中的一个基准时间,不同指令的操作不同,指令周期也不同,访问一次存储器的时间是固定的,因此,通常以存取周期作为基准时间,即内存中读取一个指令字的最短时间作为机器周期,在存储字长等于指令字长的前提下,取指周期也可看做机器周期
- 指令周期:一条指令可分为取指周期、间址周期、执行周期这三个工作周期,对于不同的指令,控制单元需发出各种不同的微操作命令
- 微操作:执行程序的过程中,在一个机器周期里可完成若干微操作,每个微操作都需一定的时间,可用时钟信号来控制产生每一个微操作命令
微操作命令分析
取指周期
无论是什么指令,取指周期都需有下列微操作命令:
- $PC \rightarrow MAR$:现行指令地址 $\rightarrow MAR$
- $1\rightarrow R$:命令存储器读
- $M(MAR) \rightarrow MDR$:现行指令从存储器中读至 $MDR$
- $MDR \rightarrow IR$:现行指令 $\rightarrow IR$
- $OP(IR) \rightarrow CU$:指令的操作码 $\rightarrow CU$ 译码
- $(PC)+1 \rightarrow PC$:形成下一条指令的地址
间址周期
间址周期完成取操作数地址的任务,具体微操作命令如下:
- $Ad(IR) \rightarrow MAR$:将指令字中的形式地址地址码 $\rightarrow MAR$
- $1\rightarrow R$:命令存储器读
- $M(MAR) \rightarrow MDR$:将有效地址从存储器读至 $MDR$
执行周期
执行周期的微操作命令视不同指令而定,下面给出三类常用的指令的微操作命令
1.非访存指令
指令 | 作用 | 微操作 |
---|---|---|
CLA | 清 $ACC$ | $0\rightarrow ACC$ |
COM | 取反 | $\overline{ACC}\rightarrow ACC$ |
SHR | 算术右移 | $L(ACC)\rightarrow R(ACC),ACC_0\rightarrow ACC_0$ |
CSL | 循环左移 | $R(ACC)\rightarrow L(ACC),ACC_0\rightarrow ACC_n$ |
STP | 停机指令 | $0\rightarrow G$ |
2.访存指令
指令 | 作用 | 微操作 |
---|---|---|
ADD X | 加法指令 | $Ad(IR)\rightarrow MAR$ $1\rightarrow R$ $M(MAR)\rightarrow MDR$ $(ACC)+(MDR)\rightarrow ACC$ |
STA X | 存数指令 | $Ad(IR)\rightarrow MAR$ $1\rightarrow W$ $ACC\rightarrow MDR$ $MDR\rightarrow M(MAR)$ |
LDA X | 取数指令 | $Ad(IR)\rightarrow MAR$ $1\rightarrow R$ $M(MAR)\rightarrow MDR$ $MDR\rightarrow ACC$ |
3.转移指令
指令 | 作用 | 微操作 |
---|---|---|
JMP X | 无条件转移 | $Ad(IR)\rightarrow PC$ |
BAN X | 条件转移 | $A_0\cdot Ad(IR)+\overline{A_0}\cdot (PC) \rightarrow PC$ |
【CPU 控制方式】
控制单元控制一条指令执行的过程,实质上是依次执行一个确定的微操作序列的过程
由于不同指令所对应的微操作数及复杂程度不同,因此,每条指令和每个微操作所需的执行时间也不同,主要有以下三种控制方式
1.同步控制方式
同步控制方式,就是系统有一个统一的时钟,所有的控制信号均来自这个统一的时钟信号。通常以最长的微操作序列和最烦琐的微操作作为标准,采取完全统一的、具有相同时间间隔和相同数目的节拍作为机器周期来运行不同的指令
同步控制方式的优点是控制电路简单,缺点是运行速度慢
2.异步控制方式
异步控制方式不存在基准时标信号,各部件按自身固有的速度工作,通过应答方式进行联络
异步控制方式的优点是运行速度快,缺点是控制电路比较复杂
3.联合控制方式
联合控制方式是介于同步、异步之间的一种折中
这种方式对各种不同的指令的微操作实行大部分采用同步控制、小部分采用异步控制的办法
【硬布线控制单元设计步骤】
列出微操作命令的操作时间表
先根据微操作节拍安排,列出微操作命令的操作时间表,操作时间表中包括各个机器周期、节拍下的每条指令完成的微操作控制信号
如下表,列出了 CLA、COM、SHR 等机器指令微操作命令的操作时间表,表中 $FE$、$IND$ 和 $EX$ 为 CPU 工作周期标志,$T_0\sim T_2$ 为节拍,$I$ 为间址标志,在取指周期的 $T_2$ 时刻
若测得 $I=1$,则 $IND$ 触发器置 $1$,标志进入间址周期;若 $I=0$,则 $EX$ 触发器置 $1$,标志进入执行周期
同理,在间址周期的 $T_2$ 时刻,若测得 $IND=0$(表示一次间接寻址),则 $EX$ 触发器置 $1$,进入执行周期;若测得 $IND=1$(表示多次间接寻址),则继续间接寻址
在执行周期的 $T2$ 时刻,CPU 要向所有中断源发中断查询信号,若检测到有中断请求并满足响应条件,则 $INT$ 触发器置 $1$,标志进入中断周期
进行微操作信号综合
在列出微操作时间表之后,即可对它们进行综合分析、归类,根据微操作时间表可以写出各微操作控制信号的逻辑表达式并进行适当的简化
表达式一般包括下列因素:
根据上表便可列出每一个微操作命令的初始逻辑表达式,经化简、整理便可获得能用现有门电路实现的微操作命令逻辑表达式
例如:可写出 $M(MAR)\rightarrow MDR$ 微操作命令的逻辑表达式:
式中,$ADD$、$STA$、$LDA$、$JMP$、$BAN$ 均来自操作码译码器的输出
画出微操作命令的逻辑图
根据逻辑表达式可画出对应每一个微操作信号的逻辑电路图,并用逻辑门电路实现
例如:$M(MAR)\rightarrow MDR$ 的逻辑表达式所对应的逻辑图如下图所示