If a branch outcome is to be determined earlier, the branch must be able to read its operand equally early. It will make the data hazard more serious. Branch direction is controlled by a register value that may either be loaded (MEM) or computed (EXE). If the branch register value comparison is performed in the EXE stage, then forwarding can deliver the computed value produced by EXE stage. There will be no data hazard stall. Forwarding can deliver a loaded value without a data hazard stall if one instruction separates it from branch. On the other hand, if the branch register value comparison is performed in the ID stage, there should be more instruction slots to avoid data hazard: one for computed value and two for loaded value. (see the red lines in the figure)
So, resolving branches early reduces the control hazard stalls in a pipeline. However, without a sufficient combination of forwarding and scheduling, the savings in control hazard stalls will be offset by an increase in data hazard stalls