Flash-Dateisysteme unter Linux

Flashtechnologie


[ Seminar Linux und Netzwerke, Softwareentwicklung mit Eclipse ] ... [ Inhaltsübersicht ] ... [ Anforderungen an Flash-Dateisysteme ]

Flash Speicher unterscheiden sich durch ihre physikalische Architektur. In beiden Fällen liegen aber modifizierte MOSFETs zu Grunde, die je ein Bit Information speichern können. Die Modifikation besteht darin, dass ein so genanntes Floating Gate zwischen Control Gate und Source-Drain Strecke eingefügt wird. Das Floating Gate ist dabei komplett von einem Isolator umschlossen, so dass ihn eigentlich keine Elektronen erreichen können. Werden jedoch verhältnismässig hohe Spannungen an den Transistor angelegt, so "tunneln" einige Elektronen durch den Isolator ins Floating Gate. Diese Vorgänge sind nur durch den quantenmechanischen Tunneleffekt zu erklären.
Wird nun die Spannung am Transistor gekappt, so sind die Elektronen auf dem Floating Gate gefangen. Es ist ein persistenter Ladungszustand erreicht, der auch nach dem Ausschalten seinen Zustand behält. Ein Entladen funktioniert mit invertierten Spannungen.
Mitlweile ist es den Herstellern gelungen mehr als nur ein Bit pro Transistor zu speichern, in dem mehr als ein Ladungszustand auf dem Floating Gate gespeichert wird. Auf aktuellen MLCs ist es so möglich 4 Bit pro Zelle (Transistor) zu speichern. Dies allerdings auf Kosten von Lesegeschwindigkeit.
Die einzelnen Zellen, ob nun Single Level oder Multi Level, werden über Word- und Bitlines zu Gitternstrukturen zusammengefügt. Man unterscheidet dabei hauptsächlich NOR und NAND Architekturen, es existieren aber noch eine Vielzahl anderer Konzepte.
Abbildung 1: Aufbau einer Flash Zelle
Quelle: Wikipedia
Flash Cell

NOR

Bei NOR-Speicher sind die einzelnen Zellen parallel in einem Gitter aus Word- und Bitlines angeordnet und lassen sich direkt, bitweise auslesen. Das ermöglicht zum Beispiel den Einsatz in Programmspeichern von Mikrocontrollern als s.g. "execute in place memory". Dabei können Programme die auf dem Flash Medium gespeichert sind direkt ausgeführt werden, ohne es vorher in ein RAM zu laden. Die Zugriffszeiten sind erheblich schneller als bei NAND-Speicher.

Abbildung 2: NOR Architektur
Quelle: Wikipedia
NOR


NAND

NAND Speicher sind ähnlich wie Festplatten "block devices". Jeder Block besteht aus einer bestimmten Anzahl von Seiten. Typische Blockgrößen sind z.B.:


Das Lesen und Programmieren eines NAND-Speichers funktioniert seitenweise. Man spricht hier auch von Write Blocks. Dabei kann aber innerhalb eines Blocks nur sequentiell geschrieben werden. Beim Löschen hingegen können nur ganze Blöcke geändert werden. Diese werden Erase Blocks genannt.

Abbildung 3: NAND Architektur
Quelle: Wikipedia
NAND


Blockweises Löschen

Sowohl in NOR als auch NAND Flash ergibt sich das Problem, dass nur komplette Erase Blöcke gelöscht werden. Diese sind bei NOR Speicher noch verhältnismässig klein (64kb - 128kb), in NAND Speicher allerdings bis zu 512KB groß (s.o.). Das Löschen funktioniert in dem alle Bits in einem Erase Block auf logisch 1 gesetzt werden. Werden Daten neu geschrieben, ändern sich einzelne Bits auf logisch 0. Sollen einzelne Daten wieder geändert werden, so muss zunächst wieder der gesamte Erase Block in dem sich die Daten befinden gelöscht werden. Eine Ausnahme bildet die folgende Situation:
Ist zum Beispiel das Nibbel 1111 bereits gespeichert und es soll 1010 abgespeichert werden, so lässt sich dies durch das setzen des nullten und des zweiten Bits (von rechts gelesen) erreichen. Vorraussetzung ist natürlich, dass die alten Daten obsolet sind.
Nach oben

[ Seminar Linux und Netzwerke, Softwareentwicklung mit Eclipse ] ... [ Inhaltsübersicht ] ... [ Anforderungen an Flash-Technologien ]