DE19922253A1 - Kodiervorrichtung für RAID-6-Systeme und Bandlaufwerke - Google Patents

Kodiervorrichtung für RAID-6-Systeme und Bandlaufwerke

Info

Publication number
DE19922253A1
DE19922253A1 DE19922253A DE19922253A DE19922253A1 DE 19922253 A1 DE19922253 A1 DE 19922253A1 DE 19922253 A DE19922253 A DE 19922253A DE 19922253 A DE19922253 A DE 19922253A DE 19922253 A1 DE19922253 A1 DE 19922253A1
Authority
DE
Germany
Prior art keywords
bit
data
symbols
redundancy
shift register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
DE19922253A
Other languages
English (en)
Inventor
Lih-Jyh Weng
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Quantum Corp
Original Assignee
Quantum Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Quantum Corp filed Critical Quantum Corp
Publication of DE19922253A1 publication Critical patent/DE19922253A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1057Parity-multiple bits-RAID6, i.e. RAID 6 implementations

Abstract

Ein Kodier/Dekodier-System für RAID-6- oder Mehrspur-Band-Systeme verwendet einen Wert aus einem ausgewählten Satz von Werten für m, mit m·+1· als Primzahl und das Feld GF(2·m·), das von dem nicht zerlegbaren Polynom: DOLLAR A g(x) = x·m· + x·m-1· +...+ x·2· + x + 1 DOLLAR A erzeugt wird. Das System führt Galois-Feld-Multiplikationen als Kombination aus zyklischen Verschiebungen und Exclusiv-ODER-Operationen aus und bestimmt multiplikative Inverse von (m+1)-Bit-Symbolen mit dem Gewicht Eins, Zwei und Drei dadurch, daß verschiedene (m+1)-Bit-Symbole zu ausgewählten Potenzen von 2 erhoben werden. Bei Verwendung dieses Systems kann der Wert von m so groß wie oder größer als der Sektor oder Bandblock gewählt werden, und die Kodierung und Dekodierung wird je Sektor oder Block einmal durchgeführt.

Description

