Home

Prefetching

Prefetching is a performance optimization in which data or instructions are moved to a faster storage layer before they are needed, with the goal of hiding memory latency and increasing system throughput. Prefetching can occur at multiple levels, from processor caches to storage subsystems and even networked resources.

In CPUs, prefetching can be hardware-driven, where the memory subsystem detects access patterns and issues prefetch

Operating systems and storage subsystems implement prefetching through read-ahead or prefetch algorithms that fetch data blocks

In web environments, browsers may prefetch or prerender resources associated with a page, or DNS prefetching

Effectiveness depends on workload characteristics, data locality, and system resources. Poorly tuned prefetching can evict useful

See also caching and speculative execution.

requests
ahead
of
demand,
or
software-driven,
where
compilers
or
programmers
insert
prefetch
hints
or
use
special
intrinsics.
Hardware
prefetchers
typically
target
regular,
stride-based
access,
while
software
prefetching
can
handle
irregular
patterns
but
risks
misprediction
and
cache
pollution
if
mis-tuned.
before
the
application
requests
them,
improving
performance
for
sequential
or
predictable
workloads.
Disk
and
memory
prefetchers
rely
on
historical
access
patterns
and
can
adapt
to
changing
workloads,
trading
off
bandwidth
against
latency.
to
reduce
connection
setup
delays.
While
these
techniques
can
improve
perceived
responsiveness,
they
increase
bandwidth
consumption
and
may
raise
privacy
concerns
by
accessing
resources
users
have
not
yet
requested.
data
or
saturate
bandwidth,
while
well-tuned
prefetchers
can
yield
significant
latency
reductions
and
smoother
performance.