第七章 控制器 7.1 控制器的组成及指令的执行 7.2 控制方式和时序的产生 7.3 微程序控制器 7.4 微程序控制器及其微程序设计举例 第七章 控制器 7.1 控制器的组成及指令的执行 7.2 控制方式和时序的产生 7.3 微程序控制器 7.4 微程序控制器及其微程序设计举例 7.5 硬布线控制器 7.6 流水线的基本原理 7.7 Pentium Ⅱ CPU 本章小结 作业
7.3 微程序控制器 一、基本概念 二、微程序控制器的基本工作原理 三、微程序控制器的组成 四、微程序控制原理举例 五、微程序设计技术
一、 基本概念 微操作:指令执行时必须完成的基本操作。例如,PC→AR,PC+1→ PC,RAM→IR。 微命令:是组成微指令的最小单位,也就是控制微操作实现的控制信号。一般用于控制数据通路上门的打开/关闭,或者功能选择。 微指令:是一组微命令的集合,用于完成一个功能相对完整的操作。 微程序:微指令的有序集合,用于实现机器指令的功能。
一、 基本概念 控制存储器:简称控存,用于存放所有指令的微程序,其中一个存储单元存放一条微指令。一般为ROM。 微地址:微指令在控存中的地址。 微周期:指从控存中取出并执行一条微指令所需要的时间,一般与一个机器周期相当。
二、微程序控制器的基本工作原理 一条机器指令由一段微程序来解释实现 。 微程序控制的计算机工作过程: 产生 置PC为第一条指令的地址 开机 上电 产生 Reset 信号 置μPC为取指令 微程序段的入口地址 执行取指令 微程序段 取指令 产生该指令的微程序入口地址 分析指令 执行该指令的微程序段 执行指令
三、微程序控制器的组成 微程序控制器的组成框图
微程序控制器的构成部件 控制存储器:简称控存、CM,用于存放微程序,一般由ROM构成。 微地址寄存器:存放要访问的控存中的微指令的地址,又称μAR 、CMAR。 微指令寄存器:存放从控存中读出的微指令本身,又称μIR。其控制字段用于产生微操作控制信号,其下址则送至微地址形成电路,产生下一条微指令的地址。 微地址形成电路:用于产生下一条微指令的地址。包含了指令译码器, 微程序控制器中ID的作用是将指令寄存器中的操作码OP转换成该指令的微程序入口地址。
四、微程序控制原理举例 (一)模型计算机系统结构 (二)模型计算机数据通路 (三)模型计算机控制信号 (四)微指令格式 (五)微程序设计举例
(一)模型计算机系统结构
(二)模型计算机数据通路 1、存储器读操作:分成两步: 例如:取指令操作 送地址到总线,并打入地址寄存器AR; 发送存储器读信号M-R# =0,启动存储器读操作,并将读出的数据从总线上接收至目的部件(例如某通用寄存器或者暂存器DA1、DA2)。 例如:取指令操作 PC→AR,PC+1; 发送M-R# =0 ,并RAM→IR。
(二)模型计算机数据通路 2、存储器写操作:分成两步: 3、运算器的运算操作:分成三步: 送地址到总线,并打入地址寄存器AR; 送数据到总线,并发送存储器写信号M-W# =0,启动存储器写操作。 3、运算器的运算操作:分成三步: 送第一个数据到总线,并打入ALU暂存器DA1/DA2 送第二个数据到总线,且打入ALU暂存器DA2/DA1 发送运算器功能选择信号S3~S0、M、Ci,控制ALU进行某种运算,并打开ALU输出三态门(ALU-B#=0),将总线上运算结果送目的部件。
(三)模型计算机控制信号 序号 控制信号 功能 1 PC-B# 指令地址送总线 8 S3 S3- S0选择ALU16种运算之一 2 B-AR 9 S2 3 PC+1 程序计数器+1 10 S1 4 B-PC 总线数据打入PC 11 S0 5 B-IR 总线数据打入IR 12 M 选择逻辑运算(1)和算数运算(0) 6 M-W# 存储器写 13 B-DA1 总线数据打入暂存器DA1 7 M-R# 存储器读 14 B-DA2 总线数据打入暂存器DA2
(三)模型计算机控制信号 序号 控制信号 功能 15 ALU-B# 运算器ALU内容送总线 22 R1-B# R1内容送总线 16 Ci 23 R2-B# R2内容送总线 17 B-R0 总线数据打入R0 24 R3-B# R3内容送总线 18 B-R1 总线数据打入R1 25 I/O-W# 写(输出)I/O端口 19 B-R2 总线数据打入R2 26 读(输入)I/O端口 20 B-R3 总线数据打入R3 27 Ai# 端口地址线 21 R0-B# R0内容送总线 28 J1# 指令译码器译码
(四)微指令格式 微指令的控制字段28位,一位表示一个微命令。 微指令的下址字段指出下一条微指令的地址,该模型机的控制存储器地址是7位,表示最多有128个单元,每个单元(28+7=35位)。
(五)微程序设计举例 微程序设计步骤: 根据数据通路,写出每条指令的执行过程,画出微程序流程图。 写出每条微指令所发出的微操作控制信号。 按照微指令格式,编写每条微指令的代码。 对照指令的执行流程图,分配微指令的地址 将写好的微指令按分配好的微地址装入控制存储器。
(五)微程序设计举例 假设存放在存储器中的二条指令内容为: 地址 机器码 助记符 功能 04H 0101 0000 ADD R0, 06H (R0)+06HR0 05H 0000 0110(立即数) 06H 1000 0000 JMP 04H 04HPC 07H 0000 0100(转移地址)
1、指令执行过程 ADD R0, 06H 取指令: 执行指令: M1 (送存储器地址):PCAR, PC+1 M2 (读存储器,指令译码): MEM IR,J1# 执行指令: M3(取源操作数-送地址):PCAR, PC+1 M4(取源操作数-读):MEM DA1 M5(取目的操作数): R0DA2 M6(计算并置结果):DA1+DA2Rd
1、指令执行过程 JMP ADDR 取指令: 执行指令: M1 (送存储器地址):PCAR, PC+1 M2 (读存储器,指令译码):RAMIR, J1# 执行指令: M4(取操作数-送地址):PCAR, PC+1 M5(取操作数-读):RAM PC
2、指令执行时产生的微操作序列 序号 功能 发送控制信号 取指令 (1) PC→AR,PC+1 PC-B#,B-AR,PC+1, (2) MEM→IR M-R#,B-IR,J1# ADD MEM→DA1 M-R#,B-DA1 (3) R0→DA2 R0-B#,B-DA2 (4) DA1+DA2→R0 S3~S0,M,Ci=100101,ALU-B#,B-R0 JMP MEM→PC M-R#,B-PC#
3、指令的微程序代码:ADD
3、指令的微程序代码:JMP
4、为微指令分配微地址 01H 02H 20H 21H 04H 07H 05H 06H
五、微程序设计技术 采用微程序设计的目的: 微指令由两部分构成: 缩短微指令字长; 减少控制存储器的容量; 微程序的执行速度; 易于微指令的修改; 增加微程序设计的灵活性。 微指令由两部分构成: 控制字段:指出微指令的功能,表示要发送的微命令 下址字段:用于指出下一条微指令的地址。
五、微程序设计技术 (一)控制字段的编码方法 (二)下址字段的设计方法 (三)微指令格式的类型 (四)控制存储器和动态微程序设计 (五)毫微程序设计
(一)控制字段的编码方法 1、直接控制法:微指令的控制字段中,每一位代表一个微命令(控制信号),在设计微指令时,如果要发出某个微命令则将控制字段中对应位置有效信号,即打开对应控制门。 优点:无需译码,执行速度快;微程序较短。 缺点:微指令字长很长,占用控存容量大。 2、全译码方式:将所有的控制信号进行编码,作为控制字段。在执行微指令时,译码产生各个微命令。 优点:微指令字长很短。 缺点:并行操作能力弱,微程序很长,执行速度慢
(一)控制字段的编码方法 3、字段直接编译法 :将控制字段分成若干段,每段通过编码/译码对应到各个控制信号。 优点:并行操作能力较强,字长较短 分段原则是:相斥性微命令分在同一字段内,相容性微命令分在不同字段内。前者可以提高信息位的利用率,缩短微指令字长;后者有利于实现并行操作,加快指令的执行速度。 相斥性微命令:指在同一个微周期中不可能同时出现的微命令。 相容性微命令:指在同一个微周期中可以同时出现的微命令
(一)控制字段的编码方法 4、字段间接编译法 :某字段的编码含意,除了其本身的编码外,还需要由另一字段来加以解释。也就是说,某一字段所产生的微命令,是和另一字段的代码联合定义出来的。 优点:进一步缩短微指令字长 例如:模型机的微指令格式定义(24位) 直接控制法 M23:21 (3) M20:18 M17:15 M14 (1) M13:8 (6) M7 M6:0 (7) BTO OTB FUNC FS S3:0 M Ci 空 MA6:0
模型机微指令字段编码表 编码+译码 BTO OTB FUNC FS=1 FS=0 000 空 PC+1 001 B-DA1(t4) ALU-B# (t2) J 1# (t2) M-W# (t3) 010 B-DA2(t4) 299-B# (t2) J 2# (t2) M_R# (t2) 011 B-IR(t3) SR-B# (t2) J 3# (t2) I/O-W# (t3) 100 B-DR(t4) DR-B# (t2) J 4# (t2) I/O_R# (t2) 101 B-SP( t4) SI-B# (t2)* J5# (t2) INT_R# (t2) 110 B-AR(t3) SP-B# (t2)* CyCn# (t2) INT_E# (t2) 111 B-PC# (t4) PC-B# (t2) CyNCn# (t2) 字段直接编译法 字段间接编译法
(二)下址字段的设计方法 微指令中下址字段的结构和后继微指令地址的形成方法有关,又称为微程序流的控制。 后继微指令地址获得方法有三种: 根据机器指令操作码产生该指令对应的微程序入口地址(通过指令译码散转); 由下址字段指出下一微地址,或顺序+1; 根据上一条微指令执行结果来判断微指令转移还是顺序执行微指令,即实现微程序分支。
(二)下址字段的设计方法 1、微程序入口地址的产生 2、后继微地址的产生 3、模型机微地址的产生举例
1、微程序入口地址的产生 根据机器指令的操作码转移到其对应的微程序入口地址,通常称为操作码映射。 这是一种多分支情况,也就是指令译码,通常采用以下两种方法来实现这种转移。 映射ROM:简称MAPROM,该ROM中存放的是指令的微程序入口地址。以指令的操作码为地址,访问该MAPROM单元,读出的内容即是该指令的微程序入口地址。 逻辑电路:以指令的操作码作为输入变量,通过组合逻辑电路,产生的输出变量即为指令的微程序入口地址。
2、后继微地址的产生 控制字段 BAF BCF 每条微指令执行完毕,都必须根据要求产生后继微指令地址。方法有两种: (1)计数器方式:在微程序控制器单元中设置一个微程序计数器μPC,用于保存后继微指令地址。 在顺序执行微指令时,后继微指令地址由现行微地址1(即μPC +1)来产生。 遇到转移时,由微指令给出转移地址,使微程序按新的微地址顺序执行。 微指令格式: 控制字段 BAF BCF
(1)计数器方式 BAF:转移地址字段,用于给出微指令转移的部分微地址。BAF一般位数少,将它送到μPC的若干低位或高位形成后继微地址。 优点是微指令字较短,便于编写微程序,后继微地址产生机构比较简单; 缺点是执行速度低,微程序在控制存储器中的物理分配不方便,需合理安派、调整 BAF:转移地址字段,用于给出微指令转移的部分微地址。BAF一般位数少,将它送到μPC的若干低位或高位形成后继微地址。 BCF:转移控制字段,用来确定后继微地址是顺序执行还是条件转移。 当条件成立时,微程序转移,将BAF送μPC;否则顺序执行下一条微指令(μPC+1)。 转移控制字段BCF应当能够定义各种后继微地址来源。 假设,在微程序中有顺序执行、无条件转移、条件转移、测试循环、转微子程序和微子程序返回6种情况,再加上指令散转至相应的微程序入口地址,则转移控制字段BCF用3位编码上述7种情况。
(2)判定方式(下址字段法) 微指令格式: 控制字段 判别测试字段 下址字段 优点是可以实现快速多路分支,以提高微程序的执行速度,微程序在控制存储器的物理分配方便,微程序设计灵活; 缺点是微指令字长,形成后继微地址的结构比较复杂 控制字段 判别测试字段 下址字段 微指令格式中必须设置一个下址字段,用来指明下一条要执行的微指令地址,所以也称为下址字段法。 当微程序不产生分支时,后继微指令地址直接由微指令的下址字段给出; 当微程序出现分支时,按判别测试字段和状态条件通过逻辑电路来形成后继微地址。 由于每一条微指令至少都是一条无条件转移微指令,因此不必设置专门的转移微指令。
3、模型机微地址的产生举例 模型机微程序控制器结构 模型机微程序入口地址的产生方法:逻辑电路 模型机后继微地址的产生方法:下址字段法 模型机后继微地址转移控制部件 合二为一
举例:模型机微程序控制器结构
模型机微程序控制器结构 后继微地址的产生方法:下址字段法。 控存中的24位微码读出后,在T2节拍,高17位送微指令寄存器µIR保存并译码,低7位(下址字段)则送控存地址寄存器。 在T4节拍,由后继微地址转移控制部件发出微地址修改信号SE6#~SE0#,对控存地址寄存器中保存的下址进行修改(SEi#=0,则1→ MAi),作为后继微地址 后继微地址转移控制部件根据判别测试字段FUNC发出的转移控制信号J1#~J5#,结合指令操作码OP及目前的运算结果状态FZ、FC,开关K2、K1状态和中断INT状态,来发送微地址修改信号SE6#~SE0#,以决定如何修改下址字段所提供的微地址,产生后继微地址。
模型机后继微地址转移控制部件
模型机后继微地址转移控制逻辑(J1#) J1#=0时,根据指令的操作码(OP)I7~I4进行散转,产生该条指令的微程序入口地址。散转规则: 当I7I6=11时(即指令格式三的指令),则SE5#=0,即1→MA5,并且: 若I5=1,则SE3#=0,即1→MA3; 若I4=1,则SE2#=0,即1→MA2; 若I3=1,则SE1#=0,即1→MA1; 若I2=1,则SE0#=0,即1→MA0; 当I7I6≠11时(即指令格式一和格式二的指令) ,则: 若I7=1,则SE3#=0,即1→MA3; 若I6=1,则SE2#=0,即1→MA2; 若I5=1,则SE1#=0,即1→MA1; 若I4=1,则SE0#=0,即1→MA0;
模型机后继微地址转移控制逻辑(J2#) 当J2#=0时,根据指令操作码I3I2进行散转,转移至相应指令的微程序段。 主要应用于格式二的机器指令,即含寻址方式码(MOD)的格式。该指令格式中, I7I6为第一操作码,通常是指令格式二的特征码,I5I4为寻址方式码(MOD),I3I2为指令的第二操作码,用于区分格式二的四条指令。 在这些指令的微程序实现中,通常首先根据I7~I4进行J1#散转,转移至相应的寻址方式微程序段(主要功能是计算有效地址EA);然后进行第二次的J2#散转,转移至不同的机器指令的微程序段(实现指令的功能)。 散转规则: I3=1时,则SE1#=0,即1→MA1; I2=1时,则SE0#=0,即1→MA0;
模型机微地址转移控制逻辑(J3#、J4#、J5#) J3#=0时,根据开关K2、K1状态进行转移;主要应用于控制台操作指令。散转规则: KB=0时,则SE1#=0,即1→MA1; KA=0时,则SE0#=0,即1→MA0; J4#=0时,根据条件FC或FZ进行转移;主要应用于条件转移指令JZC或JZ或JC。散转规则: FC=1时,则SE1#=0,即1→MA1; FZ=1时,则SE0#=0,即1→MA0; J5#=0时,根据中断请求信号INT是否有效,确定转移。散转规则: INT=1时,则SE5#=0,即1→MA5;
模型机微地址转移控制逻辑举例 以第六章所介绍的模型机指令系统(P185)为例,写出所有机器指令的J1#散转的微程序入口地址。假设取指令微程序中进行J1#散转的微指令的下址字段为10H=0010000B。 指令 操作码 微程序入口地址 MOV 0000 10H 直接寻址 1000 18H ADD 0001 11H 间接 1001 19H SUB 0010 12H 变址 1010 1AH AND 0011 13H 相对 1011 1BH RRC 0100 14H IN 110000 30H INC 111101 3DH OUT 110001 31H DEC 111110 3EH CALL 110010 32H CLR 111111 3FH RET 110011 33H
模型机微地址转移控制逻辑举例 对于指令格式二的四条指令,通过J1#散转到寻址方式的微程序入口地址后,各自计算有效地址EA;之后均进行二次的J2#散转,假设进行J2#散转的微指令的下址字段为40H=1000000B,则格式二的四条指令的微程序入口地址为: 指令 操作码 微程序入口地址 LDA 00 40H STA 01 41H JMP 10 42H JZC 11 43H
(三)微指令格式的类型 不同的计算机有不同的微指令格式,但一般分为水平型微指令和垂直型微指令两种类型。 (1)水平型微指令 微指令字采用长格式,也就是控制字段采用直接控制法和字段直接编码法,使一条微指令能控制数据通路中多个功能部件并行操作。 水平型微指令的优点是:一条微指令可同时发送多个微命令,微指令执行效率高,速度快,较灵活,并行操作能力强;水平型微指令构成的微程序较短。它的主要缺点是:微指令字长较长,明显地增加了控制存储器的横向容量。
(三)微指令格式的类型 (2)垂直型微指令 控制字段采用完全编码的方法,将一套微命令代码化构成微指令。就像计算机机器指令一样,它由微操作码、源地址和目标地址以及其他附带信息构成 垂直型微指令和机器指令一样分成多种类型的微指令,所有微指令构成一个微指令系统。 主要特点:微指令字采用短格式,每条微指令只能控制一二个微操作,并行控制能力差。但由于微指令和机器指令格式相类似,对于用户来说,垂直型微指令比较直观,容易掌握和便于使用。微指令字短,减少了横向控制存储器的容量;但微程序长,影响了执行的速度。
(四)控制存储器和动态微程序设计 控制存储器:一般由ROM构成,因为指令系统一般是固定的,微程序是解释执行指令的,因此微程序一般也是固定的,所以使用只读存储器来存放微程序。 动态微程序设计:在一台微程序控制的计算机中,假如能根据用户的要求改变微程序,那么这台机器就具有动态微程序设计功能。 具有动态微程序设计功能的控制器的CM必须是可改写的存储器,如RAM或者E2PROM。 动态微程序设计可以通过修改微程序来实现不同的指令系统,或者实现指令系统的扩充或调整。 动态微程序设计的目的是使计算机能更灵活、更有效地适应于各种不同的应用场合。
(五)毫微程序设计 将垂直型微指令设计和水平型微指令设计结合起来,采用两级微程序来实现指令系统: 第一级为垂直微程序:用来解释机器指令,称为微程序并存放在称为微程序存储器的控存(一级控存)中。 第二级为水平微程序,用来解释垂直微指令,并产生相应微命令,实现数据通路的控制。由于它是解释微程序的微程序,所以称为毫微程序,存放在称为毫微程序存储器的控存(二级控存)中。 毫微程序设计使得微程序流的控制和微命令发出完全分离,微程序流控制由微程序级实现(垂直型微指令),而微命令则由毫微程序产生(水平型微指令)。
毫微程序控制器结构 返回
作业 P243: 1,2,3,4,6 9,10,11,12,13,15,16,17,18
The End !