配色: 字号:
第5章控制器
2022-09-10 | 阅:  转:  |  分享 
  
第5章控制器本章首先介绍指令周期、机器周期、时钟周期的概念和三者之间的关系,在此基础上介绍程序执行过程。然后,介绍控制器的组成与功能,
包括硬件组合逻辑微操作信号发生器和微程序控制器。为了便于理解,通过举例和时序分析,进一步说明程序执行过程、硬件组合逻辑微操作信号发
生器和微程序控制器的功能与工作原理。重点是程序执行过程,控制器的组成与功能,包括硬件组合逻辑微操作信号发生器和微程序控制器。第
5章控制器5.1程序执行过程5.2控制器的功能与组成5.3微操作信号发生器5.3.1组合逻辑控制器5.3
.2指令执行过程举例5.3.3微程序控制器5.1程序执行过程计算机的全部工作过程就是执行程序。而程序是由一条一条的指令有
序排列而组成的,因此计算机的全部工作过程也就是执行这一条一条有序排列的指令的过程。而指令则在控制器的控制下按照一定的时序一拍一拍地
执行的。这里,把一条指令执行所用的时间称为指令周期。1.指令周期指令周期是指一条指令执行时所用的全部时间,包括取指令、取操作
数、运算和存储结果。由于指令功能不同,其指令周期不尽相同。因此,常把指令执行过程分成几个阶段或步骤。每一阶段执行一项主要操作,比如
取指令、访问存储器取操作数、存结果、数据输入和数据输出等。这一过程,称为机器周期。每个机器周期包含若干个时钟周期。时钟周期、机器周
期、指令周期的关系如图5.1所示。图中一个机器周期包含4个时钟周期,一个指令周期包含1到多个机器周期,这里假定包含3个机器周期
,即取指令、取操作数和执行并存结果周期。其中无论哪一种指令,都必须有一个取指令周期。至于一个机器周期包含多少个时钟周期,不同的机器
有不同的设计方法,除了包含4个时钟周期外,还有包含2个、6个、或者8个时钟周期的。由于在取指令或访问存储器时要使用总线,因此机器周
期也称为总线周期。2.程序执行过程根据冯.诺依曼“存储程序”思想,程序在执行前要事先存入主存储器中。执行时,将首地址送入程序
计数器PC,然后由程序计数器PC提供地址,送主存地址寄存器,按地址逐条取出执行。其中算术逻辑运算程序的执行过程如图5.2所示。由
于实际应用程序往往是一种包含多种简单程序的复杂结构。因此,在一个大的程序中常常会有转移指令、子程序调用指令,或者遇上中断源的中断请
求。若遇上转移指令,要把转移指令中的转移目标地址送入程序计数器PC,然后按转移地址依次取指令执行。若遇上子程序调用指令,PC当
前值(断点地址)压入堆栈,子程序入口地址送入程序计数器PC,执行子程序;子程序结束,执行返回指令RET,压入堆栈的断点地址弹出,送
回PC,继续执行原来的程序。若有中断请求,CPU响应后转中断处理程序,处理完毕执行中断返回指令IRET,返回原来被中断的程序,继
续执行。5.2.1控制器的功能由以上程序的执行过程可知,在程序运行中控制器要控制每一条指令的执行过程。这就要求控制器能够做
到以下几点:(1)保存程序中每条指令在存储器中的地址,即在取出上一条指令后能自动提供下一条指令的地址。(2)按照一定的时序,把
指令地址送往存储器的地址寄存器,启动存储器读操作。(3)接收由存储器中取出的指令,并保存。(4)对指令进行译码,根据译码结果向
计算机各组成部件发执行该指令的控制信号。(5)对于算术逻辑运算指令,能根据指令操作数域给出的寻址方式计算操作数地址,取操作数,送
运算器参加运算,并记录运算结果的状态特征;对于转移指令,能够判断是无条件转移还是条件转移,在确定转移时提供(计算)转移地址,送往程
序计数器PC。(6)能对中断源的中断请求实施控制。在遇上中断请求时判断是否相应,若中断响应,能够确定中断处理程序的入口地址,送往
程序计数器PC,执行中断处理程序。(7)由于计算机的所有操作都是在统一的时序信号的控制下进行的,因此要能够产生和提供计算机运行中
的所有时序信号。如果要用一句话概括控制器的功能,就是在指令执行时根据译码器的译码结果,向计算机各功能部件发执行该指令的控制信号。
5.2.2控制器的组成不同的计算机,功能会有所不同,甚至相差很大。因此,其控制器也就有所不同。但是无论怎么变化,无论功能有多
强,基本组成是相同的。下面结合图5.3说明控制器的基本组成和组成部件的作用。1.程序计数器PC程序计数器PC又称为指令计数器
或者指令指针IP,具有加1或加2的功能。程序启动时,用来存放程序在主存中的起始地址。程序运行时,每取出一条指令,PC自动加1或者加
2,指示下一条指令地址。在有的计算机中,PC不具备加1或加2的功能,需借助于运算器加1或者加2。在执行转移指令时,PC接收转移指令
提供的转移目标地址;在执行子程序调用指令时,PC接收子程序入口地址;在CPU响应中断请求时,PC接收中断处理程序的入口地址。2.
指令寄存器IR在程序运行时,存放每一次取出的指令字,以备执行。其中操作码送指令译码器,以确定执行什么操作,地址码(有不同的寻址方
式)送地址生成部件,以确定操作数地址。图中微操作信号发生器将根据译码结果产生执行该指令的序列控制信号。3.指令译码器ID对指
令操作码进行译码,以确定指令功能,并在节拍发生器的配合下产生执行该指令的序列控制信号。对于采用微程序控制器的计算机,依次生成该指令
在微程序控制器中的微程序入口地址。4.地址生成部件地址生成部件是按照指令地址域给出的寻址方式确定(计算)操作数地址,在运算时读
取操作数。对于转移指令,生成转移地址;对于子程序调用指令,确定子程序入口地址;对于中断请求,生成中断处理程序入口地址。5.时钟电
路与脉冲源脉冲源一般由晶体振荡器构成,向时钟电路提供脉冲信号。时钟电路对晶体振荡器提供的脉冲信号进行处理,然后向计算机系统提供统
一的时钟信号,这一时钟信号也称为主时钟信号。也有的计算机把脉冲源和时钟电路合为一体。6.节拍发生器节拍发生器是对时钟电路提供的
主时钟信号进行分频和分配,生成执行指令时所需的节拍电位。比如如图5.4所示,一个指令周期包含3个机器周期,每个机器周期包含4个时钟
周期。在每个机器周期,由节拍发生器产生4个节拍电位w0~w3和4个脉冲信号p0~p3,用以控制不同的操作。比如在取指令时传送地址
、启动存储器读、取出的指令送指令寄存器等。节拍电位信号用于定时,脉冲信号用于输入输出控制,或者作为触发器的触发脉冲信号。7.启停
逻辑启停逻辑也称为启停控制电路,主要是开放或封闭主时钟信号,以确定计算机正常工作或者停止。8.中断控制逻辑中断控制逻辑用来接
收中断源的中断请求,在CPU中断响应时识别中断源,以确定是哪一个中断源发来的请求,以便地址生成逻辑提供中断处理程序的入口地址。9
.状态标志寄存器状态标志寄存器属于运算器中的一个组成部件,用来记录算术逻辑部件每次运算后结果的特征,比如最高位有进位、运算结果为
零、运算结果为负、运算结果溢出、奇偶校验标志、半进位标志等;在执行条件转移指令时,控制器根据这些结果特征判断程序是否转移。因此,状
态标志寄存器也属于控制器的组成部件。另外,一般在状态标志寄存器中还设置一些控制位,用以控制程序的运行,比如CPU开中断、程序单步执
行、设置断点、程序跟踪等。10.微操作信号发生器微操作信号发生器是根据指令译码器的译码结果,在主时钟信号和节拍电位的作用下,产
生执行一条指令所需要的一系列控制信号。由于这些信号是控制计算机各基本组成部件工作的信号,比如打开某一三态门、数据输入锁存、数据输出
等,因此这样的操作常称为微操作,这些信号称为微操作控制信号,也称为微命令。5.3微操作信号发生器目前,构成微操作信号发生器方
法主要有两种。一种是由硬件组合逻辑电路来实现,即组合逻辑控制器;另一种是由微程序的方式来实现,即微程序控制器。5.3.1组合逻
辑控制器组合逻辑控制器就是由组合逻辑电路作为微操作信号发生器,生成执行每一条指令所要的时序信号。这样的控制器也称为硬连线控制器。
1.组合逻辑微操作信号发生器组合逻辑微操作信号发生器是由硬件电路产生执行一条指令所需要的时序信号。也就是按时间顺序,产生每一
拍所需要的控制信号。比如作加法运算时,要取指令、取操作数、加法运算和存结果,微操作信号发生器就是要产生执行这些操作所需要的控制信号
。例如,图5.5所示是由两个触发器和门电路构成的一种时序信号发生器和它所产生的时序信号。其中两个触发器构成四分频电路,反相器和
“与非”门配合产生时序信号。除了外部输入CLK0之外,产生时钟信号CLK、脉冲信号CP、电位信号T1和T2。CLK是对CLK0的
二分频信号,T1和T2是对CLK0的四分频信号,即节拍电位信号。在此基础上,再通过“与”门,产生CP1、CP2、及CP1+CP2,
控制相应部件的操作。组合逻辑控制器就是由许多类似于图5.5所示电路构成的一个统一体,在同一时钟信号的控制下工作,发每一条指令执行
时所需要的所有时序信号,控制相关部件有条不紊地工作,实现指令功能。2.组合逻辑控制器组合逻辑控制器也称为组合逻辑微操作控制器
。由于一台计算机一般设有数十条到上百条指令,控制器要控制每一条指令的执行,因此它是一个庞大的组合逻辑电路,其原理结构可用图5.6来
表示。时序信号发生器产生的类似于图5.4所示的时序信号。其中机器周期信号、节拍电位w0~w3和脉冲信号p0~p3,送“与或门构成
的组合逻辑阵列”。这样,就产生执行每一条指令时所需要的时序控制信号,包括CPU内部控制信号和系统总线控制信号。这些信号统称为微操作
控制信号,也称为微命令。指令就是在这一系列时序信号的控制下一步一步执行的,遵循图5.4所示的时间顺序。3.指令执行过程在
图5.4所示时序信号中,一个指令周期包括3个机器周期,即取指令、取操作数和运算并存结果周期;一个机器周期包括4个时钟信号。这样,一
条指令的执行要按其所需的机器周期,在图5.4所示时序信号的控制下进行的。下面以一条加法指令为例,说明其控制过程:ADDR
0,[2000H],该指令的功能是寄存器R0中的数与存储器2000H单元中的数相加,结果存入R0。1)取指令周期T1:由w0
和p0控制,产生控制信号,打开PC输出三态门,PC中的地址经地址生成部件送地址总线;同时,存储器中的译码器译码,选中该指令所在单元
。T2:由w1和p1控制,产生存储器读信号,启动存储器读操作;同时,控制PC加1或者加2。T3:w2和p2不产生控制信号,等候
存储器读出指令。T4:由w3和p3控制,产生控制信号,打开存储器的输出三态门和指令寄存器IR的输入控制门,读出指令送指令寄存器。
2)取操作数周期T1:由w0和p0控制,产生控制信号,打开IR输出三态门,操作码送译码器译码,地址码经地址生成部件送地址总线
;同时,存储器中的译码器译码,选中操作数所在单元。T2:由w1和p1控制,产生存储器读信号,启动存储器读操作。T3:w2和p2
不产生控制信号,等候存储器读出数据。T4:由w3和p3控制,产生控制信号,打开存储器的输出三态门,使读出的数据送数据总线。3)
运算并存结果T1:由w0和p0控制,根据指令译码结果产生控制信号,使数据总线上数据送加法器的一个数据输入端。T2:由w1和p1
控制,产生控制信号,打开R0的输出三态门,R0中的数据读出,送加法器的另一输入端。T3:由w2和p2控制,产生控制信号,打开加法
器输出控制门,运算结果送ALU的内部数据总线。T4:由w3和p3控制,产生控制信号,打开R0和状态标志寄存器PSW的输入控制门,
运算结果送R0,结果特征送状态标志寄存器PSW。在当前精简指令计算机RISC中,运算并存结果可在两个甚至一个时钟周期内完成。5
.3.2指令执行过程举例下面以运算器为例说明指令执行过程中所需要的控制信号和一条加法指令执行时的时序信号。1.运算器与控制信
号如图5.7所示,是某计算机运算器在执行指令时数据传送路径和所需要的控制信号。图中小圆圈表示数据传送所经过的控制门,(rs1)→
ALU表示控制信号,GR表示通用寄存器,rs表示源寄存器地址,rd表示目的寄存器地址,AR表示地址寄存器,DR表示数据寄存器,Di
sp表示偏移量,DB表示数据总线,AB表示地址总线。状态标志有4个,即负标志N、零标志Z、溢出标志V和最高进位标志C。图5.7运
算器与控制信号2.指令执行过程与时序信号图5.8某计算机执行加法指令的时序图1)取指令周期T1:PC→AB、DB→IR、PC
+1为高电平(有效),PC中的地址送地址总线;ADS为高电平(有效),表示地址总线上的地址有效,存储器中的地址译码器对其译码;W/
R为低电平,W/IO为高电平,启动存储器读。T2:PC→AB、DB→IR、PC+1为高电平,继续有效;ADS转为低电平;W/R
为低电平,W/IO为高电平,继续有效,且READY为低电平(有效),指令读出,送指令寄存器IR,同时PC中的值加1。2.指令执
行过程与时序信号图5.8所示是某台计算机执行加法指令的时序图,指令执行周期分为4个机器周期,每一个机器周期包括两个时钟周期。在访
问存储器时,由于存储器速度慢,故从硬件设置Ready信号。当存储器不能快速读出数据时发Ready信号,CPU检测到以后推迟读取数据
,即插入等待周期。当Ready为低电平时,读出数据。ADS是地址锁存信号,传送地址时,该信号有效,地址送地址寄存器。3)取操作数
周期T1:AR→ABDB→DR为高电平(有效),地址寄存器中的地址送地址总线;ADS为高电平(有效),表示地址总线上的地址有效
,存储器中的地址译码器可对其译码;W/R为低电平,W/IO为高电平,启动存储器读。T2:AR→ABDB→DR为高电平,继续有
效;ADS转为低电平;W/R为低电平,W/IO为高电平,继续有效,且READY为低电平(有效),数据读出,送数据寄存器DR。
2)计算地址周期T1+T2:rs1→GR、(rs1)→ALU、Disp→ALU为高电平(有效),源操作数寄存器rs1的地址送通用
寄存器GR,rs1中的数和偏移量送ALU;“+”为高电平(有效),启动加法运算;ALU→AR为高电平(有效),求得的地址送地址寄存
器AR。4)加运算并送结果周期T1+T2:rs→GR、(rs)→ALU、DR→ALU为高电平(有效),源操作数寄存器rs的地址
送通用寄存器GR,rs中的数送ALU,数据寄存器DR中的数送ALU;“+”为高电平(有效),作加法运算;rd→GR、ALU→rd、
置“N、Z、V、C”为高电平(有效),目的寄存器rd的地址送通用寄存器GR,运算结果送目的寄存器rd,同时置状态标志N、Z、V、C
。至此,指令执行完毕。5.3.3微程序控制器1.基本工作原理在上一节举例中,控制运算器执行一条加法指令时所用的控制信
号都是用硬件电路产生的,因此这样的控制器称为组合逻辑控制器或者硬连线控制器。当然,也可以用软件的方法来实现。用软件产生上述控制信号
的方法称为微程序控制,这样的控制器称为微程序控制器。为了便于理解微程序控制器基本工作原理,先分析一下图5.8所示信号。作为控制信
号,从上到下依次有:rs1→GR、(rs1)→ALU、DISP→ALU+rs→GR、(rs)→ALU、DR→ALUALU→ARrd
→GR、ALU→rd、置N、Z、V、CPC→AB、DB→IR、PC+1AR→AB、DB→DRADSW/RW/IOW/RW/IO图5
.9微指令与微程序共10行。为了简单起见,可理解为10个控制信号。从图中可以看出,在不同的时刻,它们可能是高电平或者低电平。如
果把这10个控制信号用一个10位二进制数表示,1表示高电平,0表示低电平。比如,在取指令周期的T1时钟周期,控制信号可用10101
00000来表示。如果把它放在一个寄存器中,那么寄存器就可以发出取指令周期T1时刻的控制信号。按照这一思想,可从左到右写出每一个时
钟周期的控制信号所对应的二进制数:1010100000、1000100000、000××11010、000××11010、01
10100000、0100100000、000××01101、000××01101。如果把这一组数据存入存储器中,在执行该指令时
按照时钟周期依次取出送入一个寄存器,如图5.9所示,就可以产生如图5.8所示时序信号。微程序控制器就是按照这一思想制成和工作的。
其中每一个二进制数称为一条微指令。微指令中每一位在有效时(高电平或者低电平)产生一个控制信号,完成一个基本的操作,比如打开一个门、
控制一次数据传送等。这一基本的操作称为微操作,每一个信号称为一个微命令。一条机器指令对应的全部微指令称为该机器指令的微程序。把一条
微指令从存储器中取出送入某一寄存器并产生相应的控制信号所用的时间,称为微指令周期,其在存储器中的地址称为微指令地址,该寄存器称为微
指令寄存器。存储器一般使用只读存储器。另外,在图5.9所示微指令中有相邻两行相同的,可以合并为一条,只是在微指令寄存器中保持的时
间长一些就是了。如果把ADS的时间延长为2拍,图中8条微指令的功能就可用4条微指令来实现。图5.10微程序控制器示意图2.微
程序控制器在上述举例中,为了简单起见,仅列出某计算机的10个控制信号。而某计算机控制器产生的控制信号23个,如表5.1所示。这样
,如果按照上述直接控制法(也称为不编码法),每一条微指令不再是10位,而最少需要23位。由于一条机器语言指令对应的微程序有多条微
指令,而译码器对操作码译码时可生成该指令对应微程序在存储器中的首地址,对于后续微指令的地址怎么产生?一种简单的办法就是在每一条微指
令的后面增加一个“下一条微指令地址”字段,如图5.10所示。这里用了12位。这样,在执行前一条微指令时,就可以由其后续字段指示下一
条微指令。图中序号与表5.1给出的控制信号一致。表5.1某计算机控制信号一览表序号控制信号功能序号控制信号功能1PC→AB指令地
址送地址总线13+ALU加法运算2ALU→PC转移地址送PC14-ALU减法运算3PC+1程序计数器加115∧ALU逻辑乘运算4i
mm(disp)→ALU立即数或位移量送ALU16∨ALU逻辑加运算5DB→IR取指到指令寄存器17ALU→GRALU运算结果送通
用寄存器6DB→DR数据总线上的数据送数据寄存器18ALU→DRALU运算结果送数据寄存器7DR→DB数据寄存器中的数据送数据总线
19ALU→ARALU计算得的有效地址送地址寄存器8rs1→GR寄存器地址送通用寄存器20AR→AB地址寄存器内容送地址总线9rs
,rd→GR寄存器地址送通用寄存器21ADS地址总线上地址有效10(rs1)→ALU寄存器内容送ALU22M/IO访问存储器或I/
O11(rs)→ALU寄存器内容送ALU23W/R写或读12DR→ALU数据寄存器内容送ALU??若设取指令微指令的地址为200
H,上述图5.8所示加法指令的执行过程如图5.11所示。取指令微指令地址是200H,加法指令、减法指令和转移指令的起始地址分别为2
01H、204H和240H。从200H单元开始执行取指令操作,对于加法指令,经译码进入201H单元,执行加法微程序,进行加法运算。
运算完后,回到200H单元继续取指令,执行后续指令。在图5.11所示流程图中,至于执行哪一个微程序,须在指令取出后对操作码译码确
定。微程序控制器组成原理如图5.12所示,主要由微程序控制器、微指令寄存器和下一微地址逻辑电路组成。微程序控制器组成原理如图5.
12所示,主要由微程序控制器、微指令寄存器和下一微地址逻辑电路组成。指令读出后,操作码送译码器译码,生成微程序入口地址,送下一微地
址逻辑电路。依此在微程序控制器中读取微指令,送微指令寄存器。在微指令寄存器中,微指令字段发相应的微命令,控制有关部件工作,执行指令
。下址字段送下一微地址逻辑电路,以便取下一条微指令。在图5.10所示微程序控制器中,每一条微指令的每一位直接输出,产生一个控制信
号。微指令的这种设置方式称为直接控制法。而在实际的微程序控制器中,除了这种直接控制法之外,还有最短编码法和字段编码法。3.微指
令编码方法1)直接控制法直接控制法如图5.10所示,控制器有多少个控制信号,微指令的控制字段就设置多少位。该微指令取出后,每一
位产生一个控制信号。由于微指令的控制字段没有编码,读出后也就不需要译码器。这种方法,直观,简单。由于这种微指令同时定义了多个微命令
,并产生多个并行操作,因此这种微指令称为水平型微指令,由于在水平方向不分字段,因此是一种纯水平型微指令。而这在一些大型机中,控制
信号有数百个。这样,控制字段就需要数百位,这将导致微指令字过长,微程序控制器(ROM)过大,甚至难以实现。故此,可采用编码法。2
)最短编码法最短编码法也称为全编码法,就是对所有的控制信号统一编码。这样,微指令的控制字段就最短。比如控制信号有N个,则微指令的
控制字段仅L位:L=Log2N。这种方法,可以说是一种极端的作法。微指令取出后,需经同一个译码器译码。而译码器在同一时刻只能产生一个控制信号,这将使机器指令对应的微程序很长。这种微指令称为垂直型微指令,这种极端的微指令也称为纯垂直型微指令。由于导致微程序太长,已不实用。3)字段编码法字段编码法是对上述两种编码法的折中方法。它是将控制字段分为若干个小段,段内采用最短编码法,段间采用水平控制法,如图5.13所示。在采用字段编码法时有两个原则,也就是要考虑所有控制信号中哪些必须在同一时刻发出,哪些不能在同一时刻发出。不能在同一时刻发出的,称为互斥性,可放在同一段内;能在同一时刻发出的,称为相容性,必须放在不同的段内。在上世纪60—70年代,微程序控制器是各类计算机中控制器的核心技术。那时,计算机的指令一般都很长,有十几位、几十位、甚至上百位,功能也很强,因此称为复杂指令集计算机(Complex?Instruction?Set?Computer,简称CISC)。在CISC计算机中,控制器主要采用微程序控制技术。到了上世纪80年代以后,精简指令集计算机RISC(Reduced?Instruction?Set?Computing?)产生,而且得到迅速发展,其中的控制器主要采用组合逻辑电路,也就是硬连线控制器技术。目前,就一般而言,在运算功能相近的计算机中,采用硬连线控制器的RISC计算机运行速度要比采用微程序控制器的CISC计算机快一些。
献花(0)
+1
(本文系太好学原创)