# Speicherhierarchie

In der Informatik bezeichnet Speicherhierarchie die Anordnung von Speichern in einer Rechnerarchitektur aus Sicht des Hauptprozessors, geordnet nach sinkender Zugriffsgeschwindigkeit, sinkenden Kosten, steigender Speicherkapazität und steigender Zugriffseinheit. Die grafische Darstellung dieser Hierarchie findet i. d. R. in dreieckiger Form statt und wird Speicherpyramide genannt.

## Definitionen
### Einteilung nach Kosten

Ein (utopischer) idealer Speicher wäre extrem kostengünstig, unendlich groß, würde keine Zugriffszeit benötigen und würde seinen Inhalt auch dann nicht verlieren, wenn kein Strom anliegt (Nichtflüchtiger Speicher). Stände solch ein Speicher zur Verfügung, wäre die Speicherverwaltung trivial. In der Realität sind schnelle Speicher jedoch um Größenordnungen teurer als langsamere Speicher, zudem sind sie meist volatil. Aus diesem Grund wird versucht, einen Kompromiss aus Geschwindigkeit, Kosten und Persistenz zu finden, indem der Speicher in einer Speicherhierarchie angelegt und versucht wird, durch geschickte Speicherverwaltung die Vorteile der verschiedenen Komponenten zu nutzen und dabei gleichzeitig deren Nachteile zu umschiffen.
Daraus ergibt sich die Form einer Speicherpyramide: An der Spitze befindet sich sehr wenig schneller und teurer Speicher, ganz unten dagegen sehr viel langsamer, sehr günstiger Speicher. Während also die Geschwindigkeit von oben nach unten abnimmt, wächst in etwa im gleichen Maße die Speicherkapazität.
Eine auf vielen heutigen Computern eingesetzte Speicherhierarchie ist:
* Prozessorregister, Größenordnung: Byte-Kilobyte, Zugriffszeit i. d. R. mit Prozessortakt (genauso schnell wie CPU)
* Prozessorcaches, Größenordnung: Kilobyte-Megabyte, Zugriffszeit: etwa einige Dutzend Taktzyklen (abhängig vom Level)
* Arbeitsspeicher, Größenordnung: Megabyte–Gigabyte, Zugriffszeit: hunderte Taktzyklen (heute fast ausschließlich DRAM, z. B. EDO-RAM, SDRAM, DDR-SDRAM), Zugriffseinheit Cacheline
* Distributed memory, Größenordnung: Gigabyte–Terabyte, Zugriffszeit: Netzlatenz
* Massenspeicher, Größenordnung: Gigabyte–Terabyte, Zugriffszeit: Millionen Taktzyklen (z. B. Festplatte, SSD), Zugriffseinheit Block
* Wechseldatenträger, Größenordnung: Gigabyte–Terabyte, Zugriffszeit: Millisekunden bis mehrere Minuten, aber günstiger als Massenspeicher (z. B. DVD, CD, USB-Stick, Disketten, Magnetband)
Neben den hohen Kosten ist ein weiterer Grund, warum sehr schneller Speicher nur begrenzt eingesetzt werden kann, der folgende: Die Zugriffsgeschwindigkeit und Speicherkapazität werden in den höheren Ebenen zusätzlich durch die räumliche Anordnung beeinflusst. Der Hauptprozessor ist platzbeschränkt, und es besteht dort ein verhältnismäßig hoher Kühlungsbedarf. Die Anordnung der Speichergruppen in der Höhe (also die Ausnutzung der dritten Dimension) kann daher nur in engen Grenzen stattfinden.
Häufig werden zur besseren Organisation des Speichers (z. B. Optimierung der Zugriffszeit für häufig benötigte Daten) Speicherinhalte innerhalb der Hierarchie transparent verschoben, z. B. werden Teile der Festplatte in den Datenträgercache geladen, andererseits werden Teile des Arbeitsspeichers in die Auslagerungsdatei ausgelagert (virtueller Speicher).

### Einteilung nach Verwendungszweck

Die verschiedenen Speicherebenen sind auch nach ihrem Verwendungszweck einteilbar. Daraus ergeben sich primäre, sekundäre und tertiäre Speicher:
* Primärspeicher sind sehr schnelle, aber flüchtige Datenspeicher, die zur Laufzeit des Systems zur Verfügung stehen. Sie sind meist teurere Speicherarten und werden insbesondere dort eingesetzt, wo Geschwindigkeit eine wesentliche Rolle spielt, etwa Arbeitsspeicher (RAM) und diverse Cache-Speicher.
* Sekundärspeicher sind Speichermedien, die permanent direkt zugreifbar sind („on-line“). Der Preis pro Byte ist sehr niedrig, der Zugriff ist aber auch um Größenordnungen langsamer als bei Primärspeicher. Eine wesentliche Charakteristik ist, dass Sekundärspeicher die Daten auch über die Laufzeit des Systems hinaus behält.
* Tertiärspeicher sind Speichermedien, die nicht permanent zur Verfügung stehen („off-line“). Tertiärspeicher ist billig, hat hohe Kapazitäten und wird meist zur Datensicherung und -archivierung eingesetzt.
Auch bei Datenbanken findet sich eine solche Einteilung gelegentlich, wobei hier Primärspeicher, Sekundärspeicher oder Tertiärspeicher der Geschwindigkeit nach bezeichnet wird. Die Bedeutung ist jedoch identisch, denn als Primärspeicher wird in der Regel der Arbeitsspeicher bezeichnet, während Sekundärspeicher einen schnellen Festspeicher und Tertiärspeicher ein langsames Archivierungsmedium meint.

### Speicherverwaltung

Hierarchische Speichermanagementsysteme lagern länger nicht benötigte Daten automatisch auf einen Speicher niedrigerer Hierarchiestufe aus. Auch Informationslebenszyklusmanagement automatisiert derartige Prozesse.