Dependences between instructions may cause data hazards when Instr1 and Instr2 are so close that their overlapping within the pipeline would change their access order to Reg.
Three types of data hazards:
Read After Write (RAW): Instr2 tries to read operand before Instr1 writes it.
Write After Read (WAR): Instr2 tries to write operand before Inst1 reads it.
Write After Write (WAW): Instr2 tries to write operand before Instr1 writes it.