Hallo, ich habe hier ein Board (hausgemacht) mit 32GByte NAND-Flash drauf. Es ist noch kein ECC-Machanismus (weder in Hardware noch in Software) implementiert, das soll noch passieren. Jetzt meine Frage, ich lasse einen Test laufen, der das gesamte Flash Page für Page mit inkrementellen Daten beschreibt. Nach dem Schreiben jeder Page wird diese zurückgelesen und der Inhalt verifiziert. Ich bekomme hin und wieder (eher selten) falsche Werte. Bei diesen Werten ist ein einziges Bit falsch. Es wird mit 0 gelesen, sollte aber 1 sein. Das Board ist per PCI-Bus angebunden. Der PCI-Anaylzer sagt mir, dass der richtige Wert schreibend ins Board getragen wird. Mehrmaliges Lesen fördert immer das gekippte Bit (0 statt 1) zustande. Es sieht also so aus, als wenn der Lesezugriff zumindest korrekt abläuft, da der konstante Werte liefert. Jetzt meine Frage, hat jemand Erfahrung mit NAND-Flash Speichern? Ist es evtl. normal, dass bei dieser Speichergröße hin und wieder ein Bit umkippt und man zwingend auf einen ECC Mechanismus angewiesen ist? Das Datenblatt gibt keine Hinweise darauf. Dort steht nur, dass 100000 Erase-Zyklen garantiert werden, aber nur wenn eine ECC genutzt wird. Mehr finde ich im Datenblatt dazu nicht.
900ss D. schrieb: > und man zwingend auf einen ECC Mechanismus angewiesen ist? Hallo, ja, das ist bekannt, man geht bewusst an die Grenze des Zuverlässigkeit bei den Zellen - üblich ist eine Multilevel-Technologie, also mehrere Bit pro Zelle durch unterschiedliche Ladungslevel, wodurch nicht mehr so zuverlässig zwischen den Bits unterschieden werden kann. Das wird durch Fehlerkorrektur abgefangen, der Gewinn an Kapazität ist weit grösser. In deinem Fall etwa würde der fehler wahrscheinlich verschwinden, wenn man die Anzahl der Levels verkleinern würde, aber dann wäre die Kapazität nur mehr die Hälfte, ein Viertel usw. Gruss Reinhard
Reinhard Kern schrieb: > üblich ist eine Multilevel-Technologie, Danke für die Antwort. Das klingt ja schonmal danach, dass die Bit-Kipper, die ich sehe, "normal" sind. Wie ist das denn bei Single Level Cell (SLC) Flashes? Unser Flash hat SLC Technologie. Ist das dort auch so?
> Das klingt ja schonmal danach, dass die Bit-Kipper, die ich sehe, > "normal" sind. Wer sagt das? Wo steht das?
Heinz schrieb: >> Das klingt ja schonmal danach, dass die Bit-Kipper, die ich sehe, >> "normal" sind. > > Wer sagt das? Wo steht das? Reinhard Kern schrieb: > ja, das ist bekannt Oder wie verstehst du das? Hast du anderes Wissen bzw. Erfahrungen?
900ss D. schrieb: > Heinz schrieb: >>> Das klingt ja schonmal danach, dass die Bit-Kipper, die ich sehe, >>> "normal" sind. >> >> Wer sagt das? Wo steht das? > > Reinhard Kern schrieb: >> ja, das ist bekannt > > Oder wie verstehst du das? > Hast du anderes Wissen bzw. Erfahrungen? Nein, habe ich nicht. Es erstaunt mich nur, dass schon zu Beginn die Bits nicht korrekt sind. Deshalb bin ich begierig eine entsprechende Quelle (Datenblattm Paper, etc.) zu sehen, die diesen Sachverhalt bestätigt.
Der ECC soll diese Bitkipper auffangen. SLC sind "zuverlässiger" als MLC, da MLC mehrere Bits pro Zelle kodieren. Bei den NAND-Bausteinen die ich programmiert habe war es so (iirc), dass die SLC-NANDs mindestens einen 1-Bit-ECC vorausgesetzt haben und die MLC 4-Bit. Es gibt NANDs bei denen die Hersteller für die 1. Page (oder den 1. Block - weiss nicht mehr genau) ein fehlerfreies Lesen garantieren. aber auch nur die ersten xxxx Operationen. Der Rest des NANDS muss ECC-geschützt sein. Btw. auch reines Lesen kann Bits kippen lassen, da auch hier Spannung angelegt wird.
Heinz schrieb: > 900ss D. schrieb: >> Heinz schrieb: >>>> Das klingt ja schonmal danach, dass die Bit-Kipper, die ich sehe, >>>> "normal" sind. >>> >>> Wer sagt das? Wo steht das? >> >> Reinhard Kern schrieb: >>> ja, das ist bekannt >> >> Oder wie verstehst du das? >> Hast du anderes Wissen bzw. Erfahrungen? > > Nein, habe ich nicht. Es erstaunt mich nur, dass schon zu Beginn die > Bits nicht korrekt sind. Deshalb bin ich begierig eine entsprechende > Quelle (Datenblattm Paper, etc.) zu sehen, die diesen Sachverhalt > bestätigt. Z.B. "The devices are supplied with all the locations inside valid blocks erased (FFh). The bad block information is written prior to shipping. Any block where the 6th byte (x8 devices)/1st word (x16 devices), in the spare area of the 1st page, does not contain FFh is a bad block. The bad block information must be read before any erase is attempted as the bad block information may be erased. For the system to be able to recognize the bad blocks based on the original information it is recommended to create a bad block table following the flowchart shown in" http://media.digikey.com/pdf/Data%20Sheets/Numonyx,Intel/NAND128-A,%20NAND256-A.pdf oder "The Bad Block Information is written prior to shipping. Any block where the 1st Byte in the spare area of the 1st or 2nd page(if the 1st page is Bad) does not contain FFh is a Bad Block" HY27UK08BGFM
Heinz schrieb: >> Nein, habe ich nicht. Es erstaunt mich nur, dass schon zu Beginn die Arc Net schrieb: > The bad block information Heinz redet glaube ich nicht von den Bad Blocks, die zu Beginn (ab Werk) schon da sind, sondern davon, dass bei mir schon Bitfehler auftreten obwohl ich das Flash noch nicht sonderlich gestresst habe. @mio: Danke für deine Erfahrungen.
>> eine entsprechende Quelle (Datenblattm Paper, etc.)
Datenblatt Micron MT29F16G08ABABA, Kapitel Error Management
" Minimum required ECC 4-bit ECC per 540 bytes of data "
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.