A method of prefetching data in a microprocessor includes identifying a
data stream associated with a process and determining a depth associated
with the data stream based upon prefetch factors including the number of
currently concurrent data streams and data consumption rates associated
with the concurrent data streams. Data prefetch requests are allocated
with the data stream to reflect the determined depth of the data stream.
Allocating data prefetch requests may include allocating prefetch
requests for a number of cache lines away from the cache line currently
being referenced, wherein the number of cache lines is equal to the
determined depth. The method may include, responsive to determining the
depth associated with a data stream, configuring prefetch hardware to
reflect the determined depth for the identified data stream. Prefetch
control bits in an instruction executed by the processor control the
prefetch hardware configuration.