A method of determining global branch history for branch prediction, the method comprising: shifting first bits of a branch signature into lowest order bits of a global branch history register storing current global branch history; performing a bitwise exclusive-or function on second bits of the branch signature and on lowest order bits of the current global branch history to generate third bits for storage into the global branch history register, wherein the second bits are distinct from and higher order than the first bits, and wherein the third bits for storage into the global branch history register are stored at bit locations of the global branch history register that are higher order than the lowest order bits of the global branch history register into which the unmodified first bits of the branch signature are shifted; characterized in that the method comprises: performing a bitwise XOR function on different combinations of bits of the current global branch history to obtain fourth bits for storage into the global branch history register, and storing the fourth bits at bit locations of the global branch history register that are higher order than the bit locations in which the third bits are stored, wherein the different combinations of bits for which the XOR function is performed comprise a first set of bits of the current global branch history and a second, higher order set of bits of the current global branch history; and storing bits of the current global branch history, that are higher order than the lowest order bits of the current global branch history, into the global branch history register at a location that is higher order than the third bits for storing into the global branch history register and lower order than the fourth bits for storage into the global branch history register, the bits of the current global branch history being higher order than the lowest order bits of the current global branch history and lower order than each of the bits of the different combinations of bits from which the fourth bits are obtained. shifting first bits of a branch signature into lowest order bits of a global branch history register storing current global branch history; performing a bitwise exclusive-or function on second bits of the branch signature and on lowest order bits of the current global branch history to generate third bits for storage into the global branch history register, wherein the second bits are distinct from and higher order than the first bits, and wherein the third bits for storage into the global branch history register are stored at bit locations of the global branch history register that are higher order than the lowest order bits of the global branch history register into which the unmodified first bits of the branch signature are shifted; characterized in that the method comprises: performing a bitwise XOR function on different combinations of bits of the current global branch history to obtain fourth bits for storage into the global branch history register, and storing the fourth bits at bit locations of the global branch history register that are higher order than the bit locations in which the third bits are stored, wherein the different combinations of bits for which the XOR function is performed comprise a first set of bits of the current global branch history and a second, higher order set of bits of the current global branch history; and storing bits of the current global branch history, that are higher order than the lowest order bits of the current global branch history, into the global branch history register at a location that is higher order than the third bits for storing into the global branch history register and lower order than the fourth bits for storage into the global branch history register, the bits of the current global branch history being higher order than the lowest order bits of the current global branch history and lower order than each of the bits of the different combinations of bits from which the fourth bits are obtained. performing a bitwise XOR function on different combinations of bits of the current global branch history to obtain fourth bits for storage into the global branch history register, and storing the fourth bits at bit locations of the global branch history register that are higher order than the bit locations in which the third bits are stored, wherein the different combinations of bits for which the XOR function is performed comprise a first set of bits of the current global branch history and a second, higher order set of bits of the current global branch history; and storing bits of the current global branch history, that are higher order than the lowest order bits of the current global branch history, into the global branch history register at a location that is higher order than the third bits for storing into the global branch history register and lower order than the fourth bits for storage into the global branch history register, the bits of the current global branch history being higher order than the lowest order bits of the current global branch history and lower order than each of the bits of the different combinations of bits from which the fourth bits are obtained.