US 7,490,224 B2
Time-of-life counter design for handling instruction flushes from a queue
Christopher Michael Abernathy, Austin, Tex. (US); Jonathan James DeMent, Austin, Tex. (US); Ronald Hall, Cedar Park, Tex. (US); Robert Alan Philhower, Valley Cottage, N.Y. (US); and David Shippy, Austin, Tex. (US)
Assigned to International Business Machines Corporation, Armonk, N.Y. (US)
Filed on Oct. 07, 2005, as Appl. No. 11/246,587.
Prior Publication US 2007/0083742 A1, Apr. 12, 2007
Int. Cl. G06F 9/30 (2006.01)
U.S. Cl. 712—214 3 Claims
OG exemplary drawing
 
1. A computer-implemented method comprising:
initializing each of a plurality of counters, each counter corresponding to one of a plurality of instructions, to an initialization value when the instructions are issued from a first issue queue to a plurality of units, wherein one of the units is a second issue queue, and wherein the initialization value for each counter is set to a commit point for its corresponding instruction, wherein the commit point for each instruction is a number of instruction cycles after which the instruction can not be flushed;
issuing the plurality of instructions issued to the second issue queue to a plurality of execution unit pipelines, each of the execution unit pipelines being connected to an execution unit;
after the initializing, decrementing the counters corresponding to the instructions during each of a plurality of instruction cycles until the instructions are executed by one of the execution units;
identifying an “n+1” exception corresponding to one of the instructions that has been issued to one of the plurality of units;
in response to identifying the “n+1” exception, performing the following:
flushing instructions from the execution unit pipelines with counters greater than one, wherein instructions from the execution unit pipelines with counters equal to zero are not flushed;
reading an age attribute associated with instructions with counters equal to one, wherein each instruction with a counter equal to one has an associated age attribute; and
in response to reading the age attributes, flushing one or more instructions with counters equal to one from the execution unit pipelines based upon the instructions' age attributes.