《计算机组成原理》 课件 第8章 控制器的组成与实现_第1页
《计算机组成原理》 课件 第8章 控制器的组成与实现_第2页
《计算机组成原理》 课件 第8章 控制器的组成与实现_第3页
《计算机组成原理》 课件 第8章 控制器的组成与实现_第4页
《计算机组成原理》 课件 第8章 控制器的组成与实现_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8章控制器的组成与实现CPU是由控制器和运算器组成。CPU在控制器的控制下,执行程序中的计算机指令,完成指令所要求的相关操作。8.1控制器的基本功能程序员把编写好的程序存储在计算机的存储器中,在程序执行时,控制器从存储器中逐条取出指令进行分析和执行,当一个程序的指令全部执行完了,就完成了这个程序对确定的信息的处理任务。控制器要通过控制电路完成:取指令、分析指令、执行指令。每执行完一条指令后,程序计数器PC加1,指向下一条指令的地址,然后又重复:取指令、分析指令、执行指令,直到程序结束。8.1.1微操作命令的分析微操作命令就是对CPU中某一个逻辑部件进行某项操作的控制信号。在CPU指令系统中,一条复杂指令它的指令周期可能包括4个周期:取指周期、间址周期、执行周期、中断周期。在这4个周期中,每条指令功能的差别主要体现在执行周期的微操作不一样,而取指周期、间址周期、中断周期的微操作都是一样或者说相似的。本小节主要分析指令系统中的每一条指令在它的取指周期、间址周期(如果有间址)、执行周期中需要哪些微操作命令才能最后完成其相应的指令功能。1.取指周期微操作命令分析取指令周期的微操作如图8.1所示。如根据图8.1所示,在取指周期中要完成取指令功能,必须包括如下几个微操作:①现行指令地址送到存储器地址寄存器,记作:PC→MAR。②把MAR中的地址送到地址总线上。(如果MAR直接连在地址总线上,就不需要这一步)③向主存发送读命令,启动主存储器读操作,记作:1→R。④将MAR(通过地址总线)所指的主存单元中的内容(指令)经过数据总线读至MDR内,记作:M(MAR)→MDR。⑤将MDR的内容送至IR,记作:MDR→IR。⑥形成下一条指令的地址,记作:(PC)+1→PC。⑦指令的操作码送至CU中的ID进行译码,记作OP(IR)→CU(或OP(IR)→ID)。共计7个微操作命令。需要特别说明的是:(PC)+1→PC,这个微操作可以放在第1个微操作后的任意一步,也就是说只要执行完PC→MAR这个微操作后,PC内容就可以加1了。2.间址周期微操作命令分析如果指令存在间接寻址,则指令周期中会有间址周期。图8.2为间址周期微操作图。①将指令的地址码部分(形式地址)送至存储器地址寄存器,记作:Ad(IR)→MAR。注意:在取指周期中可以看到,MDR和IR的内容是一样的,所以图8.2中画出的是MDR中的内容送MAR。②把MAR中的地址送到地址总线上。(如果MAR直接连在地址总线上,就不需要这一步)③向主存发送读命令,启动主存储器读操作,记作:1→R。④将MAR(通过地址总线)所指的主存单元中的内容(有效地址EA)经过数据总线读至MDR内,记作:M(MAR)→MDR。⑤将有效地址EA送至指令寄存器的地址字段,记作MDR→Ad(IR)。共计5个微操作命令。3.执行周期不同的指令,由于指令的功能不同,其执行周期的微操作也不同。下面分别讨论8条指令的执行周期。(非访存指令3条,访存指令3条,转移类指令2条)(1)非访存指令(3条)这类指令在执行期间不需要访问主存储器,在CPU内部就能完成指令的功能,执行速度快。①清除累加器指令CLA该指令在执行阶段只是完成清除累加器操作。记作:0→AC。②累加器取反指令CPL该指令在执行阶段只是完成累加器取反操作。记作:→AC。③算术右移一位指令SHR该指令在执行阶段完成累加器算术右移一位操作。这条指令需要2个微操作。记作:L(AC)→R(AC)AC0→AC0(AC符号不变)(2)访存指令(3条)这类指令都需要访问主存储器,增加了访问存储器的时间,所以指令执行速度就会慢一些。①加法指令ADDAC,X该指令在执行阶段需要完成累加器AC和对应于主存X地址单元的内容相加,结果送累加器AC,具体操作如下:将指令的地址码部分送至存储器地址寄存器,记作:Ad(IR)→MAR。向主存发读命令,启动主存作读操作,记作:1→R。将MAR(通过地址总线)所指的主存单元的内容(操作数)经数据总线读至MDR内,记作:M(MAR)→MDR。给ALU发做加法的命令,将AC的内容和MDR的内容相加,结果存于AC,记作:(AC)+(MDR)→AC。共计4个微操作命令。②存数指令STAX该指令在执行阶段需要将AC的内容存于主存X的地址单元中,具体操作如下:将指令的地址码部分送至存储器地址寄存器,记作:Ad(IR)→MAR。将累加器的内容送至MDR,记作:AC→MDR。向主存发写命令,启动主存作写操作,记作:1→W。将MDR的内容(通过数据总线)写入到MAR(通过地址总线)所指的主存单元中,记作:MDR→M(MAR)。共计4个微操作命令。③取数指令LDAX该指令在执行阶段需要将主存X地址单元的内容取至累加器AC中,具体操作如下:将指令的地址码部分送至存储器地址寄存器,记作:Ad(IR)→MAR。向主存发读命令,启动主存作读操作,记作:1→R。将MAR(通过地址总线)所指的主存单元的内容(操作数)经数据总线读至MDR内,记作:M(MAR)→MDR。将MDR的内容(通过数据总线)送至累加器AC中,记作:MDR→AC。共计4个微操作命令。(3)转移类指令(2条)这类指令在执行阶段中不访问存储器。①无条件转移指令JMPX

