Definition
Pipelined Hazard
A pipelined hazard is a situation in which the next pipeline step cannot proceed normally because one instruction depends on information or control that is not yet available.
In other words, an instruction wants to move forward, but some result from an earlier instruction has not yet been completed or the correct next instruction is not yet known.
Types
Data
Definition
Link to originalData Hazard
A data hazard is a pipelined hazard in which an instruction needs a value that a previous instruction has not yet written back.
So the later instruction depends on a register or other result that is still being produced by the pipeline.
Control
Definition
Link to originalControl Hazard
A control hazard is a pipelined hazard in which the next instruction to fetch is not yet known.
This usually happens for branch or jump instructions, because the processor must first determine whether control flow continues with the sequential next instruction or with a different target address.
In a classic pipeline, this is often harder than a data hazard, because the processor may only know in the execute stage whether the branch is taken.