Hintergrund der Erfindung
Systeme mit mehreren, unabhängigen Platten, die mehr als eine der Platten zum Speichern von redundanten Daten verwenden, werden allgemein als RAID-6-Sy­ steme bezeichnet, wobei RAID eine Abkürzung für "redundant array of inexpen­ sive or independent disks" (redundante Anordnung von kostengünstigen oder unabhängigen Platten) ist. Bei einem System mit "k" Datenplatten und "r" redun­ danten Platten werden die Daten, die auf den r redundanten Platten aufgezeich­ net werden, dadurch erzeugt, daß die auf den k Datenplatten aufgezeichneten Daten manipuliert werden. Typischerweise sind die Daten auf den r redundanten Platten das Ergebnis einer Fehlerkorrekturkodierung der Daten auf den k Daten­ platten.
Die Daten auf den k Datenplatten liegen in der Form von Daten-Kodewörtern vor, von denen jedes Datensymbole und zugehörige Fehlerkorrekturkode-Symbole enthält. Die Fehlerkorrekturkode-Symbole werden dadurch erzeugt, daß die Da­ tensymbole in herkömmlicher Weise in Übereinstimmung mit einem Fehlerkor­ rekturkode kodierter werden. Die Sektoren auf den r redundanten Platten ent­ halten redundante Kodewörter. Die Symbole in diesen Kodewörtern werden da­ durch erzeugt, daß die entsprechenden Symbole von jeder der k Datenplatten kodiert werden. Man kann sich die Codierung so vorstellen, daß eine Abwärtsko­ dierung einer "Spalte" von k entsprechenden Symbolen erfolgt. Um hier Verwir­ rungen zu vermeiden, wird der Fehlerkorrekturkode, der verwendet wird, um die Spalte von k Symbolen zu kodieren, als "Spalten-Fehlerkorrekturkode" bezeich­ net. Typischerweise ist der Spalten-Fehlerkorrekturkode nicht der gleiche wie der Fehlerkorrekturkode, der verwendet wird, um die Daten-Kodewörter für die k Datenplatten zu erzeugen.
Die auf den r Redundanzplatten gespeicherten Symbole werden verwendet, um Fehler in den Daten-Kodewörtern zu korrigieren, die nicht dadurch korrigiert wer­ den können, daß man die in ihnen enthaltenen Fehlerkorrekturkode-Symbole verwendet. Um einen Fehler zu korrigieren, dekodiert das System entsprechend dem Spalten-Fehlerkorrekturkode die Spalte, welche das fehlerhafte Datensym­ bol enthält.
Um die Daten für die Redundanzplatten zu erzeugen, segmentiert das System die Daten, die in den k entsprechenden Sektoren gespeichert sind, in m-Bit- Symbole. Dann kodiert das System die entsprechenden m-Bit-Symbole von je­ dem der k Sektoren entsprechend dem Spalten-Fehlerkorrekturkode, um r ent­ sprechende in-Bit-Redundanz-Symbole zu erzeugen. Diese r Symbole werden jeweils in dem entsprechenden Sektor auf jeder der r Redundanzplatten aufge­ zeichnet.
Um die Zeit zu minimieren, die erforderlich ist, um die Spalten zu kodieren und zu dekodieren, würden die System-Konstrukteure gerne eine Symbolgröße wählen, das heißt einen Wert für "m", der relativ groß ist. Dies vermindert die Anzahl von großen Spalten-Kodier/Dekodiervorgängen, die pro Sektor erforderlich sind. Die Kodier- und Dekodiervorgänge erfordern eine Vielzahl von Galois-Feld-Multipli­ kationen. Bei den herkömmlichen Systemen wächst die Komplexität der Galois- Feld-Multiplikationen beträchtlich, wenn die Größe von m zunimmt. Weiterhin umfaßt jeder Dekodiervorgang die Ermittlung der multiplikativen Inversen von Elementen des Galois-Feldes GF(2m). Für große m ist der Vorgang des Auffin­ dens der multiplikativen Inversen zeitraubend und/oder erfordert eine große, 2m-1 Elemente umfassende Nachschlagetabelle. Demgemäß wird der Wert von m gemäß einem Kompromiß zwischen der Komplexität des Systems und der Ge­ samtzeit gewählt, die für das Kodieren/Dekodieren erforderlich ist.
Die Spuren eines mehrere Spuren umfassenden Bandsystems können in der gleichen Weise verwendet werden, in der die mehreren Platten bei den RAID-6- Systemen zum Einsatz kommen. Es werden dann Daten-Kodewörter auf k Spu­ ren gespeichert und die zugehörigen Redundanzsymbole werden auf den ver­ bleibenden r Spuren gespeichert. Es werden die gleichen Kodier/Dekodier-Tech­ niken für die k+r Spuren verwendet, die auch für die k+r Platten verwendet wer­ den. Demgemäß wird bei Auswahl der Größe der m-Bit-Symbole für die Spalten­ codierung der gleiche Kompromiß geschlossen.
Zusammenfassung der Erfindung
Die Erfindung ist ein Kodier/Dekodier-System für RAID-6- oder Mehrspur- Bandsysteme, das für m einen Wert aus einem ausgewählten Wertesatz ver­ wendet und Galois-Feld-Multiplikationen als Kombination aus zyklischen Ver­ schiebe- und Exklusiv-ODER-Operationen durchführt. Das System nimmt auch gewisse Multiplikativ-Invers-Operationen im wesentlichen dadurch vor, daß ver­ schiedene Elemente des Feldes in ausgewählte Potenzen von 2 erhoben wer­ den, wie dies weiter unten noch genauer erläutert wird. Bei Verwendung dieses Systems kann der Wert von m beliebig groß gewählt werden, ohne daß die Kom­ plexität der Multiplikations- oder Invers-Operationen erhöht wird, die vom System durchgeführt werden.
Das System führt die Multiplikations- und Invers-Operationen unter Verwendung von (m+1)-Bit-Symbolen durch, wobei m+1 eine Primzahl ist. Der Wert von m wird so gewählt, daß das Feld GF(2m) durch das nicht zerlegbare Polynom
g(x) = xm + xm-1 + . . . + x2 + x + 1
erzeugt werden kann.
Die Multiplikation von zwei Elementen a(x) und b(x) von GF(2m) kann so durch­ geführt werden, daß zyklisch verschobene (m+1)-Bit-Versionen des Elementes b(x) Exklusiv-ODER-Operationen unterworfen werden. Außerdem kann, wie weiter unten erläutert wird, das multiplikative Inverse eines Elementes c(x) von GF(2m) mit dem Gewicht 1, 2 oder 3 ohne weiteres dadurch bestimmt werden, daß unter Verwendung der (m+1)-Bit-Repräsentationen im wesentlichen spezi­ elle Elemente des Feldes in zugehörige Zweier-Potenzen erhoben werden. Demgemäß sind die Dekodiervorgänge weniger komplex und/oder weniger zeit­ raubend als die der dem Stand der Technik entsprechenden Systeme.
Bei Verwendung dieses Systems kann der Wert von m beispielsweise so groß wie ein Sektor der Platte oder ein Block des Bandes gewählt werden. Auf diese Weise kann die Spalten-Fehlerkorrektur-Codierung/Decodierung einmal pro Sektor oder Block durchgeführt werden.
Kurze Beschreibung der Zeichnung
Die folgende Beschreibung der Erfindung bezieht sich auf die beigefügte Zeich­ nung; in dieser zeigen:
Fig. 1A-1C zusammen eine Tabelle von ausgewählten Werten von m;
Fig. 2 ein funktionales Blockdiagramm einer Schaltung zur Erzeugung der Redundanzsymbole cr;
Fig. 3 ein funktionales Blockdiagramm einer Schaltung zur Erzeugung ei­ nes Redundanzsymbols c0;
Fig. 4 ein funktionales Blockdiagramm einer Schaltung zur Erzeugung ei­ nes Redundanzsymbols c1;
Fig. 5 ein funktionales Blockdiagramm einer bevorzugten Schaltung zur Erzeugung eines Redundanzsymbols c2 und
Fig. 6 ein funktionales Blockdiagramm eines Kodier/Dekodier-Systems das die Schaltungen der Fig. 2 bis 5 umfaßt.
Detaillierte Beschreibung eines anschaulichen Ausführungsbeispiels
Die Erfindung wird hier anhand eines mehrere Platten umfassenden Systems mit k Datenplatten und r redundanten Platten erläutert. Die Erfindung kann auch mit Mehrspur-Bandsystemen verwendet werden, die k Datenspuren und r redun­ dante Spuren aufweisen.
Bei einem herkömmlichen RAID-6-System werden die r Redundanzsymbole, die dem i-ten m-Bit-Symbol in jedem der k Sektoren, das heißt der i-ten Spalte zuge­ ordnet sind, typischerweise in der Form
c0i = i0 + i1 + i2 + . . . + ik-1
c1i = (α1*0)*i0 + (α1*1)*i1 + (α1*2)*i2 + . . . + (α1*(k-1))*ik-1
c2i = (α2*0)*i0 + (α2*1)*i1 + (α2*2)*i2 + . . . + (α2*(k-1))*ik-1
c(r-1)i = (α(r-1)*0)*i0 + (α(r-1)*1)i1 + (α(r-1)*2)*i2 + . . . + (α(r-1)*(k-1)*ik-1
erzeugt, wobei c(r-1)i das redundante Symbol für die i-te Spalte auf der r-ten red­ undanten Platte und ij das Symbol , das in der i-ten Spalte auf der j-ten Platte ge­ speichert ist, bedeuten, die Operatoren "+" und "*" die Galois-Feld-Addition und -Multiplikation bedeuten und "α" ein Element von GF(2m) ist. Somit gibt es eine Vielzahl von zeitraubenden Galois-Feld-Multiplikationen, die durchgeführt werden müssen, um die Redundanzsymbole für jede Spalte zu erzeugen.
Das System gemäß der Erfindung verwendet eines aus einer ausgewählten An­ zahl von Feldern GF(2m) und vereinfacht die Galois-Feld-Multiplikationen. Für das ausgewählte m, für das m+1 eine Primzahl ist, kann das Galois-Feld GF(2m) durch das nicht zerlegbare Polynom
g(x) = xm + xm-1 + . . . + x2 + x + 1
erzeugt werden und das Element 2 ist ein primitives Element des Feldes GF(m+1). Solche Felder werden in einer Veröffentlichung von J.K.Wolf mit dem Titel "Efficient Circuits For Multiplying In GF(2m) For Certain Values of m" disku­ tiert, die in Discrete Mathematics 106/107 (1992), Seiten 497-502 erschienen ist und deren Inhalt hier durch Bezugnahme mit aufgenommen wird. Wie unten er­ läutert, verwendet das System derartige Felder und es ist nicht erforderlich, daß das primitive Element von GF(2m) bekannt ist. Dies ist wichtig, wenn ein größeres Feld verwendet wird, weil es schwierig sein kann, das primitive Element zu be­ stimmen. Die Werte von m für m < 32987 sind in Tabelle 1 von Fig. 1 aufgelistet.
Wie in der gleichzeitig anhängigen US-Patentanmeldung mit dem Anmeldeak­ tenzeichen 08/786,894 und dem Titel "Modified Reed-Solomon Error Correction System Using (w+i+1)-Bit Representations of Symbols of GF(2w+1)" erläutert wird, können die Elemente von GF(2m) durch zwei (m+1)-Bit-Symbole a(x) und b(x) dargestellt werden, die zueinander komplementär sind. Somit gilt a(x) + b(x) = 0. Beispielsweise kann ein Element von GF(24) durch eines von zwei 5-Bit-Symbo­ len dargestellt werden:
Die (m+1)-Bit-Darstellungen der m-Bit-Symbole werden in der Weise erzeugt, daß entweder eine führende 0 oder eine führende 1 hinzugefügt und die verblei­ benden m Bit komplementiert werden. Es ist klar, daß eine der (m+1)-Bit-Dar­ stellungen ein geringeres Gewicht, das heißt weniger 1-en besitzt, als die andere (m+1)-Bit-Darstellung.
Die Multiplikation von zwei (m+1)-Bit-Symbolen kann dadurch durchgeführt wer­ den, daß man Exklusiv-ODER-Operationen auf zyklisch verschobene Kopien des einen der Symbole mit den Koeffizienten oder Bits des anderen Symbols durch­ führt. Verwendet man beispielsweise Elemente von GF(24), dann wird die Multi­ plikation der beiden Elemente a(x) und b(x), das heißt a(x) * b(x), wobei a(x) = a4a3a2a1a0 und b(x) = b4b3b2b1b0 ist, in folgender Weise berechnet:
b0 *(a4a3a2a1a0)
+b1 *(a3a2a1a0a4)
+b2 *(a2a1a0a4a3)
+b3 *(a1a0a4a3a2)
+b4 *(a0a4a3a2a1).
Wenn ein Koeffizient von b(x) eine 0 ist, dann ist das Produkt dieses Koeffizien­ ten und einer zyklisch verschobenen Version von a(x) gleich 0 und muß daher nicht berechnet werden. Somit kann die Multiplikation dadurch vereinfacht wer­ den, daß man diejenige der beiden Darstellungen von b(x) auswählt, welche das geringere Gewicht besitzt. Tatsächlich kann die Multiplikation dadurch weiter vereinfacht werden, daß man als b(x) dasjenige der beiden Symbole auswählt, welches das geringere Gewicht besitzt. Für b(x)=00101 ist beispielsweise die Multiplikation a(x)*b(x) = (a4a3a2a1a0)+(a2a1a0a4a3). Die einfachste Multiplikation ergibt sich bei einem (m+1)-Bit-Symbol b(x), das einen einzigen Koeffizienten 1 und m Koeffizienten 0 besitzt. Das Produkt ist dann eine zyklisch verschobene Version der (m+1)-Bio-Darstellung von a(x).
Die Komplexität der Multiplikation nimmt nicht zu, wenn die Größe von m steigt. Somit kann m beispielsweise so groß wie die Anzahl von Bits in einem Sektor gewählt werden. Das bedeutet, daß nur eine Spalten-Codier-Operation je Sektor ausgeführt wird.
1. Kodierung
Wie oben erläutert, werden bei einem herkömmlichen RAID-6-System die r Re­ dundanzsymbole, die dem i-ten m-Bit-Symbol in jedem der k Sektoren, das heißt der i-ten Spalte zugeordnet sind, typischerweise als
cyi = (αY*0)*i0 + (αY*1)*i1 + (αy*2)*i2 + . . . + (αY*(k-1)*ik-1
erzeugt, wobei y = 0, 1, . . ., r-1 gilt.
Das gegenwärtige System verwendet vorzugsweise einen Wert von m, der zu­ mindest so groß wie die Anzahl von Bits im Plattensektor ist. Dann erzeugt eine einzige Kodieroperation sektorgroße Symbole für die entsprechenden Sektoren auf den Redundanzplatten. Das Element α wird als 00000 . . . 10 mit m-1 füh­ renden Nullen ausgewählt. Wenn die Anzahl der Redundanzplatten kleiner oder gleich m+1 ist, sind die Potenzen von α, die in dem Satz von Gleichungen für die Redundanzsymbole benötigt werden:
α0 = 000 . . . 01
α1 = 000 . . . 10
α2 = 000 . . . 100
αm = 100 . . . 00
und die Multiplikationsoperationen sind zyklische Verschiebungen.
Wie in Fig. 2 gezeigt, wird das k-te Produkt in der Gleichung für cr in der Schal­ tung 100 r dadurch berechnet, daß die (m+1)-Bit-Darstellung der Daten aus dem entsprechenden Sektor der k-ten Platte einem (m+1)-Bit-Schieberegister 110 r zugeführt und das Symbol um "j" Bits zyklisch nach links verschoben wird, wobei gilt j=r-1, r-2, . . . 1, 0. Als nächstes wird das Produkt in dem Addierer 120 r zu den Daten von dem entsprechenden Symbol der (k-1)-ten Platte addiert. Das Schie­ beregister wird wieder um j Bits verschoben und die Daten aus dem entspre­ chenden Sektor auf der (k-2)-ten Platte werden zum Inhalt des Schieberegisters addiert, usw., um eine (m+1)-Bit-Darstellung von cr zu erzeugen.
Die Schaltung 100 0, die den Ausdruck c0 = i0 + (α0*1)i1 + (α0*2)i2 + . . . + (α0*(k-1ik-1 erzeugt, ist im einzelnen in Fig. 3 dargestellt. Die (m+1)-Bit-Darstellung der Daten aus dem Sektor auf der k-ten Platte wird dem Schieberegister 110 0 zugeführt und das Schieberegister wird um j=0 Bits verschoben. Die (m+1)-Bit-Darstellung der Sektoreninformation auf der (k-1)-ten Platte wird zum Inhalt des Schieberegisters im Addierer 120 0 addiert, der die Addier-Teilschaltungen 121 0 - 121 m umfaßt, welche die entsprechenden Bits kombinieren; das Schieberegister enthält dann den Ausdruck
0*1) * ik-1 + ik-2
Das Schieberegister wird wieder um j=0 Bits verschoben und die (m+1)-Bit-Dar­ stellung der Daten aus dem entsprechenden Sektor auf der (k-2)-ten Platte wird dann zum Inhalt des Schieberegisters addiert. Das Schieberegister enthält dann den Ausdruck
α0((α0*1)ik-1 + ik-2) + ik-3
oder
0*2)ik-1 + (α0)ik-2 + ik-3
Das Schieberegister wird erneut um j=0 Bits verschoben und die (m+1)-Bit- Darstellung der Daten in dem entsprechenden Sektor der (k-3)-ten Platte wird zum Inhalt des Schieberegisters addiert. Das Schieberegister enthält dann
α0((α0*2)ik-1 + (α0*1)ik-2 + ik-3) + ik-4
oder
0*3)ik-1 + (α0*2)ik-2 + (α0)ik-3 + ik-4
usw., bis die Daten aus den entsprechenden Sektoren auf den übrigen Daten­ platten in das Schieberegister addiert worden sind. Das Register enthält dann das (m+1)-Bit-Redundanzsymbol c0.
Die (m+1)-Bit-Darstellung des Redundanzsymbols c0 wird dann in einem Kon­ verter 130 in ein m-Bit-Symbol konvertiert. Der Konverter 130 verknüpft über eine Exklusiv-ODER-Operation das führende Bit der (m+1)-Bit-Darstellung mit jedem der verbleibenden m Bits. Wenn das führende Bit eine 0 ist, bleiben die übrigen m Bits unverändert und die Operation erzeugt das gleiche Ergebnis, wie es durch ein Ignorieren des führenden Bits entsteht. Wenn das führende Bit eine 1 ist, dann komplementiert die Exklusiv-ODER-Operation die m Bits und danach wird das führende Bit ignoriert.
Die (m+1)-Bit-Darstellungen der Sektordaten sind der Inhalt des Sektors mit ei­ nem hinzugefügten führenden 0-Bit. Demgemäß können die m Bits, die aus dem Sektor gelesen werden, direkt an die geeigneten Stellen des Schieberegisters angelegt werden, ohne daß ein gesonderter Umwandlungsschritt der m Bits in die (m+1)-Bit-Darstellung erforderlich ist.
Wie in Fig. 4 gezeigt, umfaßt die Schaltung 100 1 zur Erzeugung von c1 in ähnli­ cher Weise ein Schieberegister 110 1 und einen Addierer 120 1. Die Daten aus dem Sektor auf der k-ten Datenplatte werden an das Schieberegister angelegt, das Register wird um j=1 Bit verschoben und die Daten aus dem entsprechenden Sektor auf der (k-1)-ten Platte werden zum Inhalt des Schieberegisters addiert. Das nullte Bit des (k-1)-ten Symbols kombiniert mit dem m-ten Bit des k-ten Symbols, das erste Bit des (k-1)-ten Symbols kombiniert mit dem nullten Bit des k-ten Symbols usw., um den Ausdruck
αjik-1 + ik-2
zu erzeugen. Der Inhalt des Schieberegisters 110 1 wird dann um j=1 Bits ver­ schoben, und die Daten aus dem entsprechenden Sektor der (k-2)-ten Daten­ platte werden zum Inhalt des Schieberegisters addiert, um den Ausdruck
αjjik-1 + ik-2 + ik-3
oder
j*2)ik-1 + (αj*1)ik-2 + ik-3
usw. zu erzeugen. Nachdem die Daten von allen k Platten in das Schieberegister addiert worden sind, wird der Inhalt an den Konverter 130 angelegt. Der Konver­ ter konvertiert das (m+1)-Bit-Symbol in das m-Bit-Symbol c1.
Der Rückkopplungspfad für das Schieberegister 110 j für j<1 kann so aufgebaut sein, daß es die j-Bit-Verschiebung in einem einzigen Taktzyklus ausführt. Auf diese Weise führt eine einzige Verschiebeoperation die Bit-Manipulation durch, die geeignet ist, den Inhalt des Schieberegisters mit αj zu multiplizieren. Somit können die Redundanzsymbole c0 . . . cr-1 parallel in der gleichen Anzahl von Takt­ zyklen erzeugt werden.
Wie man der Fig. 5 entnimmt, umfaßt die Schaltung zur Erzeugung von c2 ein Schieberegister 110 2, dessen Rückkopplungspfad so aufgebaut ist, daß in einem Taktzyklus die Ergebnisse einer zyklischen 2-Bit-Verschiebung erzeugt werden. Das Schieberegister 110 2 führt das m-te Bit von der Stelle 112 m zur Stelle 112 1, das Bit m-1 von der Stelle 112 m-1 zur Stelle 112 0, und die verbleibenden Bits m-2, . . . 0, jeweils von den Stellen 112 m-2, . . ., 112 0 zu den Stellen 112 m, . . ., 112 2. Die Bits vom entsprechenden Sektor auf der (k-1)-ten Platte werden dann zum Inhalt des Schieberegisters so addiert, daß das nullte Bit des (k-1)-ten Sektors mit dem (m-1)-ten Bit des k-ten Sektors, das erste Bit des (k-1)-ten Sektors mit dem m-ten Bit des k-ten Sektors, das zweite Bit des (k-1)-ten Sektors mit dem nullten Bit des k-ten Sektors kombiniert und so weiter. Das Schieberegister enthält dann den Ausdruck
αjik-1 + ik-2
wobei j=2 ist. Der Inhalt des Schieberegisters wird dann in geeigneter Weise zu­ rückgeführt, um den Inhalt mit αj zu multiplizieren, was das gleiche wie ein zykli­ sches Verschieben des (m+1)-Bit-Inhalts um j Bits nach links ist. Auch werden die Daten aus dem entsprechenden Sektor der (k-2)-ten Datenplatte in das Regi­ ster addiert, usw., bis die Daten aus dem entsprechenden Sektor einer jeden Datenplatte in das Schieberegister addiert worden sind. Der Inhalt des Schiebe­ registers wird dann an den Konverter 130 angelegt, der das m-Bit-Redundanz­ symbol c2 erzeugt.
Die Schaltungen für c3, c4, . . ., cr sind vorzugsweise in ähnlicher Weise mit Rückkopplungspfaden aufgebaut, die, wie oben erläutert, die erforderlichen j-Bit- Verschiebungen in einem einzigen Taktzyklus erzeugen.
2. Dekodierung
Wie erläutert, korrigiert das System Fehler, die detektiert werden, aber nicht unter Verwendung der Fehlerkorrekturkode-Symbole in den Daten-Kodewörtern korri­ giert werden können. Demgemäß sind die Fehlerstellen bekannt. Wie weiter un­ ten noch mehr im Detail unter Bezugnahme auf Fig. 6 erläutert wird, umfaßt das Korrigieren eines einzelnen oder mehrerer Fehler unter Verwendung des gegen­ wärtigen Systems im allgemeinen das Auffinden der Inversen der Elemente mit dem Gewicht Eins, Zwei oder Drei.
Ein GF(2m)-Element mit dem Gewicht Eins, das heißt ein Element mit einem ein­ zigen von 0 verschiedenen Koeffizienten entspricht (m+1)-Bit-Darstellungen, die entweder eine einzige Eins und m Nullen oder eine einzige Null und m Einsen umfassen. Für ein Element αi = 000 . . . 01 . . . 00, das seinen einzigen 1- Koeffizienten im i-ten Bit besitzt, ist das multiplikative Inverse α-i das Element, das dann, wenn es mit αi multipliziert wird, den Ausdruck α0 = 1 ergibt.
Das Symbol α0 ist das gleiche wie das (m+1)-Bit-Symbol αm+1. Bei der Verwen­ dung der (m+1)-Bit-Darstellungen ist das multiplikative Inverse von αi das Ele­ ment, das zyklisch den i-ten Koeffizienten von αi zur (m+1)-ten Position ver­ schiebt. Das Inverse ist somit αm+1-i. Für m = 4 hat das Symbol α2 = 00100 ein multiplikatives Inverses α5-2 = α3 Somit gilt α2 * α3 = α5 = α0. Die Multiplikation von α2 mit α3 wird durch eine zyklische Verschiebung um 3 Bits nach links bewerk­ stelligt.
Für Elemente mit einem Gewicht von Zwei, das heißt mit zwei Koeffizienten, die Einsen sind, und mit m-1 Koeffizienten, die Nullen sind, wird das multiplikative Inverse aus dem Inversen von
0000 . . . 0011 = α1 + α0
bestimmt. Das multiplikative Inverse dieses Symbols ist das Symbol 0101 . . . 1010:
0000 . . . 0011 * 0101 . . . 1010 =
0101. . .1010 + 1010 . . . 0100 =
1111. . .1110 oder 0000 . . . 0001.
Das Inverse ist somit das Symbol αm-1 + αm-3 + αm-5 + α3 + α1; und defi­ niert man dieses Symbol als δ, so ergibt sich
δ *1 + α0) = α0.
Erhebt man die Summe α1 + α0 zu Potenzen von Zwei, so erhält man
1 + α0)20 = α20 + α0 = α1 + α0
1 + α0)21 = α21 + α0 = α2 + α0
1 + α0)22 = α22 + α0 = α4 + α0
. . .
1 + α0)2m = α2m + α0 = α2m + α0
Wenn 2 ein primitives Element von GF(m+1) ist, dann kann 2i modulo (m+1) je­ der Wert zwischen 1 und m sein, und daher kann jedes Element αt + α0 als (α1 + α0)t geschrieben werden, wobei t für einen Wert von 0 ≦ n ≦ m gleich 2n ist. Das In­ verse von (α1 + α0)t ist:
[(α1 + α0)t]-1 = [α1 + α0]t*(-1) = δt
oder
m-1)t + . . . + ( a3)t + (α1)t
wobei die Exponenten modulo m+1 sind. Bei der Verwendung von (m+1)-Bit- Symbolen wird das Erheben von δ zu einer Potenz von Zwei als eine Permuta­ tion der Bits des (m+1)-Bit-Symbols durchgeführt. Der Koeffizient des i-ten Bits, das heißt xi des zur Potenz t = 2n erhobenen δ ist x2n*i)modm+1.
Um das Inverse irgend eines Elementes A = αh + αv mit einem Gewicht von Zwei zu bestimmen, wobei h < v ist, verwendet das System den Ausdruck σ = α0 + αv-h mit αh * σ = A. Das Inverse von σ ist dann:
σ-1 = [α0 + αv-h]-1
oder
σv-h = α1*(v-h3*(v-h) + . . . + α(m-3)*(v-h) + αm-1*(v-h)
und
A-1 = (αh *σ)-1 = (αh)-1 *σ-1
Das Element αh hat das Gewicht Eins und somit gilt
A-1 = (αm+1-h) * δv-h
Die Größe δv-h wird als Permutation berechnet und das Produkt ist eine zyklische Verschiebung der permutierten Bits um (m+1-h) Bits nach links.
Beispielsweise gilt dann, wenn m = 4 und A = 10100 oder α2 + α4 ist, mit h = 2 und v = 4
σ = α0 + α(4-2) = α0 + α2
und
σ-1 = δ2
oder
α1*2 + α3*2 = α2 + α6(mod 5) = α2 + α1
und
A-1 = (α5-2) *2 + α1 =
α3 *2 + α1) =
α0 + α4 = 10001.
Um zu überprüfen, daß es sich hierbei um ein multiplikatives Inverses handelt, kann man berechnen:
A * A-1 = 10100 * 10001 =
10100 + 01010 = 11110 = 00001
Für Elemente mit einem Gewicht Drei verwendet das System eine m-1 Elemente umfassende Nachschlagetabelle der Inversen der Elemente in der Form 000 . . . 000111, 000 . . . 001011, 000 . . . 010011 usw. Um das Inverse irgend eines Elementes A mit dem Gewicht Drei zu finden, wobei A = αa + αb + αc und a < b < c ist, multipliziert das System zunächst A mit α-c, das heißt α(m+1-c), um den Aus­ druck
A * α-c = αa' + αb' + 1 = γ
zu bilden, wobei a' = a-c und b' = b-c ist. Dies ist das gleiche wie
γ = (αa'' + α1 + 1)b'
wobei a'' * b' = a' oder a' = a'/b'(mod m+1) gilt.
Als nächstes wird das Inverse von αa'' + α1 + 1 aus der Nachschlagetabelle ent­ nommen. Das Inverse ist ein Element D, und das Inverse von γ ist Db'. Das In­ verse von A ist dann:
αc * Db' =
αc * Db-c
wobei Db-c als Permutation berechnet wird und die Multiplikation mit αc eine zy­ klische Verschiebung ist.
3. Das System
Wie man der Fig. 6 entnimmt, kodiert ein Kodierer 610 entsprechende Sektoren von k Datenplatten 612, um r Redundanzsektoren für die Aufzeichnung auf r Redundanzplatten 614 zu erzeugen. Der Kodierer verwendet die oben unter Be­ zugnahme auf die Fig. 2 bis 5 erläuterten Schaltungen 100 r, um die Redundanz­ symbole c0, c1 . . ., cr-1 zu erzeugen.
Ein Dekoder 620 und ein Fehlerkorrekturprozessor 630 korrigieren Fehler in den auf den k Datenplatten gespeicherten Daten. Die Fehler werden auf herkömmli­ che Weise unter Verwendung der Fehlerkorrekturkodesymbole detektiert, die auf den Datenplatten gespeichert sind.
Der Dekoder 620 dekodiert eine Spalte abwärts unter Verwendung von (m+1)- Bit-Darstellungen der fehlerfreien m-Bit-Sektoren und von m+1 Nullen für die fehlerhaften Sektoren. Die fehlerhaften Sektoren werden somit für die Spaltende­ kodierung nicht gelesen. Wenn q fehlerhafte Sektoren vorhanden sind, wobei q einen oder mehrere der redundanten Sektoren umfassen kann, löst das System einen Satz von q linearen Gleichungen, um die fehlerhafte Information zurückzu­ gewinnen.
Der Dekoder verwendet die Schaltungen 100 r, um die Redundanzsymbole cr als c'r zu reproduzieren, wobei
c'r = i'0 + (αr*1)i'1 + . . . + αr*k-1i'k-1
gilt, und i'i, mit irgend einer der Zahlen i = 0, 1, . . ., k-1, die fehlerfreien Daten, die von der i-ten Datenplatte gelesen wurden, darstellt oder völlig aus Nullen besteht, wenn die Daten Fehler enthalten. Der Dekoder ist in herkömmlicher Weise ein Syndromgenerator 621, der Syndrome Sj mit j = 0, 1, . . ., r-1 erzeugt, die den fehlerfreien Redundanzplatten entsprechen.
Um einen einzelnen Fehler zu korrigieren, ist das Syndrom
Sj = (αj)p *i'p
wobei i'p das zur p-ten Platte gehörende Fehlermuster ist. Der Fehlerwert wird vom Fehlerwert-Prozessor 622 wiedergewonnen, der die Gleichung
i'p = Sj *jp)-1
löst. Da αj das Gewicht Eins besitzt, hat αjp das Gewicht Eins und αjp)-1 ist (αm+1-jp), wie oben erläutert. Der Prozessor bestimmt somit ohne weiteres das multiplikati­ ve Inverse unter Verwendung des Gewicht-Eins-Subprozessors 624 und multi­ pliziert das Inverse mit Sj durch eine zyklische Verschiebung.
Um Doppelfehler zu korrigieren sind die Syndrome:
Sj = (αj)p * i'p + (αj)q i'q
Sj+1 = (αj+1)p * i'p + (αj+1)q i'q
wobei i'q das zur q-ten Platte gehörende Fehlermuster ist. Die Fehlerwerte wer­ den dann bestimmt als
Der Denominator ist die Summe von zwei Produkten von Potenzen von α, das heißt αa + αb. Die Summe hat das Gewicht Null wenn a = b ist, und das Gewicht Zwei, wenn a ≠ b ist. Für Denominatoren mit dem Gewicht Zwei kann das Inverse von αa + αb durch den Gewicht-Zwei-Subprozessor 625 ohne weiteres bestimmt werden, wie dies oben erläutert wurde.
Um mehr als zwei Fehler zu korrigieren, verwendet das System Syndrome, die konsekutiven, redundanten Platten entsprechen. Um den Satz von Gleichungen zu lösen, bestimmt das System die Inverse der Determinante
oder
wobei J = [(αj*e0 *j*e1 )* . . . *j*e2 )] gilt und V die allgemein bekannte Vander­ monde-Determinante ist.
Der Wert der Vandermonde-Determinante ist gleich dem Produkt der Ausdrücke (αca + αcb ) für alle e0 ≦ a ≦ ez-1 und e1 ≦ b ≦ ez. Somit ist der Wert der Determinante D das Inverse von
J * (ac0 + αe1 ) *e0 + αe2 ) * . . . *ez-1 + αez )
welches das Produkt von Inversen der Faktoren ist.
Der Faktor J ist ein Produkt einer Folge von Potenzen von α mit dem Gewicht Eins und somit ist J eine Potenz von α mit dem Gewicht Eins. Das Inverse von J kann ohne weiteres als αm+1-j ermittelt werden. Jeder der Faktoren der Vander­ monde-Determinante hat das Gewicht Zwei und ihre Inversen werden ohne wei­ teres von dem Gewicht-Zwei-Subprozessor 625 bestimmt, wie dies oben erläutert wurde.
Die Determinante JV ist der Denominator, der verwendet wird, um die Lösung für die Fehlerwerte zu finden, welche bestimmt werden durch:
wobei Detj die Determinante D ist, bei der die j-te Spalte durch die geeigneten Syndrome ersetzt wurde. Die Determinante Detj ist somit gleich der Summe der Ausdrücke
a + αb)*Sj
wobei jedes Produkt als die Summe von zwei zyklisch verschobenen Versionen von Sj berechnet wird.
Wenn keine ausreichende Anzahl von aufeinanderfolgenden, fehlerfreien, redun­ danten Platten vorhanden ist, um z aufeinanderfolgende Syndrome zu erzeugen, dann ist die Determinante im Denominator keine Vandermonde-Determinante. Die erzeugten Faktoren können somit Gewichte größer als Zwei besitzen. Für Faktoren mit dem Gewicht Drei bestimmt ein Gewicht-Drei-Subprozessor 626 die Inversen, wie dies oben beschrieben worden ist. Für Ausdrücke mit Gewichten größer als Drei verwendet ein Gewicht < 3-Subprozessor 627 den Euklidischen Algorithmus um iterativ den Ausdruck a(x)*b(x) + q(x)*(xm + xm+1+ . . . + x + 1) zu lösen, wobei b(x) das Inverse ist.
Das System kann statt dessen einen nicht-primitiven Reed-Solomon-Kode für den Spalten-Fehlerkorrekturkode verwenden, und der Spaltenkodierer und -De­ kodierer können eine gemeinsam genutzte Hardware sein, wie dies in einer Ver­ öffentlichung von Fettweis und Hassner mit dem Titel "A Combined Reed-Solo­ mon Encoder und Syndrom Generator With Small Hardware Complexity", Proceedings of the 1992 IEEE International Symposium On Circuits and Sy­ stems, San Diego, Kalifornien, 10 bis 13 Mai 1993, Seiten 1871-1874 beschrie­ ben wird, die durch Bezugnahme hier mit aufgenommen wird. Beispielsweise können die Kodierer und Dekodierer gemeinsam genutzte Multiplizierer, Schiebe­ register und Addierer sein. Wenn ein nicht-primitiver Reed-Solomon-Kode ver­ wendet wird, dann gibt es eine maximale Gesamtzahl m von Platten, das heißt k + r ≦ m.
Ein nicht-primitiver Reed-Solomon-Kode hat ein erzeugendes Polynom
g(x) = (x + α0)(x + α1) . . . (x + αt)
das t+1 aufeinanderfolgende Wurzeln besitzt. Mit dem nicht-primitiven Reed-So­ lomon-Kode werden die Syndrome auf der Basis der von sämtlichen Platten und nicht nur den Datenplatten wiedergewonnen Symbole bestimmt. Somit sind die Syndrome
Sj = i'0 + (αj*1)i'1 + . . . + (αj*k+r-2)i'k+r-2j*k+r-1)i'k+r-1
Für j = 0, 1, . . ., t.
Für jede Zahl von Fehlern z ≦ r stehen immer r aufeinanderfolgende Syndrome zur Verfügung. Tatsächlich können die ersten z Syndrome verwendet werden. Die Determinante, für die eine Inverse benötigt wird, um die Lösung für die Fehler­ werte zu finden, ist somit die Vandermonde-Determinante. Demgemäß wird, wie oben erläutert, die Inverse für die Determinante ohne weiteres dadurch gefun­ den, daß die Inversen der Faktoren αa + αb miteinander multipliziert werden, von denen jeder das Gewicht Zwei besitzt. Die Berechnungen zur Bestimmung der Fehlerwerte sind im wesentlichen die gleichen für jede Zahl von Fehlern. Dem­ gemäß kann das System ohne weiteres bis zu r Fehler korrigieren, ohne daß das Inverse irgend eines Elementes mit einem Gewicht größer als Zwei gefunden werden muß.
Das oben beschriebene System kodiert Spalten von m-Bit-Symbolen als (m+1)- Bit Symbole, wobei m so gewählt werden kann, daß es ebenso groß oder größer ist als die Anzahl von Bits in einem Plattensektor oder einem Bandblock. Mit be­ kannten, dem Stand der Technik entsprechenden Systemen zur Spaltenkodie­ rung wird die Verwendung derart großer m-Bit-Symbole im wesentlichen durch die Komplexität der erforderlichen Galois-Feld-Multiplizierer und der Schaltkreise zum Auffinden der multiplikativen Inversen in GF(2m) verhindert. Das gegenwär­ tige System vereinfacht diese Operationen und kann deshalb im wesentlichen beliebig große Werte von m verwenden. Wie oben erläutert, wird der Wert von m aus der Tabelle von Fig. 1 ausgewählt, die, wenn erforderlich, so erweitert wer­ den kann, daß sie größere Werte für m umfaßt.
Die vorausgehende Beschreibung war auf eine spezielle Ausführungsform der Erfindung beschränkt. Es ist jedoch klar, daß Variationen und Modifikationen, wie z. B. die Verwendung von verschiedenen Konfigurationen von Schieberegistern zur Durchführung der zyklischen Verschiebevorgänge, zur Durchführung von verschiedenen Vorgängen in der Software, Hardware oder Firmware oder die Kombination von verschiedenen, nur einem einzigen Zweck dienenden Prozes­ soren zu einem oder mehreren Mehrzweck-Prozessoren im Zusammenhang mit der Erfindung durchgeführt werden können, um einige oder alle ihrer Vorteile zu nutzen. Daher ist es ein Ziel der beigefügten Ansprüche, alle diese Variationen und Modifikationen abzudecken, soweit sie unter den tatsächlichen Gedanken und Umfang der Erfindung fallen.

