• IT-Karriere:
  • Services:

Warum Synchronisation trotzdem wichtig ist

Das sind nur einige der möglichen Szenarien. Tatsächlich gibt es zahlreiche Varianten des obigen Designs - und keine zwei Implementierungen sind gleich. Zum Beispiel haben einige Designs einen O/F State. Einige verwenden Write-Back-Caches, andere Write-Through-Caches. Manche nutzen Snoop-Broadcasts, andere wiederum Snoop-Filter. Einige haben inklusive, andere exklusive Caches. Es gibt endlos viele Variationen - und Puffer haben wir noch nicht einmal erwähnt.

Stellenmarkt
  1. Cloudogu GmbH, Braunschweig
  2. assyst GmbH, München

Das obige Beispiel nutzt zudem einen einfachen Prozessor mit nur zwei Cache-Ebenen. Das gleiche Protokoll kann aber auch rekursiv angewendet werden. Sie könnten leicht einen L3-Cache hinzufügen, der wiederum mehrere L2s koordiniert, wobei das gleiche Protokoll wie oben verwendet wird. Möglich wäre auch ein Multiprozessorsystem mit "Home Agents", die die Koordination über mehrere L3-Caches auf unterschiedlichen Chips übernehmen.

In jedem Szenario muss jeder Cache nur mit seinem Eltern-Cache (zum Abrufen von Daten/Berechtigungen) und seinen Kind-Caches (zum Gewähren/Widerrufen von Daten/Berechtigungen) kommunizieren. All das sollte so passieren, dass es für den Software-Thread unsichtbar ist. Aus Sicht der Software-Anwendung erscheint das Speicher-Subsystem als ein einziger, kohärenter Monolith ... mit sehr variablen Latenzen.

Warum dann überhaupt volatile Variablen?

Nachdem wir nun die unglaubliche Leistung und Kohärenz des Speichersystems Ihres Computers erörtert haben, fragen Sie sich vielleicht: Wenn Caches ohnehin synchronisiert werden - warum brauchen wir dann überhaupt volatile Variablen in Sprachen wie Java?

Das ist eine komplizierte Frage, die an anderer Stelle ausführlich beantwortet wird. Aber lassen Sie mich eine Sache dazu sagen: Werden Daten in CPU-Register eingelesen und gehalten, sind diese auch nicht synchron mit dem Cache oder Arbeitsspeicher.

Der Software-Compiler nimmt viele Optimierungen vor, wenn es darum geht, Daten in die Register zu laden, sie in den Cache zurückzuschreiben und sogar die Reihenfolge der Anweisungen zu ändern - und zwar alles unter der Annahme, dass der Code single threaded (also nicht nebenläufig) ausgeführt wird. Daher müssen alle Daten, die Race Conditions ausgesetzt sind, manuell durch nebenläufige Algorithmen und Sprachkonstrukte wie atomare und volatile Variablen geschützt werden.

Eine große Auswahl an Prozessoren bei Alternate

Im Fall der volatilen Variablen in Java besteht ein Teil der Lösung darin, alle Lese-/Schreibvorgänge zu zwingen, die lokalen Register zu umgehen und stattdessen sofort Lese-/Schreibvorgänge im Cache auszulösen. Sobald die Daten in den L1-Cache gelesen/geschrieben werden, übernimmt das Hardware-Kohärenzprotokoll und bietet garantierte Kohärenz über alle globalen Threads hinweg.

So wird sichergestellt, dass, wenn mehrere Threads dieselbe Variable lesen oder in dieselbe Variable schreiben, alle synchron gehalten werden. So erreichen Sie eine Inter-Thread-Koordination in nur 1 Nanosekunde.

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.  
  2. 1
  3. 2
  4. 3
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
Spiele-Angebote
  1. 6,50€
  2. 25,99€
  3. 21€

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
       


Honda E Probe gefahren

Der Honda E ist ein Elektro-Kleinwagen, dessen Design an alte Honda-Modelle aus den 1970er Jahren erinnert.

Honda E Probe gefahren 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

      •  /