Hardware: Gängige Mythen über CPU-Caches

Vieles, was über CPU-Caches erzählt wird, stimmt nicht. Zum Beispiel, dass Caches nicht auf Hardware-Ebene für Kohärenz sorgen können. Zeit, mit einigen Mythen über volatile Variablen und Nebenläufigkeit aufzuräumen.

Artikel von Rajiv Prabhakar veröffentlicht am
Eine Schatztruhe findet sich oft in einem Cache (französisch für: Versteck).
Eine Schatztruhe findet sich oft in einem Cache (französisch für: Versteck). (Bild: Fabian Koldorff für Intel Israel)

Dieser Artikel ist eine Übersetzung. Das Original des Softwareentwicklers und Bloggers Rajiv Prabhakar ist hier zu finden.

Als Computertechniker, der ein halbes Jahrzehnt lang bei Intel und Sun mit Caches gearbeitet hat, weiß ich einiges über Cache-Kohärenz. Im Studium gehörte das zu den schwersten Fächern, aber wenn man es einmal wirklich verstanden hat, lernt man Systemdesign-Prinzipien plötzlich zu schätzen.

Sie fragen sich vielleicht, warum sich Softwareentwickler überhaupt mit CPU-Cache-Design beschäftigen sollten. Ein Grund ist: Viele der Konzepte der Cache-Kohärenz sind direkt auf die Architektur verteilter Systeme und auf Isolationsebenen von Datenbanken anwendbar. Wenn man zum Beispiel versteht, wie Kohärenz in Hardware-Caches implementiert wird, versteht man besser, wie starke und schwache Konsistenz (beziehungsweise die sogenannte eventual consistency) funktionieren. Vielleicht kommt man auf Ideen, wie sich die Konsistenz in verteilten Systemen verbessern lässt, indem man die Erkenntnisse und Prinzipien aus der Hardware anwendet.

Ein weiterer Grund für Softwareentwickler, sich mit CPU-Cache-Design zu befassen, ist, dass Missverständnisse über Caches oft zu falschen Annahmen führen - und zwar vor allem, wenn es um eine parallele Ausführung und Race Conditions geht. Zum Beispiel gibt es die gängige Behauptung, nebenläufige Programmierung sei schwierig, weil "verschiedene Kerne veraltete Werte in ihren individuellen Caches haben können".

Stellenmarkt
  1. Business Process Expert SAP (m/w/d) mit Schwerpunkt SD/MM
    Franz Binder GmbH + Co. Elektrische Bauelemente KG, Neckarsulm
  2. Inhouse Consultant (m/w/d) Salesforce CRM
    Mainova AG, Frankfurt am Main
Detailsuche

Auch kursiert die Annahme, dass volatile Variablen, etwa in Java, deswegen gebraucht werden, um zu verhindern, dass gemeinsam genutzte Daten lokal gecacht werden - und stattdessen gewährleisten, dass die Daten in den Hauptspeicher geschrieben oder aus dem Hauptspeicher gelesen werden.

Meistens sind solche Fehleinschätzungen harmlos (manchmal vielleicht sogar hilfreich), mitunter führen sie aber zu schlechten Designentscheidungen. Zum Beispiel mögen Entwickler so vielleicht glauben, gegen Parallelitätsfehler gefeit zu sein, wenn sie mit Single-Core-Systemen arbeiten. Allerdings kann es in Single-Core-Systemen durchaus Parallelitätsfehler geben, wenn nicht die richtigen Parallelitätskonstrukte verwendet werden.

Außerdem: Wenn volatile Variablen wirklich jedes Mal aus dem Hauptspeicher geschrieben/gelesen würden, wäre das extrem langsam. Schließlich sind Hauptspeicher-Zugriffe 200x langsamer als L1-Cache-Referenzen. Tatsächlich kann das Auslesen volatiler Variablen (in Java) oft genauso schnell sein wie eine L1-Cache-Referenz, was wiederum die Vorstellung widerlegt, dass Lese-/Schreibvorgänge mit volatilen Variablen bis in den Hauptspeicher vordringen würden. Wenn Sie bislang keine volatilen Variablen verwenden, weil Sie Bedenken wegen der Performance haben, sind Sie wahrscheinlich ein Opfer dieses Missverständnisses geworden.

Die Bedeutung von Kohärenz

Wenn aber nun verschiedene Kerne ihren eigenen Cache haben, in dem Kopien der gleichen Daten gespeichert sind, führt das nicht automatisch zu Inkongruenz bei den Daten, sobald sie mit den Schreibvorgängen beginnen? Nein, denn Hardware-Caches auf modernen x86-CPUs wie von Intel werden synchron zueinander gehalten. Solche Caches sind nicht so "dumm", wie viele Entwickler offenbar denken.

Eine große Auswahl an Prozessoren bei Alternate

Vielmehr gibt es einige sehr komplizierte Protokolle und Logiken, die in jeden Cache eingebettet sind, mit anderen Caches kommunizieren und die Kohärenz über alle Threads hinweg erzwingen. All das geschieht auf der Hardware-Ebene - was bedeutet, dass wir als Software-/Compiler-/Systementwickler uns nicht damit befassen müssen.

