cpu cache optimization

**CPU Cache Optimization** — writing code that exploits the CPU's memory hierarchy (L1→L2→L3→DRAM) to minimize expensive cache misses, potentially achieving 10-100x performance improvement. **Memory Hierarchy Latency** | Level | Size | Latency | Bandwidth | |---|---|---|---| | L1 Cache | 32-64 KB | ~1 ns (4 cycles) | ~1 TB/s | | L2 Cache | 256 KB-1 MB | ~3 ns (12 cycles) | ~500 GB/s | | L3 Cache | 8-64 MB | ~10 ns (40 cycles) | ~200 GB/s | | DRAM | 16-256 GB | ~70 ns (280 cycles) | ~50 GB/s | **Key Optimization Strategies** **1. Spatial Locality**: Access data sequentially (cache lines are 64 bytes) - Row-major array: Iterate rows then columns (C/C++ default) - Column-major: Iterate columns then rows (Fortran default) - Wrong order → cache miss every element instead of every 16th element (64B / 4B float) **2. Temporal Locality**: Reuse data while it's still in cache - Loop tiling/blocking: Process small blocks that fit in L1/L2 before moving on - Hot/cold splitting: Separate frequently-accessed fields from rarely-accessed ones **3. Avoid False Sharing**: Different threads writing to same cache line → invalidation ping-pong - Pad per-thread data to cache line boundaries (64 bytes) **4. Prefetching**: CPU hardware prefetcher detects sequential/strided patterns. Use `__builtin_prefetch()` for irregular patterns **Cache optimization** is the #1 performance technique for CPU-bound code — an algorithm that's cache-friendly can outperform an otherwise "faster" algorithm with poor locality.

Go deeper with CFSGPT

Get AI-powered deep-dives, save terms, and run advanced simulations — free account.

Create Free Account