Komplexe IoT-Systeme Welche Flash-Speichertechnologie ist die richtige?

Wie Lesestörungsfehler auftreten

Auf Betriebssystemdateien wird viel häufiger zugegriffen als auf Datendateien, und Bitfehler in Betriebssystemdateien können fatale Auswirkungen haben. Manche zentralen Betriebssystemdateien werden ständig gelesen, was zu Bitfehlern im Flash-Array führen kann.

Der Flash-Speicher ist in Blöcken angeordnet, und jeder Block enthält eine bestimmte Anzahl von Seiten. Die Blöcke sind die kleinsten Teile des Speichers, die gelöscht werden können, während die Seiten die kleinsten Teile des Speichers sind, die gelesen oder programmiert werden können. Ein üblicher Flash-Block hat eine Größe von 256 kB und kann 64 Seiten mit je 4 kB enthalten. Jede Seite enthält zusätzlich 64 Byte, die für Fehlerkorrekturcode (ECC), Löschzählungen und die Übersetzung von logischen in physische Daten verwendet werden.

Während eines Flash-Lesevorgangs einer Seite mit Daten wird eine kleine Lesespannung an den gesamten Block angelegt, zu dem die Seite gehört, selbst wenn nur ein Byte von der Seite gelesen werden muss. Aufgrund der Flash-Zellentechnologie wird auch eine geringere Spannung in die umgebenden Seiten im Block induziert. Bei diesem Vorgang können Elektronen in die Zellisolationsschichten injiziert werden, ähnlich der Programmierung einer Zelle. Dieser Vorgang wird daher als „weiche Programmierung“ bezeichnet. Das wiederholte Anlegen der kleinen Lesespannung an denselben Block kann schließlich auch eine Programmierstörung der nicht gelesenen Flash-Seiten verursachen. Im Laufe der Zeit kann dies dazu führen, dass der Status der benachbarten Zellen auf einen anderen Wert geändert wird.

Die meisten microSDHC-NAND-Flash-Karten haben eine Art Fehlerkorrektur zur Behebung von Zellfehlern. Jedoch kann die Anzahl der durch weiche Programmierung verursachten Fehler einen kritischen Wert erreichen, sodass die Fehler nicht mehr korrigiert werden können. In diesem Fall liest der Mikrocontroller einen anderen Wert aus dem Bit, was zu einem Dateifehler führt. Solche Bitfehler werden als Lesestörungsfehler bezeichnet.

Bei microSDHC-NAND-Flash-Karten, die für die Datenspeicherung verwendet werden, treten Lesestörungsfehler selten auf. Aufgrund der Schreibvorgänge auf dem Flash-Array werden die Flash-Positionen nach einer Verschleißnivellierung neu programmiert, wodurch jegliche weichen Programmiereffekte beseitigt werden. Ein für ein eingebettetes Betriebssystem verwendetes Flash-Array wird jedoch so selten programmiert, dass Lesestörungsfehler zur Realität werden können.

Single-Level-Cell-(SLC-)Flash-Karten sind für eine Million Lesevorgänge und Multi-Level-Cell-(MLC-)Flash-Karten für 100.000 Lesevorgänge ausgelegt, bevor ein Lesestörungsfehler auftreten würde. Bei der Daten-Flash-Speicherung werden Lesestörungsfehler als so selten angesehen, dass diese Zahlen oft nicht in den Datenblättern angegeben sind.

RDM zur Vermeidung von Lesestörungsfehlern

Um Lesestörungsfehler zu vermeiden, entwickelte Swissbit eine Funktion, die als Read-Disturb-Management (RDM) bezeichnet wird. Beim RDM von Swissbit verfolgt der Flash-Karten-Controller die Anzahl der Lesevorgänge für jeden einzelnen Flash-Block. Wenn ein Block eine intern definierte Anzahl von Lesevorgängen erreicht, verschiebt der Controller die Daten in einen neuen Block – ähnlich der Verschleißnivellierung, die für Schreibvorgänge verwendet wird. Bei Bedarf korrigiert der Fehlerkorrekturcode (ECC) des SD-Controllers alle beschädigten Daten während des Schreibvorgangs in einen neuen Block.

Die RDM-Funktion wurde in die microSDHC-Flash-Karte S-450u von Swissbit implementiert. Sie wurde speziell für industrielle Anwendungen mit eingebetteten Betriebssystemen entwickelt und bietet genug Platz für ein Embedded-Linux-Betriebssystem und Anwendungscode für zahlreiche komplexe IoT-Knoten. Im SDR104-Modus unterstützt die S-104u bis zu 104 MB/s Datenzugriff.