Hallo,
Ich schreibe gerade meine Bachelorarbeit über Dateisysteme im embedded
Bereich und darin geht es unter Anderem auch um die Unterschiede
zwischen NAND und NOR Flashbausteinen.
Nun ist NAND Flash ja dafür bekannt, eine er eine relativ hohe
Fehlerhäufigkeit zu besitzen, deshalb werden die Bausteine häufig auch
mit Hardware-ECC verkauft oder ECC wird zumindest softwareseitig im
Treiber vom Dateisystem implementiert.
Allerdings habe ich während meiner Suche kein einziges Dateisystem
gefunden was ECC für NOR Flash implementiert und nur einen Hersteller
(ISSI) gefunden der Bausteine mit Hardware-ECC anbietet, wobei diese
auch noch recht neu sind (Release erst dieses Quartal).
Meine Frage ist nun ob irgendjemand tatsächliche Daten über die
Unterschiede in der Bit-Error-Rate zwischen NAND und NOR Flashbausteinen
hat oder weiß wo ich sie finden kann. Es muss ja einen Grund geben warum
sich alle auf NOR Flash verlassen.
Vor allem würde mich dann interessieren ob die Fehlerhäufigkeit von
einem NAND Flash mit ECC nicht vielleicht sogar niedriger ist als von
einem NOR Flash ohne ECC.
Ich habe an alle großen Chiphersteller bereits Anfragen geschickt aber
seit Wochen keine Antwort bekommen. Auch habe ich deren Webseiten nach
Papers durchsucht aber auch dort keine Zahlen gefunden immer nur die
Aussage, dass sie zuverlässiger sind.
Vielen Dank im Voraus.
Georg schrieb:> Vor allem würde mich dann interessieren ob die Fehlerhäufigkeit von> einem NAND Flash mit ECC nicht vielleicht sogar niedriger ist als von> einem NOR Flash ohne ECC.
ECC dient nicht unbedingt dazu, die Fehlerrate zu verringern, sondern um
Fehler überhaupt zu erkennen, damit z.B. die Software nicht Amok läuft
und der Roboter jemanden zu tode prügelt.
Johnny B. schrieb:> ECC dient nicht unbedingt dazu, die Fehlerrate zu verringern, sondern um> Fehler überhaupt zu erkennen, damit z.B. die Software nicht Amok läuft> und der Roboter jemanden zu tode prügelt.
Hallo,
was könnte denn ECC sein, etwa ein Error Recognition Code ?
Gruß,
Michael
Der wesentlich Unterschied zwischen NAND und NOR ist, dass man NAND in
großen Blöcken ansprechen muss, währen man bei NOR einzelne Bytes lesen
kann. Das bedeutet, dass das Flash, in dem ausführbarer Code in
Mikrocontrollern gespeichert wird, NOR sein muss.
Der selbe Transistor hat ungefähr die selbe Fehlerhäufigkeit, egal, ob
er in NAND- oder NOR-Flash benutzt wird. Aber in Mikrocontrollern will
man zuverlässigen Speicher ohne ECC-Aufwand und macht deshalb die
Transistoren groß und robust, während es sich bei Massenspeichern lohnt,
möglichst viele Transistoren auf den gleichen Raum zu quetschen und die
daraus resultierenden Fehler mit ECC (und komplexer Software)
auszubügeln.
Der wesentliche Unterschied ist, daß bei NOR die "Verkabelung" der
einzelnen Speicherzellen so umständlich und sperrig ist, daß man sie
nicht beliebig verkleinern kann. Bei NAND geht das, also machen es die
Hersteller auch. Damit bekommt man mehr Speicherkapazität auf den Chip,
aber je kleiner die Speicherzellen sind, desto größer ist die
Fehlerwahrscheinlichkeit. Deshalb ist bei NAND-Flash aufwendige
Fehlerkorrektur nötig, damit man seine Daten hinterher noch
wiedererkennt. Zu der Fehlerkorrektur gehört dann auch, daß man nur noch
blockweise schreiben kann, weil zu jedem Block entprechende Prüfsummen
gespeichert werden müssen. Bei NOR ist keine Fehlerkorrektur nötig, weil
praktisch keine Fehler auftreten.
Dateisysteme haben damit normalerweise nichts zu tun, weil die auf einer
höheren Schicht ansetzen und davon ausgehen, daß sie ein zuverlässiges
Speichermedium für Datenblöcke zur Verfügung haben. Für das korrekte
Betüddeln des NAND-Flashs steckt dann ein eigener Prozessor im
Speichermedium (USB-Stick, SD-Karte, SSD, eMMC,...).
Naja, solange man sich im Bereich von "embedded Flash" bewegt, sind sie
100k P/E Cycles fast gleich. Nachteil von NAND ist halt dass man immer
nur größere Blöcke löschen kann als bei NOR. Das heißt ohne
entsprechende Logik (wear Leveling) hält NAND weniger lang wenn kleine
Datenblöcke geschrieben werden.
Sobald es in den Bereich von SSDs geht (welche fast ausschließlich NAND
in Form von MLC/TLC/QLC mit recht kleinen Fertigungsprozessen
verwendenden) reden wir von P/E Cycles von ~1000-3000 Cycles.
Bei einer Samsung EVO 860 mit 1TB sind es lediglich 600 TBW (Terabytes
Written) garantiert. Bedeutet 600 mal voll geschrieben und das Ding ist
kaputt (wir alle wissen ja dank diverser Tests dass diese angaben recht
konversativ sind). Bei Konsumer ist es meist 0.3 DWPD bei Server etc.
geht es auch gerne auf 3 DWPD hinaus.
Nosnibor schrieb:> Dateisysteme haben damit normalerweise nichts zu tun, weil die auf einer> höheren Schicht ansetzen und davon ausgehen, daß sie ein zuverlässiges> Speichermedium für Datenblöcke zur Verfügung haben.
Das ist so nicht richtig. Dafür machen ja Dateisystem wie ZFS oder BTRFS
Scrubbing, eben weil sie Speichermedien als fehlerbehaftet und
unzuverlässig ansehen.
Neverever schrieb:> Dafür machen ja Dateisystem wie ZFS oder BTRFS> Scrubbing, eben weil sie Speichermedien als fehlerbehaftet und> unzuverlässig ansehen.
Überdies verwenden sie auch eigene Checksums.
Georg schrieb:> Allerdings habe ich während meiner Suche kein einziges Dateisystem> gefunden was ECC für NOR Flash implementiert und nur einen Hersteller> (ISSI) gefunden der Bausteine mit Hardware-ECC anbietet, wobei diese> auch noch recht neu sind (Release erst dieses Quartal).
Da war die Suche aber ziemlich oberflächlich. Auf Anhieb fallen mir dazu
Cypress' S25FL128S, S25FL256S, S25FL512S ein, steht ausdrücklich auf der
ersten Seite im Datenblatt. Oder Macronix MX25LM51245G.
Auch bei einigen neueren STM32-Derivaten mit größerem Flash findet sich
ECC. Dabei dürfte es sich wohl auch um NOR-Flash handeln?!
Der Grund wurde ja schon beschrieben: In Integrationsdichte ist bei NOR
der bei NAND deutlich hinterher, und die Fehlerwahrscheinlichkeit wächst
mit Verkleinerung der Strukturen.
A. B. schrieb:> Der Grund wurde ja schon beschrieben: In Integrationsdichte ist bei NOR> der bei NAND deutlich hinterher, und die Fehlerwahrscheinlichkeit wächst> mit Verkleinerung der Strukturen.
Und mit der Anzahl Bits pro Speicherzelle, bei NAND mittlerweile bis zu
4.
Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
Groß- und Kleinschreibung verwenden
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang