MIPS pipeline end
Incorrect wiring
Write register
The write register is the one supplied by the IF/ID pipeline register.
This is incorrect, since the instruction is now in the WB stage.
To be explicit, suppose we executed the following 2 commands in sequence:
add $1 $2 $3 # command 1
add $4 $5 $6 # command 2
When command 1 reaches the WB stage, Command 2 has updated the MIPS IF/ID register with its write register, $4
.
$2 + $3
gets written to $4
instead of $1
.
Solution
To fix this, we pass $1
along the pipeline registers, to MEM/WB
.
Then, we populate Write register
via MEM/WB
instead of IF/ID
, since it can overlap with the next instructions.