Patent ID: 8245018

Claim:
A method of processing instructions, comprising fetching, by a fetch unit, a plurality of instructions from an instruction source; decoding the plurality of instructions, by a decoder/dispatcher, the plurality of instructions including instructions that reference a target register of a general purpose register for storage of results thereof, the instructions that reference the target register including a current instruction and previous instructions; dispatching, by the decoder/dispatcher, the plurality of instructions to an issue queue, issuing, by the issue queue, the plurality of instructions that reference the particular target register out-of-order to execution units; storing a respective entry in a recovery buffer unit for each of the previous instructions and the current instruction, the previous instructions and the current instruction referencing the same target register, wherein each recovery buffer unit entry includes a first pointer to a first instruction and a second pointer to a second instruction immediately following the first instruction; speculatively executing, by the execution units, the previous instructions and the current instruction; determining, by a branch execution unit, if an exception occurred for one of the previous instructions that requires an issue queue flush; performing an issue queue flush if an exception occurred in the determining step; performing, in response to the exception, a recovery buffer unit recovery to determine an oldest valid entry of the recovery buffer unit; and restoring the general purpose register to a known good state using a result of a target register corresponding to the oldest valid entry of the recovery buffer unit determined in the recovery buffer unit recovery.