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.