Speicherhierarchie und Caches
Die Speicherhierarchie organisiert den Speicher in Ebenen – Register, Caches, Hauptspeicher und Hintergrundspeicher –, sodass die kleinen, schnellen Ebenen die Daten enthalten, die am wahrscheinlichsten verwendet werden, was Programmen die Illusion eines Speichers vermittelt, der sowohl groß als auch schnell ist.
Definition
Eine Speicherhierarchie ist eine geschichtete Anordnung von Speichertechnologien unterschiedlicher Geschwindigkeit, Kosten und Kapazität, die so verwaltet wird, dass häufig und kürzlich aufgerufene Daten in den schnelleren, kleineren Ebenen – insbesondere im Cache – verbleiben, um die durchschnittliche Zugriffszeit zu minimieren.
Scope
Dieser Bereich behandelt, warum und wie der Speicher als Hierarchie organisiert ist, die die Lokalität der Referenz ausnutzt. Er umfasst die Cache-Struktur (Platzierung, Ersetzung und Schreibrichtlinien), mehrstufige Caches, Cache-Kohärenz über Prozessoren hinweg, virtuellen Speicher und Adressübersetzung sowie die zugrunde liegende DRAM- und aufkommende Speichertechnologien. Ausgeschlossen sind die Prozessorausführung selbst (Prozessor-Mikroarchitektur) und große Datei- und Gerätespeicher (Speicher- und E/A-Systeme), obwohl es an beide angrenzt.
Sub-topics
Core questions
- Warum macht die Lokalität der Referenz eine geschichtete Speicherhierarchie effektiv?
- Wie sind Caches in Bezug auf Platzierung, Assoziativität, Ersetzung und Schreibrichtlinie organisiert?
- Wie wird die Kohärenz aufrechterhalten, wenn mehrere Caches Kopien desselben Speichers enthalten?
- Wie übersetzt virtueller Speicher Adressen und bietet Schutz sowie die Illusion eines großen Speichers?
- Wie prägen die Eigenschaften von DRAM und aufkommenden Speichern die Systemleistung?
Key concepts
- zeitliche und räumliche Lokalität
- Cache-Hit und -Miss
- Assoziativität und Ersetzungsrichtlinie
- Write-Through und Write-Back
- mehrstufige Caches
- Cache-Kohärenz
- virtueller Speicher und Paging
- Translation Lookaside Buffer
- DRAM und Speicherbandbreite
- durchschnittliche Speicherzugriffszeit
Key theories
- Lokalität der Referenz
- Programme neigen dazu, kürzlich aufgerufene Daten wiederzuverwenden (zeitliche Lokalität) und auf benachbarte Adressen zuzugreifen (räumliche Lokalität); die Speicherhierarchie nutzt beides aus, indem sie kürzlich verwendete Blöcke zwischenspeichert und Nachbarn zusammen abruft.
- Kompromisse beim Cache-Design
- Die Cache-Leistung wird durch die Miss-Rate, die Miss-Penalty und die Hit-Zeit bestimmt und durch Größe, Blockgröße, Assoziativität sowie Ersetzungs- und Schreibrichtlinien optimiert; klassische Analysen identifizieren obligatorische, Kapazitäts- und Konflikt-Misses als Ziele dieser Entscheidungen.
Mechanisms
Wenn der Prozessor Daten anfordert, wird zuerst der Cache überprüft; ein Hit liefert Daten schnell zurück, während ein Miss einen Block von einer niedrigeren Ebene abruft und möglicherweise einen anderen durch eine Ersetzungsrichtlinie verdrängt. Schreibvorgänge werden durch Write-Through- oder Write-Back-Schemata verbreitet, und Kohärenzprotokolle halten mehrere Caches konsistent. Virtueller Speicher fügt einen Übersetzungsschritt hinzu – über Seitentabellen und einen Translation Lookaside Buffer (TLB) –, der Programmadressen auf physischen DRAM abbildet und gleichzeitig den Schutz durchsetzt.
Clinical relevance
Die Speicherhierarchie dominiert häufig die reale Leistung: Da Prozessoren weitaus schneller sind als der Hauptspeicher, sind Cache-Verhalten und Lokalität oft wichtiger als die reine Instruktionsgeschwindigkeit. Cache-bewusste Datenlayouts, Blocking und Prefetching sind zentral für Hochleistungsrechnen, Datenbanken und Machine-Learning-Kerne, und Cache-Timing ist zu einer Quelle für Sicherheits-Seitenkanäle geworden.
History
Maurice Wilkes schlug den Cache (einen „Slave-Speicher“) 1965 vor, und Caches wurden in kommerziellen Maschinen wie dem IBM System/360 Modell 85 eingesetzt. Virtueller Speicher entstand mit dem Atlas-Computer in den frühen 1960er Jahren, formalisiert durch Dennings Working-Set-Modell. Alan Jay Smiths Übersicht von 1982 konsolidierte das Wissen über Cache-Design, und mehrstufige Caches sowie ausgeklügelte Kohärenzprotokolle wurden zum Standard, als sich die Geschwindigkeitsunterschiede zwischen Prozessor und Speicher vergrößerten.
Debates
- Hardware- versus Software-Management der Lokalität
- Es besteht eine anhaltende Spannung zwischen transparentem Hardware-Caching und explizit verwalteten Speichern (Scratchpads, softwaregesteuertes Prefetching): Hardware-Caching ist allgemein und einfach zu programmieren, während explizites Management für spezialisierte Workloads vorhersehbarer und effizienter sein kann.
Key figures
- Maurice Wilkes
- Alan Jay Smith
- Peter J. Denning
- John L. Hennessy
- David A. Patterson
Related topics
Seminal works
- hennessy2019
- smith1982cache
- patterson2020
Frequently asked questions
- Warum sind Caches effektiv, wenn sie im Vergleich zum Hauptspeicher so klein sind?
- Weil Programme Lokalität aufweisen: Zu jedem Zeitpunkt berühren sie nur einen kleinen Arbeitssatz von Daten wiederholt, und Zugriffe häufen sich in benachbarten Adressen. Ein kleiner Cache, der diesen Arbeitssatz enthält, erfüllt daher die überwiegende Mehrheit der Anfragen.
- Was ist der Unterschied zwischen einem Cache und virtuellem Speicher?
- Beide verschieben Daten zwischen einer schnelleren, kleineren Ebene und einer langsameren, größeren. Ein Cache (hardwareverwaltet) enthält Blöcke des Hauptspeichers; virtueller Speicher (mit dem Betriebssystem verwaltet) bildet Programmadressen auf den physischen Speicher ab und lagert Daten auf und von der Festplatte aus, wobei er auch Schutz und einen Adressraum bietet, der größer ist als der physische RAM.