假定某计算机字长16位,CPU内部结构入下图所示(计组)
假定某计算机字长16位,CPU内部结构入下图所示,CPU和存储器之间采用同步方式通信,按字编址。指令采用定长指令字格式,由两个字组成,第一个字指明操作码和寻址方式,第二个数包含立即数imm16。若一次存储器访问所花时间为2个CPU时钟周期,每次存储器访问存取一个字,取指令阶段第二次访存将imm16取到MDR中,请写出下列指令在指令执行阶段(不考虑取指令阶段)的控制信号序列,并说明需要几个时钟周期。
①将立即数imm16加到寄存器R1中。即R[R1]⬅R[R1]+imm16。
②将地址为imm16的存储单元的内容加到寄存器R1中。即R[R1]⬅R[R1]+M[imm16].
③将存储单元imm16的内容作为地址所致的存储单元的内容加到寄存器R1中。此时,imm16为间接地址。即:R[R1]⬅R[R1]+M[M[imm16]]。

解答:
①该过程可以分为:
MDRout Yin:将立即数从MDR存储器数据寄存器中取出,通过CPU总线将数据送到寄存器Y中。
R1out ADD Zin:将通用寄存器R1中的内容取出,通过CPU总线送到算术逻辑部件ALU处,进行加法运算,加法运算的结果存入寄存器Z中。
Zout R1in:将寄存器Z中的内容取出,通过CPU总线送往通用寄存器R1中。
综上,由于上面每一个步骤均为1个时钟周期,因此共需要3个时钟周期才能完成该动作。
②该过程可以分为:
MDRout MARin:从指令中读取立即数imm16后,从MDR存储器数据寄存器中取出,通过CPU总线将立即数送到存储器地址寄存器MAR中。
Read R1out Yin:按照给定的地址读取指定存储器中的内容,此时在CPU中可以并行地取出通用寄存器R1中的内容并通过CPU总线将其送入寄存器Y中准备进行计算。
MDRout ADD Zin:读出存储器中的指定内容后会放入MDR存储器数据寄存器中,此时从存储器数据线中取出指定内容,并通过CPU总线将其送入ALU作为其中一个运算数并执行一次加法运算,将运算的结果存入寄存器Z中。
Zout R1in:将运算结果从寄存器Z中取出,通过CPU总线送到通用寄存器R1中。
经过分析,上述步骤分别需要1、2、1、1个时钟周期,因此总共花费的时钟周期为5个。
③该过程可以分为:
MDRout MARin:从指令中读取立即数imm16后,从MDR存储器数据寄存器中取出,通过CPU总线将该立即数送到存储器地址寄存器MAR中。
Read R1out Yin:按照给定的地址读取指定存储器中的内容,此时在CPU中可以并行地取出通用寄存器R1中的内容并通过CPU总线将其送入寄存器Y中作为一个运算数。
MDRout MARin:从存储器中读出M[imm16]的内容后该内容被存放在存储器数据寄存器MDR中,此时通过CPU总线将该内容作为地址再次送到存储器地址寄存器MAR中。
Read:在存储器中读取指定地址M[imm16]的内容。
MDRout ADD Zin:从存储器数据寄存器MDR中取出M[M[imm16]]的内容,将其送到算术逻辑部件ALU处作为一个操作数,ALU执行加法运算后将运算结果送到寄存器Z中。
Zout R1in:取出寄存器Z中的内容,通过CPU总线将内容送到通用寄存器R1中。
综上,各个步骤分别需要1、2、1、2、1、1个时钟周期,因此总共需要8个时钟周期。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
