第5章 微程序控制器-1.ppt
1 1/55/55第5章 微程序控制器张晨曦张晨曦 刘依刘依www.A2 2/55/555.1 微程序控制的基本原理5.2 微程序控制器的组成与工作过程5.3 微程序设计技术5.4 模型机的微程序控制器3 3/55/55组合逻辑控制器存在的两个比较突出的缺点:设计复杂、繁琐,缺乏规律性,设计效率低。不易修改和扩充,缺乏灵活性。微程序的概念和原理:英国剑桥大学的M.V.Wilkes教授于1951年提出的主要缺点:速度比较慢 5.1 微程序控制的基本原理A A B B C C D D E E F F G G H H I I J J K K L L M M N N控制信号:硬连逻辑A A B B C C D D E E F F G G H H I I J J K K L L M M N N控制信号:硬连逻辑T0:1 1 0 0 0 1 0 1 0 0 0 0 1 0第一个节拍A A B B C C D D E E F F G G H H I I J J K K L L M M N N控制信号:硬连逻辑第二个节拍0 0 1 1 0 0 0 0 1 1 0 0 0 0T1:A A B B C C D D E E F F G G H H I I J J K K L L M M N N控制信号:硬连逻辑第三个节拍0 0 0 0 1 0 1 0 0 0 0 0 0 0T2:A A B B C C D D E E F F G G H H I I J J K K L L M M N N控制信号:硬连逻辑第四个节拍0 0 0 0 0 0 0 0 0 0 1 1 0 1T3:A A B B C C D D E E F F G G H H I I J J K K L L M M N N控制信号:T0:1 1 0 0 0 1 0 1 0 0 0 0 1 00 0 1 1 0 0 0 0 1 1 0 0 0 0T1:0 0 0 0 1 0 1 0 0 0 0 0 0 0T2:0 0 0 0 0 0 0 0 0 0 1 1 0 1T3:微程序控制器0 0 0 0 0 0 0 0 0 0 0 0 0 01010/55/551.基本思想用二进制编码字(称为微指令字)来代替组合逻辑控制器中的微操作控制信号的产生。例:用例:用“1 1”表示进行相应的微操作,表示进行相应的微操作,“0 0”表示不进行操作,表示不进行操作,则图中的微指令字所对应的微操作集合为:则图中的微指令字所对应的微操作集合为:PC+4PC+4,读指令,读指令 (假设其他各位都是(假设其他各位都是0 0)5.1 微程序控制的基本原理1111/55/555.1 微程序控制的基本原理把在一条指令的执行过程中各节拍要进行的微操作集合都用一个微指令字来表示,然后把他们按节拍的先后顺序存放到一个特殊的存储器中(称为控制存储器CM)。执行该指令时,按顺序依次读出微指令字。实质:用程序设计的思想方法来组织操作控制逻辑,用规整的存储逻辑来代替繁杂的组合逻辑。1212/55/555.1 微程序控制的基本原理2.几个基本概念 微命令和微操作q微命令:微命令:控制部件向执行部件发出的各种控制命令。控制部件向执行部件发出的各种控制命令。构成控制信号序列的最小单位。构成控制信号序列的最小单位。例如:例如:打开或关闭某个控制门,多路器选择哪个输入等。打开或关闭某个控制门,多路器选择哪个输入等。q微操作:微操作:指执行部件接受微命令后所进行的最基本的、指执行部件接受微命令后所进行的最基本的、不可再细分的操作。不可再细分的操作。分为两种:分为两种:n相容的相容的微操作:可以同时进行的微操作。微操作:可以同时进行的微操作。n互斥的互斥的微操作:不能同时进行的微操作微操作:不能同时进行的微操作。p微命令和微操作是一一对应的。微命令和微操作是一一对应的。p微命令是微操作的控制信号,微操作是微命令的操作过微命令是微操作的控制信号,微操作是微命令的操作过程。程。1313/55/555.1 微程序控制的基本原理微指令和微程序q微指令:微指令:用来产生微控制信号的二进制编码字。用于用来产生微控制信号的二进制编码字。用于控制完成一组微操作。控制完成一组微操作。q微程序:微程序:一序列微指令构成的有序集合。一序列微指令构成的有序集合。q每一条机器指令都对应于一段微程序,通过解释执行每一条机器指令都对应于一段微程序,通过解释执行这段微程序,完成指令所规定的操作。这段微程序,完成指令所规定的操作。微指令周期q微指令周期:微指令周期:微程序控制器的工作周期。微程序控制器的工作周期。q从控制存储器读取一条微指令到执行完相应的微操作从控制存储器读取一条微指令到执行完相应的微操作所需时间的最大值。所需时间的最大值。1414/55/55程序、指令、微程序、微指令、微命令、微操作的关系1515/55/551.Wilkes微程序控制器的原理图 控制存储器CMq简称简称控存控存,用于存放实现整个指令系统的所有微程序。,用于存放实现整个指令系统的所有微程序。q每个单元存放一条微指令字。每个单元存放一条微指令字。微指令寄存器IRq用来存放从控存读出的当前微指令。用来存放从控存读出的当前微指令。q微指令中包含两个字段微指令中包含两个字段 n操作控制字段:操作控制字段:直接与控制信号线连接,控制相关直接与控制信号线连接,控制相关的部件完成微指令所规定的微操作。的部件完成微指令所规定的微操作。5.2 微程序控制器的组成与工作过程1616/55/555.2 微程序控制器的组成与工作过程图图5.2 Wilkes5.2 Wilkes微程序控制器原理图微程序控制器原理图1717/55/555.2 微程序控制器的组成与工作过程n地址控制字段:地址控制字段:用于控制下一条微指令地址的用于控制下一条微指令地址的产生。产生。微地址形成电路 该电路根据控制地址字段中的信息产生后续微地址。该电路根据控制地址字段中的信息产生后续微地址。微地址寄存器MAR 接受微地址形成电路送来的地址,为读取下一条微接受微地址形成电路送来的地址,为读取下一条微指令做好准备。指令做好准备。地址译码器 将将MAR中的微地址进行译码,找到被访问的控存中的微地址进行译码,找到被访问的控存单元,将其中的微指令读出并存放于单元,将其中的微指令读出并存放于IR中。中。1818/55/555.2 微程序控制器的组成与工作过程2.微程序控制器的工作过程(假设其微程序已经在控存中准备好)(假设其微程序已经在控存中准备好)启动取指微程序,把要执行的机器指令(其地址由PC给出)从主存取到指令寄存器IR中,并完成对PC的增量操作(参照图(参照图5.25.2中的中的)。根据IR中指令的操作码,微地址形成电路产生该指令的微程序的入口地址,并送入MAR。MAR中的微地址经过译码,从控存中读取相应的微指令,送入IR。IR中微指令的操作控制字段直接(或经过译码)产生一组微命令,送往相应的功能部件,控制它们完成所规定的微操作。1919/55/555.2 微程序控制器的组成与工作过程微地址形成电路根据IR中微指令的地址控制字段和机器的状态信息(如程序状态字PSW),产生下一条微指令的地址并送往MAR。重复上述步骤第三到第五步,直到该机器指令的微程序全部执行完毕。2020/55/55目标 减少微指令的宽度,减少微程序的长度,提高减少微指令的宽度,减少微程序的长度,提高执行速度,保持微程序设计的灵活性。执行速度,保持微程序设计的灵活性。一条微指令由两部分构成q微操作控制字段微操作控制字段q地址控制字段地址控制字段 对微操作控制字段进行编码的方法有4种直接控制编码、最短字长编码直接控制编码、最短字长编码分段直接编码、分段间接编码分段直接编码、分段间接编码5.3 微程序设计技术5.3.1 微指令的编码方法2121/55/555.3 微程序设计技术1.直接控制编码法(不译码法)微操作控制字段的每一位直接对应一个微操作。q当某位为当某位为1时,就表示执行相应的微操作;时,就表示执行相应的微操作;q为为0时就不执行该微操作。时就不执行该微操作。优点:结构简单,并行性最好,操作速度快。缺点:微指令字太长。2222/55/555.3 微程序设计技术2.最短字长编码法将所有的微命令进行统一的二进制编码,每条指令只定义一个微操作。微操作控制字段的长度L与微命令的总数N的关系 L log2N优缺点q微指令的字长最短,但要经过译码后才能得到所需要微指令的字长最短,但要经过译码后才能得到所需要的微命令,执行速度会受到影响。的微命令,执行速度会受到影响。q在一条微指令中只能产生一个微命令,无法利用硬件在一条微指令中只能产生一个微命令,无法利用硬件所具有的并行性。所具有的并行性。2323/55/555.3 微程序设计技术需对整个微操作控制字段进行译码,产生相应的一组微命令。需对整个微操作控制字段进行译码,产生相应的一组微命令。2424/55/555.3 微程序设计技术3.字段直接编码法把微操作控制字段进一步划分为若干个字段,每个字段单独编码,每个码点表示一个微命令。上面两种方法的上面两种方法的折中方案折中方案:字段之间采用直接控制,字段内部采用最短字长编码。字段之间采用直接控制,字段内部采用最短字长编码。进行字段划分时,需要注意以下原则:q可以按功能和部件划分,对于机器中的每一种功能类可以按功能和部件划分,对于机器中的每一种功能类型或每一个部件,分配一个字段;型或每一个部件,分配一个字段;q把互斥的微操作分在同一字段,把相容的微操作分到把互斥的微操作分在同一字段,把相容的微操作分到不同的字段不同的字段;q字段的划分应与数据通路相适应;字段的划分应与数据通路相适应;q一般每个字段应留出一个码点,用于表示不发任何微一般每个字段应留出一个码点,用于表示不发任何微命令。命令。2525/55/555.3 微程序设计技术既能缩短微指令字长,又能实现较高的并行性,执行速度比较快。既能缩短微指令字长,又能实现较高的并行性,执行速度比较快。4.字段间接编码字段的编码的含义(即表示什么微命令)要由另外一个字段的编码来解释确定。一个解释字段要同时对多个字段进行控制(解释),才能有效地缩短字长。解释字段应有某些分类的特征 2727/55/555.3 微程序设计技术5.常数源字段的设置 作用:q提供常数提供常数 q参与其他字段的间接编码参与其他字段的间接编码2828/55/555.3 微程序设计技术 分为两大类:水平型微指令和垂直型微指令。1.水平型微指令一次能定义并执行多个微操作的微指令。具有以下特点:q微指令字较长,一般为几十位到上百位。微指令字较长,一般为几十位到上百位。例如:例如:VAX-11/780机的微指令字长为机的微指令字长为96位。位。q微指令中描述并行微操作的能力强,在一个微周期中,微指令中描述并行微操作的能力强,在一个微周期中,能并行执行多个微操作。能并行执行多个微操作。q微指令译码简单,一般采用直接控制编码法和分段直微指令译码简单,一般采用直接控制编码法和分段直接编码法。接编码法。5.3.2 微指令格式2929/55/555.3 微程序设计技术优缺点q并行操作能力强、执行速度快、代码长度短。并行操作能力强、执行速度快、代码长度短。q微指令字比较长,明显增加了控存的宽度。微指令字比较长,明显增加了控存的宽度。q编制微程序比较复杂,难度较大,也不易实现设计的编制微程序比较复杂,难度较大,也不易实现设计的自动化。自动化。2.垂直型微指令 一次只能定义一两个微操作(一般是数据传送),而且微指令字长比较短。例如,一条垂直型运算操作的微指令的格式为:例如,一条垂直型运算操作的微指令的格式为:3030/55/555.3 微程序设计技术其中:qOP:微操作码微操作码q把两个源寄存器中的内容进行把两个源寄存器中的内容进行OP所规定的操作,结所规定的操作,结果存入目的寄存器字段所指定的寄存器中。果存入目的寄存器字段所指定的寄存器中。特点q微指令字短,一般为一、二十来位;微指令字短,一般为一、二十来位;q微指令的并行微操作能力差,一条微指令只能控制数微指令的并行微操作能力差,一条微指令只能控制数据通路的一两种信息传送;据通路的一两种信息传送;q垂直型微指令是通过一个称为微操作码的字段来定义垂直型微指令是通过一个称为微操作码的字段来定义微指令的基本功能和信息传送路径。执行时,需进行微指令的基本功能和信息传送路径。执行时,需进行完全译码,译码比较复杂。完全译码,译码比较复杂。q微指令的各二进制位与数据通路的各个控制点之间完微指令的各二进制位与数据通路的各个控制点之间完全不存在直接对应关系。全不存在直接对应关系。3131/55/555.3 微程序设计技术优点q直观、规整,易于编制微程序和实现设计自动化。直观、规整,易于编制微程序和实现设计自动化。q微指令字比较短,控存的横向比较窄。微指令字比较短,控存的横向比较窄。q可以直接应用现有程序设计语言的结果。可以直接应用现有程序设计语言的结果。缺点q微程序比较长,而且垂直型微指令产生微命令要经过微程序比较长,而且垂直型微指令产生微命令要经过译码,程序执行速度慢。译码,程序执行速度慢。q描述并行微操作的能力很差,不适合用于数据通路有描述并行微操作的能力很差,不适合用于数据通路有较多并行性的机器。较多并行性的机器。3232/55/555.3 微程序设计技术微程序的顺序控制问题(微程序地址控制问题)q初始微地址初始微地址:机器指令所对应的微程序的入口地址:机器指令所对应的微程序的入口地址 q形成下一条微指令的地址(称为后继微地址)形成下一条微指令的地址(称为后继微地址)1.微程序入口地址的形成 公用的“取指令”微程序一般存放在控存中第0号单元或其它指定的控存单元开始的一片控存区域中。(这个地址是固定不变的)(这个地址是固定不变的)根据IR中的操作码,找到该指令所对用的微程序的入口地址。5.3.3 微程序的顺序控制3333/55/555.3 微程序设计技术实际上是一个从操作码到入口地址的实际上是一个从操作码到入口地址的映象问题映象问题。两种实现方法:直接对应法 q所有指令的操作码的位数和位置都相同时所有指令的操作码的位数和位置都相同时n直接把操作码与微地址码的部分位对应。直接把操作码与微地址码的部分位对应。例如,可指定微地址:例如,可指定微地址:ConstOp (Op:操作码,:操作码,Const:常数):常数)n操作码一般是连续编码的,所以直接对应过去操作码一般是连续编码的,所以直接对应过去的地址是连续的。的地址是连续的。n改进:改进:在上述拼接的微地址后面再拼接若干位在上述拼接的微地址后面再拼接若干位0(设为(设为n位),使得每个操作码在所对用的区域中有一片位),使得每个操作码在所对用的区域中有一片单元(单元(2n个)可用。个)可用。3434/55/555.3 微程序设计技术q如果操作码的位数和位置不固定,但在每一类指令中,如果操作码的位数和位置不固定,但在每一类指令中,操作码的位数和位置都是相同的,则可以采用两级分操作码的位数和位置都是相同的,则可以采用两级分转。转。查表法 q在操作码的位数或位置不固定的情况下,需要用专门在操作码的位数或位置不固定的情况下,需要用专门的硬件实现操作码到入口地址的映象。的硬件实现操作码到入口地址的映象。q用用PLA或或ROM实现一个表格,该表格给出了各操作实现一个表格,该表格给出了各操作码所对应的微程序的入口地址。码所对应的微程序的入口地址。q使用该表时,只要用操作码作为输入,就能在其输出使用该表时,只要用操作码作为输入,就能在其输出端得到该指令的微程序入口地址。端得到该指令的微程序入口地址。3535/55/555.3 微程序设计技术2.后继微地址的形成两种方式:增量方式,断定方式。增量方式q设置一个微程序计数器设置一个微程序计数器PC。q顺序执行时,给顺序执行时,给PC增加一个增量(通常为增加一个增量(通常为1)给出下一)给出下一条微指令的地址。条微指令的地址。q遇到转移时,由微指令给出转移目标的微地址。遇到转移时,由微指令给出转移目标的微地址。采用这种方式的微指令格式:采用这种方式的微指令格式:3636/55/555.3 微程序设计技术q微地址字段微地址字段SCF分成两个字段分成两个字段n转移控制字段转移控制字段BCF 用于规定是顺序执行还是转移。如果是转移,用于规定是顺序执行还是转移。如果是转移,就由就由BCF指出转移地址的来源。指出转移地址的来源。n转移地址字段转移地址字段BAFq转移地址的来源有转移地址的来源有3种种n由由BAF给出的地址;给出的地址;n机器指令所对应的微程序的入口地址;机器指令所对应的微程序的入口地址;n微子程序入口地址和返回地址(存放在返回地微子程序入口地址和返回地址(存放在返回地址寄存器中)。址寄存器中)。3737/55/555.3 微程序设计技术举例:假设假设BCFBCF为为3 3位,用于控制实现顺序执行、初始转移、无条件转位,用于控制实现顺序执行、初始转移、无条件转移、条件转移、测试循环、转微子程序、微子程序返回等,如表所移、条件转移、测试循环、转微子程序、微子程序返回等,如表所示。示。RRRR:微子程序返回地址寄存器。:微子程序返回地址寄存器。当执行转微子程序指令时,把返回地址当执行转微子程序指令时,把返回地址(PC+1PC+1)送入返回地送入返回地址寄存器址寄存器RRRR中,并将转移地址送入中,并将转移地址送入PCPC中。中。当执行返回微指令时,将当执行返回微指令时,将RRRR中的返回地址送入中的返回地址送入PCPC,返回微主,返回微主程序。程序。3838/55/555.3 微程序设计技术BCFBCF转移控制方式转移控制方式测试条件测试条件后继微地址及有关操作后继微地址及有关操作000000顺序执行顺序执行PCPC1PC1PC001001初始转移初始转移由操作码形成由操作码形成010010条件转移条件转移不成立不成立PCPC1PC1PC成立成立BAFPCBAFPC011011无条件转移无条件转移BAFPCBAFPC100100循环测试循环测试不成立不成立PCPC1PC1PC成立成立BAFPCBAFPC101101转微子程序转微子程序PCPC1RR1RR,BAFPCBAFPC110110微子程序返回微子程序返回RRPCRRPC111111备用备用3939/55/555.3 微程序设计技术微微地地址址控控制制方方式式的的原原理理框框图图 4040/55/555.3 微程序设计技术q优点优点 SCF字段比较短,后继微地址生成逻辑比较简字段比较短,后继微地址生成逻辑比较简单,编制微程序也比较容易。单,编制微程序也比较容易。q缺点:缺点:不能直接实现多路转移。不能直接实现多路转移。断定方式q按以下方式确定后继微地址按以下方式确定后继微地址n由微程序设计者直接指定;由微程序设计者直接指定;n由微程序设计者指定的测试判别逻辑字段控制由微程序设计者指定的测试判别逻辑字段控制产生。产生。q后继微地址由两部分组成后继微地址由两部分组成n非测试地址非测试地址 微程序设计者直接指定的,是不变的,构成微程序设计者直接指定的,是不变的,构成微地址的微地址的高位部分高位部分。4141/55/555.3 微程序设计技术n测试地址测试地址 在微程序的执行过程中,通过测试一些状态在微程序的执行过程中,通过测试一些状态位而动态决定的,它构成微地址的位而动态决定的,它构成微地址的低位部分低位部分。q微地址格式微地址格式 测试地址的位数决定了并行分支的路数,而且测试地址的位数决定了并行分支的路数,而且也决定了测试控制字段的个数。也决定了测试控制字段的个数。例如:例如:当测试地址位数为当测试地址位数为m m时,分支的路数为时,分支的路数为2 2m m,而测试字段的个数为,而测试字段的个数为m m。至于测试字段的位数。至于测试字段的位数n n,则是取决于测试条件的个数,则是取决于测试条件的个数N N,一般地,一般地,有有n=logn=log2 2N+1N+1。4242/55/555.3 微程序设计技术举例:举例:一个具有两位测试地址的微地址的生成过程一个具有两位测试地址的微地址的生成过程 HFHF为非测试地址,直接送为非测试地址,直接送CMARCMAR。TC1TC1、TC2TC2是测试地址是测试地址TF1TF1和和TF2TF2的测试控制字段。的测试控制字段。实现实现4 4路并行转移功能。路并行转移功能。4343/55/555.3 微程序设计技术q优点优点 能够实现快速多路转移,提高微程序的执行速度。能够实现快速多路转移,提高微程序的执行速度。而且微程序在控存中的存放位置也很灵活、方便。而且微程序在控存中的存放位置也很灵活、方便。q缺点缺点 后继微地址的生成方法比较复杂,微程序的执行顺后继微地址的生成方法比较复杂,微程序的执行顺序不直观。序不直观。4444/55/555.3 微程序设计技术执行一条微指令的过程分两步进行q按给定的微地址从控存取出微指令,并打入按给定的微地址从控存取出微指令,并打入IR;q执行微指令所规定的微操作。执行微指令所规定的微操作。根据取后继微指令和执行现行微指令之间的时间关系的不同,微指令的执行方式可分为两种q串行执行串行执行q并行执行并行执行5.3.4 微指令的执行方式4545/55/555.3 微程序设计技术1.串行执行方式取微指令和执行微指令串行进行。在前一条的微指令执行完之后,才能取下一条微指令。时间关系 设备效率低,执行速度慢。控制简单,易于实现。4646/55/555.3 微程序设计技术2.并行执行方式当前微指令的执行和下一条微指令的取出重叠进行。时间关系 优点:提高了执行速度和设备利用率。q遇到需要根据当前微指令的执行结果进行转移时,存遇到需要根据当前微指令的执行结果进行转移时,存在一些问题。有两种处理方法供选择。在一些问题。有两种处理方法供选择。n一种是推迟下一条微指令的取出,使之取出的一种是推迟下一条微指令的取出,使之取出的时间跟串行执行方式时相同。时间跟串行执行方式时相同。n另一种方法是猜测法,即猜测性地选择两条分另一种方法是猜测法,即猜测性地选择两条分支中的一个作为后继微指令。支中的一个作为后继微指令。4747/55/555.3 微程序设计技术并行执行方式并行执行方式 假设执行当前微指令和取下一条微指令所需要的时间相同。假设执行当前微指令和取下一条微指令所需要的时间相同。4848/55/551.采用字段直接编码,给每一个部件分配一个字段。2.各字段的功能如表所示 5.4 模型机的微程序控制器5.4.1 模型机的微指令格式图图5.12 5.12 模型机的微指令格式模型机的微指令格式 5050/55/555.4 模型机的微程序控制器字段名字段名字段的功能字段的功能IRWriteIRWrite控制控制IRIR的写入。的写入。ALUCtrlALUCtrl指定指定ALUALU所进行的操作。所进行的操作。SRC1SRC1指定指定ALUALU的第一个操作数的来源。的第一个操作数的来源。SRC2SRC2指定指定ALUALU的第二个操作数的来源。的第二个操作数的来源。RegCtrlRegCtrl指定对寄存器组进行的操作(读或写);对于写操指定对寄存器组进行的操作(读或写);对于写操作,指定写入值的来源。作,指定写入值的来源。MemCtrlMemCtrl指定对存储器进行的操作(读或写);对于读操指定对存储器进行的操作(读或写);对于读操作,指定目标寄存器;对于写操作,指定写入值的作,指定目标寄存器;对于写操作,指定写入值的来源。来源。PCCtrlPCCtrl控制对控制对PCPC的写操作,指定写入内容的来源。的写操作,指定写入内容的来源。SequencingSequencing指定怎样选取下一条将执行的微指令。指定怎样选取下一条将执行的微指令。5151/55/555.4 模型机的微程序控制器3.在模型机中,确定下一条微指令地址的来源有3种方法(由Sequencing字段指出)当前微指令地址加1(即顺序执行)转移到“取指令”的公共入口根据指令操作码散转到该指令(或该类指令)的入口q用操作码作为索引,去查一个用硬件实现的表格,得用操作码作为索引,去查一个用硬件实现的表格,得到相应的转移地址(微程序地址)。到相应的转移地址(微程序地址)。q采用两级散转,即先散转到相关的一类指令的公共操采用两级散转,即先散转到相关的一类指令的公共操作微程序入口。等公共操作完成后,再进行第二次的作微程序入口。等公共操作完成后,再进行第二次的散转,转移到具体指令的微程序入口。散转,转移到具体指令的微程序入口。(减少微程序所占的空间)(减少微程序所占的空间)4.模型机的微程序控制器 5454/55/555.4 模型机的微程序控制器散转ROM1和散转ROM2分别用于第一级和第二级散转。Fetch表示“取指令”公共微程序的入口AddrCtrl:微指令地址多路器MUX的控制信号当AddrCtrl的值分别为00,01,10,11时,MUX分别选择以下4个来源:q“取指令取指令”公共微程序的入口公共微程序的入口Fetchq从散转表从散转表ROM1查到的地址查到的地址q从散转表从散转表ROM2查到的地址查到的地址q当前微指令地址加当前微指令地址加1ROM1ROM1散转表散转表OpOpOpOp名称名称符号地址值符号地址值000000000000R R型型RFORMAT1RFORMAT1000100000100beqbeqBEQ1BEQ1100011100011loadloadLDST1LDST1101011101011storestoreLDST1LDST1OpOpOpOp名称名称符号地址值符号地址值100011100011loadloadLOAD2LOAD2101011101011storestoreSTORE2STORE2ROM2ROM2散转表散转表表表5.5 5.5 微指令各个字段所允许的取值、各种取值情况下所形成的控微指令各个字段所允许的取值、各种取值情况下所形成的控制信号以及功能制信号以及功能 字段名字段名字段值字段值控制信号控制信号(激活)(激活)功能功能IRWriteIRWrite0 0无操作无操作1 1对对IRIR进行写入操作进行写入操作ALUCtrlALUCtrlAddAddALUOp=00ALUOp=00使使ALUALU进行加操作进行加操作SubtSubtALUOp=11ALUOp=11使使ALUALU进行减操作进行减操作funct funct codecodeALUOp=10ALUOp=10用机器指令的用机器指令的functfunct字段来决定字段来决定ALUALU的操作的操作SRC1SRC1PC+4PC+4ALUSrcA=0ALUSrcA=0选选PC+4PC+4为为ALUALU的第一个输入的第一个输入A AALUSrcA=1ALUSrcA=1选寄存器选寄存器A A为为ALUALU的第一个输入的第一个输入SRC2SRC2B BALUSrcB=00ALUSrcB=00选寄存器选寄存器B B为为ALUALU的第二个输入的第二个输入ExtendExtendALUSrcB=01ALUSrcB=01选选“ImmImm”部件的输出作为部件的输出作为ALUALU的第二个输入的第二个输入ExtshftExtshftALUSrcB=10ALUSrcB=10选选“左移两位左移两位”部件的输出作为部件的输出作为ALUALU的第二个的第二个输入输入字段名字段名字段值字段值控制信号控制信号(激活)(激活)功能功能RegCtrlRegCtrlReadRead使用使用IRIR的的rsrs和和rtrt字段作为寄存器地址来读两个寄存器,字段作为寄存器地址来读两个寄存器,将数据写入寄存器将数据写入寄存器A A和和B BWrite Write ALUALURegWrite=1RegWrite=1RegDst=1RegDst=1DMtoReg=1DMtoReg=1以以IRIR的的rdrd字段作为寄存器地址,以字段作为寄存器地址,以ALUOutALUOut的内容作为的内容作为数据,写入寄存器组数据,写入寄存器组Write Write LMDLMDRegWrite=1RegWrite=1RegDst=0RegDst=0DMtoReg=0DMtoReg=0以以IRIR的的rtrt字段作为寄存器地址,以字段作为寄存器地址,以LMDLMD的内容作为数据,的内容作为数据,写入寄存器组写入寄存器组DMCtrlDMCtrlRead ALURead ALUDMRead=1DMRead=1用用ALUoALUo作为地址来读存储器,结果写入作为地址来读存储器,结果写入LMDLMDWrite Write ALUALUDMWrite=1DMWrite=1用用ALUoALUo作为地址,作为地址,B B的内容作为数据来写存储器的内容作为数据来写存储器PCCtrlPCCtrlPC+4PC+4PCWrite=1PCWrite=1Branch=0Branch=0将将PC+4PC+4写入写入PCPCBranch Branch ALUALUPCWrite=1PCWrite=1Branch=1Branch=1如果如果condcond为为1 1,将,将ALUoALUo的内容写入的内容写入PCPC5858/55/555.4 模型机的微程序控制器字段名字段名字段值字段值控制信号(激活)控制信号(激活)功能功能SequencingSequencingFetchFetchAddrCtrl=00AddrCtrl=00跳转到跳转到“取指令取指令”的公共入口,开始取的公共入口,开始取和执行一条新的机器指令和执行一条新的机器指令Dispatch 1Dispatch 1AddrCtrl=01AddrCtrl=01用用ROM1ROM1进行散转进行散转Dispatch 2Dispatch 2AddrCtrl=10AddrCtrl=10用用ROM2ROM2进行散转进行散转SeqSeqAddrCtrl=11AddrCtrl=11顺序选择下一个微指令地址顺序选择下一个微指令地址5959/55/555.4 模型机的微程序控制器在下面的微程序中,有些字段为空,它们表示以下情况:q用于写控制信号或者功能部件控制码,表示不进行操用于写控制信号或者功能部件控制码,表示不进行操作;作;q用于多路器的控制信号,表示不关心该多路器的输出。用于多路器的控制信号,表示不关心该多路器的输出。1.公共操作的微程序模型机中的公共操作 取指令、取指令、PCPC加加4 4和根据机器指令的操作码进行第一级散转。和根据机器指令的操作码进行第一级散转。5.4.2 构造微程序6060/55/555.4 模型机的微程序控制器该微程序段由以下两条微指令构成 (其入口地址为Fetch)q第一条微指令:完成把所取指令写入第一条微指令:完成把所取指令写入IR的操作的操作q第第2条微指令:根据机器指令的操作码进行第一级散转条微指令:根据机器指令的操作码进行第一级散转LableALUCtrlSRC1SRC2RegCtrlDMCtrlPCCtrlIRWriteSequencingFetch1SeqDispatch16161/55/555.4 模型机的微程序控制器2.R型指令的微程序 入口地址为:RFORMAT1(标号)两条微指令构成q第一条完成第一条完成ALU操作操作q第第2条将计算结果写入寄存器组。执行完后,再跳转条将计算结果写入寄存器组。执行完后,再跳转到整个微程序的第一条的地址到整个微程序的第一条的地址Fetch。LableALUCtrlSRC1SRC2RegCtrlDMCtrlPCCtrlIRWriteSequencingRFORMAT1funct codeABSeqWrite ALUPC+4PC+4Fetch6262/55/555.4 模型机的微程序控制器3.BEQ指令的微程序入口地址:BEQ1(标号)Branch ALU表示:如果cond中的值为1,则将ALUo的内容写入PC。LableALUCtrlSRC1SRC2RegCtrlDMCtrlPCCtrlIRWriteSequencingBEQ1AddPC+4ExtshftSeqBranch ALUFetch6363/55/555.4 模型机的微程序控制器4.load指令和store指令的微程序load和store指令的入口相同,都是LDST1。在完成访存地址计算后,进行第2级散转,跳转到LOAD2(load指令)或STORE2(store指令)。LableALUCtrlSRC1SRC2RegCtrlDMCtrlPCCtrlIRWriteSequencingLDST1AddAExtendDispatch2LOAD2Read ALUPC+4PC+4SeqWrite LMDFetchSTORE2Write ALUPC+4PC+4Fetch5.模型机的微程序LableALUCtrlSRC1SRC2RegCtrlDMCtrlPCCtrlIRWriteSequencingFetch1SeqtDispatch1RFORMAT1funct codeABSeqWrite ALUPC+4PC+4FetchBEQ1AddPC+4ExtshfSeqBranch ALUFetchLDST1AddAExtendDispatch2LOAD2Read ALUPC+4PC+4SeqWrite LMDFetchSTORE2Write ALUPC+4PC+4Fetch