Techtalk

Fachthema

Demente Speicher - Datenhaltung bei eMMCs

Moderne Embedded Systems verwenden aufgrund des guten Preis-Leistungs-Verhältnisses eMMCs als Speichermedium. EMMCs sind NAND-Flash basierende Speicher. NAND-Flash nützen sich über die Zeit ab. Hier ist bei der Lebensdauer von Produkten Vorsicht geboten.

Erst kürzlich musste ein namhafter E-Autohersteller eine Rückrufaktion für mehr als 100.000 Fahrzeuge durchführen. Grund dafür waren defekte eMMC Datenspeicher. Einige wichtige Faktoren gehören beim Einsatz von Datenspeichern berücksichtigt, um ähnliche Fehler in der Entwicklung von Kundenprodukten zu vermeiden.

Embedded Systems

Vorsicht bei eMMCs

Embedded Systems benötigen zum Speichern von Betriebssystem, Applikation und Daten nichtflüchtige Speicher (Datenspeicher, deren gespeicherte Information auf Dauer erhalten bleiben – auch während das Embedded System nicht in Betrieb ist oder mit Strom versorgt wird).

Moderne Embedded Systems verwenden aufgrund des guten Preis-Leistungs-Verhältnisses eMMCs (embedded Multimediacard) als Speichermedium. EMMCs sind NAND-Flash basierende Speicher. NAND-Flash nützen sich durch Verwendung über die Zeit ab. Daher ist hier besondere Vorsicht geboten, damit das Kundenprodukt die geplante Lebensdauer auch erreicht.

NAND-Flash Speicher verfügen grundsätzlich über zwei Eigenschaften, auf die besonders geachtet werden muss:

  • Wear-Out (Write/Erase Endurance) – Eine Speicherzelle kann defekt werden, wenn sie zu oft beschrieben wurde
  • Data Retention – Je öfter eine Zelle beschrieben wurde, umso kürzer kann sie die Daten halten

Diese zwei Eigenschaften sind davon abhängig, wie oft eine Zelle beschrieben wurde. Da Daten über die Software, vorwiegend über die Applikationssoftware, geschrieben werden, bestimmt das Schreibverhalten der Kunden-Applikationssoftware im Endeffekt wie lange der Speicher hält.

Wear-Out

Wie lässt sich ein Wear-Out in Bezug auf Produktlaufzeit abschätzen?

Quality Reports, ein Dokument das vom Hersteller angefragt werden muss, enthalten die eMMC herstellerspezifische, maximale Anzahl an Schreib- und Löschzyklen einer Zelle. Ein Wear-Leveling Algorithmus (eine Technik zur Verlängerung der Lebensdauer von Speichern) im eMMC sorgt dafür, dass unabhängig vom Schreibverhalten der Software alle Zellen im eMMC annähernd gleich oft beschrieben werden. Solange die über die Zellen annähernd gleichverteile Maximalanzahl an Schreib- und Löschzyklen nicht überschritten wird, garantiert das eMMC, dass defekte Blöcke im Speicher durch spare-blocks ersetzt werden können. Spare blocks sind zusätzlich bereitgestellte Blöcke. Sie können defekte Blöcke gegebenenfalls ersetzen.

Typische Werte für die maximale Anzahl an Schreib-und Löschzyklen von MLC (multi level cell) eMMCs sind 3000 Zyklen. Bei einem eMMC mit 8GB lassen sich daraus die maximalen TBW (Terra Byte Written) berechnen. 

Die Formel lautet max. TBW = W/E Cycles * Capacity. Also in unserem Beispiel 3000 Zyklen * 8GB Speicherplatz = ~23 TB. Das heißt, die Software darf über die geplante Produktlebensdauer nicht mehr als die maximal errechneten TBW schreiben, damit ein Wear-Out unter 100% bleibt.

Der Umstand, dass die in eMMCs enthaltenen Zellen in Seiten organisiert sind und Seiten in Blöcke, aber nur ganze Seiten geschrieben und ganze Blöcke gelöscht werden können, macht es zwingend nötig, auch die Art WIE die Daten geschrieben werden mittels dem Korrekturfaktor WAF (Write Amplifikation Factor) zu berücksichtigen.  Große, sequenzielle Schreibvorgänge ergeben etwa einen niedrigeren WAF, während zufällige Schreibvorgänge kleiner Datenblöcke einen höheren WAF ergeben.

Typische Werte für WAF liegen zwischen eins und acht. Bei der Annahme, das der Write Amplifikation Factor (WAF) vier ist, ergibt sich folgende

Formel: Max. TBW = W/E Cycles * Capacity/WAF = 3000*8GB/4= ~6 TB.  Aufgrund der Ungenauigkeit von WAF eignet sich diese Methode zur Berechnung des Wear-Outs eher in der Designphase, wenn die Applikationssoftware noch im Entstehen ist.

Fachbegriffe

eMMC (embedded multimediacard) sind NAND-Flash basierende Speicher.
NAND-Flash bezeichnet einen Typ von Flash-Speicher, der in der sogenannten NAND-Technik gefertigt ist. Hierbei sind die Einzel-Speicherzellen seriell verschaltet.

