Parallelität und Caches
Cache‐Coherenz‐Problem
CPU 1 (oder Core 1) CPU 2 (oder Core 2)
Cache Cache
Speicher
Zeitschritt Event Cache‐Inhalt für Cache‐Inhalt für Speicherinhalt
CPU A CPU B für Adresse X
0 0
Wann gilt ein Cache als kohärent?
1. Lesen von Speicherstelle X nach schreiben in Speicherstelle X sollte den geschriebenen Wert zurück geben, wenn kein
weiterer Prozess auf die Stelle X geschrieben hat.
2 Nachdem ein Prozess in speicherstelle X geschrieben hat sollte 2. Nachdem ein Prozess in speicherstelle X geschrieben hat, sollte
„nach einer gewissen Zeit“ jeder Prozess den geschriebenen Wert in X vorfinden.
3. Zwei Schreiboperationen von zwei Prozessen in die
Speicherstelle X sollte von jedem Prozess in der gleichen Reihenfolge gesehen werden. (Schreiben ist serialisiert)
Wie erreicht man Kohärenz?
Write‐Invalidate‐Protokoll: Wenn ein Prozess in einen Speicherstelle schreibt wird die Speicherstelle in den Caches aller anderen Prozesse invalidiert.
Dieses Protokoll stellt Serialisierung sicher Dieses Protokoll stellt Serialisierung sicher.
Prozessor‐
aktivitäts
Busaktivität Inhalt des Caches von
Inhalt des Caches von
Inhalt des Caches von
CPU A CPU B CPU C
0
l h f
CPU A liest X Cache‐Miss für X 0 0
CPU B liest X Cache‐Miss für X 0 0 0
CPU A schreibt Cache‐ 1 0
CPU A schreibt 1 nach X
Cache
Invalidierung für X
1 0
CPU B liest X Cache‐Miss für X 1 1 1
Zusammenfassung und Literatur
Zusammenfassung
• Cache‐Ziel: Speicher so groß wie auf unterstem Level aber annähernd so schnell wie auf höchstem Level.
• Warum funktionieren Caches überhaupt so gut?
Lokalitätsprinzip.
• Virtueller Speicher ist prinzipiell das selbe wie ein Cache. Auch hier gelten dieselben Cache‐Prinzipien g p (z.B. Lokalität)
• Insgesamt ergibt sich eine Hierarchie von Caches.Insgesamt ergibt sich eine Hierarchie von Caches.
• Caches sind prinzipiell vor der Software unsichtbar.
Literatur
[PattersonHennessy2012] David A. Patterson und John L. Hennessy, „Computer Organization and y, „ p g Design“, Fourth Edition, 2012
5 1 Introduction 5.1 Introduction
5.2 The Basics of Caches
5.3 Measuring and Improving Cache Performance 5.4 Virtual Memoryy
5.8 Parallelism and Memory Hierarchies: Cache Coherence
Coherence