该指令在执行阶段完成将指令的地址码部分X送至PC的操作,记作:Ad(IR)→PC。②条件转移(结果为零则转移)指令BAZX

条件转移(结果为零则转移)指令BAZX的微操作逻辑表达式。Z•Ad(IR)+•(PC)→PC。由此可见,不同指令在执行阶段所完成的微操作是不同的。限于篇幅,只是介绍了8条指令的执行周期的微操作,其他指令的执行周期和中断周期的微操作就不做介绍了。8.1.2控制单元的外特性图8.3为反映控制单元外特性的框图。如图8.3所示,控制单元CU的引脚信号中:一部分信号是由其他部件输入给控制单元的,如:时钟、状态标志信号、指令寄存器的操作码、系统控制总线的控制信号等;而另外一部分信号是由控制单元输出给其他部件的,CPU内部控制信号、到系统总线的控制信号等。1.输入信号

(1)时钟在取指周期、间址周期、执行周期中,各种微操作有以下两点应特别注意。①完成每个微操作都需占用一定的时间。②各个微操作是有先后顺序的。为了使控制单元按一定的先后顺序发出各种控制信号,控制单元必须受时钟控制。即每出现一个时钟脉冲,控制单元就发出一个操作命令或发出一组需要同时执行的操作命令。时钟电路是由自激多谐振荡电路产生的,所以,只要计算机接通电源,就会产生连续不断的时钟脉冲方波。在计算机中时钟是计算机的心脏,如果计算机的时钟信号出故障,计算机硬件系统一定不能工作。

(2)指令寄存器指令的操作码决定了不同指令在执行周期所需完成的不同操作,故指令的操作码字段是控制单元的输入信号,它在译码后与时钟信号配合可产生不同的控制信号。

(3)标志CPU中的标志是运算器根据运算结果产生的各种状态符号,它保存在条件码寄存器(标志寄存器)中。控制单元有时需依赖CPU当前所处的状态(如运算器ALU操作的结果)产生控制信号。(4)来自系统总线控制总线的控制信号例如:中断请求、DMA请求。2.输出信号(1)CPU内部的控制信号主要用于CPU内的寄存器之间的传送和控制运算器ALU实现不同的操作。(2)送至系统总线(控制总线)的信号例如:控制主存读、写;控制I/O设备读、写;中断响应等。8.1.3控制信号举例控制器的主要功能就是能发出各种信号,下面以间接寻址的加法指令“ADD@X”为例,进一步理解控制信号在完成一条指令的过程中所起得作用。

加法指令“ADD@X”的各种微操作信号如图8.4所示。

1.取指周期(1)控制信号C0有效,打开PC送往MAR的控制门。(2)控制信号C1有效,打开MAR送往地址总线的控制门。(3)通过控制总线向主存发出读命令。(4)控制信号C2有效,打开数据总线送至MDR的输入门。(5)控制信号C3有效,打开MDR和IR之间的控制门,至此,指令送至IR。(6)形成下一条指令的地址,(PC)+1→PC(图中没有标出)。(7)控制信号C4有效,打开指令操作码送至CU的输入门。CU在操作码和时钟的控制下,产生本指令的相应操作。

2.间址周期(1)C5有效,打开MDR和MAR之间的控制门,将指令的形式地址送至MAR。(2)C1有效,打开MAR送往地址总线的输出门。(3)通过控制总线向主存发出读命令。(4)控制信号C2有效,打开数据总线送至MDR的输入门。此时,有效地址EA送入MDR。(5)控制信号C3有效,打开MDR和IR之间的控制门,将有效地址EA送至指令寄存器IR的地址码字段。

3.执行周期(1)C5有效,打开MDR和MAR之间的控制门,将有效地址EA送至MAR。(2)C1有效,打开MAR送往地址总线的输出门。(3)通过控制总线向主存发出读命令。(4)C2有效,打开数据总线送至MDR的输入门。至此,操作数已经存入MDR。(5)C6、C7同时有效,打开AC和MDR通往ALU的控制门。(6)通过操作码送至CU后产生的控制信号对ALU发出“ADD”做加法的控制信号,完成AC的内容和MDR内容的相加。(7)C8有效,打开ALU通往AC的控制门,将指令求和的结果存入AC中。另外:C9、C10是控制PC输入和输出的控制信号。C11、C12是控制AC输入和输出的控制信号8.1.4多级时序系统1.时钟周期(节拍)时钟信号的频率就是我们常说的计算机CPU的主频。时钟频率的倒数称为时钟周期,也称为振荡周期。时钟周期是计算机中最基本的时间单位。用时钟信号控制节拍发生器电路,就可以产生节拍T。图8.5所示,一个节拍正好对应一个时钟周期。2.机器周期(节拍)一条指令从取出到执行结束所花的全部时间叫这条指令的指令周期。不同的指令所花的时间是不一样的,例如间址指令比非间址指令慢、访存指令比非访存指令慢。我们如何确定一条指令的时间呢?在计算机系统中,我们设计一个基准时间,这个基准时间就叫机器周期。通常以访问一次主存储器的时间定为基准时间,由于一条指令中必须有取指周期,而取指周期又是必须访问主存储器,所以常常把取指周期看作机器周期。

图8.5所示,一个机器周期的长度是4个节拍的长度。注意,不同的控制器设计方式,其机器周期的长度是不同的,不一定都是4个节拍。这取决于CPU的设计者。3.多级时序系统在计算机中:一条指令的指令周期由若干个机器周期组成,一个机器周期又由若干个节拍组成,每个节拍对应若干个时钟周期。这就是时钟周期、节拍、机器周期的关系。

