Speicherverwaltung

Begriffe

  • Hauptspeicher (main memory): Speicherort für Informationen in einem Computer
  • Anderer Name RAM (random access memory)
  • Information wird in Form von Bytes gespeichert (1 Byte = 8 Bit)
    00000000–11111111 bzw. 0x00–0xFF bzw. 0–255
  • Byte ist die kleinste Einheit, die im Hauptspeicher ansprechbar ist
  • Zwei gängige Technologien für RAM sind SRAM und DRAM

Der Arbeitsspeicher oder Hauptspeicher (engl.: main memory, main store, primary memory) [… ist die] Bezeichnung für den Speicher, der die gerade auszuführenden Programme oder Programmteile und die [dabei] benötigten Daten enthält. Der Hauptspeicher ist eine Komponente der Zentraleinheit. Da der Prozessor unmittelbar auf den Hauptspeicher zugreift, beeinflussen dessen Leistungsfähigkeit und Größe in wesentlichem Maße die Leistungsfähigkeit der gesamten Rechenanlage.

Quelle: Duden Informatik

Einheiten (alte Form)

Missbräuchliche Verwendung der SI-Prefixe für Zweierpotenzen

  • Kilobyte (kB) = 210 Byte = 1024 Byte
  • Megabyte (MB) = 220 Byte = 1024 kB
  • Gigabyte (GB) = 230 Byte = 1024 MB
  • Terabyte (TB) = 240 Byte = 1024 GB
  • Petabyte (PB) = 250 Byte = 1024 TB
  • Exabyte (EB) = 260 Byte = 1024 PB

Die Prefixe des SI-Systems sind für Zehnerpotenzen reserviert. Da es aber bis zur Mitte der 1990er Jahre keine Prefixe für Zweierpotenzen gab, wurden häufig die SI-Prefixe „missbraucht“. Dies hat leider zur Folge, dass nicht klar ist, was mit MB gemeint ist. Gerade die Hersteller von Festplatten interpretieren MB als 106 Byte, da sie dann die Kapazität höher angeben können.

Einheiten (neue Form)

Einheiten nach EC 80000-13:2008 für dezimale Einheiten

  • Kilobyte (kB) = 103 Byte = 1000 Byte
  • Megabyte (MB) = 106 Byte = 1000 kB
  • Gigabyte (GB) = 109 Byte = 1000 MB
  • Terabyte (TB) = 1012 Byte = 1000 GB
  • Petabyte (PB) = 1015 Byte = 1000 TB
  • Exabyte (EB) = 1018 Byte = 1000 PB

Einheiten nach EC 80000-13:2008 für Zweierpotenzen

  • Kibibyte (KiB) = 210 Byte = 1024 Byte
  • Mebibyte (MiB) = 220 Byte = 1024 KiB
  • Gibibyte (GiB) = 230 Byte = 1024 MiB
  • Tebibyte (TiB) = 240 Byte = 1024 GiB
  • Pebibyte (PiB) = 250 Byte = 1024 TiB
  • Exbibyte (EiB) = 260 Byte = 1024 PiB

Die neuen Einheiten nach EC 80000-13:2008 unterscheiden sauber zwischen den dezimalen Prefixen und denen für Zweierpotenzen. Die neuen Einheiten haben sich aber nicht flächendeckend durchgesetzt, sodass immer noch nicht klar ist, welche Einheit jemand meint, wenn er von Megabyte oder Gigabyte spricht.

SRAM

SRAM (static random-access memory)

  • Flipflop speichert ein einzelnes Bit
  • sehr schnell aber teuer
  • braucht keinen Refresh
Schaltbild einer SRAM-Zelle

Static random-access memory (deutsch: statisches RAM, Abkürzung: SRAM) bezeichnet einen elektronischen Speicherbaustein. Sein Inhalt ist flüchtig, das heißt, die gespeicherte Information geht bei Abschaltung der Betriebsspannung verloren. Im Gegensatz zu dynamischem Speicher (DRAM), welcher zur Vermeidung von Datenverlust ein periodisches Auffrischen (engl. refresh) benötigt, kann der Dateninhalt im statischen RAM bei Anliegen der Betriebsspannung beliebig lange gespeichert werden, wovon sich die Bezeichnung dieses Speichertyps ableitet.