Speicherzellen können defekt werden, wenn sie zu oft beschrieben wurden. Der Grad der Abnutzung des Speichers wird als Wear-Out bezeichnet. 

Data Retention bezeichnet die Zeit der gespeicherten Daten. Also wie lange Daten bespeichert bleiben ohne Schaden zu nehmen. Denn je öfter eine Zelle beschrieben wird, desto kürzer kann sie Daten auch halten.

Wear Leveling ist eine Technik zur Verlängerung der Lebensdauer von Flash -Speichern.

spare-blocks sind zusätzlich bereitgestellte Blöcke in eMMCs. Sie können defekte Blöcken gegebenenfalls ersetzen.

"MLC" bedeutet Multi Level Cell.  Das sind Speicherzellen, in denen zwei Bits pro Zelle gespeichert werden. Das Pendant dazu sind SLCs, also Single-Level-Cells, die nur ein Bit pro Zelle speichern.

"TBW" bedeutet Terra Bytes Written und gibt Auskunft darüber, wie viele Daten während der Lebenszeit insgesamt auf einem Speicher geschrieben werden können.
TBW berücksichtigt auch die begrenzte Wiederbeschreibbarkeit. Die typische Einheit von TBW sind Terabyte.

WAF steht für Write Amplification Factor. Es bezeichnet das Verhältnis der tatsächlich in die Flash-Zellen geschriebenen Daten zu den vom Host beabsichtigt zu schreibenden Daten.

höhere Genauigkeit

Analyse des Schreibverhaltens

Eine weitaus genauere Methode für die Abschätzung des Wear-Out ist es, den eMMC herstellerspezifischen CMD56 zu implementieren, um den maximalen erase count eines Blockes auszulesen.  Bei dieser Methode lässt man die Applikationssoftware mit einem repräsentativen Schreibverhalten über eine genügend lange Zeit (zB. 14 Tage) laufen und rechnet max. erase count für die geplante Produktlebensdauer hoch. Dadurch ergibt sich eine deutlich genauere Abschätzung für den Wear-Out, da der WAF bei dieser Methode mitgemessen wird. Auch Ginzinger electronic systems wendet diese Methode standardmäßig zur Wear-Out Abschätzung an.

Software Entwicklung am Monitor mit Tastatur

Data Retention in Embedded Systems

In der Praxis zeigt sich dabei oft, dass vor allem die zweite Eigenschaft von NAND-Flash Speichern, nämlich die geforderte Data Retention schwieriger einzuhalten ist als der Wear-Out. Data Retention bezeichnet die Zeit, in der eine Zelle nach dem Beschreiben die Daten halten kann. Diese gilt allgemein im ausgeschalteten, also spannungslosen Zustand des Kundenproduktes, als auch im eingeschalteten Zustand.

Ginzinger electronic systems verwendet daher sogenannte automatic background operations. Damit wird im Hintergrund laufend gesprüft, ob eine Zelle kurz davor ist, Daten zu verlieren. Ermöglicht wird dies durch Error Correction Codes (ECC). Gegebenenfalls wird die Zelle dann neu geschrieben und die Data Retention ist nur noch dann relevant, wenn das Kundenprodukt ausgeschaltet ist.

Aus die in Quality Reports enthaltenen Kennlinien, sowie dem zuvor ermittelten maximalen erase count lässt sich die Data Retention für die geplante Produktlebensdauer abschätzen. Typische Werte für Data Retention:

  • 10 Jahre bei 0% Wear-Out
  • 1 Jahr bei 100% Wear-Out

Diese sind deutlich abhängig von der Umgebungstemperatur des eMMCs und muss demzufolge ermittelt und einberechnet werden.

Was tun?

Wenn der Wear Out / die geforderte Data Retention über die geplante Produktlebensdauer nicht eingehalten werden kann

Eine offensichtliche Möglichkeit ist es, weniger Daten zu schreiben oder die Daten optimiert zu schreiben, sprich WAF (Write Amplifikation Faktor) zu reduzieren. Eine weitere Möglichkeit stellt die Konfiguration des eMMC als pSLC (pseudo singel level cell) statt als MLC (multi level cell) dar.  Bei Konfiguration als MLC speichert eine Zelle zwei Bits, bei pSLC hingegen nur ein Bit. Dadurch reduziert sich zwar die Kapazität des eMMC um 50% (4GB statt 8GB), die maximale Anzahl an Schreib- und Löschzyklen einer Zelle wird dadurch aber deutlich erhöht. Typischerweise im Bereich um den Faktor sechs bis zehn, je nach eMMC Hersteller. Dadurch wird der Wear-Out wesentlich reduziert und die Data Retention deutlich erhöht.

Zusammengefasst bedeutet dies für Entwickler, dass die Abnutzung des Speichers, sowie das zeitlich begrenzte Halten von Daten Themen sind, die mit Perfektionismus angegangen werden müssen. Sonst können, wie im oben beschriebenen Fall aus der Automobil-Welt, auch Systeme, die jahrelang problemlos funktionieren plötzlich ausfallen und ein großes Risiko darstellen.

Fragen zur Embedded Software?