目录
第十章10.1 假设响应中断时,要求将程序断点存在堆栈内,并且采用软件方法寻找中断服务程序的入口地址,试写出中断隐指令的微操作及节拍安排。10.2写出完成下列指令的微操作及节拍安排(包括取指操作)。10.3按序写出下列程序所需的全部微操作命令及节拍安排。10.4 在单总线结构的计算机中,用该总线连接了指令寄存器IR、程序计数器PC、存储器地址寄存器MAR、存储器数据寄存器 MDR、通用寄存器R0R_0R0~R7R_7R7的输入和输出端。 ALU的两个输入端分别与总线和寄存器Y的输出端相连,ALU的输出端与寄存器Z的输入端相连。Y的输入端与总线连接,Z的输出端与总线连接。该机有下列指令:10.5 假设CPU在中断周期用堆栈保存程序断点,而且进生栈时指针减1(具体操作是先修改栈指针后存数),出栈时指针加1。分别写出组合逻辑控制和微程序控制在完成中断返回指令时,取指阶段和执行阶段所需的全部微操作命令及节拍安排。10.6 已知带返转指令的含义如下图所示,写出机器在完成带返转指令时,取指阶段和执行阶段所需的全部微操作及节拍安排。10.7 画出组合逻辑控制单元的组成框图,根据指令处理过程,结合有关部件说明其工作原理。10.8 画出微程序控制单元的组成框图,根据指令处理过程,结合有关部件说明其工作原理。10.9试比较组合逻辑设计和微程序设计的设计步骤和硬件组成,说明哪一种控制速度更快,为什么?10.10 微指令的操作控制有几种编码方式?各有何特点?哪一种控制速度最快?10.11 什么是垂直型微指令?什么是水平型微指令?各有何特点?10.12 能否说水平型微指令就是直接编码的微指令,为什么?10.13 微指令的地址有几种形成方式?各有何特点?10.14 微指令操作控制字段采用直接编码或显式编码时,其微指令字长如何确定?10.15设控制存储器的容量为512x48位,微程序可在整个控存空间实现转移,而控制微程序转移的条件共有4个(采用直接控制),微指令格式如下:10.16试比较静态微程序设计和动态微程序设计。10.17 解释机器指令、微指令、微程序、毫微指令和毫微程序以及它们之间的对应关系。10.18毫微程序设计的特点是什么?与微程序设计相比,其硬件组成有何不同?10.19 假设机器的主要部件有程序计数器PC,指令寄存器IR,通用寄存器R0、R1、R2、R3R_0、R_1、R_2、R_3R0、R1、R2、R3,暂存器C、D ,ALU,移位器,存储器地址寄存器 MAR,存储器数据寄存器MDR及存储矩阵M。10.20 假设机器的主要部件同上题,外加一个控制门G。10.21下表给出8条微指令I1I_1I1~I8I_8I8,及所包含的微命令控制信号,设计微指令操作控制字段格式,要求所使用的控制位最少.而且保持微指令本身内在的并行性。10.22设有一运算器通路如下图所示,假设操作数a和b(均为补码)分别放在通用寄存器R和R中 ALU有+、-、M(传送)三种操作功能,移位器可实现左移、右移和直送功能。第十章
10.1 假设响应中断时,要求将程序断点存在堆栈内,并且采用软件方法寻找中断服务程序的入口地址,试写出中断隐指令的微操作及节拍安排。
答:
设软件查询程序的首址为0号内存单元,则中断隐指令的微操作及节拍安排如下:
T00→EINT,SP→MART0\quad \quad \quad 0→EINT,SP→MART00→EINT,SP→MAR
T1PC→MDR,0→−W,SP+1→SPT1\quad \quad \quad PC→MDR, 0→-W, SP+1→SPT1PC→MDR,0→−W,SP+1→SP
T2MDR→M(MAR)T2\quad \quad \quad MDR→M(MAR)T2MDR→M(MAR)
T3SP→MART3\quad \quad \quad SP→MART3SP→MAR
T4PSW→MDR,0→−W,SP+1→SPT4\quad \quad \quad PSW→MDR, 0→-W, SP+1→SPT4PSW→MDR,0→−W,SP+1→SP
T50→PC,MDR→M(MAR)T5 \quad \quad \quad 0→PC, MDR→M(MAR)T50→PC,MDR→M(MAR)
10.2写出完成下列指令的微操作及节拍安排(包括取指操作)。
(1)指令“ADDR1,XADD\ R_1,XADDR1,X”完成将R1R_1R1,寄存器的内容和主存X单元的内容相加结果存于R1R_1R1的操作。
(2)指令“ISZXISZ\ XISZX”完成将主存X单元的内容增1,并根据其结果若为0,则跳过下一条指令执行。
答:
ALU输入端设两个暂存寄存器C、D,并采用同步控制,每周期3节拍。
(1)指令ADDR1,XADD\ R_1,XADDR1,X的微操作及节拍安排如下:
取指周期:
T0PC→MAR,1→RT0\quad \quad PC→MAR,1→RT0PC→MAR,1→R
T1(PC)+1→PC,M(MAR)→MDRT1\quad \quad (PC)+1→PC,M(MAR)→MDRT1(PC)+1→PC,M(MAR)→MDR
T2MDR→IR,OP(IR)→IDT2\quad \quad MDR→IR,OP(IR)→IDT2MDR→IR,OP(IR)→ID
执行周期1:
T0X(IR)→MAR,1→RT0\quad \quad X(IR)→MAR,1→RT0X(IR)→MAR,1→R
T1R1→C,M(MAR)→MDRT1\quad \quad R_1→C,M(MAR)→MDRT1R1→C,M(MAR)→MDR
T2MDR→DT2\quad \quad MDR→DT2MDR→D
执行周期2:
T0T0T0
T1T1T1
T2+,ALU→R1T2\quad \quad +,ALU→R_1T2+,ALU→R1
(2)指令ISZ X的微操作及节拍安排:
取指周期:
T0PC→MAR,1→RT0\quad \quad PC→MAR,1→RT0PC→MAR,1→R
T1(PC)+1→PC,M(MAR)→MDRT1\quad \quad (PC)+1→PC,M(MAR)→MDRT1(PC)+1→PC,M(MAR)→MDR
T2MDR→IR,OP(IR)→IDT2\quad \quad MDR→IR,OP(IR)→IDT2MDR→IR,OP(IR)→ID
执行周期1:
T0X(IR)→MAR,1→RT0\quad \quad X(IR)→MAR,1→RT0X(IR)→MAR,1→R
T1M(MAR)→MDRT1\quad \quad M(MAR)→MDRT1M(MAR)→MDR
T2MDR→CT2\quad \quad MDR→CT2MDR→C
执行周期2:
T0+1,ALU→MDRT0\quad \quad +1,ALU→MDRT0+1,ALU→MDR
T10→−WT1\quad \quad 0→-WT10→−W
T2MDR→M(MAR),(PC+1)⋅Z(设Z为结果为0标志)T2\quad \quad MDR→M(MAR),(PC+1)·Z(设Z为结果为0标志)T2MDR→M(MAR),(PC+1)⋅Z(设Z为结果为0标志)
10.3按序写出下列程序所需的全部微操作命令及节拍安排。
10.4 在单总线结构的计算机中,用该总线连接了指令寄存器IR、程序计数器PC、存储器地址寄存器MAR、存储器数据寄存器 MDR、通用寄存器R0R_0R0~R7R_7R7的输入和输出端。 ALU的两个输入端分别与总线和寄存器Y的输出端相连,ALU的输出端与寄存器Z的输入端相连。Y的输入端与总线连接,Z的输出端与总线连接。该机有下列指令:
ADDR1,R2,R3;(R2)+(R3)→R1ADD\ R_1,R_2,R_3 ;\quad(R_2)+(R_3)→R_1ADDR1,R2,R3;(R2)+(R3)→R1
JMP∗K;(PC)+(K−1)→PCJMP\ * K ;\quad(PC)+(K-1) →PCJMP∗K;(PC)+(K−1)→PC
LOADR1,mem;(mem)→R1LOAD\ R_1,mem ;\quad (mem ) →R_1LOADR1,mem;(mem)→R1
STOREmem,R2;R2→memSTORE\ mem,R₂ ;\quad R_2→memSTOREmem,R2;R2→mem
写出控制器执行上述指令的微操作及节拍安排。
答:
(1)四条指令的取值周期的微操作命令及节拍安排如下:
T0PC→BUS→MAR,I→R\mathrm{T}0\quad \quad \mathrm{P}\mathrm{C}\to \mathrm{B}\mathrm{U}\mathrm{S}\to \mathrm{M}\mathrm{A}\mathrm{R},\space \mathrm{I}\to \mathrm{R}T0PC→BUS→MAR,I→R
T1(PC)+1→PC,M(MAR)→MDR\mathrm{T}1\quad \quad (\mathrm{P}\mathrm{C}\space )+1\space \to \mathrm{P}\mathrm{C},\mathrm{M}(\mathrm{M}\mathrm{A}\mathrm{R})\to \mathrm{M}\mathrm{D}\mathrm{R}T1(PC)+1→PC,M(MAR)→MDR
T2MDR→BUS→IR,OP(IR)→ID\mathrm{T}2\quad \quad \mathrm{M}\mathrm{D}\mathrm{R}\to \mathrm{B}\mathrm{U}\mathrm{S}\to \mathrm{I}\mathrm{R},\space \mathrm{O}\mathrm{P}(\mathrm{I}\mathrm{R})\to \mathrm{I}\mathrm{D}T2MDR→BUS→IR,OP(IR)→ID
(2)四条指令执行周期的微操作命令及节拍安排如下:
①ADDR1,R2,R3指令①ADD\ {\mathrm{R}}_{1},\space {\mathrm{R}}_{2},\space {\mathrm{R}}_{3} 指令①ADDR1,R2,R3指令
T0R2→BUS→Y\mathrm{T}0\quad \quad {\mathrm{R}}_{2}\to \mathrm{B}\mathrm{U}\mathrm{S}\to \mathrm{Y}T0R2→BUS→Y
T1(R)+(Y)→Z\mathrm{T}1\quad \quad (\mathrm{R})+(\mathrm{Y})\to \mathrm{Z}T1(R)+(Y)→Z
T2Z→BUS→R1\mathrm{T}2\quad \quad \mathrm{Z}\to \mathrm{B}\mathrm{U}\mathrm{S}\to {\mathrm{R}}_{1}T2Z→BUS→R1
②JMP⋅K指令②\mathrm{J}\mathrm{M}\mathrm{P} \cdot \mathrm{K}指令②JMP⋅K指令
T0PC→BUS→Y\mathrm{T}0\quad \quad \mathrm{P}\mathrm{C}\to \mathrm{B}\mathrm{U}\mathrm{S}\to \mathrm{Y}T0PC→BUS→Y
T1Ad(IR)+Y→Z(Ad(IR)为相对位移量的机器代码\mathrm{T}1\quad \quad \mathrm{A}\mathrm{d}\space (\mathrm{I}\mathrm{R})\space +\mathrm{Y}\to \mathrm{Z} (Ad(IR)为相对位移量的机器代码T1Ad(IR)+Y→Z(Ad(IR)为相对位移量的机器代码)
T2Z→BUS→PC\mathrm{T}2\quad \quad \mathrm{Z}\to \mathrm{B}\mathrm{U}\mathrm{S}\to \mathrm{P}\mathrm{C}T2Z→BUS→PC
③LOADR1,mem③\mathrm{L}\mathrm{O}\mathrm{A}\mathrm{D} \ {\mathrm{R}}_{1},\mathrm{m}\mathrm{e}\mathrm{m}③LOADR1,mem
T0Ad(IR)→BUS→MAR,I→R(Ad(IR)为mem)\mathrm{T}0\quad \quad \mathrm{A}\mathrm{d}(\mathrm{I}\mathrm{R})\to \mathrm{B}\mathrm{U}\mathrm{S}\to \mathrm{M}\mathrm{A}\mathrm{R},\space \mathrm{I}\to \mathrm{R} (Ad(IR)为mem)T0Ad(IR)→BUS→MAR,I→R(Ad(IR)为mem)
T1M(MAR)→MDR\mathrm{T}1\quad \quad \mathrm{M}(\mathrm{M}\mathrm{A}\mathrm{R})\to \mathrm{M}\mathrm{D}\mathrm{R}T1M(MAR)→MDR
T2ADR→BUS→R1\mathrm{T}2\quad \quad \mathrm{A}\mathrm{D}\mathrm{R}\to \mathrm{B}\mathrm{U}\mathrm{S}\to {\mathrm{R}}_{1}T2ADR→BUS→R1
④STOREmem,R④\mathrm{S}\mathrm{T}\mathrm{O}\mathrm{R}\mathrm{E} \ \mathrm{m}\mathrm{e}\mathrm{m},\mathrm{R}④STOREmem,R
T0Ad(IR)→BUS→MAR,I→W(Ad(IR)为mem)\mathrm{T}0\quad \quad \mathrm{A}\mathrm{d}\space (\mathrm{I}\mathrm{R})\space \to \mathrm{B}\mathrm{U}\mathrm{S}\to \mathrm{M}\mathrm{A}\mathrm{R},\space \mathrm{I}\to \mathrm{W} (Ad(IR)为mem)T0Ad(IR)→BUS→MAR,I→W(Ad(IR)为mem)
T1R2→BUS→R1\mathrm{T}1\quad \quad {\mathrm{R}}_{2}\to \mathrm{B}\mathrm{U}\mathrm{S}\to \mathrm{R}{}_{1}T1R2→BUS→R1
T2MDR→M(MAR)\mathrm{T}2\quad \quad \mathrm{M}\mathrm{D}\mathrm{R}\to \mathrm{M}(\mathrm{M}\mathrm{A}\mathrm{R})T2MDR→M(MAR)
10.5 假设CPU在中断周期用堆栈保存程序断点,而且进生栈时指针减1(具体操作是先修改栈指针后存数),出栈时指针加1。分别写出组合逻辑控制和微程序控制在完成中断返回指令时,取指阶段和执行阶段所需的全部微操作命令及节拍安排。
答:
假设进栈操作是先修改堆栈指针后存数,则出栈操作是先读数后修改堆栈指针。
(1)完成中断返回指令组合逻辑控制的微操作命令及节拍安排:
取指阶段
T0PC→MAR,1→RT0\quad \quad \mathrm{P}\mathrm{C}\to \mathrm{M}\mathrm{A}\mathrm{R},\space 1\to \mathrm{R}T0PC→MAR,1→R
T1(PC)+1→PC,M(MAR)→MDRT1\quad \quad (\mathrm{P}\mathrm{C})\space +1\to \mathrm{P}\mathrm{C},\mathrm{M}(\mathrm{M}\mathrm{A}\mathrm{R})\to \mathrm{M}\mathrm{D}\mathrm{R}T1(PC)+1→PC,M(MAR)→MDR
T2MDR→IR,OP(IR)→IDT2\quad \quad \mathrm{M}\mathrm{D}\mathrm{R}\to \mathrm{I}\mathrm{R},\space \mathrm{O}\mathrm{P}(\mathrm{I}\mathrm{R})\to \mathrm{I}\mathrm{D}T2MDR→IR,OP(IR)→ID
执行阶段:
T0SP→MAR,1→YT0\quad \quad \mathrm{S}\mathrm{P}\to \mathrm{M}\mathrm{A}\mathrm{R},\space 1\to \mathrm{Y}T0SP→MAR,1→Y
T1AM(MAR)→MDRT1\quad \quad \mathrm{A}\mathrm{M}(\mathrm{M}\mathrm{A}\mathrm{R})\to \mathrm{M}\mathrm{D}\mathrm{R}T1AM(MAR)→MDR
T2MDR→PC,(SP)+1→SPT2\quad \quad \mathrm{M}\mathrm{D}\mathrm{R}\to \mathrm{P}\mathrm{C},(\mathrm{S}\mathrm{P})+1\to \mathrm{S}\mathrm{P}T2MDR→PC,(SP)+1→SP
(2)完成中断返回指令微程序控制的微操作命令及节拍安排:
取指阶段
T0PC→MAR,1→RT0\quad \quad \mathrm{P}\mathrm{C}\to \mathrm{M}\mathrm{A}\mathrm{R},1\to \mathrm{R}T0PC→MAR,1→R
T1Ad(CMDR)→CMART1\quad \quad \mathrm{A}\mathrm{d}(\mathrm{C}\mathrm{M}\mathrm{D}\mathrm{R})\to \mathrm{C}\mathrm{M}\mathrm{A}\mathrm{R}T1Ad(CMDR)→CMAR
T2M(MAR)→MDR,(PC)+1→PCT2\quad \quad \mathrm{M}(\mathrm{M}\mathrm{A}\mathrm{R})\to \mathrm{M}\mathrm{D}\mathrm{R},\space (\mathrm{P}\mathrm{C})+1\to \mathrm{P}\mathrm{C}T2M(MAR)→MDR,(PC)+1→PC
T3Ad(CMDR)→CMART3\quad \quad \mathrm{A}\mathrm{d}(\mathrm{C}\mathrm{M}\mathrm{D}\mathrm{R})\to \mathrm{C}\mathrm{M}\mathrm{A}\mathrm{R}T3Ad(CMDR)→CMAR
T4MDR→IRT4\quad \quad \mathrm{M}\mathrm{D}\mathrm{R}\to \mathrm{I}\mathrm{R}T4MDR→IR
T5OP(IR)→微地址形成部件→CMART5\quad \quad \mathrm{O}\mathrm{P}(\mathrm{I}\mathrm{R})\to微地址形成部件 \to \mathrm{C}\mathrm{M}\mathrm{A}\mathrm{R}T5OP(IR)→微地址形成部件→CMAR
执行阶段
T0SP→MAR,1→RT0\quad \quad \mathrm{S}\mathrm{P}\to \mathrm{M}\mathrm{A}\mathrm{R},1\to \mathrm{R}T0SP→MAR,1→R
T1Ad(CMDR)→CMART1\quad \quad \mathrm{A}\mathrm{d}(\mathrm{C}\mathrm{M}\mathrm{D}\mathrm{R})\to \mathrm{C}\mathrm{M}\mathrm{A}\mathrm{R}T1Ad(CMDR)→CMAR
T2M(MAR)→MDRT2\quad \quad \mathrm{M}(\mathrm{M}\mathrm{A}\mathrm{R})\to \mathrm{M}\mathrm{D}\mathrm{R}T2M(MAR)→MDR
T3Ad(CMDR)→CMART3\quad \quad \mathrm{A}\mathrm{d}(\mathrm{C}\mathrm{M}\mathrm{D}\mathrm{R})\to \mathrm{C}\mathrm{M}\mathrm{A}\mathrm{R}T3Ad(CMDR)→CMAR
T4MDR→PC,(SP)+1→SPT4\quad \quad \mathrm{M}\mathrm{D}\mathrm{R}\to \mathrm{P}\mathrm{C},(\mathrm{S}\mathrm{P})+1\to \mathrm{S}\mathrm{P}T4MDR→PC,(SP)+1→SP
T5Ad(CMDR)→CMART5\quad \quad \mathrm{A}\mathrm{d}(\mathrm{C}\mathrm{M}\mathrm{D}\mathrm{R})\to \mathrm{C}\mathrm{M}\mathrm{A}\mathrm{R}T5Ad(CMDR)→CMAR
10.6 已知带返转指令的含义如下图所示,写出机器在完成带返转指令时,取指阶段和执行阶段所需的全部微操作及节拍安排。
10.7 画出组合逻辑控制单元的组成框图,根据指令处理过程,结合有关部件说明其工作原理。
答:
完成一条指令经过取指阶段和执行阶段。
取指阶段完成的任务是:根据PC 给定的地址发出读命令,访存后取出相应的指令送至IR,再经过指令译码器ID给出信号,控制微操作命令序列形成部件,并修改PC。
执行阶段完成的任务是:微操作命令序列形成部件同时还接受状态控制条件、中断系统以及时序电路发来的时序信号,在译码输出的共同作用下,按指令操作码的含义,发出一系列微操作命令信号,控制相应部件操作实现指令功能。
10.8 画出微程序控制单元的组成框图,根据指令处理过程,结合有关部件说明其工作原理。
答:
微程序控制器框图如下:
完成一条指令要经过取指和执行两个阶段。
首先将取指操作微程序的首地址送至CMAR,读出该条微指令并送至CMDR。此时微指令的操作控制字段发出各种微命令,同时下地址字段指出下一条微指令的地址,然后重复取微指令,执行微指令的操作,直接按PC指出的存储单元中的指令读至IR,并自动修改后即指令地址。这一过程为取指阶段。
接着根据指令的操作码,经过微地址形成部件,产生对应该机器指令的微程序首地址并送至 CMAR,然后从控制存储器中读出微指令送至CMDR此时操作控制字段发出各种微命令,且下地址字段指出下一条微指令地址,然后重复取微指令、执行微指令的操作,指导对应该机器指令的操作全部执行完毕,并指出取指微程序的首地址。这一过程为执行机器指令的阶段。
可见,每完成一条机器指令,需相应完成两个微程序:一个是取指微程序,另一个是执行对应该机器指今操作的数程序。
而且所有的微程序都是由控制存储器中的微指令发出的。
10.9试比较组合逻辑设计和微程序设计的设计步骤和硬件组成,说明哪一种控制速度更快,为什么?
答:
组合逻辑控制器的设计思想是采用硬连线逻辑。首先根据指令系统,写出对应所有机器指令的全部微操作及其节拍安排,然后列出操作时间表,再写出每一种微操作的逻辑表达式,化简后画出相应的逻辑图,即完成了设计。这种逻辑电路主要由门电路构成的复杂树形网络,一旦构成后,除非在物理上进行重新连线,否则要增加新的控制功能是不可能的。
微程序控制器的设计思想是采用存储逻辑。首先根据指令系统,写出对应所有机器指令的全部微操作及其节拍安排,然后列出操作时间表,再根据微操作的数目,经压缩确定微指令的控制方式、下地址形成方式、微指令格式及微指令字长,编写出全部微指令的代码,即完成了设计。最后将微指令的代码注入到 ROM 中,即可作为微操作的命令信号。
组合逻辑控制速度更快,因为它的程序执行基本上是由硬件完成的。
10.10 微指令的操作控制有几种编码方式?各有何特点?哪一种控制速度最快?
答:
微指令中操作控制字段主要有三种控制方式。
(1)直接控制,又称直接编码,其特点是操作控制字段中的每一位代表一个微命令,其优点是简单直观,输出直接用于控制,执行速度快。缺点是微指令字长较长,使控存容量较大。
(2)字段直接编码控制,其特点是将微指令操作控制字段分成几段,并使每个字段经译码后发出各个微操作命令,每个字段中的微命令必须是互斥的。这种控制方式用较少的二进制信息表示较多的微命令信号,它缩短了微指令字长,但增加了译码电路,使微程序的执行速度降低。这种编码控制又叫显式控制。
(3)字段间接编码控制,这种方式一个字段的某些命令还需由另一个字段中的某些命令解释,才能使微指令有确切含义,故又称为隐式编码,这种方法更能缩短微指令字长。
此外还可以把直接控制和字段编码控制混合使用。三种控制方式中,直接控制的速度最快。
10.11 什么是垂直型微指令?什么是水平型微指令?各有何特点?
答:
垂直型微指令是指一次只能执行一个微命令的微指令;
水平型微指令是指一次能定义并能并行执行多个微命令的微指令。
比较:
(1)水平型微指令并行操作能力强.效率高,灵活性强,垂直型微指令则较差. 在一条水平型微指令中,设置有控制信息传送通路(门)以及进行所有操作的微命令,因此在进行微程序设计时,可以同时定义比较多的并行操作的微命令,来控制尽可能多的并行信息传送,从而使水平型微指令具有效率高及灵活性强的优点 . 在一条垂直型微指令中,一般只能完成一个操作,控制一两个信息传送通路,因此微指令的并行操作能力低,效率低 .
(2)水平型微指令执行一条指令的时间短,垂直型微指令执行时间长. 因为水平型微指令的并行操作能力强,因此与垂直型微指令相比,可以用较少的微指令数来实现一条指令的功能,从而缩短了指令的执行时间 .而且当执行一条微指令时,水平型微指令的微命令一般直接控制对象,而垂直型微指令要经过译码也会影响速度 .
(3)由水平型微指令解释指令的微程序,具有微指令字比较长,但微程序短的特点.垂直型微指令则相反,微指令字比较短而微程序长 .
(4)水平型微指令用户难以掌握,而垂直型微指令与指令比较相似,相对来说.比较容易掌握 . 水平型微指令与机器指令差别很大,一般需要对机器的结构,数据通路,时序系统以及微命令很精通才能设计 .
10.12 能否说水平型微指令就是直接编码的微指令,为什么?
答:
不能说水平型微指令就是直接编码的微指令,因为符合水平型微指令特征的微指令都属于水平型微指令,常见的有:直接编码、字段直接编码、字段间接编码,及混合编码等。直接编码的微指令只是最典型的一种。
10.13 微指令的地址有几种形成方式?各有何特点?
答:微指令的地址有六种方式形成:
(1)直接由微指令的下地址字段指出。大部分指令的下地址字段直接指出了后续微指令的地址,这种方式又称为断定方式。
(2)根据机器指令的操作码形成。当其指令取至指令寄存器后,微指令的地址由操作码经微地址形成部件形成。
(3)增量计数器法。在很多情况下,后续微指令的地址是连续的。因此对于顺序地址,微地址可采用增量计数法,即 (CMAR)+1→CMAR(\mathrm{C}\mathrm{M}\mathrm{A}\mathrm{R})+\mathrm{1}\to \mathrm{C}\mathrm{M}\mathrm{A}\mathrm{R}(CMAR)+1→CMAR 来形成后续微指令的地址。
(4)根据各种标志决定微指令分支转移的地址。
(5)通过测试网络形成。微指令的地址分两部分,高段 H 为非测试地址,由微指令的 H 段地址码直接形成:低段 L 为测试地址,由微指令的 L 段地址码通过测试网络形成。
(6)由硬件产生微程序入口地址。当电源加电后,第一条微指令的地址可由专门的硬件电路产生,也可由外部直接向 CMAR 输入微指令的地址,这个地址即为取指周期微程序的入口地址。当出现中断请求或间接寻址时,也可由硬件产生中断周期微程序入口地址或间址周期微程序的入口地址。
10.14 微指令操作控制字段采用直接编码或显式编码时,其微指令字长如何确定?
答:
在微指令的操作控制字段中,每一位代表一个微操作命令,这种编码方式即为直接编码方式。直接编码方式含义清晰,而且只要微指令从控存读出,即刻可由控制字段发出命令,速度快。但由于机器中微操作命令甚多,可能使微指令操作控制字段达几百位,造成控存容量极大。
采用字段直接编码(显式编码)方法可用较少的二进制信息表示较多的微操作命令信号。例如,3位二进制代码译码后可表示7个互斥的微命令,留出一种状态表示不发微命令,与直接编码用7位表示7个微命令相比,减少了4位,缩短了微指令的长度。至于操作控制字段应分几段,与需要并行发出的微命令个数有关,若需并行发出8个微命令,就可分8段。每段的长度可以不等,与具体要求互斥的微命令个数有关,若某类操作要求互斥的微命令仅有6个,则字段只需安排3位即可。
10.15设控制存储器的容量为512x48位,微程序可在整个控存空间实现转移,而控制微程序转移的条件共有4个(采用直接控制),微指令格式如下:
试问微指令的3个字段分别为多少位?
答:
转移条件采用直接控制,条件转移字段中的每一位作为一个判别标志,又由于有4个转移条件故该字段为4位。
下一地址字段为9位,控制存储器的容量为512个。
存储单元微命令字段为(48-4-9)=35位。
10.16试比较静态微程序设计和动态微程序设计。
答:
通常一台机器的指令系统是固定的,对应每一条机器指令的微程序是计算机设计者事先编好的,因此一般微程序无需改变,这种微程序设计技术即称为静态微程序设计,其控存采用ROM。
如果用改变微指令和微程序来改变机器的指令系统,这种微程序设计称为动态微程序设计,其控存采用EPROM。这种设计也可以在一台机器上实现不同类型的指令系统,有利于仿真,但是这种设计对用户的要求很高。
10.17 解释机器指令、微指令、微程序、毫微指令和毫微程序以及它们之间的对应关系。
答:
机器指令由“0”、“1”代码组成,能被机器直接识别。
机器指令可由有序微指令组成的微程序来解释,微指令也是由“0”、“1”代码组成,也能被机器直接识别,是用来解释机器指令的。
毫微指令是用来解释伪指令的。
微程序可以看做是解释机器指令的,毫微程序可以看做是解释微程序的。
10.18毫微程序设计的特点是什么?与微程序设计相比,其硬件组成有何不同?
答:
毫微程序设计采用两级微程序的设计方法。
第一级微程序为垂直型微指令,并行功能不强,但有严格的顺序结构,由它确定后续微指令的地址,当需要时可调用第二级。
第二级微程序为水平型微指令,具有很强的并行操作能力,但不包含后续微指令的地址。第二级微程序执行完毕后又返回到第一级微程序。
微程序可看做是解释机器指令的,毫微程序可看做是解释微程序的,而组成毫微程序的豪微指令则是用来解释微指令的。
采用毫微程序设计计算机的优点是用少量的控制存储器空间来达到高度的并行。
采用毫微程序设计计算机需要两级控制存储器,二级控制存储器虽然能减少控制存储器的容量,但因有时一条微指令要访问两次控制存储器,影响了速度。
10.19 假设机器的主要部件有程序计数器PC,指令寄存器IR,通用寄存器R0、R1、R2、R3R_0、R_1、R_2、R_3R0、R1、R2、R3,暂存器C、D ,ALU,移位器,存储器地址寄存器 MAR,存储器数据寄存器MDR及存储矩阵M。
(1)要求采用单总线结构画出包含上述部件的硬件框图,并注明数据流动方向。
(2)画出“ADD (R1),(R2)”指令在取指阶段和执行阶段的信息流程图。R1寄存器存放源操作数地址,R2寄存器存放目的操作数的地址。
(3)写出对应该流程图所需的全部微操作命令。
答:
(1)采用单总线结构的CPU硬件框图如下:
(2)ADD (R1),(R2)指令信息流如下:
(3)全部微操作命令为:
PC→BUS→MARM(MAR)→MDR(PC)+1→PCMDR→BUS→IRR1→MARM(MAR)→MDRMDR→CR2→MARM(MAR)→MDRMDR→D(C)+(D)→MDRM(MAR)→MDRPC→BUS→MAR\\ M(MAR)→MDR\\ (PC)+1→PC\\ MDR→BUS→IR\\ R_1→MAR\\ M(MAR)→MDR\\ MDR→C\\ R_2→MAR\\ M(MAR)→MDR\\ MDR→D\\ (C)+(D)→MDR\\ M(MAR)→MDRPC→BUS→MARM(MAR)→MDR(PC)+1→PCMDR→BUS→IRR1→MARM(MAR)→MDRMDR→CR2→MARM(MAR)→MDRMDR→D(C)+(D)→MDRM(MAR)→MDR
10.20 假设机器的主要部件同上题,外加一个控制门G。
(1)要求采用双总线结构(每组总线的数据流动方向是单向的)画出包含上述部件的硬件框图,并注明数据流动方向。
(2)画出“SUB R1,R3”指令完成(R1)-(R3)→R1操作的指令周期信息流程图(假设指令地址已放在PC中),并列出相应的微操作控制信号序列。
答:
(1)双总线结构的CPU硬件框图如下:
(2)SUB R1,R3指令周期流程图如下:
10.21下表给出8条微指令I1I_1I1~I8I_8I8,及所包含的微命令控制信号,设计微指令操作控制字段格式,要求所使用的控制位最少.而且保持微指令本身内在的并行性。
答:
为使设计出的微指令操作控制字段最短,并且保持微指令本身内在的并行性,应采用混合编码法。首先找出互斥的微命令组,为便于分析,将微命令表重画如下:
由表中微命令的分布情况可看出:a、b、c、d、e微命令的并行性太高,因此不能放在同一字段中。
另外,由分析可知,在2、3、4分组的互斥组中,3个一组的微命令互斥组对控制位的压缩作用最明显。因此,应尽可能多的找出3个一组的互斥组。现找出的互斥组有:cfj,dij,efh,fhi,bgj,ehj,efj……等等。
从中找出互不相重的互斥组有两个:dij,efh。则:微指令操作控制字段格式安排如下:
各字段编码分配如下:
a:0表示无操作,1表示a微命令;
b:0表示无操作,1表示b微命令;
c:0表示无操作,1表示c微命令;
g:0表示无操作,1表示g微命令;
dij:00无操作,01表示d微命令,10表示i微命令,11表示j微命令;
efh:00表示无操作,01表示e微命令,10表示f微命令,11表示h微命令。
与采用直接控制法比较: 直接控制法:10个微命令需10位操作控制位;
本方案中10个微命令需8位操作控制位,压缩了2位。
10.22设有一运算器通路如下图所示,假设操作数a和b(均为补码)分别放在通用寄存器R和R中 ALU有+、-、M(传送)三种操作功能,移位器可实现左移、右移和直送功能。
(1)指出相容性微操作和相斥性微操作。
(2)采用字段直接编码方式设计适合于此运算器的微指令格式。
(3)画出计算2(a+b)→R3的微程序流程图,试向执行周期需用几条微指令?
(4)按设计的微指令格式,写出满足(3)要求的微代码。
答:
(1)相斥性微操作有:
移位器传送类3个:R、L、V移位器传送类3个:R、L、V移位器传送类3个:R、L、V;
ALU操作类3个:+、−、MALU操作类3个:+、-、MALU操作类3个:+、−、M;
A选通门控制类4个:MDR→A、R1→A、R2→A、R3→AA选通门控制类4个:MDR→A、R_1→A、R_2→A、R_3→AA选通门控制类4个:MDR→A、R1→A、R2→A、R3→A;
B选通门控制类7个:PC→B、R1→B、−R1→B、R2→B、−R2→B、R3→B、−R3→BB选通门控制类7个:PC→B、R1→B、-R_1→B、R_2→B、-R_2→B、R_3→B、-R_3→BB选通门控制类7个:PC→B、R1→B、−R1→B、R2→B、−R2→B、R3→B、−R3→B;
由于ALU的A、B两端有可能同时需要寄存器的输出,且同一寄存器的输出可能作源操作数使用,而输入又可能接收运算结果,因此寄存器输入输出操作构成不完全互斥关系,分组情况可视设计需要而定。
相容性微操作有:
ALU任一操作与+1操作相容;
寄存器输入类操作相互相容;
移位器、ALU、A、B 选通门、寄存器五大部件的操作在部件之间相互相容。
(2)采用字段直接编译法设计微指令格式时,可按(1)中找出的互斥类分组,并考虑和所有微操作相容的微命令需单独设组,则微指令操作控制字段格式如下:
各字段编码分配如下:
A组(A选通门控制):000−无操作:100−MDR→A:110−R2→A:101−R1→A;111−R3→A;A组(A选通门控制):000-无操作:100-MDR→A:110-R_2→A:101-R_1→A;111-R_3→A;A组(A选通门控制):000−无操作:100−MDR→A:110−R2→A:101−R1→A;111−R3→A;
B组(B选通门控制):000−无操作:100−R2→B;001−PC→B;101−R2→B;010−R1→B:110−R3→B:011−R1→B;111−R3→BB组(B选通门控制):000-无操作:100-R_2→B;001-PC→B;101-R_2→B;010-R_1→B:110-R_3→B:011-R_1→B;111-R_3→BB组(B选通门控制):000−无操作:100−R2→B;001−PC→B;101−R2→B;010−R1→B:110−R3→B:011−R1→B;111−R3→B;
C组(ALU操作):00−无操作;10−+;01−M;11−−C组(ALU操作):00-无操作;10-+;01-M;11--C组(ALU操作):00−无操作;10−+;01−M;11−−;
D组(移位器传送):00−无操作:10−R;01−V;11−LD组(移位器传送):00-无操作:10-R;01-V;11-LD组(移位器传送):00−无操作:10−R;01−V;11−L;
E组(+1):0−无操作:1−+1E组(+1):0-无操作:1-+1E组(+1):0−无操作:1−+1;
F组(寄存器输出B);000−无操作:100−R2out;001−PCout;101−−R2out;010−R1out;110−R3out;011−R1out;111−R3outF组(寄存器输出B);000-无操作:100-R_{2out};001-PC_{out};101--R_{2out};010-R_{1out};110-R_{3out};011-R_{1out};111-R_{3out}F组(寄存器输出B);000−无操作:100−R2out;001−PCout;101−−R2out;010−R1out;110−R3out;011−R1out;111−R3out;
G组(寄存器输出A):00−无操作;10−R2out;01−R1out;11−R3outG组(寄存器输出A):00-无操作;10-R_{2out};01-R_{1out};11-R_{3out}G组(寄存器输出A):00−无操作;10−R2out;01−R1out;11−R3out;
H组(R1输入);0−无操作:1−R1inH组(R_1输入);0-无操作:1-R_{1in}H组(R1输入);0−无操作:1−R1in;
I组(R2输入):0−无操作:1−R2inI组(R_2输入):0-无操作:1-R_{2in}I组(R2输入):0−无操作:1−R2in;
J组(R3输入):0−无操作;1−R3inJ组(R_3输入):0-无操作;1-R_{3in}J组(R3输入):0−无操作;1−R3in;
K组(PC输入):0−无操作;1−PCinK 组(PC 输入):0-无操作;1-PC_{in}K组(PC输入):0−无操作;1−PCin;
(3)由于题意只给出运算器通路,故取指期微程序段省略。则计算2(a+b)→R指令的执行周期微程序流程图如下:
采用上述微指令格式时,实现此微程序流程只需一条微指令既可。
(4)按所设计的微指令格式,此微程序流程所用微指令对应的微代码如下:
110 11010 11 0 110 10 0 0 1 0
本题给出的运算器通路很接近实机,因此通路中微命令间的相容相斥关系就比较复杂。较难判断的是寄存输入输出类微命令之间的互斥关系,本题中这类关系并没有限死,这就给我们的微指令格式设计带来了一定的灵活性。尽管如此,设计原则仍需坚持。本设计方案所遵循的原则
①操作之间不抢通路:
②为了提高工作效率,在通路允许的前提下,尽可能把微操作安排成相容的,既采用水平型微指令格式;
③二元运算时一条微指令应能提供从源到目标使全路程畅通的所有微命令:为实现这一点,本方案安排了两个寄存器输出字段,以便能同时提供两个寄存器输出微命令,供ALU的A、B两个输入端同时获得数据。另外。为实现累加寄存器功能(同一寄存器既是源又是目标),本方案把寄存器输入类微命令全部安排成相容的,以增强使用的灵活性。
④对于互斥关系完全的微命令,为节省微指令位数起见,尽量把他们安排在一组。