问题描述
我知道 MIPS 中的指令有 5 个标准阶段。对于下面的伪指令
li $t1,0 # pseudo-instruction for addi $t1,$zero,0
谁能确认这是否使用了所有 5 个阶段?我认为这背后是一个 addi
,但我真的不明白它是否需要使用 MEM 阶段?
我的想法是立即数存储在指令中,而不是存储在内存中,所以 WB 阶段不会进行寄存器加载吗?
解决方法
此指令将转换为 addi $t1,$0,0
或其他类似内容。
所有阶段都做了有用的工作来执行如此简单的计算指令——除了 MEM 阶段。
只有加载和存储指令需要数据存储器流水线级 (MEM)。如果不是他们,我们就不会有 MEM 舞台。 (当然,我们也会有一个不能做太多事情的处理器。)