ScholarGate
Assistent

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.

Thema finden mit PaperMindDemnächstFind papers & topics
Tools & resources
Folien herunterladen
Learn & explore
VideoDemnächst

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.

Methods for this concept

Related concepts