Claims (15)

1. System zum Kodieren von m-Bit-Datensymbolen von k Datenplatten zur Erzeugung von m-Bit-Redundanzsymbolen für r Redundanzplatten durch das Kodieren entspre­ chender Symbole von jeder der k Datenplatten, wobei das System folgende Be­ standteile umfaßt:
  • A. Einrichtungen zum Empfangen von Daten von entsprechenden Sektoren der k Datenplatten,
  • B. Kodiereinrichtungen zur Erzeugung von (m+1)-Bit-Redundanzsymbolen nach der Gleichung
    Cy = αy*(k-1)ik-1 + αy*(k-2)ik-2 + . . . + αy*(1)i1 + i0
    wobei gilt y = 0, 1, . . . r-1 und wobei ij die Daten von der j-ten Datenplatte darstellt und α eine (m+1)-Bit-Darstellung eines Elementes von GF(2m) ist, mit m+1 als Primzahl, und wobei diese Einrichtungen für jedes cy folgendes umfassen:
    • i. ein Schieberegister zur Durchführung der Multiplikationen als zyklische y-Bit- Verschiebungen, und
    • ii. einen Addierer, der dazu dient, zum Inhalt des Schieberegisters die entspre­ chenden Daten von einer nächsten Datenplatte zu addieren,
  • C. Konvertiereinrichtungen, die dazu dienen, die (m+1)-Bit-Redundanzsymbole in m- Bit-Redundanzsymbole zu konvertieren, und
  • D. Einrichtungen, die dazu dienen, die m-Bit Redundanzsymbole in entsprechenden Sektoren der r Redundanzplatten zu speichern.
