There are situations in pipelining when the next instruction cannot execute
in the following clock cycle. These events are called Hazards. There
are several types of Hazards; structural, control, and data hazards.
Structural Hazards
When a machine is pipelined, the overlapped execution of instructions
requires pipelining of functional units and duplication of resources to
allow all possible combinations of instructions in the pipeline.
If some combination of instructions cannot be accommodated because of a
resource conflict, the machine is said to have a structural hazard.
Common instances of structural hazards arise when:
- Some functional unit is not fully pipelined. Then a sequence of
instructions using that unpipelined unit cannot proceed at the rate of one
per clock cycle
- Some resource has not been duplicated enough to allow all combinations
of instructions in the pipeline to execute.