时钟周期、节拍、机器周期组成了计算机的多级时序系统。在Intel公司设计的MCS-51单片机中,CPU一个机器周期包含6个节拍(状态),1个节拍(状态)周期包括2个时钟周期,也就是一个机器周期为12个时钟周期。例题8.2设某计算机的CPU主频为8MHz,每个机器周期平均包含2个时钟周期,每条指令的指令周期平均有2.5个机器周期。(1)试问该机的平均指令执行速度为多少MIPS?(2)若CPU主频不变,但每个机器周期平均含4个时钟周期,每条指令的指令周期平均有5个机器周期,该机平均指令执行速度又是多少MIPS?(3)由此可得出什么结论?解:由于CPU的主频是8MHz,所以时钟周期是1/8=0.125us。机器周期为:0.125×2=0.25us,指令周期为:0.25×2.5=0.625us。

(1)平均指令执行速度为:1/0.625=1.6MIPS。(2)若CPU主频不变,但每个机器周期平均含4个时钟周期,每条指令的指令周期平均有5个机器周期,则机器周期为:0.125×4=0.5。指令周期为:0.5×5=2.5us。故平均指令执行速度为:1/2.5=0.4MIPS。(3)由此得出结论:机器的运行速度不完全取决于CPU的主频。4.控制方式我们把如何形成控制不同微操作序列所采用的时序控制方式称为控制器的控制方式。我们在这里介绍两种控制方式。(1)定长机器周期在图8.6所示的设计方案里,每个机器周期都固定采用4个节拍T0、T1、T2、T3,每个节拍对应一个时钟周期。不论是取指周期、还是间址周期、执行周期都采用这个固定长度的机器周期,这就是所谓的“定长机器周期”设计方式。这种“定长机器周期”方式的特点是:不论一条指令在它的不同周期所对应的微操作个数有多少,一律用最长的微操作序列来作为标准确定机器周期长度,然后采取完全统一的、具有相同时间间隔和相同数目的节拍作为机器周期来运行各种不同指令。

缺点:对微操作个数较少的指令来说,会造成时间上的浪费。优点:结构简单,电路设计容易。

(2)不定长机器周期为了克服定长机器周期方式存在的节拍时间浪费的问题,在图8.7所示的设计方案里,采用不定长机器周期的设计方式。采用不定长的设计方式时,每个机器周期内的节拍数可以不等。

在图8.7中,指令的取指周期为4个节拍,执行周期为3个节拍。

缺点:控制电路相对定长机器周期方式更复杂,设计起来要考虑的问题较多。

8.2控制单元的设计目前,控制器的设计有两种设计方式:组合逻辑设计方式和微程序设计方式。8.2.1组合逻辑设计概述组合逻辑设计方式是按照数字电路中组合逻辑的设计方法和步骤设计控制器。

组合逻辑设计控制器的基本步骤:(1)把CPU指令系统中每条指令的全部微操作都一一列出来。(2)把每个微操作安排到机器周期中的每个节拍中,得到一个微操作命令的操作时间表。(3)根据操作时间表写出每一个微操作命令的逻辑表达式。(4)根据逻辑表达式画出相应的组合逻辑电路图。

一个CPU指令系统中所有指令的微操作命令的组合逻辑电路图都画出来了,这个CPU控制器的设计也就基本完成了。

1.组合逻辑控制器框图把图8.3外特性框图细化,我们得到了组合逻辑控制器进一步的框图如图8.8。

首先分析CU的输入信号。(1)CU的输入信号第一部分来自指令寄存器IR,为了简化设计,我们假定CPU指令的操作码是固定长度n位的。(2)CU输入信号的第二部分来自节拍信号。以时钟电路产生CLK脉冲序列作为标准信号,再通过一个计数器电路,又称为节拍发生器电路,便可产生出一连串的节拍信号(T0、T1、……Tn)。(3)CU输入信号的第三部分来自标志信号,标志信号来自条件码寄存器(标志寄存器),它反映了指令在运行过程中的不同状态。

组合逻辑设计方式就是以上述三种信号作为CU的输入信号,根据不同指令的功能,设计出相应的组合逻辑电路CU。对于CPU中的每一条不同指令,CU产生完成该指令的相应的微操作序列C0、C1、……Cn。

2.微操作的节拍安排为了说明方便,我们假定CPU的控制器设计采用固定长度的机器周期,每个机器周期包含3个节拍:T0、T1、T2。并且,CPU内部结构如图8.4所示,其中MAR和MDR分别直接连接到地址总线和数据总线,同时假设IR的地址码部分与MAR之间有通路。我们以8.1节所分析的8条指令为例来讲解组合逻辑方式设计CPU控制器的基本方法和步骤。(1)把8条指令所包含的全部微操作都列出来。

(2)把这些微操作按照执行的先后顺序分别安排到每个机器周期相应的节拍中去。

安排微操作节拍时的3条基本原则:①有些微操作的顺序是不能改变的,所以安排微操作时一定要注意微操作的先后顺序。②凡是被控制的对象不同的微操作,若能安排到一个节拍执行的,应尽可能安排到同一个节拍内完成,以节省时间。③如果有些微操作所用的时间很短,几个微操作能够在一个节拍内完成,则应该将它们放到同一个节拍内完成,并且让这些微操作在这个节拍内按先后次序完成。

(1)取指周期微操作的节拍安排T0:PC→MAR,1→RT1:M(MAR)→MDR,(PC)+1→PCT2:MDR→IR,OP(IR)→ID。(2)间址周期微操作的节拍安排T0:Ad(IR)→MAR,1→RT1:M(MAR)→MDRT2:MDR→(Ad)IR(3)执行周期微操作的节拍安排①清除累加器AC的指令CLAT0:T1:T2:0→AC

