27.01.2013 Aufrufe

[Geben Sie hier die Überschrift ein] - MPC

[Geben Sie hier die Überschrift ein] - MPC

[Geben Sie hier die Überschrift ein] - MPC

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>MPC</strong>-WORKSHOP JULI 2012<br />

Hardware-Entwurf <strong>ein</strong>er flexiblen Fehlerkorrektur<strong>ein</strong>heit<br />

für Flashspeicher<br />

Zusammenfassung—Die Bedeutung von Flash-<br />

Speicherchips als Permanentspeicher nimmt stetig<br />

zu. Dabei sinkt jedoch mit zunehmender Speicherdichte<br />

<strong>die</strong> Zuverlässigkeit der Speicherzellen, sodass<br />

<strong>ein</strong>e Co<strong>die</strong>rung zur Fehlerkorrektur <strong>ein</strong> unabdingbarer<br />

Bestandteil <strong>ein</strong>es Flash-Controllers<br />

ist. Die Anforderungen an <strong>die</strong> Fehlerkorrektur<br />

hängen dabei stark von der Flash-Technologie<br />

(Multi-Level-Cell oder Singel-Level-Cell) ab. Daher<br />

muss beim Hardware-Entwurf der Korrektur<strong>ein</strong>heit<br />

auf <strong>ein</strong>e möglichst große Flexibilität der<br />

Co<strong>die</strong>rung geachtet werden. In <strong>die</strong>sem Beitrag<br />

wird <strong>ein</strong>e Decoder-Architektur beschrieben, <strong>die</strong><br />

effizient <strong>die</strong> unterschiedlichen Ansprüche an <strong>die</strong><br />

Co<strong>die</strong>rung berücksichtigt und so <strong>ein</strong>e hohe Flexibilität<br />

und große Fehlerkorrekturfähigkeit bei <strong>ein</strong>em<br />

moderaten Flächenbedarf ermöglicht. Die beschriebene<br />

Fehlerkorrektur<strong>ein</strong>heit wurde in Verilog<br />

umgesetzt und auf <strong>ein</strong>em FPGA getestet.<br />

Schlüsselwörter—BCH-Codes, Flashspeicher, Berlekamp-Massey,<br />

flexibler Decoder.<br />

I. EINLEITUNG<br />

Seit <strong>ein</strong>igen Jahren existieren Flashspeicher auf der<br />

Basis von Single-Level-Cells (SLC), <strong>die</strong> geringe Anforderungen<br />

an <strong>die</strong> Fehlerkorrektur stellten. Zwischenzeitlich<br />

wächst <strong>die</strong> Speicherdichte durch <strong>die</strong><br />

Verkl<strong>ein</strong>erung der Strukturgröße und das Speichern<br />

mehrerer Zustände pro Speicherzelle (MLC, TLC) in<br />

den Flashspeichern an, wodurch auch <strong>die</strong> Bitfehlerraten<br />

ansteigen. Diese Fehler werden heute üblicherweise<br />

mithilfe von leistungsfähigen Codes wie Bose-<br />

Chaudhui-Hocquenghem (BCH) oder Reed-Solomon<br />

(RS) Codes [1] korrigiert. Die Fehlerkorrektureigenschaften<br />

<strong>ein</strong>es Error-Correction-Codes (ECC) muss an<br />

<strong>die</strong> Anforderungen der Anwendung und <strong>die</strong> Eigenschaften<br />

des verwendeten Flashspeichers angepasst<br />

werden.<br />

Jens Spinner, jens.spinner@htwg-konstanz.de und Jürgen Freudenberger,<br />

juergen.freudenberger@htwg-konstanz.de, sind Mitglieder<br />

der HTWG-Konstanz, Institut für Systemdynamik, Brauneggerstrasse<br />

55, 78462 Konstanz.<br />

Jens Spinner, Jürgen Freudenberger<br />

Abbildung 1: ECC-Einheit und NAND-Flash.<br />

Die ECC-Einheit ist Teil <strong>ein</strong>es Flash-Controllers, der<br />

meist noch andere Module b<strong>ein</strong>haltet, so zum Beispiel<br />

Datenschnittstellen wie USB, SATA und Verschlüsselungsalgorithmen<br />

wie AES. Die Beziehung zwischen<br />

NAND-Flash-Speichern und ECC-Unit ist<br />

Abbildung 1 zu entnehmen. Die ECC-Einheit kann<br />

weiter in Encoder und Decoder aufgegliedert werden.<br />

Der Encoder schreibt <strong>die</strong> Information in den Flashspeicher<br />

und fügt Redundanz für <strong>die</strong> Fehlerkorrektur<br />

hinzu. Beim Auslesen werden im Decoder fehlerhaft<br />

gelesene Informationen mithilfe <strong>die</strong>ser Redundanz rekonstruiert.<br />

Die Analyse <strong>ein</strong>er großen empirischen Datenbank<br />

[2] von Fehlermustern zeigt, dass Flashspeicher nur<br />

über <strong>ein</strong>e geringe Burstfehlerrate verfügen. Es kann<br />

davon ausgegangen werden, dass <strong>die</strong> Fehler unabhängig<br />

auftreten. Aus <strong>die</strong>sem Grund verwendet man als<br />

Grundlage für <strong>die</strong> Analyse den binären symmetrischen<br />

Kanal (BSC) als Kanalmodell. Auf dem BSC wird <strong>ein</strong><br />

Bit mit der Wahrsch<strong>ein</strong>lichkeit ε verändert, wobei<br />

der Übergang von <strong>ein</strong>er Eins zu <strong>ein</strong>er Null <strong>die</strong>selbe<br />

Wahrsch<strong>ein</strong>lichkeit besitzt, wie der Übergang von <strong>ein</strong>er<br />

Null zu <strong>ein</strong>er Eins. Für <strong>die</strong>sen Kanal sind BCH-<br />

Codes <strong>ein</strong>e effiziente Lösung, da <strong>die</strong>se unabhängige<br />

Bitfehler besser korrigieren als Burstfehler.<br />

Die algebraische Deco<strong>die</strong>rung von BCH-Codes kann<br />

in vier Schritte unterteilt werden, <strong>die</strong> üblicherweise in<br />

der Hardwareimplementierung in unterschiedlichen<br />

Modulen realisiert werden, siehe [3].<br />

1. Syndromwertberechnung.<br />

2. Berechnung des Fehlerstellenpolynoms.<br />

3. Evaluation des Fehlerstellenpolynoms.<br />

4. Korrektur der Fehler anhand der ermittelten<br />

Fehlerstellen.<br />

33

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!