Data hazards occur when instructions that exhibit data dependence modify data in different stages of a pipeline. Ignoring potential data hazards can result in race conditions (sometimes known as race hazards). There are three situations in which a data hazard can occur:
1.read after write (RAW), a true dependency
2.write after read (WAR), an anti-dependency
3.write after write (WAW), an output dependency
Consider two instructions i1 and i2, with i1 occurring before i2 in program order.