1. A method of issuing to a data cache a load instruction in a program, the method comprising: determining at a load and store logic unit whether there are any unresolved store instructions in a store buffer that are older than the load instruction; in response to determining that there is at least one unresolved store instruction in the store buffer older than the load instruction, determining at the load and store logic unit whether the oldest unresolved store instruction in the store buffer is within a speculation window for the load instruction, wherein the speculation window for any load instruction in the program covers a predetermined number of instructions immediately preceding that load instruction or a predetermined number of store instructions immediately preceding that load instruction; and in response to determining that the oldest unresolved store instruction is within the speculation window for the load instruction, speculatively issuing the load instruction to the data cache.