2. System nach Anspruch 1, bei dem die Kodiereinrichtung m-Bit-Sektoren kodiert.
3. System nach Anspruch 1, bei dem das Schieberegister ein (m+1)-Bit-Schieberegister ist das einen Rückkopplungspfad umfaßt, der bei einer einzigen Verschiebung die Er­ gebnisse einer zyklischen y-Bit-Verschiebung erzeugt.
4. Eine System zum Kodieren von m-Bit-Datensymbolen von k Spuren eines Bandes mit k+r Spuren zur Erzeugung von m-Bit-Redundanzsymbolen für r Redundanzspuren durch Kodieren entsprechender Symbole von jeder der k Datenspuren, wobei das Sy­ stem folgende Bestandteile umfaßt:
  • A. Einrichtungen zum Empfangen der Daten von entsprechenden Blöcken von den k Datenspuren,
  • B. Kodiereinrichtungen zur Erzeugung von (m+1)-Bit-Redundanzsymbolen nach der Gleichung
    Cy = αy*(k-1)ik-1 + αy*(k--2))ik-2 + . . . + αy*(1)i1 + i0
    wobei gilt y = 0, 1, . . . r-1 und wobei die Daten von der j-ten Datenspur darstellt und α eine (m+1)-Bit-Darstellung eines Elementes von GF(2m) ist, mit m+1 als Primzahl, und wobei diese Einrichtungen für jedes cy folgendes umfassen:
    • i. ein Schieberegister zur Durchführung der Multiplikationen als zyklische y-Bit- Verschiebungen, und
    • ii. einen Addierer, der dazu dient, zum Inhalt des Schieberegisters die entspre­ chenden Daten von einer nächsten Datenspur zu addieren,
  • C. Konvertiereinrichtungen, die dazu dienen, die (m+1)-Bit-Redundanzsymbole in m- Bit-Redundanzsymbole zu konvertieren, und
  • D. Einrichtungen, die dazu dienen, die m-Bit Redundanzsymbole in entsprechenden Blöcken der r Redundanzspuren zu speichern.
