• IT-Karriere:
  • Services:

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. Allianz Deutschland AG, München, Unterföhring
  2. über InterSearch Personalberatung GmbH & Co. KG, Großraum Berlin / Brandenburg

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 15 nach dem Leistungsindex 2021 - von PCGH getestet

ProduktnameIntel Core i9-11900KAMD Ryzen 9 5950X BoxAMD Ryzen 9 5900XAMD Ryzen 7 5800XIntel Core i7-11700KAMD Ryzen 5 5600XIntel Core i5-11600KIntel Core i9-10900KIntel Core i7-10700KAMD Ryzen 9 3950XAMD Ryzen 9 3900XT Intel Core i9-9900KAMD Ryzen 9 3900XAMD Ryzen 7 3800XTAMD Ryzen 7 3800X
HerstellerIntelAMDAMDAMDIntelAMDIntelIntelIntelAMDAMDIntelAMDAMDAMD
Weitere Daten anzeigen ...
Leistung*98,7 %/100 %100 %/99,5 %97,4 %/81,5 %96,9 %/59,8 %92,8 %/93,4 %93 %/91,5 %88,1 %/88,5 %90 %/90 %86,8 %/86,1 %81,4 %/82,4 %80,7 %/81,4 %80,1 %/80,6 %80,1 %/80,8 %79,4 %/80,4 %78,5 %/80 %
Leistungsaufnahme Ø398 Watt397 Watt385 Watt353 Watt376 Watt323 Watt352 Watt355 Watt319 Watt337 Watt333 Watt301 Watt333 Watt310 Watt303 Watt
Kerne8c/16t16c/32t12c/24t8c/16t8c/16t6c/12t6c/12t10c/20t8c/16t16c/32t12c/24t8c/16t12c/24t8c/16t8c/16t
GrafikUHD 750---UHD 750-UHD 750Comet Lake GT2Comet Lake GT2--UHD 630- --
Basis-Takt3,5 GHz (4,8-5,3 GHz)3,4 GHz (4,7-5,05 GHz)3,7 GHz (4,65-4,8 GHz)3,8 GHz (4,7-4,85 GHz)3,6 GHz (4,6-5 GHz)3,7 GHz (4,65-4,65 GHz)3,9 GHz (4,6-4,9 GHz)3,7 GHz (4,9-5,3 GHz)3,8 GHz (4,7-5,1 GHz)3,5 GHz (4,25-4,7 GHz)3,8 GHz (4,25-4,7 GHz)3,6 GHz (4,7-5 GHz)3,8 GHz (4,3-4,6 GHz)3,9 GHz (4,5-4,7 GHz)3,9 GHz (4,15-4,5 GHz)
Prozess14 nm7 nm7 nm7 nm14 nm7 nm14 nm14 nm14 nm7 nm7 nm14 nm7 nm7 nm7 nm
RAM (max.)2× DDR4-3200 (G1)2× DDR4-32002× DDR4-32002× DDR4-32002× DDR4-2933 (G1) / DDR4-3200 (G2)2× DDR4-32002× DDR4-2933 (G1) / DDR4-3200 (G2)2× DDR4-29332× DDR4-29332× DDR4-32002× DDR4-32002× DDR4-26662× DDR4-3200 2× DDR4-32002× DDR4-3200
Sockel1200AM4AM4AM41200AM4120012001200AM4AM41151 v2AM4 AM4AM4
Vorteile
  • Beste Spieleleistung
  • Schnellste Desktop-CPU
  • Sehr hohe Leistung in Spielen & Anwendungen
  • Gutes Preis-Leistungs-Verhältnis
  • Mit 12 Kernen zukunftssicher
  • Schnellster Achtkerner
  • Niedrigste Latenzen bei Ryzen 5000
  • Schneller als 10900K
  • Schneller als Intels 10900K
  • Sparsam
  • Sehr effizient
  • Schneller als 10700K
  • Allrounder
  • Sehr schnell
  • Offener Multiplikator
  • Effizienter als 9900K
  • Hohe Anwendungsleistung
  • PCIe 4.0
  • Gute Leistung in Spielen
  • Mit 12 Kernen zukunftssicher
  • Sehr hohe Performance
  • Beste Gesamtleistung
  • Neueste CPU-Generation
  • Top Boost-Verhalten
  • Gute Leistung in Spielen
Nachteile
  • Höchster Stromverbrauch
  • Hohe Leistungsaufnahme
  • Keine
  • Preis im Vergleich zu 9 5900X etwas hoch
  • Stromhungrig
  • Keine
  • Hohe Leistungsaufnahme
  • Nur PCI-E 3.0
  • Schlechte Inter-Core-Latenz möglich, da 10-Core-Die
  • Keine
  • Hoher Verbrauch
  • Starke Hitze-Entwicklung
  • Keine
  • Keine
  • Mit 8 Kernen bei Anwendungen nicht mehr zukunftssicher
Angebote


Anzeige
Hardware-Angebote
  1. (u. a. PS5 + HD Kamera für 549,99€)

Tom01 23. Apr 2021 / Themenstart

Das ist so als ob Mann einen Trabi tunen will. Lieber eine bessere Programmiersprache...

Joey5337 15. Apr 2021 / Themenstart

Die Schwierigkeit ergibt sich daraus, dass es gerade in C eine große Menge "undefined...

Ragtime 14. Apr 2021 / Themenstart

Das kommt darauf an, auf welcher Position man auf der Erdscheibe wohnt und ob am Tag...

Kommentieren


Folgen Sie uns
       


Zoom Escaper ausprobiert

Der Zoom Escaper ist eine Möglichkeit, sich aus Videokonferenzen zu schummeln. Wir haben ihn ausprobiert.

Zoom Escaper ausprobiert Video aufrufen
Programm für IT-Jobeinstieg: Hoffen auf den Klebeeffekt
Programm für IT-Jobeinstieg
Hoffen auf den Klebeeffekt

Aktuell ist der Jobeinstieg für junge Ingenieure und Informatiker schwer. Um ihnen zu helfen, hat das Land Baden-Württemberg eine interessante Idee: Es macht sich selbst zur Zeitarbeitsfirma.
Ein Bericht von Peter Ilg

  1. Arbeitszeit Das Sechs-Stunden-Experiment bei Sipgate
  2. Neuorientierung im IT-Job Endlich mal machen!
  3. IT-Unternehmen Die richtige Software für ein Projekt finden

Weclapp-CTO Ertan Özdil: Wir dürfen nicht in Schönheit und Perfektion untergehen!
Weclapp-CTO Ertan Özdil
"Wir dürfen nicht in Schönheit und Perfektion untergehen!"

Der CTO von Weclapp träumt von smarter Software, die menschliches Eingreifen in der nächsten ERP-Generation reduziert. Deutschen Perfektionismus hält Ertan Özdil aber für gefährlich.
Ein Interview von Maja Hoock


    Fiat 500 als E-Auto im Test: Kleinstwagen mit großem Potenzial
    Fiat 500 als E-Auto im Test
    Kleinstwagen mit großem Potenzial

    Fiat hat einen neuen 500er entwickelt. Der Kleine fährt elektrisch - und zwar richtig gut.
    Ein Test von Peter Ilg

    1. Vierradlenkung Elektrischer GMC Hummer SUV fährt im Krabbengang seitwärts
    2. MG Cyberster MG B Roadster mit Lasergürtel und Union Jack
    3. Elektroauto E-Auto-Prämie übersteigt in 2021 schon Vorjahressumme

      •  /