Forwarding / bypass
A technique that sends a computed result directly from the execution unit that produced it to the instruction that needs it — without waiting for it to first be written back to the register file. The most common way to eliminate data hazards and avoid stalls.
Problem: without forwarding, an instruction that needs a result must wait until the preceding instruction has fully completed and written the value to the register file, and then read it from there — several wasted cycles. Forwarding (also "bypass") adds shortcuts in the hardware: as soon as the ALU has computed a value it can be fed directly to the next instruction's input, in parallel with it also being written to the register. Result: a RAW dependency between two tightly consecutive instructions often causes no wait at all. The "forwarding network" that connects all execution units' outputs to all inputs is a complex and area-/power-hungry part of the core, but crucial for performance. A fundamental pipeline optimization. Related to data hazard and pipeline stall.