5. System nach Anspruch 4, bei dem die Kodiereinrichtungen m-Bit-Blöcke kodieren.
6. System nach Anspruch 4, bei dem das Schieberegister ein (m+1)-Bit-Schieberegister ist, das einen Rückkopplungspfad umfaßt, der mit einer einzigen Verschiebung die Ergebnisse einer zyklischen y-Bit-Verschiebung erzeugt.
7. Dekoder zum Korrigieren von Fehlern in entsprechenden Sektoren von k Datenplatten unter Verwendung von Redundanzsymbolen, die in entsprechenden Sektoren auf r Redundanzplatten gespeichert sind, wobei der Dekoder folgende Bestandteile um­ faßt:
A Einrichtungen zum Empfangen von Daten von den k Datenplatten,
  • B. Dekodiereinrichtungen zur Erzeugung von (m+1)-Bit-Redundanzsymbolen nach der Gleichung
    Cy = αy*(k-1)ik-1 + αy*(k-2))ik-2 + . . . + αy*(1)i1+ i0
    mit y = 0, 1, . . ., r-1, wobei ij die fehlerfreien Daten von der j-ten Datenplatte be­ deutet, oder dann, wenn die Daten auf der j-ten Datenplatte fehlerhaft sind, nur aus Nullen besteht und α eine (m+1)-Bit-Darstellung eines Elementes von GF(2m) ist, mit m+1 als Primzahl, wobei diese Einrichtungen für jedes cr folgendes umfas­ sen:
    • i. ein Schieberegister zur Durchführung der Multiplikationen als zyklische y-Bit- Verschiebungen, und
    • ii. einen Addierer zum Addieren der Daten von der nächsten Datenplatte zum In­ halt des Schieberegisters,
  • C. einen Syndromgenerator zur Erzeugung von Syndromen Sj, Sj+1, . . ., Sj+z-1, wobei z die Anzahl der Platten ist, welche fehlerhafte Daten enthalten, wobei der Syn­ dromgenerator den Ausdruck
    Sj = (αj)e0 *i'e0 + (αj)e1 *i'e1 + . . . + (αj)ez *i'ez
    erzeugt, mit j = 0, 1, . . . r-1 wobei i'ez das zur z-ten fehlerhaften Platte gehörende Fehlermuster und Sj das zur j-ten Redundanzplatte gehörende Syndrom ist,
  • D. Einrichtungen zum Ermitteln der zu den Syndromen gehörenden Fehlerwerte, wo­ bei diese Einrichtungen Mittel umfassen, die dazu dienen, die multiplikativen In­ versen von (m+1)-Bit-Symbolen (αj)p mit dem Gewicht Eins als αm+1-jp zu ermitteln,
  • E. Konvertiereinrichtungen, die dazu dienen, den (m+1)-Bit-Fehlerwert in einen m- Bit-Fehlerwert zu konvertieren, und
  • F. Einrichtungen zum Korrigieren der fehlerhaften m-Bit-Symbole unter Verwendung des m-Bit-Fehlerwertes.
