5.1 Speicher

In diesem Kapitel lernen Sie die unterschiedlichen Arten von Speichern kennen, deren Eigenschaften und Anwendungsbereiche.

5.1.1 Überblick

Speicher wird grundsätzlich nach dem Verhalten bei Wegfall der Versorgungsspannung unterschieden:

Flüchtiger Speicher (volatile)

Verliert seinen Inhalt, sobald die Versorgungsspannung entfernt wird. Typischer Einsatz: Arbeitsspeicher (RAM) im Computer oder Mikrocontroller.

Nicht-flüchtiger Speicher (non-volatile)

Behält die Daten auch ohne Versorgungsspannung. Typischer Einsatz: Programmspeicher, Festplatten, SSDs, USB-Sticks.

5.1.2 SRAM und DRAM

Beide sind flüchtige Speicher, unterscheiden sich aber grundlegend im Aufbau der Speicherzelle:

SRAM (Static RAM)

Eine SRAM-Zelle besteht aus typischerweise 6 Transistoren, die als zwei kreuzgekoppelte Inverter (Flipflop) verschaltet sind. Solange die Versorgungsspannung anliegt, bleibt der gespeicherte Wert stabil – ohne Auffrischen. SRAM ist sehr schnell, aber aufwändig in der Fläche und damit teuer. Typischer Einsatz: Cache-Speicher in CPUs, interner RAM in Mikrocontrollern.

DRAM (Dynamic RAM)

Eine DRAM-Zelle besteht aus nur einem Transistor und einem Kondensator. Die Information wird als Ladung im Kondensator gespeichert. Der Kondensator verliert seine Ladung durch Leckströme bereits nach wenigen Millisekunden – deshalb muss der Inhalt zyklisch aufgefrischt (Refresh) werden. Der Refresh ist bei DRAM zwingend erforderlich, bei SRAM nicht. DRAM ist deutlich kompakter und günstiger als SRAM, aber langsamer. Typischer Einsatz: Hauptspeicher in Computern (DDR-RAM).

Merkmal SRAM DRAM
Zellaufbau ~6 Transistoren (Flipflop) 1 Transistor + 1 Kondensator
Refresh nötig nein ja (zyklisches Auffrischen)
Geschwindigkeit sehr schnell langsamer
Dichte gering hoch
Kosten/Bit hoch niedrig
Typischer Einsatz CPU-Cache, µC-SRAM Hauptspeicher (DDR)

5.1.3 ROM und Flash

ROM (Read Only Memory)

Ursprünglich nur lesbar (maskenprogrammiert bei der Herstellung). Heute werden meist Varianten wie EEPROM oder Flash verwendet, die elektrisch beschreibbar sind.

Flash-Speicher

Flash ist ein nicht-flüchtiger Speicher, der elektrisch gelöscht und beschrieben werden kann. Das Löschen erfolgt blockweise (nicht byteweise). Es gibt zwei grundlegende Architekturen: NAND und NOR.

NAND-Flash vs. NOR-Flash

Merkmal NAND-Flash NOR-Flash
Zellorganisation Zellen in Serie (wie NAND-Gatter) Zellen parallel (wie NOR-Gatter)
Random Access nein, nur seitenweise ja, byteweise lesbar
Lesegeschwindigkeit langsamer sehr schnell
Schreibgeschwindigkeit schnell langsam
Speicherdichte hoch gering
Kosten/Bit niedrig hoch
Execute-in-Place (XIP) nein ja
Typischer Einsatz SSDs, USB-Sticks, SD-Karten Programmspeicher
(Boot-ROM, µC-Flash)

NAND-Flash wird dort eingesetzt, wo große Datenmengen kostengünstig gespeichert werden sollen und sequenzieller Zugriff genügt – z.B. SSDs, USB-Sticks, SD-Karten.

NOR-Flash wird dort eingesetzt, wo Programmcode direkt aus dem Speicher ausgeführt werden soll (Execute-in-Place) – z.B. im Programmspeicher von Mikrocontrollern oder als Boot-ROM.

5.1.4 Wichtige Begriffe

Wear-Leveling

Flash-Speicherzellen haben eine begrenzte Anzahl an Schreib-/Löschzyklen (typisch 10.000 bis 100.000). Werden immer dieselben Zellen beschrieben, verschleißen diese zuerst und fallen aus. Wear-Leveling ist ein Verfahren des Flash-Controllers, das Schreibzugriffe gleichmäßig auf alle physikalischen Zellen verteilt, auch wenn die Anwendung immer dieselbe logische Adresse beschreibt. Dadurch wird die Lebensdauer des Speichers deutlich verlängert. Wird vor allem in SSDs, SD-Karten und USB-Sticks eingesetzt.

Garbage Collection

Da Flash nur blockweise gelöscht werden kann, entstehen bei häufigem Beschreiben "ungültige" Seiten innerhalb eines Blocks (überschriebene, aber noch nicht gelöschte Daten). Garbage Collection sammelt die noch gültigen Seiten eines Blocks, kopiert sie in einen freien Block und löscht anschließend den ursprünglichen Block vollständig. So wird wieder freier Speicher bereitgestellt.

ECC (Error Correction Code)

In Flash- und DRAM-Speichern können einzelne Bits durch Strahlung, Alterung oder Leckströme kippen. ECC erkennt und korrigiert solche Bitfehler automatisch, indem zusätzliche Prüfbits mit den Nutzdaten gespeichert werden. Typisch können 1-Bit-Fehler korrigiert und 2-Bit-Fehler erkannt werden.

Refresh

Zyklisches Auffrischen der Kondensatorladung in DRAM-Zellen, damit die gespeicherte Information nicht durch Leckströme verloren geht. Erfolgt typisch alle paar Millisekunden.

Page / Block

Flash wird in Seiten (Pages, z.B. 2–16 kByte) gelesen und geschrieben, aber nur blockweise (z.B. 128–512 kByte = mehrere Pages) gelöscht.

Bad Block Management

Einzelne Flash-Blöcke können defekt sein oder im Betrieb ausfallen. Der Controller markiert diese als "bad blocks" und nutzt sie nicht mehr.

TRIM

Kommando des Betriebssystems an eine SSD, das meldet, welche Datenblöcke nicht mehr benötigt werden (z.B. nach dem Löschen einer Datei). Der SSD-Controller kann diese Blöcke dann im Rahmen der Garbage Collection aufräumen.