Answer:
Answered below
Step-by-step explanation:
Data hazards happen when instructions exhibiting data dependence modify data in the different stages of a pipeline. Potential data hazards when not attended to, can result in race hazards or race conditions. Examples of situations where data hazards can occur is read after write, write after read, write after write. To resolve data hazards we can insert a pipeline whenever a read after write, dependence is encountered, use out-of-order execution or use operand forwarding.
Structural hazards happen when multiple instructions which are already in pipeline new the same resource. Example is a situation which many instructions are ready to execute an there is a single Arithmetic Logic Unit. Methods for preventing this hazard include pipeline break an pipeline flushing.