8. Dekoder nach Anspruch 7, bei dem die Einrichtungen zum Bestimmen der Fehler­ werte weiterhin Mittel umfassen, die dazu dienen, multiplikative Inverse von A = αh + αv zu ermitteln, wobei es sich um ein (m+1)-Bit-Symbol mit dem Gewicht Zwei han­ delt, mit A-1 = (αm+1-h)*δv-h, wobei δ gleich αm-1 + αm-3 + . . . + α3 + α1 ist.
9. Dekoder nach Anspruch 8, bei dem die Mittel zum Bestimmen der Fehlerwerte Mittel umfassen, die dazu dienen, multiplikative Inverse von A = αa + αb + αc zu ermitteln, wobei es sich um ein (m+1)-Bit-Symbol mit dem Gewicht Drei handelt, mit αc *Db-c, wobei D das Inverse von αa'' + α + 1 ist, und a'' = (a-c)/(b-c) gilt.
10. Dekoder nach Anspruch 9, bei dem die Einrichtungen zum Bestimmen der Fehler­ werte weiterhin eine m-1 Elemente umfassende Tabelle der multiplikativen Inversen von (m+1)-Bit-Symbolen mit dem Gewicht Drei in der Form . . . 1 . . . 0011 und Mittel zum Zugreifen auf die Tabelle zur Bestimmung des Symbols D umfassen.
11. Dekoder zum Korrigieren von Fehlern in entsprechenden Blöcken von k Datenspuren eines Mehrspur-Bandsystems unter Verwendung von Redundanzymbolen, die in entsprechenden Blöcken auf r Redundanzspuren gespeichert sind, wobei der Deko­ der folgende Bestandteile umfaßt:
  • A. Einrichtungen zum Empfangen von Daten von den k Datenspuren,
  • B. Dekodiereinrichtungen zur Erzeugung von (m+1)-Bit-Redundanzsymbolen nach der Gleichung
    Cy = αy*(k-1)ik-1 + αy*(k-2)ik-2 + . . . + αy*(1)i1 + i0
    mit y = 0, 1, . . . r-1, wobei die fehlerfreien Daten von der j-ten Datenspur bedeu­ tet, oder dann, wenn die Daten auf der j-ten Datenspur fehlerhaft sind, nur aus Nullen besteht und α eine (m+1)-Bit-Darstellung eines Elementes von GF(2m) ist, mit m+1 als Primzahl, wobei diese Einrichtungen für jedes cr folgendes umfassen:
    • i. ein Schieberegister zur Durchführung der Multiplikationen als zyklische y-Bit- Verschiebungen, und
    • ii. einen Addierer zum Addieren der Daten von der nächsten Datenspur zum In­ halt des Schieberegisters,
  • C. einen Syndromgenerator zur Erzeugung von Syndromen Sj, Sj+1,. . ., Sj+z-1, wobei z die Anzahl der Spuren ist, welche fehlerhafte Daten enthalten, wobei der Syn­ dromgenerator den Ausdruck
    Sj = (αj)e0 *i'e0 + (αj)e1 *i'e1 + . . . + (αj)ez *i'ez
    erzeugt, mit j = 0, 1, . . . r-1 wobei i'ez das zur z-ten fehlerhaften Spur gehörende Fehlermuster und Sj das zur j-ten Redundanzspur gehörende Syndrom ist,
  • D. Einrichtungen zum Ermitteln der zu den Syndromen gehörenden Fehlerwerte, wo­ bei diese Einrichtungen Mittel umfassen, die dazu dienen, die multiplikativen In­ versen von (m+1)-Bit-Symbolen (αj)p mit dem Gewicht Eins als αm+1-jp zu ermitteln,
  • E. Konvertiereinrichtungen, die dazu dienen, den (m+1)-Bit-Fehlerwert in einen m- Bit-Fehlerwert zu konvertieren, und
  • F. Einrichtungen zum Korrigieren der fehlerhaften m-Bit-Symbole unter Verwendung des m-Bit-Fehlerwertes.
