题29图给岀了某CPU内部结构的一部分,MAR和MDR直接连到存储器总线(图中省略)。所有寄存器只能从总线A接受信息并只能发送信息到总线B,在总线A和B之间的所有数据传送都需经过算术逻辑部件ALU。ALU的部分控制信号及其功能如下:MOVa:F=A;MOVb:F=B;INCa:F=A+l;INCb:F=B+l;DECa:F=A-l;DECb:F=B-l0其中A和B是ALU的输入.F是ALU的输出。假定该CPU的指令系统中调用指令CALL占两个字,第一个字是操作码,第二个字给出子程序的起始地址,返
题29图给岀了某CPU内部结构的一部分,MAR和MDR直接连到存储器总线(图中省略)。所有寄存器只能从总线A接受信息并只能发送信息到总线B,在总线A和B之间的所有数据传送都需经过算术逻辑部件ALU。ALU的部分控制信号及其功能如下:MOVa:F=A;MOVb:F=B;INCa:F=A+l;INCb:F=B+l;DECa:F=A-l;DECb:F=B-l0其中A和B是ALU的输入.F是ALU的输出。假定该CPU的指令系统中调用指令CALL占两个字,第一个字是操作码,第二个字给出子程序的起始地址,返回地址保存在主存的栈中,用SP(栈指示器)指向栈顶•存储器按字编址,每次按同步方式从主存读取一个字,请写出读取并执行CALL指令所要求的控制信号序列(提示:当前指令地址已在PC中)。
【正确答案】:因为采用同步方式读写内存,所以在read和 write信号后不需加等待信号WMFCe CALL 指令的长度有两个字,按字编址,每次从主存读 取一个字,因此-CALL指令需要读两次主存,其 指令周期分为以下三个阶段:(1) 取指令操作码:将PC的内容作为地址访问 存储器,取出指令的操作码,送指令寄存器 IR,同时PC+1PC,使指向指令的第二个 字。该阶段至少需要3个时钟周期(节拍), 每个时钟周期的控制信号及其注释下:PCoul,MOVb,MAR.n PC 内容送总线 B, 经ALU送总线A,总线A送MARRead,INCb,PCin 读内存,PC内容加1并 送总线A,总线A送PCMDKut,MOVb, IRln MDR内容送总线B,经ALU送总线A,总线A送IR(2)取子程序首地址:将PC的内容作为地址.取出指令的第二个字(即子程序入口地址)送 PC,以使下一个指令周期从子程序的第一条指令开始执行;同时,计算PC+1以得到返 回地址,送Y寄存器。该阶段至少需要3个 时钟周期.PCout, MOVb,MARin PC 内容送总线 B,经ALU送总线A,总线A送M Read, INCb, 丫一 读内存,PC 送总线A,总线A送YMDR皿,MOVb, PC” MDR内容送总线B,经ALU送总线A,总线A送PC。保存返回地址至栈中:将临时保存在Y寄存 器的返回地址送到栈顶保存,并自动调整栈 顶指针(假设栈从高地址向低地址增# .故 SP的内容减1)。该过程至少需要3个时钟 周期。SP0U!, MOVb, MARin SP 内容送总线 B,经ALU送总线A,总线A送MARYout,MOVb.MDRm Y内容送总线B,经ALU送总线A,总线A送PC。
Top