Patent ID: 6912648

Claim:
A method comprising: dispatching an instruction for execution; speculatively executing said instruction; determining whether said instruction executed correctly; routing said instruction to a replay mechanism if said instruction did not execute correctly; determining whether incorrect execution of said instruction is due to a long latency operation; routing said instruction for re-execution if said incorrect execution is not due to said long latency operation and advancing said instruction forward for replay into an earlier replay time slot if a slot becomes available; delaying routing of said instruction for re-execution if said incorrect execution is due to said long latency operation and moving said instruction backwards in time as resource conflicts are detected; re-executing said instruction if said instruction did not execute correctly; retiring said instruction if said instruction executed correctly; routing said instruction to a delay queue to wait a period of time before re-executing said instruction if said incorrect execution is due to said long latency operation; determining what type of error caused said instruction to execute incorrectly; predicting what length time period to delay said instruction prior to routine said instruction for re-execution if said incorrect execution is due to said long latency operation; tracking number of times said instruction is executed and re-executed and increasing said time period to delay said instruction for re-execution as number of time said instruction has been executed and re-executed increases.