12. Dekoder nach Anspruch 11, bei dem die Einrichtungen zum Bestimmen der Fehler­ werte weiterhin Mittel umfassen, die dazu dienen, multiplikative Inverse von A = αh + αv zu ermitteln, wobei es sich um ein (m+1)-Bit-Symbol mit dem Gewicht Zwei han­ delt, mit A-1 = (αm+1-h)*δv-h, wobei δ gleich αm-1 + αm-3 + . . . + α3 + α1 ist.
13. Dekoder nach Anspruch 12, bei dem die Mittel zum Bestimmen der Fehlerwerte Mittel umfassen, die dazu dienen, multiplikative Inverse von A = αa + αb + αc zu ermitteln, wobei es sich um ein (m+1)-Bit-Symbol mit dem Gewicht Drei handelt, mit αc * Db-c, wobei D das Inverse von αa'' + α + 1 ist, und a'' = (a-c)/(b-c) gilt.
14. Dekoder nach Anspruch 13, bei dem die Einrichtungen zum Bestimmen der Fehler­ werte weiterhin eine m-1 Elemente umfassende Tabelle der multiplikativen Inversen von (m+1)-Bit-Symbolen mit dem Gewicht Drei in der Form . . . 1 . . . 0011 und Mittel zum Zugreifen auf die Tabelle zur Bestimmung des Symbols D umfassen.
DE19922253A 1998-05-15 1999-05-14 Kodiervorrichtung für RAID-6-Systeme und Bandlaufwerke Ceased DE19922253A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/079,757 US6148430A (en) 1998-05-15 1998-05-15 Encoding apparatus for RAID-6 system and tape drives

Publications (1)

Publication Number Publication Date
DE19922253A1 true DE19922253A1 (de) 1999-12-09

Family

ID=22152614

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19922253A Ceased DE19922253A1 (de) 1998-05-15 1999-05-14 Kodiervorrichtung für RAID-6-Systeme und Bandlaufwerke

Country Status (4)