Die Informationen werden durch Zustandsänderung von einer bistabilen Kippstufe in Form eines Flipflops pro Bit gespeichert. Das erlaubt es zwar, die Speicherzelle schnell auszulesen, aber im Vergleich zu dynamischen Speicherzellen ist die Speicherzelle verhältnismäßig groß. Im statischen Betrieb (Halten der Information) ist der Leistungsbedarf einer Zelle sehr klein.

Quelle: Wikipedia

DRAM

DRAM (dynamic random-access memory)

  • Kondensator speichert ein einzelnes Bit
  • langsamer als SRAM aber deutlich billiger (höhere Packungsdichte)
  • Speicher muss regelmäßig aufgefrischt werden, da Kondensator Ladung verliert
Schaltbild einer DRAM-Zelle

Dynamic Random Access Memory (DRAM) bezeichnet eine Technologie für einen elektronischen Speicherbaustein mit wahlfreiem Zugriff (Random Access Memory, RAM), der hauptsächlich in Computern eingesetzt wird. Das speichernde Element ist dabei ein Kondensator, der entweder geladen oder entladen ist. Über einen Schalttransistor wird er zugänglich und entweder ausgelesen oder mit neuem Inhalt beschrieben. Der Speicherinhalt ist flüchtig (volatil), das heißt die gespeicherte Information geht bei fehlender Betriebsspannung oder zu später Wiederauffrischung verloren.

Ein Kennzeichen des DRAM ist die Kombination aus einer sehr hohen Datendichte auf einer kleinen Chipfläche, verbunden mit sehr preiswerten Herstellungskosten. Diesem Vorteil des DRAM gegenüber dem SRAM steht der Nachteil gegenüber, dass sich die im Kondensator gespeicherte Ladung und damit die gespeicherte Information aufgrund von Leckströmen mit der Zeit verflüchtigt, wenn sie nicht periodisch wieder aufgefrischt wird. Dies ist normalerweise in Abständen von einigen Millisekunden erforderlich. Das Auffrischen des DRAMs verbraucht außerdem im Ruhezustand eine gewisse Menge von Energie. Deshalb bevorzugt man in Anwendungen, bei denen es auf geringen Ruhestrom ankommt, SRAM.

Quelle: Wikipedia

Über die Select-Leitung (blau) wird die Zelle ausgewählt, über die Bit-Leitung (grün) werden die Daten aus der Zelle gelesen bzw. in die Zelle geschrieben.

Vergleich DRAM / SRAM

Vergleich einer DRAM- mit einer SRAM-Zelle

Man erkennt deutlich den Größenunterschied zwischen den beiden Arten von Speicherzellen. Während eine DRAM-Zelle nur einen einzigen Transistor benötigt, müssen in einer SRAM-Zelle sechs Transistoren verbaut werden. Wegen des drastischen Größenunterschiedes werden SRAM-Zellen nur dort verwendet, wo eine sehr hohe Performance nötigt ist, also vor allem für die Register des Prozessors und die Caches im Prozessor selbst.

DRAM-für ein Byte

DRAM-Zeile

Durch das Zusammenschalten von acht DRAM-Zellen kann man acht Bit und damit ein Byte speichern. In allen modernen Computern ist der Hauptspeicher nicht Bit-, sondern Byte-weise organisiert, d. h. es werden immer acht Bit gleichzeitig angesprochen. Eine Lese- oder Schreiboperation im Hauptspeicher adressiert immer mindestens ein Byte.

Das die Zellen für ein Byte immer gemeinsam adressiert werden erkennt man daran, dass sie sich eine Select-Leitung (blau) teilen.

Speichergrid

Speichergrid

Der Hauptspeicher eines Computers besteht aus sehr vielen Zellen, die jeweils ein Byte speichern.

Adresse

Adresse