②累加器AC取反指令CPLT0:T1:T2:→AC③算术右移指令SHRT0:T1:T2:L(AC)→R(AC),AC0→AC0④加法指令ADDAC,XT0:Ad(IR)→MAR,1→RT1:M(MAR)→MDRT2:(AC)+(MDR)→AC(该操作实际包括(AC)→ALU,(MDR)→ALU,ALU→AC这3个微操作)

⑤存数指令STAXT0:Ad(IR)→MAR,1→WT1:AC→MDRT2:MDR→M(MAR)⑥取数指令LDAXT0:Ad(IR)→MAR,1→RT1:M(MAR)→MDRT2:MDR→AC⑦无条件转移指令JMPXT0:T1:T2:Ad(IR)→PC

⑧条件转移(零转移)指令BAZXT0:T1:T2:Z•Ad(IR)+•(PC)→PC。以上就是8条CPU指令执行周期微操作的节拍安排。

8.2.2组合逻辑设计步骤用组合逻辑设计方式设计CPU的控制器,其步骤如下:1.确定好CPU所有指令的微操作的节拍安排,列出操作时间表。2.写出微操作命令的最简逻辑表达式。根据表8.1可以写出M(MAR)→MDR微操作命令的逻辑表达式如下:

M(MAR)→MDR=FE·T1+IND·T1(ADD+STA+LDA+JMP+BAZ)+EX·T1(ADD+LDA)=T1{FE+IND(ADD+STA+LDA+JMP+BAZ)+EX(ADD+LDA)}式中,ADD、STA、LDA、JMP、BAN信号均来着指令译码器的输出。3.画出微操作命令的逻辑图

表8.1操作时间表

续上表

组合逻辑设计方式设计CPU的控制器的特点:

优点:思路清晰、简单明了,而且运行速度很快。

缺点:每个微操作都要对应一个逻辑电路,所以最后完成的控制器逻辑电路会很复杂。如果想扩大CPU的指令集,哪怕只增加一条指令,整个逻辑电路都需要重新设计。

8.2.3微程序设计思想为了克服组合逻辑控制器线路十分复杂和庞大的缺点,M.V.Wikes教授设想采用类似存储程序的方式来解决微操作命令序列的形成。

微程序设计基本思想如下:每一条CPU机器指令都对应一个微程序,每个微程序由一系列微指令组成,每条微指令中包含一组微操作。把一系列可以同时操作的微操作分配到一条微指令中,然后把不能同时操作的微操作放到不同的微指令中。

采用微程序方式设计控制器的过程就是编写好每一条CPU机器指令对应的微程序。

这种微程序的设计思想实现了用“软件的设计思想”设计硬件,使得CPU控制器的设计变得相对简单,也能很方便地扩大CPU的指令集。微程序控制器设计的基本原理和方法。1.机器指令对应的微程序首先,我们必须设计一个控制存储器(简称控存)用来存放微程序。如图8.10所示。从图8.10中我们可以看到:控制存储器中存放有取指、间址、中断三个公共微程序和不同机器指令对应的微程序。

2.微程序控制单元的基本框图微程序的控制单元基本框图如如图8.11所示。从图8.11中我们可以看到,微程序控制单元主要由:微地址形成部件、顺序逻辑控制器、CMAR、控制存储器、CMDR等几个部分组成。其中控制存储器是最核心部件,用以存放所有指令对应的微程序。

图8.10

控制存储器微程序存放图

图8.11微程序控制单元的基本框图

微指令基本格式如图8.12所示。

3.微程序控制单元的工作原理假定有一个用户的汇编语言程序如下:LDAX;ADDY;STAZ;它存于主存中,起始地址为:2000H(PC=2000H)下面结合图8.10和图8.11来说明运行上述用户程序时,微程序控制单元的工作过程。

(1)取指周期

①将图8.10中取指令周期微程序的首地址M送入中的CMAR。记作:M→CMAR。②取微指令。将控制存储器中对应M地址单元的第一条微指令读到图8.11中控制存储器相对应的数据寄存器CMDR。记作:CM(CMAR)→CMDR。③产生微操作命令根据取指周期微操作安排,第一条微指令的操作控制字段会产生取指周期T0节拍阶段需要的微操作:PC→MAR,1→R。④形成下一条微指令的地址同时该微指令中的“顺序控制字段”会指出下一条微指令的地址为:M+1。记作:Ad(CMDR)→CMAR。⑤取下一条微指令将对应控制存储器中M+1地址单元中的第二条微指令读到CMDR中。记作:CM(CMAR)→CMDR。

⑥产生微操作命令由第二条微指令的“操作控制字段”中为“1”的各位发出取指微操作中T1节拍中的微操作控制信号:M(MAR)→MDR,(PC)+1→PC。⑦形成下一条微指令的地址将第二条微指令下地址字段指出的第三条微指令的地址M+2送至CMAR。记作:Ad(CMDR)→CMAR。…………以此类推,直到取出取指周期微程序中的最后一条微指令,并发出微操作为止。取指周期完成后,即可实现第一条机器指令“LDAX”存入指令寄存器IR中。

“LDAX”指令没有间接寻址,所以不需要运行间址周期微程序。直接进入执行周期微程序。

(2)执行周期

①LDAX指令执行周期微程序首地址的形成。当LDAX指令存入指令寄存器IR中,其操作码OP(IR)部分直接送入图8.11微地址形成部件,该部件的输出即为LDAX指令微程序的首地址P(见图8.10),同时将P送至CMAR。记作:OP(IR)→微地址形成部件→CMAR②取微指令将控制存储器中对应P地址单元的第一条微指令读到图8.10中的数据寄存器CMDR。记作:CM(CMAR)→CMDR。③产生微操作命令由微指令的“操作控制字段”中为“1”的各位发出执行微操作中T0节拍中的微操作控制信号:Ad(IR)→MAR,1→R。④形成下一条微指令的地址同时该微指令中的“顺序控制字段”会指出下一条微指令的地址为:P+1。记作:Ad(CMDR)→CMAR。

