Cache‐Grundlagen
Schreibender Cache‐Zugriff
Eine einfache Strategie
• Schreibt man nur in den Cache, werden Cache und darunter liegender Speicher inkonsistent. Wie erreicht man Konsistenz?
• Write‐Through
– Schreibe immer sofort in den Speicher zurück – Einfach aber schlechte Performance
Beispiel: 10% Store‐Instruktionen, CPI ohne Miss = 1 und CPI bei Speicherzugriff = 100. Was ist der Gesamt‐CPI‐Wert?
Verbesserungen
• Write‐Buffer
– Ergänzung zu Write‐Through
– Ausstehende Writes werden in einem kleinen Puffer zwischengespeichert – CPU kann nach schreiben in den Puffer sofort weiter machen
– Parallel werden Daten aus dem Puffer in den Speicher geschrieben – CPU muss nur stallen, wenn der Puffer voll ist.
• Write‐Back
– Alternative zu Write‐Through
– Speichere Änderungen zunächst nur im Cache
– Schreibe Änderung in Speicher nur dann, wenn der Cache‐Block ersetzt wird
Behandlung von Cache‐Misses
• Was passiert beim Schreiben (sowohl bei Write‐Through als auch Write‐Back) eines Bytes bei einem Cache‐Miss?
• Eine naheliegende Lösung
– Lade den gesamten Block aus dem Speicher – Überschreibe das Byte in dem Block
• Alternative: No‐Write‐Allocate
– Aktualisiere nur den darunter liegenden Speicher aber nicht den Cache – Ist sinnvoll, wenn lesender Zugriff nicht zu erwarten ist
Cache‐Grundlagen
Speicherunterstützung für Caches
Motivation
Erinnerung: CPU und Speicher kommunizieren über einen Bus.
Was beeinflusst die Miss‐Penalty?
• Geschwindigkeit des Busses.
• Speicherorganisation (siehe gleich).
Ein angenommenes Beispiel von Speicherzugriffswerten:
• 1 Speicherbuszyklus die gewünschten Adressen zu senden
• 15 Speicherbuszyklen für jeden initiierten DRAM‐Zugriff
• 1 Speicherbuszyklus ein Datenwort zu senden
Was ist die Miss‐Penalty bei einem Cache mit vier Word Breite und sequentiellem Zugriff auf ein DRAM mit einem Word Breite?
Kann man das verbessern?
Bessere Unterstützung durch das DRAM
Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012
Was ist die Miss‐Penalty für zweimal breiteren Bus und Speicher?
Bezeichnet man auch als Interleaving.
Bessere Unterstützung durch das DRAM
Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012
Was ist die Miss‐Penalty für Speicherorganisation mit 4 parallelen Bänken aber unverändertem Bus?
Bezeichnet man auch als Interleaving.
Entwicklungen der letzten Jahre
Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012
Organisation des Speichers in Zeilen und Spalten.
Vorhalten einer ganzen Zeile in einem schnelleren RAM‐internen SRAM.
SDRAM (Synchronous DRAM) – Eleminiere Zeit zur CPU‐RAM‐Synchronisation durch eigene Clock.
DDR (Double‐Data‐Rate) – Verdopplung des Datentransfers durch Verwendung sowohl steigender als auch fallender Flanke eines Clock‐Zyklus.
Verbessern der Cache‐Performance
Verbesserte Cache Strategien
Im Folgenden betrachten wir eine Verbesserung von Direct‐
Mapped‐Caching.
Zur Darstellung der Verbesserung verwenden wir folgende vereinfachte Cache‐Darstellung:
Tag Data 0
1 2 3 4 5 6 7
Speicher‐Blöcke 0 : ...
1 : ...
2 : ...
. .
8 : ...
9 : ...
10 : ...
.
Fully‐Associative‐Cache
Beobachtung: bei Direct‐Mapped‐
Cache kann ein Speicherblock nur an einer Stelle gespeichert werden.
Konsequenz: wechselhafter Zugriff auf zwei Speicherblöcke die auf die selbe Stelle gemappt werden, führt
permanent zu Cache‐Misses.
Praktisch wäre doch folgender Cache:
Ein Eintrag kann überall stehen.
Nachteil: Durchsuchen des Cache dauert länger und mehr Hardware‐Aufwand! Wie wäre es mit einem Kompromiss: ...
Tag Data 0
1 2 3 4 5 6 7
Speicher‐Blöcke 0 : ...
1 : ...
2 : ...
. .
8 : ...
9 : ...
10 : ...
.
Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data
(N‐Wege)‐Set‐Associative‐Cache
Tag Data 0
1 2 3 4 5 6 7
Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data
Fully‐Associative Direct‐Mapped
Set Tag Data Tag Data
0 1 2 3
Set Tag Data Tag Data Tag Data Tag Data
0 1
Two‐Way‐Set‐Associative
Four‐Way‐Set‐Associative Speicher‐Blöcke
0 : ...
1 : ...
2 : ...
. .
8 : ...
9 : ...
10 : ...
.
Zwischenbilanz
Finden der Cache‐Zeile c des Speicher‐Blocks n in einem Direct‐
Mapped‐Cache der Größe k?
(Vergleiche anschließend n mit dem in Zeile c gespeicherten Tag)
Finden der Set s des Speicher‐Blocks n in einem N‐Way‐Set‐
Associative‐Cache mit k Sets?
(Durchlaufe dann die Set s und suche nach einem Tag der n entspricht)
Eine Frage ist noch zu klären
Annahme die Set eines N‐Way‐Set‐Associative‐Cache ist voll (bzw.
der Fully‐Associative‐Cache ist voll). Wo kann ein neuer Speicherblock abgelegt werden?
Häufig verwendete Strategie: Least‐Recently‐Used (LRU)
Ersetze den Block, auf den schon am längsten nicht zugegriffen wurde.
Tag Data Tag Data Tag Data Tag Data
24 ... 66 ... 20 ... 16 ...
Tag Data 44 ...
???
Mehr Wege resultieren in weniger Misses
Beispiel: betrachte Cache‐Varianten mit vier Speicherblöcken
Wie viele Cache‐Misses erzeugt die folgende Sequenz von Speicherblockzugriffen?
0 , 8 , 0 , 6 , 8
Tag Data Tag Data Tag Data Tag Data Tag Data
0 1 2 3
Set Tag Data Tag Data 0
1
Direct‐Mapped Set‐Associative Fully‐Associative
Mehr Wege resultieren in weniger Misses
Beispiel: Direct‐Mapped
Speicherblockzugriffe: 0 , 8 , 0 , 6 , 8 (Speicherblockinhalt = M[i])
Tag Data 0
1 2 3
Zugriff Hit oder Miss
Inhalt der Cache‐Blöcke nach der Referenz
0 1 2 3
0 8 0 6 8
Block‐Adresse Cache‐Block 0
6 8
Vorüberlegung: Auf welchen Cache‐Block werden die Block‐Adressen gemapped?
Mehr Wege resultieren in weniger Misses
Beispiel: Set‐Associative
Speicherblockzugriffe: 0 , 8 , 0 , 6 , 8 (Speicherblockinhalt = M[i])
Zugriff Hit oder Miss
Inhalt der Cache‐Blöcke nach der Referenz Set 0 Set 0 Set 1 Set 1 0
8 0 6 8
Block‐Adresse Cache‐Set 0
6 8
Vorüberlegung: In welche Set werden die Block‐Adressen gemapped?
Set Tag Data Tag Data 0
1
Mehr Wege resultieren in weniger Misses
Beispiel: Fully‐Associative
Speicherblockzugriffe: 0 , 8 , 0 , 6 , 8 (Speicherblockinhalt = M[i])
Zugriff Hit oder Miss
Inhalt der Cache‐Blöcke nach der Referenz Block 0 Block 1 Block 2 Block 3 0
8 0 6 8
Tag Data Tag Data Tag Data Tag Data
Wie Aufwendig sind mehr Wege?
Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012 Offset
2 Bits
Wie viele Wege sind sinnvoll?
Feste Zahl kann hier nicht genannt werden. Tradeoff:
Zeit/Hardware‐Aufwand versus Miss‐Raten.
Beobachtung:
(64KB Cache, 16‐Word‐Blöcke)
Miss‐Raten lassen sich in dem Beispiel mit mehr Assoziativität nicht besonders weiter reduzieren. Zeit/Hardware‐Aufwand durch mehr Assoziativität würde sich hier nicht weiter lohnen.
Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012
CPU
Multi‐Level‐Caches
First‐Level‐Cache
Second‐Level‐Cache
Speicher
Optimiert auf geringe Hit‐Time (und damit
recht klein)
Optimiert auf geringe Miss‐Ratio (also mehr und größere Blöcke und
damit höhere Hit‐Time)
Virtueller Speicher
Die Idee
Speicherblock 0
Virtuelle Adressen
Speicherblock 1 Speicherblock 2 Speicherblock 3 Speicherblock 4 Speicherblock 5 Speicherblock 6 Speicherblock 7
...
Speicherblock n Prozess 1
Speicherblock 0
Virtuelle Adressen
Speicherblock 1 Speicherblock 2 Speicherblock 3 Speicherblock 4 Speicherblock 5 Speicherblock 6 Speicherblock 7
...
Speicherblock n Prozess 2
Speicherblock 0 Speicherblock 1 Speicherblock 2 Speicherblock 3 Speicherblock 4 Speicherblock 5
...
Speicherblock m
Virtueller Speicher Sekundärer Speicher Virtueller Speicher (Festplatte oder SSD)
Physikalischer Speicher Address‐
Translation
Address‐
Translation
Abbilden von virtuellen auf physikalische Adressen
Virtuelle Seitennummer Seiten‐Offset
Translation
Physikalische Seitennummer Seiten‐Offset
31 30 29 28 27 ... 15 14 13 12 11 10 9 8 ... 3 2 1 0 Virtuelle Adresse
29 28 27 ... 15 14 13 12 11 10 9 8 ... 3 2 1 0 Physikalische Adresse
Quiz: Größe x des virtuellen Adressraumes, Größe y des physikalischen Adressraumes und Größe z der Speicherblöcke?
Weitere Details zur Address‐Translation
Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012