Computer hazards are issues that arise within the micro-architectures of a CPU that prevent it from executing the next pipe stage of a programmed instruction. CPU hazards can be further divided into three sub-categories: structural, data and control.
Structural hazards are a result of an instruction causing a conflict over the resources made available by the computer hardware. Data hazards, on the other hand, occur when an instruction is not able to access data that it needs. Typically the data has either been not computed or already stored. Control hazards occur on branch instructions and are a result of a branch PC and condition being unavailable in time for access.