⑤取下一条微指令将对应控制存储器中P+1地址单元中的微指令读到CMDR中。记作:CM(CMAR)→CMDR。⑥产生微操作命令……以此类推,直到取出取数指令“LDAX”微程序中地址为P+2的最后一条微指令,并发出相应的微操作。至此,完成了取数指令“LDAX”的功能。

注意:执行周期微程序中最后一条微指令的“顺序控制字段”为M,表明CPU又开始进入下一条机器指令“ADDY”的取指周期微程序。这样重复以上过程,完成所有程序中的汇编语言指令,直到程序结束。综上所述,如果采用只读存储器ROM作为控制存储器,仿照图8.10把CPU指令系统中所有指令微程序代码进行灌注,然后按照图8.11设计好相关的逻辑电路,一个微程序设计思想的控制器就完成了。

8.2.4微指令的编码方式和序列地址的形成

本小节介绍微指令的编码方式和微指令序列地址的形成,即“操作控制”字段、“顺序控制”字段设计方法。1.微指令的编码方式

微指令的编码方式又称为微指令的控制方式,它是指如何对微指令的“操作控制”字段进行编码,以形成相关的微操作控制信号。(1)直接编码方式

把微指令基本格式中“操作控制”字段部分的每一位都代表一个微操作命令,如图8.13所示,这种编码方式称为直接编码方式。

在图8.13中,如果控制信号中的某一位为“1”,表示所对应的微操作命令的控制信号有效,打开某个相应的控制门;如果图8.13所示的控制信号中某一位为“0”,表示所对应的微操作命令的控制信号无效,不打开某个相应的控制门。微指令格式中“下地址”字段表示执行完本指令后,下一条指令所在的地址。对应图8.14我们以取指周期中的T0、T1两个节拍为例,具体介绍如何设计两条微指令。取指周期中T0、T1两个节拍中的微操作安排如下:T0:PC→MAR,1→RT1:M(MAR)→MDR,(PC)+1→PC“直接编码方式”一般是每个节拍对应一条微指令,这样就需要两条微指令。

如图8.14所示,我们假定微指令“操作控制字段”的最高位代表微操作命令PC→MAR,最低位代表微操作命令1→R,次高位代表微操作命令M(MAR)→MDR,次低位代表微操作命令(PC)+1→PC。其它的位也有相应的其它微操作命令,这里我们就不一一说明了。在图8.14中:第一条微指令中两位为1,分别对应T0节拍中有两个微操作命令:PC→MAR,1→R,其余为置0。在图8.14中:第二条微指令中另外两位为1,分别对应T1节拍中的M(MAR)→MDR和(PC)+1→PC两个微操作,其余位为0。

“直接编码方式”的优点:清楚、明了、执行速度快,我们可以根据CPU所有指令需要的所有微操作来设计不同的微指令。然后由微指令组成一个个微程序来实现CPU指令的功能。“直接编码方式”的缺点:CPU中的指令越多,相应的微操作命令就越多,所需微指令中“操作控制”字段的位数也就越多,有些机器甚至可达到数百位至多,这就使得需要的控制存储器的容量极大。

(2)字段编码方式在字段编码方式中,我们重点介绍“字段直接编码方式”。“字段直接编码方式”将微指令的“操作控制”字段分成若干段,将一组互斥的微操作命令放在一个字段内,通过对这个字段译码,再产生一个个微操作命令。所谓互斥的微操作命令是指在同一个时间段不会同时出现的微操作命令。比如某个机器需要24个微操作命令,如果采用“直接编码方式”,微指令的“操作控制”字段就需要24位。如果我们把“操作控制”字段分为3段,每段3位,每段再通过译码器分别可以产生出8位信号,这样仍然可以得到3×8=24个的微操作命令,但这时候“操作控制”字段的位数只需要3×3=9位。如图8.15所示:

这是一种理想计算方式,实际上我们每一字段译码后至少会留一个位表示:不激活任何一条控制线。所以3位字段译码后能作为微操作命令位的最多为7位,也就是说3个3位的字段实际只能产生21个微操作命令,每个字段需要留出1位作为“不激活任何一条控制线”信号使用。“字段直接编码方式”比“直接编码方式”位数少,但需要增加译码器电路,由于译码器译码需要时间,所以“字段直接编码方式”执行速度比“直接编码方式”慢。例题8.3某机器的微指令格式中,共有8个控制字段,每个控制字段可分别激活5、8、3、16、1、7、25、4种微操作命令。请分别采取直接编码和字段直接编码方式设计微指令的操作控制字段,并说明两种方式的操作控制字段各取几位。解:(1)如果采用“直接编码方式”,微指令的操作控制字段的总位数等于可激活的微操作命令数。即:

5+8+3+16+1+7+25+4=69位(2)如果采用“字段直接编码方式”,则需要8个控制字段。由于每个控制字段都需要一位表示“不激活任何一条控制线”的信号,所以在所以每个控制字段的位数就是在原来的位数上加1。

8个字段原来对应的位数为:5、8、3、16、1、7、25、4,采用字段控制编码后对应的位数分别为:6、9、4、17、2、8、26、5。第1字段译码输出为6位,则译码输入的最小位数为3,因为23>6;同理,第2字段译码输出为9,则译码输入的最小位数为4,因为24>9;以此类推,第3字段则译码输入的最小位数为2;第4字段则译码输入的最小位数为5;第5字段则译码输入的最小位数为1;第6字段则译码输入的最小位数为3;第7字段则译码输入的最小位数为5;第8字段则译码输入的最小位数为3。这样把所有的字段译码输入位数加起来就是微指令的操作控制字段的总位数,即:3+4+2+5+1+3+5+3=26位2.微指令序列地址的形成在图8.12微指令的基本格式中除开“操作控制”字段外,还有“顺序控制”字段。

