1. A method for branch prediction for a processor, the method comprising: emptying a queue of an instruction pipeline if a taken branch is detected; in a first execution cycle, accessing a pattern history table (PHT) using a first global history value; in a second execution cycle immediately subsequent to the first execution cycle, generating a first branch prediction data from the PHT based on the first global history value; in a third execution cycle immediately subsequent to the second execution cycle: if the queue is empty and there is a correctly predicted not-taken branch, then using the generated first branch prediction data for a branch prediction value in the third execution cycle, and if there is not a correctly predicted not-taken branch, then entering the generated first branch prediction data in a first portion of the queue; and in a fourth execution cycle immediately subsequent to the third execution cycle, if there is a correctly predicted not-taken branch, using the first branch prediction data in the first portion of the queue for the branch prediction value and removing the first branch prediction data from the first portion of the queue; and repeating a sequence of the first execution cycle through the fourth execution cycle as long as a taken branch is not detected, such that actions taken in one iteration of the sequence may overlap the actions taken in another iteration of the sequence.