Kapitel 7:Large and Fast: Exploiting Memory Hierarchy
1. Grundlagen der Speichertechnologie
Ein Computersystem benötigt gleichzeitig einen sehr schnellen, großen und preiswerten Speicher. Eine einzelne
Speichertechnologie kann diese Anforderungen nicht erfüllen. Deshalb werden mehrere Speicherarten zu einer
Hierarchie kombiniert. Kleine und schnelle Speicher liegen nahe am Prozessor, große und langsamere Speicher
weiter entfernt.
SRAM (Static RAM) für schnelle Cache-Speicher
DRAM (Dynamic RAM) für den Hauptspeicher
Sekundärspeicher als große und dauerhafte unterste Ebene
Virtueller Speicher zur Verbindung von Hauptspeicher und
Sekundärspeicher
Merksatz: Die Speicherhierarchie funktioniert gut, weil Programme
meist nur einen kleinen Teil ihres Adressraums gleichzeitig benutzen.
Technologie Typische Verwendung Zugriffszeit laut Folien
Eigenschaften
sehr schnell, teuer, kein
SRAM Cache 0,5-2,5 ns
Refresh
größer und günstiger,
DRAM Hauptspeicher 50-70 ns
regelmäßiger Refresh
sehr groß und günstig,
Magnetische Platte Sekundärspeicher 5-20 ms
mechanisch und langsam
Der ideale Speicher hätte die Geschwindigkeit von SRAM, aber Kapazität und Preis pro Gigabyte eines
Massenspeichers. Die Hierarchie nähert dieses Ideal an.
DRAM-Organisation: Bits sind in Rechteck-Matrizen organisiert. Der Zugriff erfolgt über RAS (Row Access
Strobe) und CAS (Column Access Strobe). DDR (Double Data Rate) überträgt Daten bei steigender und
fallender Taktflanke.
Merksatz: Ein Zugriff auf weitere Daten derselben offenen Zeile ist schneller als ein völlig zufälliger Zugriff.
Lokalitätsprinzip: Basis für die Effizienz der Hierarchie:
o Zeitlich: Kürzlich genutzte Daten werden wahrscheinlich bald wieder gebraucht (z. B.
Schleifenvariablen).
o Räumlich: Daten in der Nähe kürzlich genutzter Daten werden wahrscheinlich bald gebraucht (z. B.
Arrays, sequenzieller Code).
o Aufbau der Hierarchie:
Alles befindet sich langfristig im Sekundärspeicher.
Benötigte Seiten werden in den Hauptspeicher kopiert.
Aktuelle Speicherblöcke werden aus dem Hauptspeicher in den Cache kopiert.
Der Prozessor greift möglichst auf die oberste und schnellste Ebene zu.
Kapitel 7 - Speicherhierarchie, Caches und virtueller Speicher
, 2. Cache-Grundlagen und Schreibstrategien
Block oder Cache Line: Einheit, die zwischen zwei Ebenen übertragen wird.
Hit: Das gesuchte Element befindet sich in der oberen Ebene.
Hit Rate: Anteil erfolgreicher Zugriffe in der oberen Ebene.
Miss: Das Element fehlt und muss aus einer tieferen Ebene geladen werden.
Miss Rate = 1 - Hit Rate.
Miss Penalty: zusätzliche Zeit zum Nachladen eines Blocks.
Schreibstrategien bei einem Hit:
o Write-through: Daten werden sofort im Cache und im Hauptspeicher aktualisiert. Ein Write Buffer
verhindert CPU-Stalls, solange er nicht voll ist.
o Write-back: Nur der Cache wird aktualisiert. Ein Dirty-Bit markiert geänderte Blöcke, die erst beim
Ersetzen in den Hauptspeicher zurückgeschrieben werden.
Strategien bei einem Write-Miss:
Strategie Verhalten Typische Kombination
Write Allocate Block laden und danach im Cache schreiben häufig bei Write-Back
direkt in tiefere Ebene schreiben, Block nicht
No Write Allocate häufig bei Write-Through
laden
Merksatz: Write-Back wird meist mit Write Allocate kombiniert; Write-Through kann mit beiden Miss-Strategien
verwendet werden.
3. Cache-Organisation & Performance
Bei einer Blockgröße von 2m Byte werden m Bits als Block-Offset benötigt. Die restlichen Bits bilden die
Blockadresse(232-m). Bei einem Cache werden diese Bits je nach Organisationsform weiter in Tag und Index oder Set-
Index zerlegt.
Adressbreite = Tag-Bits + Index-/Set-Bits + Offset-Bits
Offset: Position eines Bytes innerhalb eines Blocks.
Index: Auswahl einer Cache-Zeile oder eines Sets.
Tag: Identifiziert, welcher Hauptspeicherblock dort gespeichert ist.
Valid Bit: Zeigt an, ob der Eintrag gültige Daten enthält.
Drei Mapping-Varianten:
o Direct-Mapped: Ein Block hat genau einen Platz (Index = Blockadresse modulo Cache-Größe).
Einfach, aber anfällig für Konflikte.
o Fully Associative: Ein Block kann überall stehen. Erfordert teure Hardware (viele Komparatoren). Es
gibt keinen Index. Alle Tags müssen parallel verglichen werden.
o Set Associative: Kompromiss; Cache ist in Sets unterteilt, in denen ein Block an n Stellen stehen
kann. Set-Index = Blockadresse mod Anzahl der Sets
Organisation Platzierung Tag-Vergleiche Vorteil Nachteil
Direct-Mapped genau eine Zeile 1 sehr schnell und einfach mehr Konfliktmisses
n-Way Set
ein Set, n Ways n guter Kompromiss höhere Kosten
Associative
Fully Associative jeder Eintrag #Einträge minimale Konfliktmisses sehr teuer
Kapitel 7 - Speicherhierarchie, Caches und virtueller Speicher
1. Grundlagen der Speichertechnologie
Ein Computersystem benötigt gleichzeitig einen sehr schnellen, großen und preiswerten Speicher. Eine einzelne
Speichertechnologie kann diese Anforderungen nicht erfüllen. Deshalb werden mehrere Speicherarten zu einer
Hierarchie kombiniert. Kleine und schnelle Speicher liegen nahe am Prozessor, große und langsamere Speicher
weiter entfernt.
SRAM (Static RAM) für schnelle Cache-Speicher
DRAM (Dynamic RAM) für den Hauptspeicher
Sekundärspeicher als große und dauerhafte unterste Ebene
Virtueller Speicher zur Verbindung von Hauptspeicher und
Sekundärspeicher
Merksatz: Die Speicherhierarchie funktioniert gut, weil Programme
meist nur einen kleinen Teil ihres Adressraums gleichzeitig benutzen.
Technologie Typische Verwendung Zugriffszeit laut Folien
Eigenschaften
sehr schnell, teuer, kein
SRAM Cache 0,5-2,5 ns
Refresh
größer und günstiger,
DRAM Hauptspeicher 50-70 ns
regelmäßiger Refresh
sehr groß und günstig,
Magnetische Platte Sekundärspeicher 5-20 ms
mechanisch und langsam
Der ideale Speicher hätte die Geschwindigkeit von SRAM, aber Kapazität und Preis pro Gigabyte eines
Massenspeichers. Die Hierarchie nähert dieses Ideal an.
DRAM-Organisation: Bits sind in Rechteck-Matrizen organisiert. Der Zugriff erfolgt über RAS (Row Access
Strobe) und CAS (Column Access Strobe). DDR (Double Data Rate) überträgt Daten bei steigender und
fallender Taktflanke.
Merksatz: Ein Zugriff auf weitere Daten derselben offenen Zeile ist schneller als ein völlig zufälliger Zugriff.
Lokalitätsprinzip: Basis für die Effizienz der Hierarchie:
o Zeitlich: Kürzlich genutzte Daten werden wahrscheinlich bald wieder gebraucht (z. B.
Schleifenvariablen).
o Räumlich: Daten in der Nähe kürzlich genutzter Daten werden wahrscheinlich bald gebraucht (z. B.
Arrays, sequenzieller Code).
o Aufbau der Hierarchie:
Alles befindet sich langfristig im Sekundärspeicher.
Benötigte Seiten werden in den Hauptspeicher kopiert.
Aktuelle Speicherblöcke werden aus dem Hauptspeicher in den Cache kopiert.
Der Prozessor greift möglichst auf die oberste und schnellste Ebene zu.
Kapitel 7 - Speicherhierarchie, Caches und virtueller Speicher
, 2. Cache-Grundlagen und Schreibstrategien
Block oder Cache Line: Einheit, die zwischen zwei Ebenen übertragen wird.
Hit: Das gesuchte Element befindet sich in der oberen Ebene.
Hit Rate: Anteil erfolgreicher Zugriffe in der oberen Ebene.
Miss: Das Element fehlt und muss aus einer tieferen Ebene geladen werden.
Miss Rate = 1 - Hit Rate.
Miss Penalty: zusätzliche Zeit zum Nachladen eines Blocks.
Schreibstrategien bei einem Hit:
o Write-through: Daten werden sofort im Cache und im Hauptspeicher aktualisiert. Ein Write Buffer
verhindert CPU-Stalls, solange er nicht voll ist.
o Write-back: Nur der Cache wird aktualisiert. Ein Dirty-Bit markiert geänderte Blöcke, die erst beim
Ersetzen in den Hauptspeicher zurückgeschrieben werden.
Strategien bei einem Write-Miss:
Strategie Verhalten Typische Kombination
Write Allocate Block laden und danach im Cache schreiben häufig bei Write-Back
direkt in tiefere Ebene schreiben, Block nicht
No Write Allocate häufig bei Write-Through
laden
Merksatz: Write-Back wird meist mit Write Allocate kombiniert; Write-Through kann mit beiden Miss-Strategien
verwendet werden.
3. Cache-Organisation & Performance
Bei einer Blockgröße von 2m Byte werden m Bits als Block-Offset benötigt. Die restlichen Bits bilden die
Blockadresse(232-m). Bei einem Cache werden diese Bits je nach Organisationsform weiter in Tag und Index oder Set-
Index zerlegt.
Adressbreite = Tag-Bits + Index-/Set-Bits + Offset-Bits
Offset: Position eines Bytes innerhalb eines Blocks.
Index: Auswahl einer Cache-Zeile oder eines Sets.
Tag: Identifiziert, welcher Hauptspeicherblock dort gespeichert ist.
Valid Bit: Zeigt an, ob der Eintrag gültige Daten enthält.
Drei Mapping-Varianten:
o Direct-Mapped: Ein Block hat genau einen Platz (Index = Blockadresse modulo Cache-Größe).
Einfach, aber anfällig für Konflikte.
o Fully Associative: Ein Block kann überall stehen. Erfordert teure Hardware (viele Komparatoren). Es
gibt keinen Index. Alle Tags müssen parallel verglichen werden.
o Set Associative: Kompromiss; Cache ist in Sets unterteilt, in denen ein Block an n Stellen stehen
kann. Set-Index = Blockadresse mod Anzahl der Sets
Organisation Platzierung Tag-Vergleiche Vorteil Nachteil
Direct-Mapped genau eine Zeile 1 sehr schnell und einfach mehr Konfliktmisses
n-Way Set
ein Set, n Ways n guter Kompromiss höhere Kosten
Associative
Fully Associative jeder Eintrag #Einträge minimale Konfliktmisses sehr teuer
Kapitel 7 - Speicherhierarchie, Caches und virtueller Speicher