A processor includes a return stack circuit used for predicting procedure
return addresses for instruction pre-fetching, wherein a return stack
controller determines the number of return levels associated with a given
return instruction, and pops that number of return addresses from the
return stack. Popping multiple return addresses from the return stack
permits the processor to pre-fetch the return address of the original
calling procedure in a chain of successive procedure calls. In one
embodiment, the return stack controller reads the number of return levels
from a value embedded in the return instruction. A complementary compiler
calculates the return level values for given return instructions and
embeds those values in them at compile-time. In another embodiment, the
return stack circuit dynamically tracks the number of return levels by
counting the procedure calls (branches) in a chain of successive
procedure calls.