控制单元的设计第十章1.假设响应中断时,要求将程序断点存在堆栈内,并且采用软件办法寻找中断服务程序的入口地址,试写出中断隐指令的微操作及节拍安排。解:设软件查询程序首址为0号内存单元,则中断隐指令的微操作命令及节拍安排如下:T00EINT,SPMART1PCMDR,0-W,SP+1SPT2MDRM(MAR)T3SPMART4PSWMDR,0-W,SP+1SPT50PC,MDRM(MAR)由于题意中没有给出确切的数据通路结构,故上述节拍分配方案的并行性较低。2.写出完成下列指令的微操作及节拍安排(包括取指操作)。(1)指令ADDR1,X完成将R1寄存器的内容和主存X单元的内容相加,结果存于R1的操作。(2)指令ISZX完成将主存X单元的内容增1,并根据其结果若为0,则跳过下一条指令执行。解:该题题意中没有指定数据通路,因此排序前应先设定一下。在此设采用单总线结构的CPU数据通路,且ALU输入端设两个暂存器C、D(见17题图)。并设采用同步控制,每周期3节拍:(1)指令ADDR1,X的微操作及节拍安排如下:取指周期:T0PCMAR,1RT1PC+1,M(MAR)MDRT2MDRIR,OP(IR)ID执行周期1:T0X(IR)MAR,1RT1R1C,M(MAR)MDRT2MDRD执行周期2:T0T1T2+,ALUR1(2)指令ISZX的微操作及节拍安排(取指周期同(1),略):执行周期1:T0X(IR)MAR,1RT1M(MAR)MDRT2MDRC执行周期2:T0+1,ALUMDRT10-WT2MDRM(MAR)(PC+1)·Z(设Z为结果为0标志)该指令的操作在一个执行周期做不完,因此安排了两个执行周期。3.按序写出下列程序所需的全部微操作命令及节拍安排。指令地址指令300301302303304LDA306ADD307BAN304STA305STP解:由于题意未明确要求采用何种控制器结构,故仍按较简单的组合逻辑时序关系安排节拍(单总线、同步控制,假设同上题):LDA306指令:取指周期:T0PCMAR,1RT1PC+1,M(MAR)MDRT2MDRIR,OP(IR)ID执行周期:T0306(IR)MAR,1RT1M(MAR)MDRT2MDRACADD307指令:取指周期:同上。执行周期1:T0307(IR)MAR,1RT1M(MAR)MDR,ACCT2MDRD执行周期2:T0T1T2+,ALUACBAN304指令:取指周期:同上。执行周期:(设N为结果为负标志)T0T1T2N·304(IR)PCSTA305指令:取指周期:同上。执行周期:T0305(IR)MART1ACMDR,0-WT2MDRM(MAR)STP指令:取指周期:同上。执行周期:T0T1T20G(G为停机标志。)6.已知带返转指令的含义如下图所示,写出机器在完成带返转指令时,取指阶段和执行阶段所需的全部微操作及节拍安排。主程序子程序M带返转KM+1JMPIKKK+1间址特征解:假设同上题,仍按组合逻辑、单总线、同步控制安排,带返转指令的全部微操作及节拍如下:取指周期:T0PCMAR,1R(注:MMAR)T1PC+1,M(MAR)MDRT2MDRIR,OP(IR)ID执行周期:T0K(IR)MART1PCMDR,0-w(注:M+1MDR)T2MDRM(MAR)K+1PC12.能否说水平型微指令就是直接编码的微指令,为什么?解:不能说水平型微指令就是直接编码的微指令,因为符合水平型微指令特征的微指令都属于水平型微指令,常见的有:直接编码、字段直接编码、字段间接编码,及混合编码等。直接编码的微指令只是最典型的一种。15.设控制存储器的容量为512×48位,微程序可在整个控存空间实现转移,而控制微程序转移的条件共有4个(采用直接控制),微指令格式如下:操作控制转移条件下地址操作控制顺序控制试问微指令中的三个字段分别为多少位?解:微指令各字段位数分配如下:3549操作控制转移条件下地址操作控制顺序控制该微指令格式为水平型微指令。19.假设机器的主要部件有:程序计数器PC,指令寄存器IR,通用寄存器R0、R1、R2、R3,暂存器C、D,ALU,移位器,存储器地址寄存器MAR,存储器数据寄存器MDR及存储矩阵M。(1)要求采用单总线结构画出包含上述部件的硬件框图,并注明数据流动方向。(2)画出ADD(R1),(R2)指令在取指阶段和执行阶段的信息流程图。R1寄存器存放源操作数地址,R2寄存器存放目的操作数的地址。(3)写出对应该流程图所需的全部微操作命令。解:(1)采用单总线结构的CPU硬件框图如下:R/-WPCMARMDRR3D移位器IRMALU单总线(BUS)R2R1R0C+–+1图中,数据流动方向如箭头所示。LDR(2)ADD(R1),(R2)(3)对应该流程图所指令流程图如下:需的全部微操作命令。OP=?PCMARMM读PC+1PCMDRIRADDPCo,MARi1R+1(可与前一步并行)MDRo,IRiR1o,MARi1RMDRo,CiR2o,MARi1RMDRo,DiADDR1MARMDRCMM读R2MARMM读MDRDB+,D,MDRi0-W公操作(C)+(D)MDRMM写B20.假设机器的主要部件同上题,外加一个控制门G。(1)要求采用双总线结构(每组总线的数据流动方向是单向的),画出包含上述部件的硬件框图,并注明数据流动方向。(2)画出SUBR1,R3完成(R1)-(R3)R1操作的指令周期信息流程图(假设指令地址已放在PC中),并列出相应的微操作控制信号序列。解:(1)双总线结构的CPU硬件框图如下:图中,数据流动方向如箭头所示。R/-WPCMARMDRR3移位器IRMALUA总线R0C+–+1GB总线R1R2LDRD(2)SUBR1,R3指令周期流程图如下:OP=?PCMARMM读PC+1PCMDRIRSUBPCo,G,MARi1R+1(可与前一步并行)MDRo,G,IRiR1o,G,CiR3o,G,Di-,D,G,R1iSUBR1C(C)-(D)R1R3D21.下表给出8条微指令I1~I8及所包含的微命令控制信号,设计微指令操作控制字段格式,要求所使用的控制位最少,而且保持微指令本身内在的并行性。微指令所含的微命令I1I2I3I4I5I6I7I8abcdeadfgbhccegiahjcdhabh解:为使设计出的微指令操作控制字段最短,并且保持微指令本身内在的并行性,应采用混合编码法。首先找出互斥的微命令组,为便于分析,将微命令表重画如下:微指令所含的微命令abcdefghijI1I2I3I4I5I6I7I8由表中微命令的分布情况可看出:a、b、c、d、e微命令的并行性太高,因此不能放在同一字段中。另外,由分析可知,在2、3、4分组的互斥组中,3个一组的微命令互斥组对控制位的压缩作用最明显。因此,应尽可能多的找出3个一组的互斥组。现找出的互斥组有:cfj,dij,efh,fhi,bgj,ehj,efj……等等。从中找出互不相重的互斥组有两个:dij,efh。则:微指令操作控制字段格式安排如下:111122abcgdijefh顺序控制字段操作控制字段各字段编码分配如下:a——0无操作;b——0无操作;1a微命令;1b微命令c——0无操作;g——0无操作;1c微命令;1g微命令dij——00无操作;efh——00无操作;01d微命令;01e10i微命令;10f11j微命令;11h注:每组都应为“无操作”留一种编码。与采用直接控制法比较:直接控制法:10个微命令需10位操作控制位;本方案:10个微命令需8位操作控制位,压缩了2位。22.设有一运算器通路如下图所示(见教材423页),假设操作数a和b(均为补码)分别放在通用寄存器R2和R3中,ALU有+、-、M(传送)三种操作功能,移位器可实现左移、右移和直送功能。⑴指出相容性微操作和相斥性微操作。⑵采用字段直接编码方式设计适合于此运算器的微指令格式。⑶画出计算2(a+b)→R3的微程序流程图,试问执行周期需用几条微指令?⑷按设计的微指令格式,写出满足⑶要求的微代码。移位器右移R左移L直送VA选通门(与或门)B选通门(与或门)PCR1R2R3+1+-MALUMDRAR1AR2AR3APCBR1BR1BR2BR2BR3BR3BPCoutPCinR1outR1inR2outR2inR3outR3inMM,I/O解:⑴相斥性微操作有:移位器传送类3个:R、L、V;ALU操作类3个:+、-、M;A选通门控制类4个:MDR→A、R1→A、R2→A、R3→A;B选通门控制类7个:PC→B、R1→B、-R1→B、R2→B、-R2→B、R3→B、-R3→B;注:由于ALU的A、B两端有可能同时需要寄存器的输出,且同一寄存器的输出可能作源操作数使用,而输入又可能接收运算结果,因此寄存器输入输出操作构成不完全互斥关系,分组情况可视设计需要而定。相容性微操作有:ALU任一操作与+1操作相容;寄存器输入类操作相互相容;移位器、ALU、A、B选通门、寄存器五大部件的操作在部件之间相互相容。⑵采用字段直接编译法设计微指令格式时,可按⑴中找出的互斥类分组,并考虑和所有微操作相容的微命令需单独设组,则微指令操作控制字段格式如下:190ABCDEFGHIJK33221321111各字段编码分配如下: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→B;C组(ALU操作):00——无操作;10——+;01——M;11——-;D组(移位器传送):00——无操作;10——R;01——V;11——L;E组(+1):0——无操作;1——+1;F组(寄存器输出B):000——无操作;100——R2out;001——PCout;101——-R2out;010——R1out;110——R3out011——-R1out;111——-R3outG组(寄存器输出A):00——无操作;10——R2out;01——R1out;11——R3out;H组(R1输入):0——无操作;1——R1in;I组(R2输入):0——无操作;1——R2in;J组(R3输入):0——无操作;1——R3in;K组(PC输入):0——无操作;1——PCin;⑶由于题意只给出运算器通路,故取指周期微程序段省略。则计算2(a+b)→R3指令的执行周期微程序流程图如下:采用上述微指令格式时,实现此微程序流程只需一条微指令既可。(R2)A(R3)B+(加法)L(左移)R3⑷按所设计的微指令格式,此微程序流程所用微指令对应的微代码如下:11011010110110100010讨论:本题给出的运算器通路很接近实机,因此通路中微命令间的相容相斥关系就比较复杂。较难判断的是寄存器输入输出类微命令之间的互斥关系,本题中这类关系并没有限死,这就给我们的微指令格式设计带来了一定的灵活性。尽管如此,设计原则仍需坚持。本设计方案所遵循的原则①操作之间不抢通路;②为了提高工作效率,在通路允许的前提下,尽可能把微操作安排成相容的,既采用水平型微指令格式;③二元运算时一条微指令应能提供从源到目标使全路程畅通的所有微命令;为实现这一点,本方案安排了两个寄存器输出字段,以便能同时提供两个寄存器输出微命令,供ALU的A、B两个输入端同时获得数据。另外,为实现累加寄存器功能(同一寄存器既是源又是目标),本方案把寄存器输入类微命令全部安排成相容的,以增强使用的灵活性。④对于互斥关系完全的微命令,为节省微指令位数