TU Wien:Technische Grundlagen der Informatik VU (Kastner)/Kapitel Speichermanagement

Aus VoWi
Zur Navigation springen Zur Suche springen

Rechnerarchitekturen[Bearbeiten | Quelltext bearbeiten]

Von-Neumann-Architektur
Speicher enthält Programme und Daten
Harvard-Architektur
getrennter Programm- und Datenspeicher

Einheiten[Bearbeiten | Quelltext bearbeiten]

KiB Kibibyte
MiB Mebibyte
GiB Gibibyte
TiB Tebibyte
PiB Pebibyte

Caches[Bearbeiten | Quelltext bearbeiten]

Siehe auch de.Wikipedia:Cache und Folien der University of Washington.

Cache-Arten[Bearbeiten | Quelltext bearbeiten]

Caches sind in Blöcke aufgeteilt.

Direct-mapped Set associative Fully associative
Index Blockposition Setposition
Tag restliche Adressbits ganze Adresse
Ways 1 N Blockanzahl
  • Index wird durch Teil der Adresse bestimmt (z.B. niederwertige Bits).
  • Suchzeit und Hit-Rate steigen mit Way-Anzahl.

Direct-Mapped Cache[Bearbeiten | Quelltext bearbeiten]

Direct-Mapped kann man auch als einen 1-Way Associative Cache betrachten. Hier werden die Sets als Index bezeichnet. Der Index ist für die Auflistung der Zeilen zuständig.

Eigenschaften:

  • jede Speicheradresse hat genau eine Position im Cache (1 Block / Zeile)
  • einfache Cache Verwaltung
  • kein Multiplexer im Datenpfad
  • mäßige Hit-Rate

2-Way Associative Cache[Bearbeiten | Quelltext bearbeiten]

Beim 2- und N-Way Associative Cache wird der Index als Sets bezeichnet.

Eigenschaften:

  • 2 Blöcke / Zeile
  • Verwaltung: Set beschränkt, Ersetzungsregeln, handbarer MUX
  • vernünftige Hit-Rate

Fully Associative Cache[Bearbeiten | Quelltext bearbeiten]

Eigenschaften:

  • nur 1 Cache Zeile (1 Set) -> kein Index
  • jeder Block darf auf jede Position gelegt werden
  • komplizierte Verwaltung: Ersetzungsregeln, Suche im gesamten Cache, "großer" Multiplexer
  • optimale Hit-Rate

Adresse[Bearbeiten | Quelltext bearbeiten]

Adresslänge[Bearbeiten | Quelltext bearbeiten]

Adresslänge = Tag - Index - Offset

Merkhilfe: Adresslänge = T(R)IO

Tag[Bearbeiten | Quelltext bearbeiten]

Tag = Adresslänge - Index - Offset

Index[Bearbeiten | Quelltext bearbeiten]

Index = log2(Cachegröße / Blockgröße)

Anzahl der Sets = log2(Cachegröße / Blockgröße * Ways)

Offset

Anzahl der Wörter = Blockgröße / Datenwortlänge

Offset = log2(Anzahl der Wörter)

Cachegröße (Nutzdaten)[Bearbeiten | Quelltext bearbeiten]

Nutzdaten = Datenwort * 2^Index * 2^Offset * Ways

Locality[Bearbeiten | Quelltext bearbeiten]

Temporal Locality[Bearbeiten | Quelltext bearbeiten]

Bei einem kürzlichen Zugriff auf den Speicherinhalt, ist es sehr wahrscheinlich, dass der nächte Zugriff wieder auf diesen Speicherinhalt erfolgt.

Spatial Locality[Bearbeiten | Quelltext bearbeiten]

Wird gerade auf den Speicherinhalt zugegriffen, ist es sehr wahrscheinlich, dass der nächste Zugriff in der Nachbarschaft von dem gerade zugegriffenen Speicherinhalt erfolgt.

Siehe auch Wikipedia:cache placement policies.

Schreibstrategie[Bearbeiten | Quelltext bearbeiten]

  • bei Hit
    • write-through
    • write-back
    • write-buffer
  • bei Miss
    • write-around
    • fetch-on-write

Replacement-Strategien[Bearbeiten | Quelltext bearbeiten]

  • Least Recently Used (LRU)
  • Least Frequently Used (LFU)
  • random
  • FIFO (first-in first-out)