DE19922253A1 - Kodiervorrichtung für RAID-6-Systeme und Bandlaufwerke - Google Patents
Kodiervorrichtung für RAID-6-Systeme und BandlaufwerkeInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1057—Parity-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
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.
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.
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.
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.
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
αj(αjik-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.
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-h +α3*(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.
α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
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
αc * Db-c
wobei Db-c als Permutation berechnet wird und die Multiplikation mit αc eine zy
klische Verschiebung ist.
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-2(αj*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.
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)
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)
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)
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 |
-
1998
- 1998-05-15 US US09/079,757 patent/US6148430A/en not_active Expired - Lifetime
-
1999
- 1999-05-14 DE DE19922253A patent/DE19922253A1/de not_active Ceased
- 1999-05-17 JP JP13542499A patent/JP4190658B2/ja not_active Expired - Fee Related
- 1999-05-17 GB GB9911231A patent/GB2341464B/en not_active Expired - Fee Related
Cited By (2)
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 |