第10章 控制单元的设计
一、组合逻辑设计
(一)组合逻辑控制单元框图
简化的控制单元框图,如图10-1所示。
图10-1 带译码和节拍输入的控制单元框图
(二)微操作的节拍安排
安排微操作节拍时应注意以下3点:
①有些微操作的次序是不容改变的,故安排微操作节拍时必须注意微操作的先后顺序;
②凡是被控制对象不同的微操作,若能在一个节拍内执行,应尽可能安排在同一个节拍内,以节省时间;
③如果有些微操作所占的时间不长,应该将它们安排在一个节拍内完成,并且允许这些微操作有先后次序。
(三)组合逻辑设计步骤
1.列出微操作命令的操作时间表
表10-1列出了上述10条机器指令微操作命令的操作时间表。
表10-1 操作时间表
2.写出微操作命令的最简逻辑表达式
纵览表10-1便可列出每一个微操作命令的初始逻辑表达式,经化简、整理便可获得能用现成电路实现的微操作命令逻辑表达式。
3.画出微操作命令的逻辑图
对应每一个微操作命令的逻辑表达式都可画出一个逻辑图。例如,M(MAR)→MDR的逻辑表达式所对应的逻辑图如图10-2所示,图中未考虑门的扇入系数。
图10-2 产生M(MAR)→MDR命令的逻辑图
二、微程序设计
(一)微程序设计思想的产生
微程序设计思想是英国剑桥大学教授M.V.Wilkes在1951年首先提出的。微程序设计省去了组合逻辑设计过程中对逻辑表达式的化简步骤,无须考虑逻辑门级数和门的扇人系数,使设计更简便,而且由于控制信号是以二进制代码的形式出现的,因此只要修改微指令的代码,就可改变操作内容,便于调试、修改,甚至增删机器指令,有利于计算机仿真。
(二)微程序控制单元框图及工作原理
1.机器指令对应的微程序
采用微程序设计方法设计控制单元的过程就是编写每一条机器指令的微程序,它是按执行每条机器指令所需的微操作命令的先后顺序而编写的,因此,一条机器指令对应一个微程序,如图10-3所示。图中每一条机器指令都与一个以操作性质命名的微程序对应。
图10-3 不同机器指令所对应的微程序
2.微程序控制单元的基本框图
图10-4示意了微程序控制单元的基本组成。
图10-4 微程序控制单元的基本组成
3.工作原理
(1)取指阶段
①将取指周期微程序首地址M→CMAR;
②取微指令:
将对应控存M地址单元中的第一条微指令读到控存数据寄存器中,记作CM(CMAR)→CMDR。
③产生微操作命令:
第一条微指令的操作控制字段中为“1”的各位发出控制信号,如PC→MAR,1→R,命令主存接收程序首地址并进行读操作。
④形成下一条微指令的地址:
此微指令的顺序控制字段指出了下一条微指令的地址为M+1,将M+1送至CMAR,即 Ad(CMDR)→CMAR。
⑤取下一条微指令:
将对应控存M+1地址单元中的第二条微指令读到CMDR中,即CM(CMAR)→CMDR。
⑥产生微操作命令:
由第二条微指令的操作控制字段中对应“1”的各位发出控制信号,如M(MAR)→MDR使对应主存2000H地址单元中的第一条机器指令从主存中读出送至MDR中。
⑦形成下一条微指令的地址:
将第二条微指令下地址字段指出的地址M+2送至CMAR,即Ad(CMDR)→CMAR
以此类推,直到取出取指周期最后一条微指令,并发出微操作命令为止。此时第一条机器指令“LDA X”已存至指令寄存器IR中。
(2)执行阶段
①取数指令微程序首地址的形成:
当取数指令存入IR后,其操作码0P(IR)直接送到微地址形成部件,该部件的输出即为取数指令微程序的首地址P,且将P送至CMAR,记作OP(IR)→微地址形成部件→CMAR。
②取微指令:
将对应控存P地址单元中的微指令读到CMDR中,即CM(CMAR)→CMDR。
③产生微操作命令:
由微指令操作控制字段中对应“1”的各位发出控制信号,如Ad(IR)→MAR,1→R.命令主存读操作数。
④形成下一条微指令的地址:
将此条微指令下地址字段指出的P+1送至CMAR,即Ad(CMDR)→CMAR。
⑤取微指令,即CM(CMAR)→CMDR。
⑥产生微操作命令。
(三)微指令的编码方式
1.直接编码(直接控制)方式
在微指令的操作控制字段中,每一位代表一个微操作命令。如图10-5所示。
图10-5 直接编码方式
2.字段直接编码方式
这种方式就是将微指令的操作控制字段分成若干段。将一组互斥的微操作命令放在一个字段内,通过对这个字段译码,便可对应每一个微命令,如图10-6所示。这种方式因靠字段直接译码发出微命令,故又有显式编码之称。
图10-6 字段直接编码方式
3.字段间接编码方式
这种方式一个字段的某些微命令还需由另一个字段中的某些微命令来解释,如图10-7所示。
图10-7 字段间接编码方式
4.混合编码
这种方法是把直接编码和字段编码(直接或间接)混合使用,以便能综合考虑微指令的字长、灵活性和执行微程序的速度等方面的要求。
5.其他
微指令中还可设置常数字段,用来提供常数、计数器初值等。
(四)微指令序列地址的形成
1.直接由微指令的下地址字段指出
微指令的下地址字段直接指出了后续微指令的地址。这种方式又称为断定方式。
2.根据机器指令的操作码形成
当机器指令取至指令寄存器后,微指令的地址由操作码经微地址形成部件形成。
3.增量计数器法
仔细分析发现,在很多情况下,后续微指令的地址是连续的,因此对于顺序地址,微指令可采用增量计数法,即(CMAR)+1→CMAR来形成后续微指令的地址。
4.分支转移
当遇到条件转移指令时,微指令出现了分支,必须根据各种标志来决定下一条微指令的地址。微指令的格式如下:
5.通过测试网络形成
微指令的地址还可通过测试网络形成,如图10-8所示。
图10-8 通过测试网络形成微指令地址
6.由硬件产生微程序入口地址
当电源加电后,第一条微指令的地址可由专门的硬件电路产生,也可由外部直接向CMAR输入微指令的地址,这个地址即为取指周期微程序的入口地址。
(五)微指令格式
1.水平型微指令
水平型微指令的特点是一次能定义并执行多个并行操作的微命令。
2.垂直型微指令
垂直型微指令的特点是采用类似机器指令操作码的方式,在微指令字中,设置微操作码字段,由微操作码规定微指令的功能。表10-2列出了一种垂直型微指令的格式。
表10-2 垂直型微指令示例
3.两种微指令格式的比较
(1)水平型微指令比垂直型微指令并行操作能力强、效率高、灵活性强。
(2)水平型微指令执行一条机器指令所需的微指令数目少,因此速度比垂直型微指令的速度快。
(3)水平型微指令用较短的微程序结构换取较长的微指令结构,垂直型微指令正相反,它以较长的微程序结构换取较短的微指令结构。
(4)水平型微指令与机器指令差别较大,垂直型微指令与机器指令相似。
(六)静态微程序设计和动态微程序设计
1.通常指令系统是固定的,对应每一条机器指令的微程序是计算机设计者事先编好的,因此一般微程序无须改变,这种微程序设计技术即称为静态微程序设计。
2.如果采用EPROM作为控制存储器,人们可以通过改变微指令和微程序来改变机器的指令系统,这种微程序设计技术称为动态微程序设计。
(七)毫微程序设计
微程序可看做是解释机器指令的,毫微程序可看做是解释微程序的,而组成毫微程序的毫微指令则是用来解释微指令的。
(八)串行微程序控制和并行微程序控制
与机器指令一样,完成一条微指令也分两个阶段:取微指令和执行微指令。如果这两个阶段按图10-9(a)所示的方式运行,则为串行微程序控制。由于取微指令和执行微指令的操作是在两个完全不同的部件中完成的,因此可将这两部分操作并行进行,以缩短微指令周期,这就是并行微程序控制,如图10-9(b)所示,与指令二级流水相似。
图10-9 串行微程序和并行微程序控制方式