“顺序控制”字段的作用是:如何在当前微指令执行完成后形成下一条微指令的地址。从图8.10可见,微程序中每条微指令它的后续微指令地址大致由下面几种方式形成。(1)直接由微指令的下地址字段指出我们把图8.12中所示的微指令基本格式中的“顺序控制”字段直接作为下一条微指令的地址(称为下地址),如图8.13。这种方式又称为断定方式。(2)根据机器指令的操作码形成如图8.10,当取指微程序完成后,具体再执行那一条指令的微程序,其微指令的首地址由机器指令的操作码决定。比如是执行LDA指令对应的微程序(首地址为P),还是执行ADD(首地址为Q)、STA(首地址为K)指令对应的微程序,都由机器指令的操作码决定。(3)增量计数器法如果我们观察微程序中的微指令,就会发现大多数时候后续微指令的地址是连续的,是顺序控制,这样微指令可以采用增量计数法,即:(CMAR)+1→CMAR来形成后续微指令的地址。(4)分支转移法当遇到条件转移指令时,微指令出现了分支,必须根据各种标志来决定下一条指令的地址。其指令格式如下:

把微指令格式中的“顺序控制”字段分为“转移方式”和“转移地址”两个部分。其中,转移方式指明判别条件,转移地址为指明转移成功后的去向地址,若不成功则顺序执行。(5)由硬件产生微程序入口地址需要由硬件产生微程序入口地址的情况有以下三种:第一,当电源加电后,这时第一条微指令的地址可由专门的硬件电路产生,也可由外部直接向CMAR输入微指令的地址,这个地址就是取指令周期微程序的入口地址。第二,当有中断请求时,CPU响应中断进入中断周期。此时,需要中断现行程序,转至对应中断周期的微程序,可由硬件产生中断周期微程序的入口地址。第三,如果出现间接寻址时,也可由硬件产生间接寻址周期微程序入口地址。操作控制字段转移方式转移地址综合上述各种方法,可设计出形成后续微指令地址的原理图,如图8.16所示:图中多路选择器可以根据需要选择以下4路地址:①(CMAR)+1→CMAR;②微指令下地址;③指令寄存器IR中的操作码(通过微地址形成部件);④硬件产生的微程序入口地址8.2.5微指令格式在微指令基本格式的基础上,我们可以具体设计出不同的微指令格式。微指令格式与微指令的编码方式有关,通常分为水平型微指令和垂直型微指令两种格式。1.水平型微指令水平型微指令的特点是一次可以定义并执行多个并行操作的微操作命令。

图8.13是典型的水平型微指令。从编码方式上看,“直接编码方式”和“字段直接编码方式”都属于水平型微指令。其中,“直接编码方式”速度最快,“字段直接编码方式”由于需要译码,故速度不如“直接编码方式”。2.垂直型微指令垂直型微指令把微指令设计成:“微操作码”、“地址码”以及“其他控制”三部分。“微操作码”部分用来规定微指令的功能,“地址码”部分用来确定“微操作数”的地址,“其他控制”部分用来协助本条微指令完成其他控制功能。

表8.2列出了一种垂直型微指令的格式:总共16位二进制位,其中微操作码字段占3位,共可完成8类操作;地址码字段共占10位,对不同的操作有不同的含义;其他控制字段占3位,协助本条微指令完成其他控制功能。微操作码地址码其他微指令类别及功能0123-78-1213-15000源寄存器目的寄存器其他控制传送型微指令001ALU左输入ALU右输入ALU运算控制型微指令按照ALU字段所规定的功能执行,其结果送暂存器010寄存器移位次数移位方式移位控制型微指令按照移位方式对寄存器中的数据移位。011寄存器存储器读写其他访存微指令完成存储器和寄存器之间的传送。100DS无条件转移微指令D为微指令的目的地址101D测试条件条件转移微指令最低位为测试条件110111

