[Geben Sie hier die Überschrift ein] - MPC
[Geben Sie hier die Überschrift ein] - MPC
[Geben Sie hier die Überschrift ein] - MPC
- TAGS
- mpc.belwue.de
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