一条指令的执行流程就是取指、译码、(间接寻址)、执行。按照这个步骤一条一条来看。
(我们书上取指、间址、执行周期只有T0、T1、T2这3个节拍,图上的T3和T4可能是拆分出来的)
(写到一半发现怎么拆都拆不出T4,所以可能是从T1开始的?( ゚∀。))
取指:使用PC中的指令地址从指令存储器Icache中读取一条指令,PC+1,这个步骤要用到的相关部件有PC、指令存储器Icache、指令通路IBUS、指令寄存器IR,数据流向为PC➡Icache➡IBUS➡IR。所以整个过程中需要IR/W信号为高电平读取Icache、SIR信号高电平写入IR、PC自增信号。
根据取指周期的操作时间表,T1节拍读PC,T2节拍读Icache,T3节拍写IR,T4节拍PC+1,同时开始指令译码。所以IR/W信号高电平在T2节拍内,SIR信号高电平在T3节拍内,PC+1信号在T4节拍内.
译码:这题不用管
间接寻址:本题指令为寄存器间接寻址,即读取寄存器R3的内容送入地址寄存器AR作为执行阶段寻址的地址。这个步骤要用到的相关部件有指令寄存器IR、寄存器R3、数据通路DBUS、地址寄存器AR,数据流向为IR➡R3➡DBUS➡AR。所以整个过程中需要C3高电平开操作数通路到AR(图上没标)、LR3高电平读取寄存器R3、C2高电平开DBUS、SAR高电平写入AR。
根据间址周期的操作时间表,T1节拍读IR得到操作数地址写入AR,T2节拍读AR得到寄存器R3地址、T3读寄存器R3得到寄存器内容(地址),T4节拍写AR。所以C3高电平在T1节拍内,LR3高电平在T3节拍、C2高电平在T3、T4节拍,SAR高电平在T4节拍内。
执行:本题指令为读取(R3)内存地址的内容并写入R0,这个步骤要用到的相关部件有地址寄存器AR、数据存储器Dcache、数据通路DBUS、数据寄存器DR、目标寄存器R0,数据流向为AR➡Dcache➡DBUS➡DR➡R0。整个过程中需要DR/W信号为高电平读取数据存储器Dcache、C2高电平开DBUS、SDR信号高电平写入数据寄存器DR、SR0高电平写入寄存器R0。
根据执行周期的操作时间表,T1节拍读AR,T2节拍读数据存储器Dcache,T3节拍写入数据寄存器DR,T4节拍写入寄存器R0。所以DR/W高电平、C2高电平在T2、T3节拍内,SDR高电平在T3节拍内,SR0在T4节拍内。