可定义I/O或其他操作第3至15位可根据需要定义各种微命令3.两种微指令格式比较(1)水平型微指令比垂直型微指令并行操作能力强、效率高、灵活性强。(2)水平型微指令执行一条机器指令所需的微指令数目少,因此,速度比垂直型微指令的速度快。(3)水平型微指令用较短的微程序结构换取较长的微指令结构,垂直型微指令正好相反,它用较长的微程序结构换取较短的微指令结构。(4)水平型微指令格式和机器指令差别较大,垂直型微指令和机器指令相似。例题8.4某微程序控制器中,采用水平型直接编码方式的微指令格式,后续微指令地址由微指令的下地址字段给出。已知机器共有28个微操作命令、6个互斥的可判定的外部条件,控制存储器的容量为512×40位,试设计其微指令格式,并说明理由。解:考虑有6个互斥的判定条件,所以我们把水平型微指令在基本微指令格式基础上细分成由操作控制字段、判断测试字段和下地址字段三部分组成。因为是水平型直接编码方式微指令格式,其微操作命令数就是操作控制字段的位数,所以,水平型微指令操作控制字段的位数为28位。又由于后续微指令地址由微指令的下地址字段给出,故下地址字段的位数可根据控制存储器的容量(512×40位)确定其位数为9位(29=512)。当微程序出现分支时,后续微指令地址的形成取决于状态条件,6个互斥的可判定外部条件,可以编码成3位(23>6)状态位。非分支时的后续微指令的下地址由字段直接给出。这样,所设计的微指令格式如下:例题8.5设某机器共有52个微操作命令,构成5个互斥类的微操作命令组,各组分别包含5、8、2、15、22个微操作命令,已知可判定的外部条件两个,微指令字长28位。(1)按照水平型微指令格式设计微指令,要求微指令的下地址字段直接给出后续微指令地址。(2)指出控制存储器的容量。解:(1)根据5个相斥类的微操作命令组,各组分别包含5、8、2、15、22个微操作命令,考虑到每组必须增加一种“不激活任何一条控制线”的情况,则5个控制字段分别需要给出6、9、3、16、23种状态,对应3(23>6)、4(24>9)、2(22>3)、4(24=16)、5(25>23)。另外,可判断的外部条件为2个,所以条件测试字段取2位。这样,微指令操作控制字段总长度为:3+4+2+4+5+2=20位。由于微指令字长为28位,其中操作控制字段的长度为20位,则作为下地址的位数:28-20=8位微指令格式如下:(2)根据下地址字段为8位,微指令字长为28位,所以得到控制存储器的容量为:28×28=256×28位8.2.6微程序设计举例本章以前面介绍的采用组合逻辑设计的8条机器指令为例,改用微程序方式来设计8条机器指令的控制单元,以对比两种设计思想的不同过程。采用微程序方式设计控制单元的步骤如下(说明过程中请同时参看图8.10、图8.11),在这里我们采用水平型微指令,其编码方式采用“直接编码方式”。1.写出对应机器指令的微操作及节拍安排写出所有机器指令的微操作目的是为了设计微指令的“操作控制”字段,其中机器指令的微操作数决定了微指令的“操作控制”字段的位数,节拍安排则决定了微指令的出现顺序。(1)取指阶段微操作分析取指阶段微操作在前面讲组合逻辑设计方法时已经介绍过了,在这里只是需要最后一个微操作:OP(IR)→ID改为OP(IR)→微地址形成部件T0:PC→MAR,1→RT1:M(MAR)→MDR,(PC)+1→PCT2:MDR→IR,OP(IR)→微地址形成部件每个节拍需要一条对应的微指令,3个不同的节拍就需要对应3条微指令。另外还要增加2个节拍。一个节拍实现取下一条微指令的微操作,记作:Ad(CMDR)→CMAR。这个微操作的功能是:把CMDR中微指令的下地址字段部分送到CMAR形成下条微指令的地址。

另外一个节拍实现取指周期结束后,转入到执行周期。记作:OP(IR)→微地址形成部件→CMAR,这样就可以形成执行周期微程序的入口地址。(2)取指周期的微操作及节拍安排T0:PC→MAR,1→RT1:Ad(CMDR)→CMART2:M(MAR)→MDR,(PC)+1→PCT3:Ad(CMDR)→CMART4:MDR→IR,OP(IR)→微地址形成部件T5:OP(IR)→微地址形成部件→CMAR(3)执行周期的微操作及节拍安排在执行周期内的微操作及节拍安排依然要考虑如何形成后续微指令的地址。

一般情况下微指令是顺序执行,但最后一条微指令的下地址部分是取指周期微程序的入口地址M,如图8.10所示。非访存指令①CLA清除累加器AC指令该指令只有一个微操作0→ACT0:0→ACT1:Ad(CMDR)→CMAR;实现取指周期微程序入口地址→CMAR。②CPL累加器取反指令该指令只有一个微操作→ACT0:→ACT1:Ad(CMDR)→CMAR;实现取指周期微程序入口地址→CMAR

③SHR算术右移指令T0:L(AC)→R(AC),AC0→AC0T1:Ad(CMDR)→CMAR;实现取指周期微程序入口地址→CMAR访存指令

①ADD加法指令T0:Ad(IR)→MAR,1→RT1:Ad(CMDR)→CMART2:M(MAR)→MDRT3:Ad(CMDR)→CMART4:(AC)+(MDR)→ACT5:Ad(CMDR)→CMAR;实现取指周期微程序入口地址→CMAR

②STA存数指令T0:Ad(IR)→MAR,1→WT1:Ad(CMDR)→CMART2:AC→MDRT3:Ad(CMDR)→CMART4:MDR→M(MAR)T5:Ad(CMDR)→CMAR;实现取指周期微程序入口地址→CMAR

③LDA取数指令T0:Ad(IR)→MAR,1→RT1:Ad(CMDR)→CMART2:M(MAR)→MDRT3:Ad(CMDR)→CMART4:MDR→ACT5:Ad(CMDR)→CMAR;实现取指周期微程序入口地址→CMAR

转移类指令

①JMP无条件转移指令T0:Ad(IR)→PCT1:Ad(CMDR)→CMAR;实现取指周期微程序入口地址→CMAR

②BAZ条件转移(零转移)指令T0:Z•Ad(IR)+•(PC)→PC。T1:Ad(CMDR)→CMAR;实现取指周期微程序入口地址→CMAR每个节拍都对应一条微指令,以上8条机器指令共有34个节拍也就是有34条微指令。

在这34条微指令中包括18个不同的微操作。如果采用水平型直接编码微指令格式,每一个不同的微操作需要在微指令“操作控制”字段中占1位,这样微指令“操作控制”字段需要18位。8条机器指令共有34条微指令,如果一条微指令在控制存储器中占一个地址单元,控制存储器只需要34个单元就满足存放下34条微指令。2.确定微指令格式(1)微指令的编码方式采用水平型微指令,其编码方式采用“直接编码方式”。(2)后续微指令的地址形成方式一种是执行周期微程序的首地址,这个由机器指令的操作码通过“微地址形成部件”形成,如图8.11所示。

