Memory Wall — bottleneck-ul calculului modern

Memory Wall descrie discrepanta dintre viteza procesoarelor si latenta memoriei. Factorul de ~250x intre 1980 si 2020 face ca majoritatea aplicatiilor sa fie limitate de accesul la memorie, nu de CPU.

Originea termenului

Wulf si McKee (1995): viteza procesoarelor creste ~50%/an, memoria ~7%/an. In 2020, CPU-ul poate executa sute de operatii in timpul unui singur acces RAM (~200 de cicli).

Ierarhia de memorie

| Nivel | Marime | Latenta | Bandwidth | |---|---|---|---| | Registri | ~1KB | 1 ciclu | ~1TB/s | | L1 cache | ~32KB | 3-5 cicli | ~500GB/s | | L2 cache | ~256KB | 10-15 cicli | ~200GB/s | | L3 cache | ~8MB | 30-50 cicli | ~100GB/s | | RAM | ~32GB | 200-400 cicli | ~50GB/s | | SSD | ~1TB | 100,000 cicli | ~3GB/s |

Roofline Model

Un model care vizualizeaza performanta in functie de arithmetic intensity (operatii per byte). Aplicatiile sunt fie compute-bound, fie memory-bound. Optimizarea gresita nu ajuta.

Solutii hardware si software

Hardware: cache HBM, NUMA, prefetching, memorie cu 3D stacking (HBM). Software: DOD, SOA, blocking/tiling, arena allocators.