Consider a 5-stage pipelined processor with Instruction Fetch (IF), Instruction Decode (ID), Execute (EX), Memory Access (MEM), and Register Writeback (WB) stages. Which of the following statements about forwarding is/are CORRECT?
A) In a pipelined execution, forwarding means the result from a source stage of an earlier instruction is passed on to the destination stage of a later instruction
B) In forwarding, data from the output of the MEM stage can be passed on to the input of the EX stage of the next instruction
C) Forwarding cannot prevent all pipeline stalls
D) Forwarding does not require any extra hardware to retrieve the data from the pipeline stages
Would option B be one of the correct answers? If yes, then kindly provide proper references from authors/research papers for the same.
Option a will be true for non-linear pipelines while option C is definitely true and we can find many examples of pipelined systems for the same. Option D is clearly false. My only confusion is regarding option B.