1. A method for performing branch prediction by a processor having an instruction pipeline, comprising: speculatively updating a fetch group history of a global history register, wherein the global history register comprises the fetch group history and a branch history; fetching a fetch group of instructions; assigning a global history vector to the instructions of the fetch group, wherein the global history vector is a value of the global history register when the instructions are fetched; predicting a direction of any branches in the fetch group using the global history vector and a predictor to create branch predictions; evaluating whether the fetch group contains a predicted taken branch; if the fetch group contains a predicted taken branch: flushing subsequently fetched instructions in the instruction pipeline following the predicted taken branch; repairing the global history register to the global history vector of the predicted taken branch; updating the fetch group history of the global history register based on the branch predictions; and if the fetch group does not contain a predicted taken branch: updating the branch history of the global history register with a branch history value for each branch in the fetch group based on the branch predictions.