另一种是微程序中的微指令,它的后续微指令的地址由当前微指令的“下地址字段”直接给出,送入到如图8.11所示的“顺序逻辑”部件。(3)微指令字长分析微指令的字长由“操作控制字段”和“下地址字段”两部分的长度决定。8条机器指令有18个微操作,“操作控制字段”的位数对应为18位。8条机器指令微程序共需要34条微指令,微指令“下地址字段”为6位(26>34)。“操作控制字段”和“下地址字段”两者合起来为18+6=24位,因此我们初步设计微指令字长为24位。(4)微指令字长的简化我们采用Ad(CMDR)直接送到控制存储器的地址线,不再送入CMAR,就可以省略Ad(CMDR)→CMAR这16条微指令。同理,微指令:OP(IR)→微地址形成部件→CMAR也可以采用把指令操作码形成的地址直接送入控制存储器地址线的方式,省略这条微指令。这样我们共省略了17条微指令和两个微操作。这样原来的34条微指令变成只有34-17=17条微指令。“下地址字段”只需要取5位(25>17)。原来的18个微操作也只需要18-2=16。“操作控制”字段的位数最少可为16位。(5)省去了CMAR后的控制存储器结构图考虑到机器指令集的扩展,我们把“操作控制”字段设计为20位,留下20-16=4位的扩展余地(不同的设计方案可以有不同的预留位数)。这样微指令的长度就是20+5=25位。(6)定义微指令操作控制字段每一位的微操作通过上面的分析,最后确定微指令的基本格式如下:

操作控制字段下地址字段整个微指令长度为25位,其中20位为“操作控制字段”,5位为“下地址字段”。3.编写微指令码点简单起见,我们不考虑间址周期和中断周期,把图8.10中的间址周期微程序和中断周期微程序去掉,只留下取指周期和LDA、ADD、STA、JMP这4条指令的执行周期微程序。(1)微指令操作控制字段的定义把微指令中20位“操作控制”字段的每一位对应的功能定义好。如表8.2所示:0123456789101112131415161718192021222324表8.2微指令操作控制字段每位对应微操作表(2)下地址字段的分配使用下地址字段共5位,共寻址25=32个地址,如果控制存储器的每个存储单元地址存放25位(一条微指令长度),那么我们需要控制存储器的容量为:25×25位。位号对应的微操作位号对应的微操作0PC→MAR101→W11→R11AC→MDR2M(MAR)→MDR12MDR→M(MAR)3(PC)+1→PC13MDR→AC4MDR→IR14Ad(IR)→PC50→AC15Z·Ad(IR)+·PC→PC6AC非→AC16空余,扩展用7L(AC)→R(AC),AC0→AC017空余,扩展用8Ad(IR)→MAR18空余,扩展用9(AC)+(MDR)→AC19空余,扩展用(3)微程序在控制存储器中对应的码点假定LDA、ADD、STA、JMP这4条指令都没有间址周期,也不考虑中断周期。即:每条机器指令的微程序=取指周期微程序+这条机器指令执行周期微程序。对照图8.10,控制存储器中取指周期的首地址M,我们假定M为:00000(5位二进制下地址)。LDA、ADD、STA、JMP这4条指令的入口地址分别是:LDA对应为P,ADD对应为Q,STA对应为K,JMP对应为J。为了制表方便,我们假定这四条指令的微程序在控制存储器中是连续存放的。①取指周期微程序码点

取指周期简化后为三个节拍:T0:PC→MAR,1→RT1:M(MAR)→MDR,(PC)+1→PCT2:MDR→IR

T0对应第1条微指令,T1对应第2条微指令,T2对应第3条微指令。根据表8.2,

取指周期T0对应的第1条微指令的码点为(其中下地址字段为:M+1):

操作控制字段

下地址字段

取指周期T1对应的第2条微指令的码点为:

操作控制字段

下地址字段

取指周期T2对应的第3条微指令的码点为:

操作控制字段

下地址字段0123456789101112131415161718192021222324110000000000000000000000101234567891011121314151617181920212223240011000000000000000000010012345678910111213141516171819202122232400001000000000000000×××××

②LDA指令执行周期微程序码点LDA指令执行周期简化后为三个节拍:T0:Ad(IR)→MAR,1→RT1:M(MAR)→MDRT2:MDR→AC每个节拍对应一条微指令,LDA执行周期微程序包含3条微指令。T0对应的是第1条微指令首地址P为5位二进制:00011。LDA执行周期微程序第1条微指令的码点为:

操作控制字段

下地址字段LDA执行周期微程序第2条微指令的码点为:

操作控制字段

下地址字段0123456789101112131415161718192021222324010000001000000000000010001234567891011121314151617181920212223240010000000000000000000101LDA执行周期微程序第3条微指令的码点为(下地址字段为:M):

操作控制字段

下地址字段③ADD指令执行周期微程序码点

ADD指令执行周期简化后为三个节拍:T0:Ad(IR)→MAR,1→RT1:M(MAR)→MDRT2:(AC)+(MDR)→AC每个节拍对应一条微指令,ADD执行周期微程序包含3条微指令。

T0对应的是第1条微指令首地址Q为5位二进制:00110。ADD执行周期微程序第1条微指令的码点为:

操作控制字段

下地址字段0123456789101112131415161718192021222324000000000000010000000000001234567891011121314151617181920212223240100000010000000000000111ADD执行周期微程序第2条微指令的码点为:

操作控制字段

下地址字段ADD执行周期微程序第3条微指令的码点为(下地址字段为:M):

操作控制字段

下地址字段④STA指令执行周期微程序码点

STA指令执行周期简化后为三个节拍:T0:Ad(IR)→MAR,1→WT1:AC→MDRT2:MDR→M(MAR)

每个节拍对应一条微指令,STA执行周期微程序包含3条微指令。

T0对应的是第1条微指令首地址K为5位二

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论