US 7,552,318 B2
Branch lookahead prefetch for microprocessors
Richard James Eickemeyer, Rochester, Minn. (US); Hung Qui Le, Austin, Tex. (US); Dung Quoc Nguyen, Austin, Tex. (US); Benjamin Walter Stolt, Austin, Tex. (US); and Brian William Thompto, Austin, Tex. (US)
Assigned to International Business Machines Corporation, Armonk, N.Y. (US)
Filed on Dec. 17, 2004, as Appl. No. 11/16,200.
Prior Publication US 2006/0149933 A1, Jul. 06, 2006
Int. Cl. G06F 9/00 (2006.01)
U.S. Cl. 712—237  [712/219] 18 Claims
OG exemplary drawing
 
1. A microprocessor which commits results of non-speculative instructions to at least one architected facility, comprising:
multiple execution units;
architected registers which store operand data used by said execution units;
dispatch logic which detects the occurrence of a stall condition during execution of program instructions by said execution units, speculatively executes one or more pending instructions which include at least one branch instruction during the stall condition, determines the validity of data utilized by the speculative execution, and maintains a vector of dirty bits to track the validity of the pending instructions, wherein dirty bits in the vector are initially set to “0” and a given one of the dirty bits is set to “1” when a corresponding instruction passes a writeback stage where a result calculated by one of said execution units is provided to one of said architected registers;
an instruction queue; and
a branch prediction unit which predicts a path of the branch instruction prior to said detecting of the occurrence of the stall condition, and fetches predicted instructions from the predicted path into said instruction queue, wherein said dispatch logic speculatively flushes the predicted instructions from the instruction queue in response to said executing of the branch instruction when the dirty bit for the branch instruction is set to “0”.