# Cache **[Cache](https://en.wikipedia.org/wiki/CPU_cache)** is fast on-chip memory between the CPU and main memory, holding recently used data. Caches exploit temporal locality (reuse) and spatial locality (adjacent access), organized in hierarchy: L1 (~1KB, ~1ns), L2 (~256KB, ~7ns), L3 (~20MB, ~100ns), memory (~100ns+). Cache lines (64 bytes) are the unit of transfer. [[cache-coherence|Multicore coherence]] adds complexity; [[false-sharing]] occurs when unrelated variables share a line. ## Example Cache hierarchy on typical x86-64: ``` L1: 32 KB per core ~1 ns 8-way associative L2: 256 KB per core ~7 ns 8-way associative L3: 20 MB shared ~100 ns 20-way associative RAM: — ~100 ns+ ```