Country Link
US (1) US6148430A (de)
JP (1) JP4190658B2 (de)
DE (1) DE19922253A1 (de)
GB (1) GB2341464B (de)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE202014004625U1 (de) 2014-06-10 2015-09-15 Viprinet Europe Gmbh Router zur Bündelung mehrerer Internetzugangsmedien mit Vorwärtsfehlerkorrektur
DE202014007214U1 (de) 2014-09-10 2015-12-16 Viprinet Europe Gmbh Vorrichtung zur Bündelung mehrerer Internetzugangsmedien mit Vorwärtsfehlerkorrektur

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6148430A (en) * 1998-05-15 2000-11-14 Quantum Corporation Encoding apparatus for RAID-6 system and tape drives
US6769088B1 (en) * 1999-06-30 2004-07-27 Maxtor Corporation Sector-coding technique for reduced read-after-write operations
US6701336B1 (en) * 1999-11-12 2004-03-02 Maxtor Corporation Shared galois field multiplier
US6370616B1 (en) * 2000-04-04 2002-04-09 Compaq Computer Corporation Memory interface controller for datum raid operations with a datum multiplier
US6567891B2 (en) * 2001-03-14 2003-05-20 Hewlett-Packard Development Company, L.P. Methods and arrangements for improved stripe-based processing
US6748488B2 (en) * 2001-09-28 2004-06-08 Sun Microsystems, Inc. Storage array having multiple erasure correction and sub-stripe writing
US6823425B2 (en) * 2001-10-23 2004-11-23 Ivivity, Inc. System and method for implementing advanced RAID using a set of unique matrices as coefficients
US6848022B2 (en) * 2002-10-02 2005-01-25 Adaptec, Inc. Disk array fault tolerant method and system using two-dimensional parity
US7188270B1 (en) 2002-11-21 2007-03-06 Adaptec, Inc. Method and system for a disk fault tolerance in a disk array using rotating parity
US7093159B1 (en) 2002-12-12 2006-08-15 Adaptec, Inc. Method and system for four disk fault tolerance in a disk array
US7062604B1 (en) 2003-02-12 2006-06-13 Adaptec, Inc. Method and system for five-disk fault tolerance in a disk array
US7350126B2 (en) * 2003-06-23 2008-03-25 International Business Machines Corporation Method for constructing erasure correcting codes whose implementation requires only exclusive ORs
US7149847B2 (en) * 2003-06-26 2006-12-12 Adaptec, Inc. RAID 6 disk array architectures
US7103716B1 (en) 2003-06-26 2006-09-05 Adaptec, Inc. RAID 6 disk array with prime number minus one disks
JP4288486B2 (ja) * 2003-11-17 2009-07-01 日本電気株式会社 ディスクアレイ装置,raid用パリティデータ生成回路およびガロア体乗算回路
US7392458B2 (en) * 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for enhanced error identification with disk array parity checking
EP1681770A1 (de) * 2005-01-18 2006-07-19 Koninklijke Philips Electronics N.V. Fehlerkorrekturkode
TWI285313B (en) * 2005-06-22 2007-08-11 Accusys Inc XOR circuit, RAID device capable of recover a plurality of failures and method thereof
JP4935367B2 (ja) * 2007-01-19 2012-05-23 富士通株式会社 Raid装置及びガロア体の積演算処理方法
JP4905161B2 (ja) * 2007-01-31 2012-03-28 富士通株式会社 Raid装置及びガロア体を用いたデータ復元装置
US8589637B2 (en) * 2009-10-30 2013-11-19 Cleversafe, Inc. Concurrent set storage in distributed storage network
US8612680B1 (en) * 2010-06-30 2013-12-17 Emc Corporation Data caching system and method
US11531647B2 (en) 2019-01-31 2022-12-20 Qatar Foundation For Education, Science And Community Development Data storage methods and systems
US11748197B2 (en) 2019-01-31 2023-09-05 Qatar Foundation For Education, Science And Community Development Data storage methods and systems

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4796110A (en) * 1986-02-18 1989-01-03 Irwin Magnetic Systems, Inc. System and method for encoding and storing digital information on magnetic tape
US4782490A (en) * 1987-03-16 1988-11-01 Cythera Corporation Method and a system for multiple error detection and correction
US5185746A (en) * 1989-04-14 1993-02-09 Mitsubishi Denki Kabushiki Kaisha Optical recording system with error correction and data recording distributed across multiple disk drives
US5579475A (en) * 1991-02-11 1996-11-26 International Business Machines Corporation Method and means for encoding and rebuilding the data contents of up to two unavailable DASDS in a DASD array using simple non-recursive diagonal and row parity
US5333143A (en) * 1991-08-29 1994-07-26 International Business Machines Corporation Method and means for b-adjacent coding and rebuilding data from up to two unavailable DASDS in a DASD array
US5379305A (en) * 1992-07-20 1995-01-03 Digital Equipment Corporation Error correction system with selectable error correction capabilities
US5499253A (en) * 1994-01-05 1996-03-12 Digital Equipment Corporation System and method for calculating RAID 6 check codes
US5642367A (en) * 1994-02-07 1997-06-24 Mitsubishi Semiconductor America, Inc. Finite field polynomial processing module for error control coding
US5822336A (en) * 1996-11-14 1998-10-13 Quantum Corporation Modified reed solomon code selection and encoding system
US5948117A (en) * 1997-01-23 1999-09-07 Quantum Corporation Modified Reed-Solomon error correction system using (W+i+1)-bit representations of symbols of GF(2w+i)
US5901158A (en) * 1997-04-22 1999-05-04 Quantum Corporation Error correction encoder/decoder
US5889794A (en) * 1997-09-30 1999-03-30 Quantum Corporation Two-level error correction encoder
US5978956A (en) * 1997-12-03 1999-11-02 Quantum Corporation Five-error correction system
US6044389A (en) * 1997-12-29 2000-03-28 Quantum Corporation System for computing the multiplicative inverse of a field element for galois fields without using tables
US6148430A (en) * 1998-05-15 2000-11-14 Quantum Corporation Encoding apparatus for RAID-6 system and tape drives

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE202014004625U1 (de) 2014-06-10 2015-09-15 Viprinet Europe Gmbh Router zur Bündelung mehrerer Internetzugangsmedien mit Vorwärtsfehlerkorrektur
DE202014007214U1 (de) 2014-09-10 2015-12-16 Viprinet Europe Gmbh Vorrichtung zur Bündelung mehrerer Internetzugangsmedien mit Vorwärtsfehlerkorrektur

Also Published As

Publication number Publication date
GB2341464B (en) 2002-11-13
US6148430A (en) 2000-11-14
JP2000047833A (ja) 2000-02-18
JP4190658B2 (ja) 2008-12-03
GB9911231D0 (en) 1999-07-14
GB2341464A (en) 2000-03-15

Similar Documents

Publication Publication Date Title
DE19922253A1 (de) Kodiervorrichtung für RAID-6-Systeme und Bandlaufwerke
DE112011101116B4 (de) Two-Level BCH-Codes für Solid-State-Speichereinheiten
DE10133595B4 (de) Pufferschaltung, Speicherzugriffsverfahren und Reed-Solomon-Decoder
US4512020A (en) Data processing device for processing multiple-symbol data-words based on a symbol-correcting code and having multiple operating modes
DE102011085602B4 (de) Vorrichtung und Verfahren zum Korrigieren zumindest eines Bitfehlers in einer codierten Bitsequenz
DE3231956A1 (de) Anordnung zum uebertragen von binaerdaten ueber eine vielzahl von kanaelen mit hilfe eines faltungscodes
DE4241903C2 (de) Euklidische wechselseitige Divisionsschaltung
DE102007038114A1 (de) Fehlerkorrekturschaltung, Halbleiterspeicherelement und Fehlerkorrekturverfahren
DE2657825A1 (de) Schaltungsanordnung zur multiplikation beliebiger feldelemente in einem galois-feld gf (2 hoch m )
DE2106314B2 (de) Anordnung zur Fehlererkennung und -korrektur in einem aus b Bits bestehenden Byte eines K Datenbytes enthaltenden Datenblocks
DE102017125617B4 (de) Bestimmung und Verwendung von Bytefehlerpostionssignalen
DE2704627B2 (de) Anordnung zur Fehlerkorrektur von binärer Information
DE102005022107B9 (de) Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge
DE4140018A1 (de) Verfahren und schaltungsanordnung zum decodieren von rs-codierten datensignalen
DE102018131613A1 (de) Fehlererkennung mittels Gruppenfehler
DE102006005817B4 (de) Fehlererkennungsvorrichtung für einen Adressdecoder und Vorrichtung zur Fehlererkennung für einen Adressdecoder
DE4105860A1 (de) Schaltungsanordnung zum erkennen und korrigieren von fehlern in datenworten
DE3506440A1 (de) Digitale multiplizierschaltung
DE602004008150T2 (de) Datenfehlerkorrektur mittels Redundanzblöcke
DE69837784T2 (de) Verbessertes fünf-fehler-korrektursystem
DE102004006528A1 (de) Fehlerfassung und Korrektur in einer geschichteten dreidimensionalen Speicherarchitektur
DE3702697C2 (de)
DE19963687B4 (de) Modulations-Codierer und -Decodierer
DE102021109391B3 (de) Multibytefehler-Erkennung
DE19962766A1 (de) Verbessertes kombiniertes System zur Erzeugung von Fehlerkorrektur-Codesymbolen und Fehler-Syndromen

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8128 New person/name/address of the agent

Representative=s name: STROHSCHAENK UND KOLLEGEN, 85521 OTTOBRUNN

R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final

Effective date: 20130122