Definition
A performance principle that programs and systems tend to access a relatively small set of memory locations repeatedly over short time intervals (temporal locality) and to access locations that are near each other in address space within short intervals (spatial locality).

Principle

Principle
Access patterns are nonuniform in time and space; design of caches, prefetchers, and data layouts should exploit recent and nearby accesses to reduce average latency and bandwidth usage.

Demonstration

Demonstration
A CPU executing a loop over an array exhibits temporal locality (same instructions and data reused across iterations) and spatial locality (consecutive memory addresses accessed), enabling effective use of L1/L2 caches and hardware prefetching.

Misapplication

Misapplication
Assuming strong locality for workloads that are inherently random (e.g., cryptographic random-access patterns, certain graph algorithms) and therefore adding cache-focused optimizations that increase complexity without benefit.

Consequence

Consequence
When correctly recognized and exploited, locality reduces cache miss rates, lowers memory access latency, and improves overall throughput; it justifies layered storage hierarchies and block-oriented I/O.

Reversal

Reversal
Workloads with anti-locality properties—uniform random access across large address spaces or pointer-chasing with poor spatial clustering—invalidate locality-based optimizations and may require different designs (e.g., streaming buffers, direct I/O).

Boundary

Boundary
Applies to memory hierarchies, processor caches, disk blocks, and networked caches; it does not guarantee performance for all algorithms and may not apply to highly randomized, adversarial, or streaming-only access patterns.

Semantic Tension

Semantic Tension
Competes with models that assume uniform access cost (e.g., simple RAM model); also creates tension with security concerns since locality can enable timing or cache side channels.

Synthesis

Synthesis
Locality of reference is the empirical rule that access patterns cluster in time and space; recognizing this clustering guides architectures (caches, prefetchers, data layout) and must be balanced against workloads where clustering is weak or absent.