1、第六章 中央处理器6.3.3微程序控制器 微程序控制的概念是1951年由英国剑桥大学的威尔克斯提出的。微程序控制器的基本思想,是把指令每步执行所需的控制信号组合存放到存储器中,执行到该指令的某一步时,从存储器取出对应步的控制信号传送到需要操作的部件。微程序的设计思想,避免了复杂的电路设计,并且便于修改。6.3.3微程序控制器 1微程序控制的基本概念 计算机中各部件的控制信号,称为微命令。微命令完成的操作称为微操作。将指令执行时可以同时执行的一组微操作组成一条微指令。完成一条指令的多个微指令序列称为微程序。微程序控制设计的基础,就是将计算机指令系统中所有指令对应的微程序存放在一个专门的存储器中,
2、这个存储器称为微程序存储器或控制存储器。在执行指令时,只要从微程序存储器中顺序取出该指令对应的微程序,就可以按事先存好的次序产生相应的操作控制信号。微指令在控制存储器中的地址,称为微地址。6.3.3微程序控制器 2微程序控制器的构成 微程序控制器主要由控制存储器CS、微指令寄存器uIR、微程序计数器uPC以及起始和转移地址发生器等部分组成6.3.3微程序控制器 控制存储器CS存放全部指令系统的所有微程序。指令执行时,就是从控制存储器中不断取出微指令,产生控制其他部件的控制信号。控制存储器的容量,取决于指令的数量和每条指令的微程序长度。微指令寄存器uIR存放由控制存储器中读出的一条微指令信息。一
3、条微指令的编码包括操作控制部分和微地址形成部分。操作控制部分就是该微指令所需的全部控制信号的编码,经过译码后,产生控制信号。微地址形成部分用来决定下一条微指令的地址。6.3.3微程序控制器 微程序计数器uPC存放要访问的下一条微指令的微地址。如果微程序不出现分支,即微指令顺序执行,则uPC的微地址可以采用自动增量的方式,如程序计数器PC那样。如果微程序出现分支,则根据执行中的状态信息,修改uPC中的值,得到下一条微指令的地址。起始和转移地址发生器,就是根据指令代码、条件码以及相应的转移控制微命令,来形成微程序的入口地址或者转移地址。6.3.3微程序控制器 3微程序控制器的工作流程 微程序控制器
4、执行取指令微程序,将指令从主存取出存入指令寄存器IR。根据指令寄存器IR中的指令操作码,产生该指令的微程序入口地址送给微程序计数器uPC。根据uPC中的微地址访问控制存储器CS,取出一条微指令送入微指令寄存器uIR。由uIR中的操作控制字段,经过译码产生所需的微命令信号,送往各执行部件,指挥执行部件完成相应的操作。由uIR的转移控制字段,结合条件码、状态标志等信息,形成下一条微指令地址送往uPC。重复执行取微指令、执行微指令的过程,完成该指令的功能。一条指令的微程序执行结束,重新执行取指令微程序,得到新的机器指令送入IR。如此周而复始,直到整个程序的指令执行完毕。6.3.3微程序控制器 4微指
5、令设计 微程序设计的关键问题之一是微指令的设计。微指令采用什么样的操作控制字段编码和微地址形成方式,将直接影响微程序控制器的结构、控制存储器的容量和指令的执行速度。微指令有水平型和垂直型两种。6.3.3微程序控制器(1)水平型微指令 水平型微指令能最大限度表示微操作的并行性。一条微指令能执行多个并行微命令。水平型微指令的代码较长,能充分利用硬件并行性,并带来速度优势,并且微程序中包含的微指令条数较少。但是水平型微指令的代码空间利用率低。水平型微指令由操作控制字段和转移地址字段组成。操作控制字段定义微指令要产生的微命令信息,常用的表示方法有直接表示法、编码表示法和混合表示法。转移地址字段是形成下
6、一条微指令地址的方式,有计数器法和断定法。6.3.3微程序控制器 直接表示法 直接表示法,又称为直接控制法。微指令中操作控制字段的每一位定义为一个微命令,该位的“1”或“0”值,表示微指令执行时,该微命令控制信号有效或无效。将微指令的每一位直接输出到一条控制线上,连接到相应的执行部件。当微指令执行时,微指令中的每一位值,就传递到相应的执行部件,控制该部件工作或不工作。这种方法直观,不必译码,控制电路简单、速度快。但是一条微指令要记录机器中所有微命令的有效或无效情况,微指令长度可能长达几百位。这样会导致控制存储器容量过大。6.3.3微程序控制器 例6-8图6-1所示计算机中所有控制信号共22个,
7、有:PCout、PC+1、PCin、IRin、IRout、MARin、MARout、MDRin、MDRout、R1in、R1out、R2in、R2out、Yin、Yout、Zin、Zout、+、-、1-C0、RM、WM。为该计算机设计微指令的操作控制字段,写出ADD R1,R2指令的微程序。6.3.3微程序控制器 解:设计微指令格式,每位控制信号作为控制字的1位,所以,操作控制字段一共22位,每位代表的信号按题中信号顺序编码。控制信号1表示有效,0表示无效。该微程序有5条微指令,分别记录每个机器周期要发出的控制信号。本例的微程序在控制存储器中共占5*22位,其中大多数为0,编码效率较低。6.3
8、.3微程序控制器 字段编码法 在微指令运行时,大多数控制信号不会同时有效。同一时间有效的信号称为相容信号,具有相容性。不能同一时间有效的信号称为互斥信号,具有互斥性。将相斥信号组合在一个字段,相容信号分配在不同字段,然后对每个字段编码,一个微命令分配一个编码。微指令中只记录该字段有效的微命令的编码,再通过译码器将该编码译码为控制信号。6.3.3微程序控制器 字段编码法又有字段直接编码法和字段间接编码法。字段直接编码法每个字段经译码器直接译码得到所需的微命令。字段间接编码法在字段直接编码法的基础上,一个字段的某些编码和另一个字段的某些编码联合产生若干微命令。6.3.3微程序控制器 例6-9计算机
9、中有7个互斥控制信号a、b、c、d、e、f、g,分别采用直接表示法和字段编码法设计该机微指令操作控制字段。6.3.3微程序控制器 解:1)采用直接表示法,每位控制信号作为控制字的1位,所以,操作控制字段一共7位,每位代表的信号按题中信号顺序编码。控制信号1表示有效,0表示无效。微指令的每一位直接输出到一条控制线上,连接到相应的执行部件。控制信号连接如图6-7。6.3.3微程序控制器 解:2)采用字段编码法,这7个信号是互斥的,所以可以分在一个组。给每个信号一个编码,只需要3位即可。编码时要考虑一个组中的信号都无效的情况nop,也要分配一个编码。微指令寄存器的三位输出,连接一个3-8译码器,可以
10、将3位编码译码为对应输出端的控制信号。如图6-8。这样,微指令长度只需要3位。6.3.3微程序控制器例6-10图6-1所示计算机中所有控制信号共22个,有:PCout、PC+1、PCin、IRin、IRout、MARin、MARout、MDRin、MDRout、R1in、R1out、R2in、R2out、Yin、Yout、Zin、Zout、+、-、1-C0、RM、WM。为该计算机设计微指令的操作控制字段,写出ADD R1,R2指令的微程序。6.3.3微程序控制器解:分析该机器的22个控制信号,将相斥的信号进行分组(分组方式有多种,原则是同组信号要互斥,微指令长度尽可能短)。F1:IRout、P
11、Cout、MDRout、R1out、R2out、ZoutF2:IRin、MDRin、R1in、R2in、Yin、Zin、PCinF3:Yout、MARout、PC+1 F4:+、-、1-C0F5:RM、WMF6:MARin6.3.3微程序控制器对每个组的信号进行编码。要考虑到一个组的全部信号都无效时的情况nop,要分配一个编码。编码如图6-9。6.3.3微程序控制器可见,采用字段编码后,微指令长度为13位,比原来直接表示法短了很多。将ADD R1,R2指令的执行的每一个机器周期用微指令表示记录下来。微程序如图6-10。微指令寄存器uIR的每个字段外接一个译码器,可以将每个字段的编码译码为对应的
12、控制信号。6.3.3微程序控制器混合表示法混合表示法是将直接表示法和编码表示法两种结合起来。对并行性高的微命令采用直接表示,其余用编码表示。混合表示法较为实用。6.3.3微程序控制器(2)垂直型微指令 垂直型微指令采用短格式,一条微指令只能实现一二个微操作。垂直型微指令中控制字段由微指令操作码和微操作对象构成。微指令操作码用来指示做何种微操作 微操作对象用来提供微操作所需要的操作数(常量或地址)。每条垂直型微指令只能完成少量微操作控制,并行能力差,致使微程序变长,执行速度减慢。6.3.3微程序控制器(5)微地址形成 一条微指令执行完后,要确定下一条要执行的微指令的地址。产生后继微指令地址的方法
13、有 计数器方式(增量方式)断定方式(下址字段方式)联合方式6.3.3微程序控制器 计数器方式(增量方式)将微程序中的各条微指令按执行顺序安排在控制存储器中,用微程序计数器uPC由现行微地址加上一个增量得到下一条微指令地址。在微程序需要按非顺序方式执行时,通过转移微指令来指定uPC中的新微指令地址。计数器方式的实现方法比较直观,微指令的转移地址字段比较短,微地址生成机构比较简单。缺点是执行速度慢。当转移分支很多时,相应的逻辑电路也更复杂,此时可以采用PLA可编程逻辑阵列来实现。6.3.3微程序控制器 断定方式(下址字段方式)在微指令中设置一个专门的地址字段,用以指出下一条微指令的地址。这样不需要
14、专门的转移微指令。下址字段中包括条件选择信息。根据条件测试信息,修改下一条微指令地址的若干位,得到新的微指令地址。断定方式的微指令比计数器方式的微指令长,增大了控制存储器的容量。联合方式 将微指令的地址形成部分分为转移控制部分和转移地址字段。判断转移控制部分的情况,当需要微程序转移时,将转移地址送uPC,否则顺序执行下一条微指令(uPC+1)。6.3.3微程序控制器 例6-11 设计算机中有8条微指令A、B、C、D、E、F、G、H。这些微指令执行的流程如图6-11。分别采用计数器方式、断定方式和联合方式,设计微程序。6.3.3微程序控制器 图中,微指令A执行完毕后,根据指令寄存器IR中的IR1
15、IR0两位的组合,有4个分支。当IR1IR0=00,执行微指令B。当IR1IR0=01,执行微指令C。当IR1IR0=10,执行微指令D。当IR1IR0=11,根据状态sf值,要么执行微指令E或者转微指令A。微指令B执行后执行微指令F。微指令C执行后执行微指令F。微指令F执行后,根据IR3IR2两位的值进行分支。如果IR3IR2=00,之后执行微指令G。若如果IR3IR2=01,之后执行微指令H。微指令G和H执行后,都转向微指令A。6.3.3微程序控制器 解:1)采用计数器方式设计 采用计数器方式设计,微指令的格式有2种 1种是普通微命令微指令,其后继微地址由uPC+1得到 1种是转移微指令,
16、由转移微指令实现转移地址。8条微指令,每条微指令之后需要转移微指令,所以,微指令的微地址至少要5位,定义为A4A0。为区分2种微指令,在微指令中设计1位T。当T=0时,表示是普通微命令微指令;T=1时,表示是转移微指令。6.3.3微程序控制器有a、b、c共3个转移点,加上无条件转移,所以转移控制字段需要2位,定义为P1P0。P1P0=00(P=0),是无条件转移,转移地址送uPC。P1P0=01(P=1),分支点a,由IR1IR0控制修改uPC4uPC3两位。P1P0=10(P=2),分支点b,由IR3IR2=00控制修改uPC0,IR3IR2=01控制修改uPC4 P1P0=11(P=3),
17、分支点c,若sf=0,转向微指令A单元,否则uPC+1-uPC。6.3.3微程序控制器 已知IR中的IR3IR2IR1IR0,uIR中的转移地址A4A0,P1P0。这样可以得到uPC中地址的形成逻辑:6.3.3微程序控制器6.3.3微程序控制器 2)采用断定方式设计 采用断定方式设计,需要在微指令中设置一个下址字段,用于指明下一条要执行的微指令的地址。uPC不具有自动加1功能。共8条微指令,在a、b、c处需要判断微指令,所以微地址为4位,2位判断位,定义为P1P0。6.3.3微程序控制器 P1P0=00(P=0),顺序执行,转移地址送uPC。P1P0=01(P=1),分支点a,由IR1IR0控
18、制修改uPC3uPC2两位。P1P0=10(P=2),分支点b,由IR3IR2=00控制修改uPC1,IR3IR2=01控制修改uPC3 P1P0=11(P=3),分支点c,用sf的值修改uPC2。6.3.3微程序控制器 已知IR中的IR3IR2IR1IR0,uIR中的转移地址A3A0,P1P0。这样可以得到uPC中地址的形成逻辑:6.3.3微程序控制器6.3.3微程序控制器 3)联合方式 联合方式的控制器中,需要具有自动增量功能的uPC。微指令格式中包含转移控制字段和转移地址字段。由转移控制字段确定,是执行uPC自动增量获得下一条微地址,还是将转移地址字段传送到uPC作为后继微地址。共8条微
19、指令,考虑a、b、c分支判断微指令,需要4位微地址,即uPC3 uPC0。转移地址字段也4位,A3A0。考虑分支点、计数控制和无条件转移,转移控制字段需要3位,用P2P1P0表示。6.3.3微程序控制器 P2P1P0=000(P=0),顺序执行,uPC+1-uPC。P2P1P0=001(P=1),无条件转移,转移地址送uPC。P2P1P0=010(P=2),分支点a,由IR1IR0控制修改uPC3uPC2两位。P2P1P0=011(P=3),分支点b,由IR3IR2=00控制修改uPC0,IR3IR2=01控制修改uPC2 P2P1P0=100(P=3),分支点c,若sf=0,根据转移地址转向微指令A单元,否则uPC+1-uPC。6.3.3微程序控制器 已知IR中的IR3IR2 IR1IR0,uIR中的转移地址A3A0,P2P1P0。这样可以得到uPC中地址的形成逻辑:6.3.3微程序控制器