第十章 控制单元的设计
本章以10条机器指令为例,介绍控制单元的两种设计方法。
第一节 组合逻辑设计
一、组合逻辑控制单元框图
从控制单元的外特性图中可以看出,指令的操作码是决定控制单元发出不同控制信号的
关键。为了简化控制单元的逻辑,将存放在IR的n位操作码经过一个译码电路产生2n个输
出, 这样,每对应一种操作码便有一个输出送至CU。当然,若指令的操作码长度可变,指
令译码线路将更复杂。
控制单元的时钟输入实际上是一个脉冲序列,其频率即为机器的主频,它使CU能按一
定的节拍(T)发出各种控制信号。 节拍的宽度应满足数据信息通过数据总线从源到目的所需
的时间。以时钟为计数脉冲,通过一个计数器,又称节拍发生器,便可产生一个与时钟周期
等宽的节拍序列。如果将指令译码和节拍发生器从CU中分离出来,便可得简化的控制单元
框图,如下图所示。
二、微操作的节拍安排
假设机器采用同步控制,每个机器周期包含3个节拍,而且CPU内部结构为非总线结构,
其中MAR和MDR分别直接和地址总线和数据总线相连,并假设IR的地址码部分与MAR之间
有通路。
安排微操作节拍时应注意三点:
第一,有些微操作的次序是不容改变的,故安排微操作节拍时必须注意微操作的先后顺
序。
第二,凡是被控制对象不同的微操作,若能在一个节拍内执行,应尽可能安排在同一个
节拍内,以节省时间。
第三,如果有些微操作所占的时间不长,应该将它们安排在一个节拍内完成,并且允许
这些微操作有先后次序。
按上述三条原则,以第九章中所分析的10条指令为例,其微操作的节拍安排如下:
1.取指周期微操作的节拍安排
①根据原则二,T0节拍可安排两个微操作:PC→MAR,1→R;
②根据原则二,T1节拍可安排M(MAR)→MDR和(PC)+1→PC两个微操作。
③T2节拍可安排MDR→IR,考虑到指令译码时间较短,根据原则三,可将指令译码OP(IR)
→ID也安排T2节拍内;
实际上(PC)+1→PC操作也可安排在T2节拍内,因一旦PC→MAR后,PC的内容就可修改。
2.间址周期微操作的节拍安排
T0 Ad(IR) →MAR,1→R
T1 M(MAR) →MDR
T2 MDR→Ad(IR)
3.执行周期微操作的节拍安排
·非访存指令
①清除累加器指令CLA。
该指令在执行周期只有一个微操作,按同步控制的原则,此操作可安排在T0~T2的任一
节拍内,其余节拍空,如
T0
T1
T2 0→AC
②累加器取反指令COM。
同理,用加器取反操作可安排在T0~T2的任一节拍中,即
T0
T1
T2
③算术右移一位指令SHR。
T0
T1
T2 L(AC)→R(AC),AC0→AC0
④循环左移一位指令CSL。
T0
T1
T2 R(AC)→R(AC),AC0→AC0(即ρ-1(AC))
⑤停机指令STP。
T0
T1
T2 0→G
·访存指令
①加法指令ADD X
T0 Ad(IR) →MAR, 1→R
T1 M(MAR) →MDR
T2 (AC)+(MDR)→AC,(该操作实际包括(AC) →ALU,(MDR) →ALU,ALU→AC)
②存数指令STA X。
T0 Ad(IR) →MAR, 1→W
T1 AC →MDR
T2 MDR→M(MAR)
③取数指令 LDA X。
T0 Ad(IR) →MAR, 1→R
T1 M(MAR) →MDR
T2 MDR→AC
·转移类指令
①无条件转移指令JMP X。
T0
T1
T2 Ad(IR)→PC
②有条件转移(负则转)指令BAN X。
T0
T1
T2
4.中断周期微操作的节拍安排
在执行周期的最后时刻, CPU要向所有中断源发中断查询信号,若检测到某个中断源
有请求,并且未被屏蔽又被排队选中,则在允许中断的条件下,CPU进入中断周期, 此时
CPU由中断隐指令完成下列操作(假设程序断点存入主存0号地址单元内):
T0 0→MAR, 1→W
T1 PC →MDR
T2 MDR→M(MAR),向量地址→PC
此外, CPU进入中断周期,由硬件置“0”允许中断触发器EINT,即关中断。
三、组合逻辑设计步骤
组合逻辑设计控制单元时,首先根据上述微操作的节拍安排,列出微操作命令的操作时
间表,然后写出每一个微操作命令(控制信号)的逻辑表达式,最后根据逻辑表达式画出相应
的组合逻辑电路图。
1.列出微操作命令的操作时间表
上表列出了上述10条机器指令微操作命令的操作时间表。表中FE、IND和EX为CPU
工作周期标志,T0~T2为节拍,I为间址标志,在取指周期的T2时刻,若测得I=1,则置“1”
IND触发器,标志进入间址周期;若I=0,则置“1”EX触发器,标志进入执行周期。同理,
在间址周期的T2时刻,若测得IND=0(表示一次间址),则置“1”EX,进入执行周期;若测
得IND=1(表示多次间址),则继续间接寻址。在执行周期的T2时刻,CPU要向所有中断源
发中断查询信号, 若检测到有中断请求并且满足响应条件,则置“1”INT触发器,标志进
入中断周期,表中未列出中断周期的微操作。表中第一行对应10条指令的操作码,代表不
同的指令。若某指令有表中所列的微操作命令,其对应的空格内为1。
2.写出微操作命令的最简逻辑表达式
纵览上表即可列出每一个微操作命令的初始逻辑表达式,经化简、整理便可获得能用现
成电路实现的微操作命令逻辑表达式。
例如,根据表可写出M(MAR)→MDR微命令的逻辑表达式:
M(MAR)→MDR
=FE·T1+IND·T1(ADD+STA+LDA+JMP+BAN)+EX·T1(ADD+LDA)
=T1{FE+IND(ADD+STA+LDA+JMP+BAN)+EX(ADD+LDA)}
式中ADD、STA、LDA、JMP、BAN均来自操作码译码器的输出。
3.画出微操作命令的逻辑图
对应每一个微操作命令的逻辑表达式都可画出一个逻辑图。如M(MAR)→MDR的逻辑表达
式所对应的逻辑图如下图所示,图中未考虑门的扇入系数。
当然,在设计逻辑图时要考虑门的扇入系数和逻辑级数。如果采用现成芯片,还需选择
芯片型号。
采用组合逻辑设计方法设计控制单元,思路清晰,简单明了,但因为每一个微操作命令
都对应一个逻辑电路,因此一旦设计完毕便会发现,这种控制单元的线路结构十分庞杂,也
不规范,犹如一棵大树,到处都是不规整的枝叉。而且指令系统功能越全,微操作命令就越
多,线路也越复杂,调试就更困难了。为了克服这些缺点,可采用微程序设计方案。但是,
随着RISC的出现,组合理辑设计仍然是设计计算机的一种重要方法。