Speicherhierarchie und Cache-Optimierung: Ein Leitfaden

Informatik3,23 KB

Speicherhierarchie und aktuelle Trends

Moderne Prozessoren setzen auf eine mehrstufige Cache-Architektur (bis zu 3 Ebenen) direkt auf dem Chip. Dabei werden Caches und TLBs für Daten und Instruktionen getrennt. Zu den gemeinsamen Merkmalen gehören Non-Blocking-Caches, Hardware-Prefetching und die Unterstützung mehrerer Zugriffe pro Taktzyklus.

Virtueller Speicher (Virtual Memory)

Der virtuelle Speicher bietet dem Programmierer die Illusion eines unbegrenzten Adressraums, unabhängig vom physischen Arbeitsspeicher.

Vorteile

  • Höherer virtueller Adressraum als physischer Speicher
  • Erleichtertes Multiprogramming
  • Effizientere Speichernutzung und verbesserter Schutz
  • Transparenz für den Programmierer

Nachteile und Verwaltung

Die Verwaltung (Adressübersetzung, Seitenersetzung) erfordert Hardware-Unterstützung durch eine Memory Management Unit (MMU). Die Übersetzung erfolgt vom Prozessor über die virtuelle Adresse zur physischen Adresse, wobei bei fehlenden Seiten ein Page Fault ausgelöst wird.

Umsetzungsstrategien

  • MMU Inside: MMU direkt im Prozessor integriert (geringere Zugriffszeiten, hohe Portabilität).
  • Externe MMU: Separate Schaltung (spart Platz auf dem Prozessor-Chip).

Adressierung und Fehlerbehandlung

Bei Speicherfehlern gelten drei Regeln:

  1. Load-Regel: Übertragung der Daten bei Zugriff.
  2. Lokalisierung: Bestimmung des Speicherorts im Hauptspeicher.
  3. Ersetzungsstrategie: Auswahl des zu entfernenden Blocks bei vollem Speicher.

Klassifizierung virtueller Speichersysteme

Virtuelle Referenzen bestehen aus einem Block und einer Verschiebung (Offset). Gängige Systeme sind:

  • Seiten (Paging): Blöcke fester Größe.
  • Segmente: Blöcke variabler Größe.
  • Segmentiertes Paging: Kombination aus beidem.

Adressübersetzung und Cache-Performance

Die Übersetzung erfolgt meist über Seitentabellen (direkt oder assoziativ). Moderne Systeme nutzen oft eine Kombination aus beidem, unterstützt durch einen TLB (Translation Lookaside Buffer), der die zuletzt verwendeten Adresspaare speichert.

Optimierungstechniken

  • Cache-Opfer (Victim Cache): Kleiner, voll assoziativer Cache für verdrängte Zeilen.
  • Prefetching: Vorabladen von Daten durch Hardware oder Compiler.
  • Compiler-Optimierung: Code-Umstellung (z. B. Loop Tiling, Array-Fusion) zur Reduzierung von Cache-Fehlern.
  • Cache-Kohärenz: Bei Multiprozessorsystemen entscheidend, um Konsistenz zwischen verschiedenen Caches zu wahren (z. B. durch Snooping-Protokolle).

Cache-Kohärenz in Multiprozessorsystemen

Wenn mehrere Prozessoren auf dieselben Daten zugreifen, müssen Protokolle wie Snooping sicherstellen, dass keine veralteten Daten verwendet werden. Hierbei wird zwischen Write-Invalidate (Ungültigerklärung) und Write-Update (Verbreitung) unterschieden.

Herunterladen

PDF Word HTML