I am trying to understand the concept of bypassing by reading the following slide
Bypassing is reading a value from an intermediate source. What does the arrow stand for?, does it mean that X is executed after M in the sequence?. How does it work?
I am trying to understand the concept of bypassing by reading the following slide
Bypassing is reading a value from an intermediate source. What does the arrow stand for?, does it mean that X is executed after M in the sequence?. How does it work?
Bypassing means the data at that stage is passed to the stage required. For example in the first case (MX bypass),
the output of the operation ADD r2, r3
is available at the M
stage, but has not written back to its destination r1
. The SUB
instruction is expecting one of its data to be available at r1
. Since this r1
data is produced by the ADD
and "we" know that it is this same r1
is needed for SUB
we dont need to wait until the writeback stage W
of ADD
is complete. "We" can simply bypass the data to the SUB
instruction. The same goes with WX bypass as well.