A method (200) and apparatus (100) for allocating entries in a branch
target buffer (BTB) (144) in a pipelined data processing system includes:
sequentially fetching instructions; determining that one of the
instructions is a branch instruction (210, 215, 220); decoding the branch
instruction to determine a branch target address; determining if the
branch target address can be obtained without causing a stall condition
in the pipelined data processing system; and selectively allocating an
entry of the BTB (144) based on the determination. In one embodiment, an
entry of the BTB (144) is allocated if the branch instruction is not
loaded into a predetermined slot (S1) of a prefetch buffer (102) and no
other stall condition will occur. The method (200) and apparatus (100)
combine the advantages of using a BTB (144) and branch lookahead to
reduce stall conditions in the data processing system.