Aber was meine ich eigentlich mit "synchron"? Es gibt einige Feinheiten bei dem Thema, aber eine relativ einfache Definition könnte sein: Wenn zwei Threads irgendwo im System von der gleichen Speicheradresse lesen, sollten sie niemals gleichzeitig unterschiedliche Werte lesen.

Ein Beispiel, wie nicht-kohärente Caches diese Regel verletzen können, finden Sie im ersten Abschnitt dieses Tutorials. Keine moderne x86-CPU verhält sich so, wie es im Tutorial beschrieben wird - ein fehlerhafter Prozessor aber schon.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
Mögliche Abläufe für Schreib- und Lesevorgänge bei einer CPU mit vier Kernen 
  1. 1
  2. 2
  3. 3
  4.  
Anzeige - Ein Vergleichsservice der Golem Media GmbH

CPU Top 10 nach dem Leistungsindex 2022 - von PCGH getestet

ProduktnameCore i7-12700KCore i9-12900KCore i5-12600KCore i7-11700KCore i9-11900KRyzen 9 5900XCore i5-11600KRyzen 9 5950XCore i9-10900KRyzen 7 5800XRyzen 5 5600X
HerstellerIntelIntelIntelIntelIntelAMDIntelAMDIntelAMDAMD
Weitere Daten anzeigen ...
Leistung96,6%/75,5%100%/84,4%88,5%/62,1%81%/61,6%86,6%/66,4%86,9%/83,3%74,7%/51,1%90,6 %/100 %78,9%/65,3%82,4%/64,0%79,6%/54,4%
Leistungsaufnahme Ø288 Watt319 Watt196 Watt273 Watt398 Watt267 Watt222 Watt317 Watt270 Watt194 Watt168 Watt
Kerne12c/20t16c/24t10c/16t8c/16t8c/16t12c/24t6c/12t16c/32t10c/20t8c/16t6c/12t
GrafikeinheitJaJaJaJaJaJaJaJaJaJaJa
Basis-Takt3,6 GHz3,2 GHz3,7 GHz3,6 GHz3,5 GHz3,7 GHz3,9 GHz3,4 GHz3,7 GHz3,8 GHz3,7 GHz
Prozess10 nm10 nm10 nm14 nm14 nm7 nm14 nm7 nm14 nm7 nm7 nm
RAM2× DDR5-4800 (G2) / DDR4-3200 (G1)2× DDR5-4800 (G2) / DDR4-3200 (G1)2× DDR5-4800 (G2) / DDR4-3200 (G1)DDR4-2933 (G1) / DDR4-3200 (G2)DDR4-3200DDR4-3200DDR4-2933 (G1) / DDR4-3200 (G2)DDR4-3200DDR4-2933DDR4-3200DDR4-3200
Sockel17001700170012001200AM41200AM41200AM4AM4
Features
  • Bestes Gesamtpaket
  • Effizienter als 12900K
  • Höchste Leistung
  • Perfekt für Spieler
  • Sehr gutes Pires-Leistungs-Verhältnis
  • Gute Spieleleistung
  • Immer noch sehr schnell
  • Gute Leistung in Spielen & Anwendungen
  • Gute Leistung in Spielen
  • Leistungs-Monster
  • Allrounder
  • Sehr flott in Spielen
  • Sehr effizient
Angebote


Aktuell auf der Startseite von Golem.de
Pluton in Windows 11
Lenovo will Microsofts Sicherheitschip nicht aktivieren

Die neuen Windows-11-Laptops kommen mit dem Chip Pluton. Lenovo will diesen aber noch nicht selbst aktivieren.

Pluton in Windows 11: Lenovo will Microsofts Sicherheitschip nicht aktivieren
Artikel
  1. Corona-Warn-App: Hohe Kosten, halbherzige Umsetzung
    Corona-Warn-App
    Hohe Kosten, halbherzige Umsetzung

    Die digitalen Tools zur Pandemiebekämpfung wie die Corona-Warn-App sind nicht billig. Gerade deshalb sollten sie sinnvoll und effektiv genutzt werden.
    Ein IMHO von Friedhelm Greis

  2. 4K-Fernseher von Sony bei Amazon um 450 Euro reduziert
     
    4K-Fernseher von Sony bei Amazon um 450 Euro reduziert

    Viele Fernseher mit größtenteils 4K-Auflösung sind bei Amazon im Sonderangebot. Zudem sind Smartphones, Echo Show und vieles mehr reduziert.
    Ausgewählte Angebote des E-Commerce-Teams

  3. Probefahrt mit BMW-Roller CE 04: Beam me up, BMW
    Probefahrt mit BMW-Roller CE 04
    Beam me up, BMW

    Mit futuristischem Design und elektrischem Antrieb hat BMW ein völlig neues Fahrzeug für den urbanen Bereich entwickelt.
    Ein Bericht von Peter Ilg

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • RTX 3070 989€ • The A500 Mini Retro-Konsole mit 25 Amiga-Spielen vorbestellbar 189,90€ • RX 6800 16GB 1.129€ • Intel Core i9 3.7 459,50€ Ghz • WD Black 1TB inkl. Kühlkörper PS5-kompatibel 189,99€ • Switch: 3 für 2 Aktion • RX 6700 12GB 869€ • MindStar (u.a. 1TB SSD 69€) [Werbung]
    •  /