Um die einzelnen Bytes im Hauptspeicher unterscheiden zu können, muss man ihnen eine eindeutige Adresse (address) geben. Hierzu werdend die Speicherstellen beginnend bei 1 durchnummeriert. Die Adresse ist somit selbst wieder nur eine Zahl, die eine Speicherstelle im Hauptspeicher eindeutig identifiziert. Wie alle Zahlen, mit denen ein Computer agiert, hat die Adresse eine feste Breite.

Bitbreiten

Bitbreiten

Eine wichtige Eigenschaft einer Computerhardware ist, wie lang die Adressen maximal werden können. Übliche Größen sind hier 16-Bit, 32-Bit und 64-Bit. Für PCs und Server ist heutzutage 64-Bit die übliche Größe, 32-Bit finden sich noch häufig bei Smartphones und 16-Bit trifft man bei Mikrocontrollern an.

Aus der Länge der Adresse ergibt sich, wie viel Speicher der Computer maximal verwalten kann.

  • 16-Bit: 216 Byte = 64 kByte
  • 32-Bit: 232 Byte = 4 GB
  • 64-Bit: 264 Byte = 16.777.216 TB

Speicherung eines Bytes

Ein Byte

Wenn man ein Byte in den Speicherzellen des Hauptspeichers ablegt, stellt sich die Frage, wie man die einzelnen Bits anordnet. An einer Seite befindet sich das Bit mit der geringsten Wertigkeit, das LSB oder least significant bit, auf der anderen Seite das MSB bzw. most significant bit. Entsprechend bezeichnet man die beiden Seiten als high-order end und low-order end.

Größere Einheiten

  • Wort (word): 2 Byte, 16 Bit
  • Doppelwort (double word, dword): 4 Byte, 32 Bit
  • Langwort (long word): 8 Byte, 64 Bit
Word = 2 Byte

Viele Datentypen (siehe unten) benötigen mehr Platz, als ihn ein einziges Byte bietet. Daher haben sich für bestimmte Breiten (2, 4 und 8 Byte) eigene Begriffe etabliert.

Endianess

  • Für Worte und längere Datentypen stellt sich die Frage, wie man sie im Speicher ablegt
    • Big Endian: Das höchstwertige Byte wird zuerst geschrieben (an niedriger Adresse)
    • Little Endian: Das niederwertige Byte wird zuerst geschrieben (an niedriger Adresse)
Big- vs. Little-Endian

Wenn Einheiten gespeichert werden, die größer als ein Byte sind (z. B. ein Wort), stellt sich sofort die Frage, an welcher Adresse die Bytes gespeichert werden, aus denen die Einheit besteht. Analog zu den Bits gibt es auch hier ein low-order byte und ein high-order byte. Leider gibt es bei den Computerherstellern keinen einheitlichen Standard, sodass es sowohl Computersysteme gibt, die das high-order byte an der niedrigeren Adresse speichern (Big Endian z. B. bei IBM PowerPC) und solche, die das high-order byte an der höheren Adresse speichern (Litle Endian z. B. bei Intel).

Speicherung von Objekten

Arten von Speicher

  • Stack
    • Kellerspeicher
    • Nimmt nur lokale Variablen auf
  • Heap
    • Wird vom Garbage Collector aufgeräumt
    • Nimmt nur Objekte auf

Objekt vs. Referenz

Ein Objekt ist eine Instanz einer Klasse, die Daten und Methoden enthält. Eine Referenz ist eine Variable, die auf ein bestimmtes Objekt verweist. Ein Objekt selbst kann in den Arbeitsspeicher (Heap) geladen werden, während eine Referenz lediglich einen Verweis auf das Objekt enthält. Das bedeutet, dass mehrere Referenzen auf das gleiche Objekt verweisen können.

  • Objekt (object)
    • liegt immer auf dem Heap
    • trägt Daten (primitive Datentypen oder Referenzen)
  • Referenz (reference)
    • ist kein Objekt
    • zeigt auf ein Objekt
    • kann auf dem Heap liegen (als Variable in einem Objekt)
    • kann auf dem Stack liegen (als lokale Variable)
    • kann zu verschiedenen Zeiten auf verschiedene Objekte zeigen
int k = 32;
int l = k;
String greeting = new String("Hallo");
String gruezi = greeting;

Copyright © 2025 Thomas Smits