Two solutions
Stall the pipeline
- When a data hazard is detected, stall the instruction which needs the updated register value until the new value has been written to the register file
- Too much performance penalty!
Data Forwarding (or Bypassing)
- The register value exists in the pipeline - simply send it to where it is needed!