Speicherhierarchie und Cache-Lines
Kurz: Computer haben mehrere Speicherstufen: Register, L1–L3-Cache, Arbeitsspeicher, SSD, Festplatte. Je näher an der CPU, desto schneller, aber kleiner. Daten werden in Cache-Lines (meist 64 Byte) bewegt.
Genauer: Der Zugriff auf den Arbeitsspeicher dauert grob hundertmal länger als auf den L1-Cache. Programme, die Daten nacheinander und nah beieinander lesen (räumliche und zeitliche Lokalität), laufen deutlich schneller.
Im Detail
- Größenordnungen: L1 ≈ 1 ns, L2 ≈ 4 ns, L3 ≈ 15 ns, RAM ≈ 80–100 ns, SSD ≈ 100 µs, HDD ≈ 10 ms.
- Cache-Line: Kleinste Einheit des Transfers. Ein Byte lesen holt 64 Byte.
- Lokalität: Arrays durchlaufen ist schnell, verkettete Listen springen im Speicher.
- False Sharing: Zwei Threads schreiben auf verschiedene Variablen derselben Cache-Line und bremsen sich aus.
- Struct of Arrays vs. Array of Structs: Anordnung entscheidet über Cache-Effizienz.
- Prefetching: CPU lädt vorausschauend.
Siehe auch: Caching-Strategien und Cache-Invalidierung, Amdahlsches Gesetz und Skalierung