1. A method for providing branch prediction for a current branch instruction, the method comprising: generating a first index from a program counter and from a first branch history vector having a first length, wherein the first branch history vector is from a first instruction cycle, wherein the first instruction cycle occurs prior to a second instruction cycle, and wherein the second instruction cycle is the most-recent instruction cycle; generating a second index from the program counter and from a second branch history vector having a second length that is longer than the first length and wherein the second branch history vector is from the first instruction cycle; retrieving, using the first index, a first branch prediction for the current branch instruction from a first branch prediction table; retrieving, using the second index, a second branch prediction for the current branch instruction from a second branch prediction table; obtaining, after beginning to generate the first index, an updated first branch history vector and an updated second branch history vector, wherein the updated first branch history vector and second branch history vector are based upon additional branch history data from the second instruction cycle; generating a first hash value from the program counter and the updated first branch history vector; generating a second hash value from the program counter and the updated second branch history vector; and selecting, prior to the resolution of the current branch instruction, between the first branch prediction and the second branch prediction based upon the first and second hash values.