Patent ID: 7478276
Filing Date: 2009-01-13
Classification: G06F

Abstract:
1. A method for dispatch group checkpointing in a data processing system, with capability to handle partially completed groups of instructions, in a microprocessor, the method comprising: selectively grouping, by an instruction dispatch unit, ones of a plurality of decoded instructions into a set of instructions according to which ones of a plurality of execution units are available to process the plurality of decoded instructions; assigning a group identifier to the set of instructions, wherein the set of instructions includes at least one fixed point instruction and a plurality of floating point instructions, and further wherein the plurality of floating point instructions execute out of order with respect to each other as well as out of order with respect to the at least one fixed point instruction, and wherein the group identifier is used to determine whether the set of instructions can be checkpointed; dispatching, by an instruction dispatch unit, the set of instructions; sending, upon the set of instructions being dispatched, the group identifier with the set of instructions; monitoring, by the microprocessor, the processing of the set of instructions; storing result data from the processing of the set of instructions; incrementing a counter responsive to an instruction from the set of instructions completing processing, wherein the counter is maintained by completion logic; responsive to determining that the set of instructions has completed processing, moving the result data to a store queue; determining if each one of the instructions in the set of instructions completed processing without error; in response to a first subset of the set of instructions being flushed and leaving only a second subset of the set of instructions that are still being processed, calculating a new group identifier, wherein the second subset includes some, but not all, of the set of instructions; assigning the new group identifier to the second subset of the set of instructions, wherein the new group identifier is used to determine whether the second subset can be checkpointed; determining if the second subset of the set of instructions includes at least one floating point unit (FPU) or a vector multimedia extension (VMX) instruction; in response to the second subset of the set of instructions including at least one floating point unit (FPU) or a vector multimedia extension (VMX) instruction, recalculating a number of floating point instructions that are included in the second subset of the set of instructions; and sending the new group identifier and the recalculated number of floating point instructions that are included in the second subset of the set of instructions to the recovery unit.