Patent ID: 7747841

Claim:
A method for processing an executable program and data associated therewith, which are fetched from at least one memory by a processor for execution, said method comprising the steps of: identifying a fetched load instruction in said program as being a long latency load instruction if said processor has requested a true value for said load instruction from said memory, but has not obtained a true value from said memory after a predetermined amount of time; supplying a prediction value for said long latency load instruction to said processor; generating a checkpoint to facilitate returning an execution state of said program and its associated data to that of a point in the program's execution where said long latency load instruction was to be processed; allowing said long latency load instruction to retire prior to obtaining said true value for said long latency load instruction from said memory; continuing execution of said program using said prediction value for said long latency load instruction, while at the same time preventing application to said memory of any memory updates by any store instructions that follow said long latency load instruction in program order, thereby preventing overwriting of data in said memory associated with said checkpoint; when said true value is actually returned from said memory for said long latency load instruction, comparing said true value to said prediction value; if said true and prediction values do not match, employing said checkpoint to restore the execution state of said program and its associated data to the point in the program's execution where said long latency load instruction was to be processed, discarding said memory updates, and to restart execution at said point, supplying the true value to said long latency load instruction to said processor; and if said true and prediction values do match, releasing said checkpoint, allowing said memory updates to be applied to said memory and continuing execution of said program with said processor.