DE69229753T2 - Sofortige Fehlerkorrektur mit eingebettetem digitalen Steuerungsgerät - Google Patents
Sofortige Fehlerkorrektur mit eingebettetem digitalen SteuerungsgerätInfo
- Publication number
- DE69229753T2 DE69229753T2 DE69229753T DE69229753T DE69229753T2 DE 69229753 T2 DE69229753 T2 DE 69229753T2 DE 69229753 T DE69229753 T DE 69229753T DE 69229753 T DE69229753 T DE 69229753T DE 69229753 T2 DE69229753 T2 DE 69229753T2
- Authority
- DE
- Germany
- Prior art keywords
- data
- syndrome
- error correction
- byte
- error
- 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.)
- Expired - Fee Related
Links
- 238000012937 correction Methods 0.000 title claims description 156
- 208000011580 syndromic disease Diseases 0.000 claims description 157
- 238000000034 method Methods 0.000 claims description 72
- 238000001514 detection method Methods 0.000 claims description 53
- 230000008569 process Effects 0.000 claims description 45
- 238000013500 data storage Methods 0.000 claims description 28
- 238000012546 transfer Methods 0.000 claims description 20
- 238000011084 recovery Methods 0.000 claims description 18
- 230000006870 function Effects 0.000 claims description 10
- 230000000694 effects Effects 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 2
- 238000012544 monitoring process Methods 0.000 claims 5
- 208000029545 Linear nevus sebaceus syndrome Diseases 0.000 claims 1
- 208000020038 linear nevus sebaceous syndrome Diseases 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 8
- 230000000630 rising effect Effects 0.000 description 8
- 238000012163 sequencing technique Methods 0.000 description 5
- 239000010409 thin film Substances 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000004907 flux Effects 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- HCDMJFOHIXMBOV-UHFFFAOYSA-N 3-(2,6-difluoro-3,5-dimethoxyphenyl)-1-ethyl-8-(morpholin-4-ylmethyl)-4,7-dihydropyrrolo[4,5]pyrido[1,2-d]pyrimidin-2-one Chemical compound C=1C2=C3N(CC)C(=O)N(C=4C(=C(OC)C=C(OC)C=4F)F)CC3=CN=C2NC=1CN1CCOCC1 HCDMJFOHIXMBOV-UHFFFAOYSA-N 0.000 description 1
- 101100422771 Caenorhabditis elegans sup-9 gene Proteins 0.000 description 1
- 101000797623 Homo sapiens Protein AMBP Proteins 0.000 description 1
- 102100032859 Protein AMBP Human genes 0.000 description 1
- 101100225106 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) EDC2 gene Proteins 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 206010000210 abortion Diseases 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 229920002457 flexible plastic Polymers 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/18—Error detection or correction; Testing, e.g. of drop-outs
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/18—Error detection or correction; Testing, e.g. of drop-outs
- G11B20/1833—Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Signal Processing (AREA)
- Algebra (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
Description
- Die vorliegende Erfindung betrifft Verfahren und Vorrichtungen zur Ermittlung und Korrektur von Bytefehlern in einem Datenstrom, insbesondere Verfahren und Vorrichtungen zur Ermittlung und Korrektur von Bytefehlern in Datenblöcken, wie Datenblöcken, die in einem rotierenden Plattendatenspeicher-Teilsystem von einer Speicheroberfläche gelesen werden, wobei das Teilsystem eine programmierte, digitale Steuereinrichtung umfaßt.
- Fehlerkorrekturtechniken sind in digitalen Datenverarbeitungssystemen bekannt, einschließlich Speichereinrichtungen, wie Plattenlaufwerks-Datenspeicher-Teilsysteme und Bandlaufwerks-Datenspeicher-Teilsysteme, und in digitalen Datenkommunikationssystemen bekannt. Es wird eine Methodik ausgewählt und implementiert, welche aus im wesentlichen angrenzenden Blöcken, Sätzen oder Teilsätzen eines digitalen Datenstroms Syndrominformation erzeugt. "Angrenzend bzw. zusammenhängend" bedeutet, daß die Blöcke unmittelbar in einer nach dem anderen auftreten, wobei ein minimales Intervall oder eine Zeitüberlappung oder eine Trennung zwischen den Blöcken ausgebildet sind. Die Syndrominformation wird typischerweise in einem Datenschreib- oder Datenübertragungsprozeß an den Block, den Satz oder den Teilsatz an einem Kodiererende angehangen. Bei einem Datenlese- oder Datenempfangsprozeß wird die empfangene Fehlerkorrektur-Syndrominformation, die im folgenden als "Rest" bezeichnet wird, aus dem empfangenen Datenblock erhalten und mit Null verglichen. Wenn irgendwelche Restwerte oder -bytes existieren, die von Null verschieden sind, wird bestimmt, daß ein Fehler vorhanden ist. In Abhängigkeit von der Natur und dem Umfang der angehängten Syndrominformation, ist es möglich, ein oder mehrere Fehlerbündel in dem Datenblock zu ermitteln und zu korrigieren.
- Ein Fehlerbündel ist eine Folge von benachbarten Bitpositionen bzw. Bitstellen, welche fehlerhaft sind. Ein einzelnes Fehlerbündel ist eine Erscheinung einer solchen fehlerhaften Bitposition innerhalb eines Datenblocks und kann sich über die Verschachtelungen hiervon erstrecken. Ein doppeltes Fehlerbündel sind zwei getrennte Erscheinungen, beispielsweise innerhalb eines Datenblocks. Fehlerkorrektursysteme und -strategien werden typischerweise sowohl nach ihrer Fähigkeit einzelne und doppelte Fehlerbündel zu lokalisieren und zu korrigieren als auch nach der Ausführungsgeschwindigkeit und einer niedrigen Wahrscheinlichkeit für fehlerhafte Korrekturen von Fehlerbündeln mittels der Fehlerkorrekturstrategie beurteilt.
- Bei Lösungen nach dem Stand der Technik wird ein Syndromwandler typischerweise als ein Schieberegister mit Abgriffeinrichtungen und externen Vervielfacherelementen implementiert. Bei einer externen Ausbildung kombiniert ein Summierer Vervielfacherterme aus dem Schieberegister mit dem eingehenden Datenstrom, um das Syndrom zu erzeugen. In dem US- Patent 4,730,321 von Machado wird eine interne Ausbildung genutzt, bei der das Schieberegister einen Summierknoten umfaßt, um die gemeinsame Nutzung der logischen Bauelemente zu ermöglichen, wodurch die Anzahl der Strukturelemente minimiert wird, die notwendig sind, um die Fehlerkorrekturhardware zu implementieren.
- Viele Fehlerkorrektur-Kodeschemata, die in Plattenlaufwerken angewendet werden, wenden ein Galois-Feld von einem Bit [GF(2¹)] an. Bei einer 1-Bit-Implementieung sind die Vervielfacherterme deshalb entweder vorhanden oder nicht vorhanden, und der Summierknoten ist als ein EXOR-Glied implementiert. Verschiedene frühere Implementierungen nutzten eine Galois-Feld-Bytebasis (d. h., acht Bits pro Symbol). Dieses wurde in dem zitierten US-Patent 4,730,321 von Machado getan. Bei diesen früheren Lösungen empfängt der Syndromerzeuger acht Bits und gibt acht Bits aus. Das zitierte Patent von Machado wendet ein Galois-Feld an, in welchem der einfache Element-Alpha¹-Term = 2B (Hex) ist, um die Anzahl der Glieder zu reduzieren, die für die Implementierung der Syndromerzeuger-Schaltung benötigt werden.
- EP-A-0 340 139 offenbart ein System, in dem Syndrome, für Mehrfach-Bit-Zeichen von Nachrichtenblöcken berechnet und akkumuliert werden und an den zugehörigen Nachrichtenblock angehängt oder mit diesem verkettet werden. Anschließend werden dieses Syndrome auf Werte ungleich Null überprüft, um zu bestimmen, ob ein Fehler vorhanden ist.
- Das allgemeine Problem der klassischen Fehlerkorrekturlösung besteht für Bit-Eingang zu Bit-Ausgang oder Byte-Eingang/Byte-Ausgang darin, daß der Systemdatenstrom während des Intervalls abgebrochen werden muß, daß notwendig ist, um den Ort zu bestimmen, und das Fehlerbündel innerhalb des Blocks zu korrigieren, welcher als der Block mit dem Fehler be stimmt wurde, wenn ein oder mehrere Fehler innerhalb eines speziellen Blocks ermittelt wurden.
- Insbesondere in einem Plattenlaufwerks-Datenspeicher-Teilsystem trifft man jetzt eine oder mehrere programmierte, monolytische, digitale Mikrocontrollereinrichtungen an. Diese Mikrocontrollerelemente sind bei der Ausführung von Operationen und Berechnungen leistungsfähig, die angewendet werden, um Datenwandlerkopfpositionierung, Spurfolgeoperationen, und Übertragungen von Daten, Befehlen und Zustandswerten mit dem Host-Computersystem auf Bedarfsbasis zu überwachen.
- Weil Fehler und folglich Fehlerkorrekturprozesse in gut entworfenen und hergestellten Plattenlaufwerken relativ selten auftreten, wird die Berechnungsleistung der Mikrocontrollereinrichtung am besten an die Aufgabe der Ausführung der Fehlerlokalisierungs- und Fehlerkorrekturoperationen auf einer Bedarfs- und Unterbrechungsbasis angepaßt. Beispielsweise endet das Lesen von folgenden Blöcken während des Fehlerlokalisierungs- und Fehlerkorrekturprozesses, wenn Datenblöcke von der Plattenoberfläche gelesen werden. Wie im Fall des genannten Patents von Machado erhält die Plattenlaufwerks- Mikrocontrollereinrichtung den ECC-Rest für den Datenblock mit dem Fehler, nachdem der Datenstrom abgebrochen ist. Die Mikrocontrollereinrichtung berechnet dann basierend auf dem Rest Werte zur Lokalisierung und Korrektur des Fehlers. Fehlerhafte Datenwerte werden dann durch korrigierte Datenwerte ersetzt, die in dem Datenblock in einem Pufferspeicher eingefügt sind. Nach der Korrektur kann der Datenblock an den Host-Computer gesendet werden. Zu diesem Zeitpunkt kann es dem Datenstrom erlaubt werden, seinen Fluß von Datenblöcken wieder aufzunehmen.
- Zusammenfassend führen die bekannten Lösungen, ob Bit-basiert oder Byte-basiert, drei gemeinsame Funktionen aus: Sie lesen die eingehenden Daten und vergleichen die wiedergewonnenen Restwerte mit Null. Wenn ein Fehler existiert, wird der Datenstrom abgebrochen. Danach kann eine Wiederholung ausgeführt werden, beispielsweise mittels des Wiederlesens der Daten und des Wiedersendens der Daten durch den Syndromgenerator, um zu versuchen, sich nicht wiederholende oder "Soft"-Fehler zu eliminieren. Wenn dieses nicht funktioniert, d. h. ein "Hard"-Datenfehler ist vorhanden, wird eine Fehlerkorrekturoperation ausgeführt. Wenn festgestellt wird, das die Operation erfolgreich ist, wird der Datenstrom danach erneut initiiert. Wenn der Fehler nicht korrigierbar ist, wird eine Fehlermeldung an das Host- Computersystem oder das Kommunikationssystem gesendet, und der Datentransferprozeß wird unbestimmt gestoppt.
- Es existieren mehrere bekannte Bemühungen, um eine sehr schnelle Fehlerkorrektur auszuführen. Eine Architektur, von der angenommen wird, daß sie in einen speziellen Hardwarechip mit vielen tausend Gliedern ausgeführt wird, ist in dem US-Patent 4,782,490 von Tenengolts beschrieben.
- Während Tenengolts eine Ausführung beschreibt, die Hardware und Firmware anwendet, um Hochgeschwindigkeits-Fehlerkorrekturtechniken zu implementieren, ist keine praktische Beschreibung für die Implementierung einer sofortigen Fehlerkorrektur offenbart. Beispielsweise wird bei der "Fehlererfassungs"-Ausführung nach Fig. 8 des Tenengolt-Patents dasselbe Schieberegister, welches zur Ermittlung der Fehler benutzt wurde, auch benutzt, nachdem ein Fehler für den Fehlererfassungsprozeß ermittelt wurde, wodurch die Verfügbarkeit des Schieberegisters für den nächsten Block eingehender Daten in Echtzeit nicht möglich ist.
- Der Ausdruck "fliegend" bedeutet in der hier verwendeten Form einen Fehlerkorrekturprozeß, welcher mit einer minimalen Datenflußunterbrechung ausgeführt wird und welcher nicht eine oder mehrere Plattendrehwartezeiten (Umdrehungen) zur Ausführung des Korrekturprozesses verlangt. Um ECC "fliegend" auszuführen, ist es notwendig, die Datenfehler zu ermitteln und zu korrigieren, und dieses in einer Art und Weise zu tun, die den Fluß von Datenblöcken während einer typischen Übertragung von mehreren Blöcken nicht stoppt. Gewöhnlich wurden diese zwei Anforderungen konzeptionell zusammengefaßt. Tatsächliche gelangten die Erfinder zu der Erkenntnis, daß diese zwei Anforderungen getrennte und trennbare Aspekte des Gesamtproblems der Fehlerkorrektur sind.
- In einer Hardware-Implementierung der Fehlerkorrektur ist typischerweise ein Syndromerzeuger vorgesehen. Dieser Syndromerzeuger arbeitet nach einem Datenstrom fliegend, um in der Lage zu sein, ein ECC-Syndrom für jeden vorbestimmten Datenblock zu erzeugen. Nachdem das Syndrom erzeugt ist, wird es typischerweise während des Aufzeichnungs-/ECC- Kodierungsprozesses an das Ende des Datenblocks angehangen.
- Wie in dem genannten Patent von Machado offenbart, kann die Syndrom-Erzeugerschaltung während des Zurücklesens der Datenblöcke von der Speicheroberfläche auch als eine Rest- Wiedergewinnungsschaltung genutzt werden. Die Syndrom-Restbytes, die während des Zurücklesens des Datenblocks oder des Teilsatzes, welche beispielsweise von der Plattenoberfläche kommen, wiedererzeugt werden, werden mit Hilfe eines Hardware-Komparators mit Null verglichen. Wenn die Rest-Bytes ungleich Null sind, ist in dem zurückgelesenen Datenblock oder einer Verschachtelung hiervon ein Fehler vorhanden. Bei der Lösung nach dem Patent von Machado wird der Datenstrom dann gestoppt, und die Rest-Bytes, welche in dem Syndromerzeuger-Schieberegistern gehalten werden, werden dann über eine Busstruktur der Mikrocontrollereinrichtung zugeführt. Die Mikrocontrollereinrichtung führt Firmware- Routinen aus, um den oder die Fehler zu lokalisieren und zu korrigieren. Obwohl die bekannte Lösung nach dem Patent von Machado die digitale Platinen-Mikrocontrollereinrichtung anwendet, um die Fehlerkorrekturprozesse auszuführen, geschieht dies nicht fliegend. Die Ermittlung jedes Fehlers verursacht das Anhalten des Datenflusses.
- Ein anderer typischer Lösungsansatz zur Ausführung einer fliegenden Fehlerkorrektur sieht einen oder mehrere zugeordnete Hardware-Prozessoren vor, deren Aufgabe es ist, die Korrektur der Fehler zu berechnen und korrigierte Daten für fehlerhafte Daten in eine oder mehrere entsprechende Positionen des Datenblocks einzufügen, welcher der Korrektur ausgesetzt ist. Mit den zugeordneten Hardware-Prozessoren ist typischerweise ein zugeordneter FIFO- oder Pufferspeicher verbunden, typischerweise vier Kilobits Speicherkapazität (512 Bytes bei 8 Bits pro Byte).
- Ein Beispiel für eine auf Hardware basierende ECC-Architektur ist in dem genannten US- Patent 4,782,490 von Tenengolt offenbart. Im besten Fall schafft Tenengolt eine sehr allgemeine Lösung zur Fehlerkorrektur und zum Crosschecken in Verbindung mit Fig. 2. Eine fliegende Fehlerkorrektur wird weder erwähnt noch diskutiert. In Verbindung mit der Ausführung nach Fig. 8 wird das den Bündelfehler ermittelnde Syndrom jedoch durch die Schiftregister der ursprünglichen ECC-Wiedergewinnungsschaltung verschoben, bis der Fehler lokalisiert ist. Die Anzahl serieller Verschiebungen, die notwendig ist, bis Null-Wert-Restbytes zusammentreffen, wird gezählt. Dieser Zählwert liefert dann die Fehlerbündel-Stelle, während Restbytes, die den Null-Byte-Restbytes unmittelbar folgen, eine Basis zur Bestimmung der korrigierten Datenwerte liefern, die in den Datenstrom einzufügen sind. Während Tenengolt das Takten des ECC-Schieberegisters mit einer vierfachen Taktrate vorschlägt, um die Ausführung "einer einzelnen Bündelkorrektur in der Aufzeichnungsübertragungszeit" zu ermöglichen (Tenengolt, Spalte 15, Zeilen 47-48), ist nicht klar, wie ein solches Verfahren es den nächsten angrenzenden Datenblöcken ermöglichen würde, in Echtzeit durch die Schieberegister geführt zu werden (d. h. fliegend), ohne daß beträchtliche Abstände zwischen den Datenblöcken existieren, oder es wurde tatsächlich eine Blockübertragungsverzögerung in den Datenstrom mit einem FIFO-Blockpuffer programmiert, etc. Tenengolts Lösungsansatz nach Fig. 2 wird als sehr schnell bezeichnet, ist zugegebener Maßen auch komplex. Die Lösung nach Fig. 8 ist langsamer, jedoch ausreichend schnell, obwohl der Dekodierprozeß in Firmware implementiert sein soll. Während eine Firmware-Implementierung erwähnt ist, sind keine Einzelheiten, wie eine Firmware-Kodeliste in dem Patent von Tenengolt offenbart. Das Tenengolt-Patent offenbart auch ein Crosschecken und eine ID-Feld (Kopfsatz)- Fehlerermittlungstechnik innerhalb der Grenzen der beispielsweise in Fig. 2 offenbarten Hardware-Implementierung.
- Eine andere Hochgeschwindigkeits-ECC-Architektur, die zugeordnete Parallelprozessoren umfaßt, die in der Pipeline-Art arbeiten, um Zwischenschritt-Übertragungen zu vermeiden, ist in dem US-Patent 4,567,594 von Deodhar offenbart.
- Die in dem US-Patent von Deodhar beschriebenen Technik teilt den Reed-Solomon- Dekodierprozeß in eine Folge von Schritten, welche mit Hilfe der zugeordneten Pipelineprozessoren mit einem Minimum von Zwischenschritt-Parameterübertragungen ausgeführt wird.
- Eine besser aufgeklärte bekannte Lösung zur Fehlerkorrektur nutzt den Datenblockpuffer, der mit der Datensteuerfunktion verbunden ist. Diese Lösung nutzt einen DMA-Kanal, um auf einen Datenblockpuffer zuzugreifen und diesen zu steuern. Die ECC-Hardware erzeugt eine DMA-Anforderung an den Blockpuffer, um hierdurch Zugriff auf die fehlerhaften Datenzellen zu erhalten, welche zu korrigieren sind. Diese Lösung nutzt den Vorteil der Nutzung des bereits bestehenden Datenblock-Pufferspeichers für den Fehlerkorrekturprozess. Dies ist der Prozeß, welchem in dem US-Patent 4,730,321 von Machado gefolgt wird. Diese bekannte Lösung erreichte jedoch keine "fliegende" Fehlerkorrektur.
- Über die Unfähigkeit, eine einzelne Bündelfehlerkorrektur fliegend auszuführen, ergibt sich ein weiterer Nachteil, der in dem genannten Patent von Machado beschriebenen Lösung aus der Wahrscheinlichkeit der Falschermittlung und folglichen Falschkorrektur von Daten in der Doppelbündel-Korrekturbetriebsart, so daß dessen Nützlichkeit für die Einzelbündel- Korrektur wesentlich begrenzt. Während das Auftreten zufälliger Fehler innerhalb der Korrekturfähigkeit eines speziellen Reed-Solomon-Fehlerkorrekturalgorithmus zu einer Falschkorrektur-Wahrscheinlichkeit von Null führt, wenn die Anzahl der zufälligen Fehler die Korrekturfähigkeit übersteigt, wird die Falschkorrektur-Wahrscheinlichkeit sehr hoch, etwa 0,233. Dieses bedeutet, daß fast 1/4 der Fehler, die statistisch über der Korrekturfähigkeit auftreten, falsch ermittelt und falsch korrigiert wird. Bekannte Techniken, welche angewendet wurden, um die Falschermittlungs-Wahrscheinlichkeit zu reduzieren, umfassen Crosschecks, wie Summenprüfungen in dem Datenblock. Solche Crosschecks sind jedoch nicht sehr wirkungsvoll und sind nicht in der Lage, daß Hin- und Herschieben oder die Unordnung von Datenwerten innerhalb des Datenblocks zu ermitteln.
- Eine allgemeine Aufgabe der Erfindung ist es, eine "fliegende" Fehlerkorrektur von Datenblöcken innerhalb einer Folge von Datenblöcken mittels einer betreibbaren Kombination einer reduzierten Hardware-ECC-Syndromerzeugerschaltung, die einen Restlatch umfaßt, einer integrierten, digitalen Mikrocontrollereinrichtung und einem Blockpuffer derart zu schaffen, daß die Grenzen und Nachteile des Standes der Technik überwunden werden.
- Eine andere allgemeine Aufgabe der Erfindung ist es, eine praktische, hardware-minimierte Implementierung einer "fliegenden" Fehelrkorrektur innerhalb eines digitalen Datensystems zu schaffen, in welchem die Korrekturprozesse im wesentlichen in einer laufwerksresidenten Firmware ausgeführt werden, die nach Bedarf mittels eines integrierten Mikrocontrollereinrichtungs-Überwachers als eine Hintergrundoperation und ohne Unterbrechung des Datenflusses ausgeführt wird.
- Eine weitere allgemeine Aufgabe der Erfindung ist es, eine ECC-Restsyndrom- Wiedergewinnungsschaltung zu schaffen, welche einen Latch zum getrennten Speichern eines ECC-Syndromrests umfaßt, der von Null verschieden ist, wodurch eine fliegende Fehlerkorrektur ermöglicht ist, die durch eine Mikrocontrollereinrichtung und einen Blockpufferspeicher ausgeführt wird, ohne den Fluß von Datenblöcken innerhalb des digitalen Datensystems anzuhalten.
- Eine weitere allgemeine Aufgabe der Erfindung ist es, ein Reed-Solomon-Crosscheck- Polynom zur Nutzung zu schaffen, um die Korrektheit der Fehlerbündel in einem Datenblock mittels eines Reed-Solomon-Fehlerkorrektur-Polynoms zu prüfen, wobei das Crosscheck- Polynom und das Fehlerkorrektur-Polynom auf einem Galois-Feld basieren, in welchem ein Basiselement-Alpha¹-Term ungleich 02 (Hex) ist.
- Eine spezielle Aufgabe der Erfindung ist es, ein Reed-Solomon-Crosscheck-Polynom zu schaffen, welches ein Basiselement-Alpha¹-Term anwendet, das einen 2B(Hex)-Wert aufweist.
- Eine spezielle Aufgabe der Erfindung ist es, innerhalb eines Plattenlaufwerks-Datenspeicher- Teilsystems ein Fliegend-Fehlerkorrektursystem zu schaffen, welches einen Überwachungsmikroprozessor umfaßt, der den Fehlerort und die Fehlerwerte innerhalb der Fehlerbündel bestimmt, die als eine Hintergrundoperation aus zwischengespeicherten, von Null verschiedenen Syndrom-Restbytes bestimmt werden, wobei gewöhnlich keine Unterbrechung des Flusses der Datenblöcke von der Platte an das Host-Computersystem notwendig ist.
- Es ist weiterhin Aufgabe der Erfindung, eine Fehlerkorrekturmethode zu schaffen, welche ein fliegendes Crosschecken umfaßt, um die Korrigierbarkeit zu bestimmen, und hierdurch die Wahrscheinlichkeit für Fehlkorrekturen eines ermittelten Fehlerbündels in einem Datenblock zu vermindern.
- Es ist eine weitere Aufgabe der Erfindung, eine hardware-minimierte Fehlerkorrektur- /Fehlerermittlungs-Syndromerzeuger-Vorrichtung zu schaffen, welche minimal modifiziert werden kann, um entweder Zwei-Byte- oder Dei-Byte-Echtzeitfehlerermittlung für Datenblock-ID-Felder (Kopfsätze) als auch Wiedergewinnungsreste zur Fehlerkorrektur der Datenblöcke ausführen kann.
- Eine weitere spezifische Aufgabe der Erfindung ist es, ein ID-Feld-Fehlerermittlungsverfahren und eine ID-Feld-Fehlerermittlungsvorrichtung zu schaffen, die auf einem Reed- Solomon basiert und die ein Galois-Feld-Erzeugerpolynom mit nicht-aufeinanderfolgenden Wurzeln anwendet, um die Hardware-Anforderungen zu minimieren, ohne Kompromisse hinsichtlich der Integrität des Fehlerermittlungsprozesses zu machen.
- Eine spezielle Aufgabe der Erfindung ist es, Verfahren und eine Struktur zum Ausführen eines Crosschecks des Fehlerkorrekturprozesses zu schaffen, wobei der Umfang der zusätzlichen, zur Ausführung des Crosschecks notwendigen Hardware minimiert werden soll.
- Eine weitere spezifische Aufgabe der Erfindung ist es, einen Datenblock-ID-Feld- Fehlerermittlungsprozeß zu schaffen, welcher dieselben Vervielfacherterme anwendet, die in einem Fehlerkorrekturprozeß für die identifizierten Datenblöcke angewendet werden, wodurch für die ID-Feld-Fehlerermittlungs- und die Datenblock-Fehlerkorrektur-Prozesse gemeinsame Vervielfacher-Schaltungstechnik genutzt werden kann.
- Eine weitere spezifische Aufgabe der Erfindung ist es, ein optimiertes, flexibles Hardware/Firmware-System zu schaffen, welches die Fehlerkorrektur und das Crosschecken der Datenblöcke und die Fehlerermittlung der ID-Felder in Echtzeit und ohne Unterbrechung des Datenflusses ausführt, wenigstens im Fall einzelner Bündelfehler.
- Nach einem Aspekt der Erfindung ist eine Reed-Solomon-Fehlerkorrektur-Vorrichtung mit den Merkmalen des Anspruchs 1 geschaffen.
- Nach einem weiteren Aspekt der Erfindung ist ein fliegendes bzw. sofortiges Fehlerkorrektur-Verfahren mit den Merkmalen des Anspruchs 17 vorgesehen.
- Diese und andere Aufgaben, Aspekte, Vorteile und Merkmale der Erfindung ergeben sich für den Fachmann aus der Betrachtung der folgenden, detaillierten Beschreibung einer bevorzugten Ausführungsform in Verbindung mit den zugehörigen Figuren. Hierbei zeigen:
- Fig. 1: eine schematische Graphik eines 512-Byte-Datenfeldes zur Nutzung mit den erfindungsgemäßen Verfahren und Vorrichtungen, wobei das Datenfeld in drei Verschachtelungen angeordnet ist, und wobei an dieses zwei Crosscheck- Bytes und 12 Fehlerkorrektur-Bytes anghängt wurden;
- Fig. 2: eine Datenoberfläche einer sich drehenden Datenspeicherplatte in Draufsicht, wobei acht Datenzonen der Spuren Z1 bis Z8 dargestellt sind, wobei jede Spur eine andere Datentransferübertragungsrate und eine andere Benutzerdatenspeicherkapazität aufweist, und wobei gemeinsam ausgerichtete Servosektoren S sich über die Datenspeicheroberfläche hinweg erstrecken;
- Fig. 3A: eine schematische Graphik eines Daten-ID-Feldes für einen Datensektor nach Fig. 2, wobei ein Drei-Byte-Fehlerermittlungskode angewendet ist;
- Fig. 3B: eine schematische Graphik eines Datensektor-ID-Feldes, das keine Zählinformation enthält, und deshalb in der Lage ist, einen weniger leistungsfähigen Zwei-Byte-Fehlerermittlungskode anzuwenden;
- Fig. 4A und 4B detaillierte Blockdiagramme einer ECC-Kodierer/Dekodierer- und Crosscheck-Struktur, die die erfindungsgemäßen Verfahren implementiert;
- Fig. 5 eine Folge von Zeitdiagrammen, die den Betrieb der ECC-Struktur nach Fig. 2 illustrieren; und
- Fig. 6A und 6B Blockdiagramme, die die ECC-Struktur nach Fig. 2 innerhalb eines Datenfolgesteuereinheitelements eines Festplattenlaufwerks zeigen; und
- Fig. 7 ein Blockdiagramm eines Festplattenlaufwerks-Datenspeicher- Teilsystems, welches die Datenfolgesteuereinheit und die ECC-Struktur nach den Figurne 6A und 6B umfaßt, wobei die Prinzipien der Erfindung implementiert sind.
- Die Erfindung kann in jedem System zur Übertragung von Datenblöcken, entweder Speicherung oder Kommunikation, effektiv ausgebildet sein. Besonders nützlich und effizient ist es jedoch im Bereich der Datenspeicherung und -wiedergewinnung, wie in einem Festplatten- Datenspeicher-Teilsystem. In einem solchen System, welches im Folgenden genauer beschrieben wird, werden Datenblöcke als Datenfelder oder Datensektoren innerhalb konzentrischer Datenspeicherspurstellen einer oder mehrerer Datenspeicherplatten gespeichert. Die Begriffe Datenblock, Datenfeld und Datensektor sind in der hier benutzten Form im wesentlichen austauschbar. Ein Daten-Lese-/Schreib-Wandler wird selektiv über einer Spurstelle positioniert, die von Interesse ist, und Blöcke werden von Datensektor-Speicherstellen innerhalb der Spurstelle gelesen oder auf diese geschrieben. Es ist beispielsweise der Prozeß der Speicherung und Wiedergewinnung von Datenblöcken, welche Fehelrkorrektur, Crosschecken und ID-Feld-Fehlerermittlungstechniken nach der Erfindung notwendig macht.
- Ein beispielhafter Datenblock oder ein beispielhaftes Datenfeld, die beispielsweise innerhalb eines Festplatten-Datenspeicher-Teilsystems auftreten, ist in Fig. 1 gezeigt. Es existieren 512 Datenbytes, die mit [1] bis [512] bezeichnet sind. Die Bytes [513] und [514] enthalten zwei Crosscheck-Bytes zum Crosschecken der Daten-Bytes [1] bis [512]. Es existieren 12 ECC-Bytes [515] bis [526], welche für die Fehlerkorrektur der Datenbytes und der Crosscheck-Bytes genutzt werden. Wie im unteren Teil von Fig. 1 dargestellt ist, existieren bei diesem speziellen Plattenlaufwerks-Datenblockbeispiel drei Verschachtelungen: Verschachtelung 1, Verschachtelung 2 und Verschachtelung 3. Verschachtelung 1 enthält die Bytes [1], [4], [7], [10], usw. Verschachtelung 2 enthalt die Bytes [2], [5], [8], [11], usw. Die Verschachtelung 3 enthält die Bytes [3], [6], [9], [12], usw. Die Verschachtelungen 1 und 2 umfassen jeweil seine Gesamtzahl von 171 Datenbytes. Verschachtelung 3 enthält 170 Datenbytes. Wie sich aus Fig. 1 ergibt, sind die Crosscheck-Bytestellen [513] und [514] in verschiedenen Verschachtelungen angeordnet. Es sind vier ECC-Bytes in jeder Verschachtelung angeordnet: Die Bytes [517], [20], [523] und [526] in der Verschachtelung 1, die Bytes [515], [518], [521] und [524] in der Verschachtelung 2, und die Bytes [516], [519], [522] und [525] in der Verschachtelung 3. Die Nutzung von Verschachtelungen innerhalb des Sektors ist in Fehlerkorrekturschemata üblich, um die ECC-Fähigkeit auf längere Fehlerbündellängen zu erstrecken. Ein weiterer Grund ist, daß sich ein angrenzendes Blockfehlerbündel über mehrere Verschachtelungen erstreckt, wodurch beispielsweise die Komplexität der Fehlerkorrekturtechniken reduziert wird.
- Bei dem bevorzugten Fehlerkorrekturbeispiel ist ein einzelnes Fehlerbündel als ein Fehler definiert, der in einem Byte innerhalb einer der Verschachtelungen auftritt. Ein doppelter Bündelfehler ist definiert, als ein Fehler, der in zwei Bytes innerhalb einer der Verschachtelungen auftritt. Ausgehend von den drei in Fig. 1 dargestellten Verschachtelungen ist es offensichtlich, daß ein einzelner Bündelfehler bis zu drei Bytes lang sein kann, solange jedes Byte, das einen Fehler enthält, innerhalb einer anderen der drei Verschachtelungen angeordnet ist. Wie es bei dem Korrekturverfahren einzelner Bündelfehler nach dem genannten Macha do-Patent der Fall war, wird das bei dem vorliegenden Fehlerkorrekturbeispiel angewendete Galois-Feld aus dem folgenden Polynom erzeugt:
- P(x) = x&sup8; + x&sup4; + x³ + x² + 1 (1)
- [Das Symbol "+" bezeichnet eine Bit zu Bit-EXOR- Operation, soweit nicht anders beschrieben.]
- Das erste Element des Feldes wurde so ausgewählt, daß die Anzahl der Glieder bzw. Gatter minimiert ist, die für die Implementierung des Vervielfachers benötigt werden:
- Alpha¹ = 2B (Hex) (2)
- Das Modell für den Reed-Solomon-Kode, welcher in der bevorzugten Ausführungsform implementiert ist, wird durch das folgende Erzeuger-Polynom G(x) definiert, welches einen exponentiellen Ofset anwendet, der gleich 126 ist:
- G(x) = x&sup4; + Alpha¹&sup8; · x³ + Alpha&sup8;&sup7; · x² + Alpha¹&sup8; · x + 1 (3)
- Die Faktor-Form der Gleichung (3) lautet:
- G(x) (x + Alpha¹²&sup6;) (x + Alpha¹²&sup7;) (x + Alpha¹²&sup8;)(x + Alpha¹²&sup9;) (3a)
- Die 12 ECC-Bytes werden erzeugt, wenn alle der Benutzer-Datenbytes (und zwei Check- Bytes) jedes 512 Byte-Blocks durch einen Syndromerzeuger 10 (vgl. Fig. 4) auf einer seriellen Bit zu Bit-Basis durchgeführt werden. Der Wert C(x) ist ein kodiertes Datenpolynom, welches auf die Platte geschrieben wird, und welches auf den Daten- und Crosscheck-Bytes jedes Datenblocks basiert. Der Wert D(x) ist ein kodiertes Datenpolynom, was ausschließlich auf den Datenbytes des Datenblocks basiert. Der Wert C'(x) ist das kodierte Datenpolynom C(x), was von der Plattenoberfläche zurückgelesen wird. C'(x) kann deshalb ein oder mehrere Fehlerbündel enthalten, welche ermittelt und korrigiert werden müssen, wenn sie korrigierbar sind. Der Wert R(x) enthält den Rest, der sich auf den Wert C'(x) bezieht.
- Das kodierte Datenkodewort C(x) für jedes Syndrom-Byte innerhalb jeder Verschachtelung wird durch die folgende Gleichung erzeugt:
- C(x) = [x&sup4; · D(x) mod G(x)] + x&sup4; · D(x) (4)
- Während des Rückleseprozesses durch denselben Syndromerzeuger 10 wird der Restwert R(x) für jede Verschachtelung wiedergewonnen und in einem Rest-Latch 68 nach der folgenden Gleichung gespeichert, wenn er ungleich Null ist:
- R(x) = C'(x) mod G(x) (5a)
- = R3x³ + R2x² + R1x + R0 (5b)
- Eine programmierte Mikrocontrollereinrichtung 196 dekodiert dann jedes teilweise Syndrom- Byte (Si) des Kodeworts jeder Verschachtelung in Übereinstimmung mit der folgenden Gleichung:
- (wobei i = 0, 1, 2 und 3 und wobei der Exponent + eine Additionsoperation anzeigt). Wenn die Restbytes (die Koeffizienten von R(x)) ungleich Null sind, existiert wenigstens ein Fehlerbündel in dem zurückgelesenen Datenblock.
- In der hier beschriebenen bevorzugten Ausführungsform hat der beschriebene Fehlerkorrekturprozeß die Fähigkeit zur sofortigen bzw. fliegenden Korrektur wenigstens eines Fehlerbündels für jede der drei Verschachtelungen. In diesem Sofort-Fehlerkorrekturprozeß weisen die Teilsyndrome die folgenden Formen auf:
- S0 = e1. Alpha126*L1 (6)
- S1 = e1. Alpha127*L1 (7)
- S2 = e1. Alpha128*L1 (8)
- S3 = e1. Alpha129*L1 (9)
- Die Lösungen für L1 (Ort) und e1 (Einzelfehlerwert) lauten wie folgt:
- L1 = log[Alpha L1] = log[S1/S0] (10)
- e1 = S1·(S0/S1)¹²&sup7;
- Das erfindungsgemäße System führt eine doppelte Bündelfehlerkorrektur in Übereinstimmung mit den folgenden Teilsyndromen aus:
- S0 = e1 · Alpha126*L1 + e2 · Alpha126*L2 (12)
- S1 = e1 · Alpha127*L1 + e2 · Alpha127*L2 (13)
- S2 = e1 · Alpha128*L1 + e2 · Alpha128*L2 (14)
- S3 = e1 · Alpha129*L1 + e2 · Alpha129*L2 (15)
- Zur Lösung dieser Gleichungen werden die folgenden Schritte ausgeführt.
- 1. Finden der Werte für phi 1 und phi 2:
- (x) = x² + 1·x + 2 = 0 (18)
- Es gibt mehrere Weg, die lineare quadratische Gleichung (18) zu lösen. Ein klassischer Weg ist es, eine Chien-Suchschleife zu implementieren, welche all Galois-Feld-Elemente der Gleichung substituiert und die Nullwerte ermittelt. Wenn das Nullwerte-Ergebnis gefunden ist, stoppt die Schleife und das Eingabeelement wird als X1 definiert. Wenn keine Lösung gefunden wird, wurde ein unkorrigierbarer Fehlerfall ermittelt. Weil Gleichung (18) eine lineare quadratische Gleichung ist,
- phi 1 = x1 + x2 (18a)
- kann X2 wie folgt ermittelt werden:
- X2 = X1 + phi 1 (19)
- 3. Danach werden die Lokalisiererwerte L1 und L2 ausgewertet:
- L1 = log[x1] (20)
- L2 = log[x2] (21)
- 4. Anschließend werden die Fehlerwerte e1 und e2 ausgewertet:
- Unter der Voraussetzung genügender Prozeßfähigkeit und -geschwindigkeit des Mikroprozessors 196 und eines vernünftigen Nutzervertrauensniveaus bei dem Korrekturprozeß, ist es praktisch, doppelte Bündelfehler fliegend mit dem vorliegenden Verfahren zu korrigieren.
- Um die Wahrscheinlichkeit von Falschkorrekturen für Mehrfach-Zufallsfehler unter 0,233 zu reduzieren, wurde ein Erzeugerpolynom Gxc(x) zur Ausführung eines Reed-Solomon- Crosschecks ausgewählt. Dieses Erzeugerpolynom hat die Form:
- Gxc(x) = X² + Alpha¹ (24)
- Es stellte sich heraus, daß dieses Crosscheck-Polynom ein überaschend leistungsfähiger Algorithmus ist. Es crosscheckt den Fehlerkorrekturprozeß und ist sensitiv für das verwürfeln oder falsche Anordnen der Datenwerte innerhalb des Datenblocks. Dieses Crosscheck-Verfahren ist so ausgebildet, daß es für den Fall wenigstens eines einzelnen Bündelfehlers pro Verschachtelung sofort bzw. fliegend und für den Fall eines Doppelbündelfehlers pro Verschachtelung mit ausreichender Arbeitsgeschwindigkeit ausgeführt werden kann.
- Wenn ein spezieller Fehler existiert, ist ein korrekter Weg zum Ausdrücken des Fehlers ein Polynom E(x), wobei:
- E(x) = eixLi (25)
- Um die Wirkung der in einem Datenblock ausgeführten Fehlerkorrektur auf das entsprechende Crosscheck-Syndrom zu bestimmen, wird x in dem Fehlerpolynom (25) durch Alpha¹ ersetzt, und anschließend wird das Crosscheck-Syndrom (XC) erneuert. Syndrom-Crosscheck (XC) = vorheriges (XC) + eiAlphaLi, wobei eiAlphaLi mittels einer programmierten Mikrocontrollereinrichtung 196 verarbeitet wird, die im folgenden beschrieben wird. Wenn die aktualisierten Crosscheck-Bytes nach der in dem Datenfeld ausgeführten Korrektur nicht Null sind, wird der Fehler bei der vorliegenden Methode als unkorrigierbar bestimmt.
- Diese Lösung schafft ein sehr schnelles, sofortiges Verfahren zur Verifizierung einer Fehlerkorrektur, um zu bestimmen, daß das vorliegende Fehlerbündel nicht innerhalb einer vorgegebenen Falschkorrektur-Wahrscheinlichkeit ist, beispielsweise für Doppelbündel- Korrekturfälle 0,233, und daß eine Fehlerkorrekturoperation, die in dem Einzelbündelfehler- Szenario sofort ausgeführt wurde, nicht zu einer fehlerhaften Korrektur oder "Falschkorrektur" des Datenbündels geführt hat.
- Wie erwähnt, ist es wünschenswert, ein vorbestimmtes Alpha¹ (eine Galois-Feldkonstante) zu nutzen, die in dem o. g. Crosscheck-Polynom (5) einen Wert ungleich 2¹ aufweist. Durch die Auswahl eines Reed-Solomon-Kodes mit einem vorbestimmten Anfangs-Offset, beispielsweise 126, ergibt sich als eine gewünschte Alpha¹-Konstante 2B(Hex) oder 00101011 (binär). Bei dieser speziellen Ausführungsform sind so viele Einsen wie Nullen in der bevorzugten Alpha¹-Konstanten. Deshalb hat sie ausreichend "Masse" oder "Substanz", um innerhalb des Crosscheck-Polynoms überraschend wirksam zu sein, weil es sich selbst sehr schnell vermischt, wenn es sich durch den ECC-Syndrom-Erzeuger ausbreitet.
- Deshalb werden durch Wählen der Wurzel Alphah für das Crosscheck-Polynom die Wurzeln vermieden, die für das ECC-Polynom ausgewählt wurden. Bei der bevorzugten Ausführungsform wurden als ECC-Wurzeln n = 126, n = 127, n = 128 und n = 129 gewählt. Diese Werte, welche von der Crosscheck-Wurzel n = 1 verschieden sind, vereinfachen die Firmware und beschleunigen das Crosschecken von Einzelfehlerbündel-Korrekturen pro Verschachtelung sofort.
- Das Datenformat für ein Plattenlaufwerk, in dem die vorliegende Erfindung implementiert ist, wendet mehrere, beispielsweise acht radiale Datenzonen an. Jede Zone umfaßt mehrere konzentrische Datenspuren, wobei jede Datenspur eine vorbestimmte Anzahl von Datensektoren aufweist. Jeder Datensektor enthält ein Daten-ID-Feld gefolgt von der Anordnung von 512 Daten-Bytes, 2 Crosscheck-Bytes und 12 ECC-Bytes gemäß Fig. 1. Das Daten-ID-Feld umfaßt ein Adressfeld, gefolgt von drei EDC-Bytes. Um den Datenspeicher zu maximieren, werden Teildatenfelder oder Datensektoren angewendet. "Teildatenfeld" bedeutet, daß die Servosektoren 5 sich als radiale Speichen auf der Datenoberfläche erstrecken und wenigstens einige der Datensektoren in Segmente unterbrechen oder "aufteilen". Techniken zur Datenaufzeichnung in Zonen, von der Art, wie sie gegenwärtig in Betracht gezogen werden, wenden entweder eine konstante Plattenwinkelgeschwindigkeit oder eine variable Datenübertragungsrate an, oder wenden eine feste Datenübertragungsrate an, und vermindern beispielsweise die Plattengeschwindigkeit, wenn der Datenwandler sich von einer radial äußeren Zone zu einer radial inneren Zone bewegt. Gegenwärtig wird eine umgeschaltete Datenübertragungsrate bevorzugt. Folglich gibt es verschiedene Datenübertragungsraten für verschiedene Datenzonen, und eine verschiedene Anzahl von Datensektoren innerhalb der Spur verschiedener Zonen, welche ausgewählt wurden, um die Datenspeicherkapazität in dem Plattenspeicherformat zu optimieren. Darüber hinaus wird eine 1,7-RLL-Kodieranordnung vorzugsweise zur Datenverdichtung auf der Speicheroberfläche einer Datenspeicherplatte 162 angewendet. Dieses ist in dem US- Patent 4,675,652 von Machado offenbart, welches den Titel "Integrated Encoder Decoder for Variable Length, Zero Run Length Limited Codes" trägt.
- Wie am Beispiel des Layout-Diagramms nach Fig. 2 gezeigt ist, können die zwei gegenüberliegenden Datenspeicheroberflächen, beispielsweise von einer sich drehenden Datenspeicherplatte 162 mit einem Durchmesser von etwa 6,3 cm (1,5 Inch) so definiert werden, daß sie eine radial am äußersten Rand liegende Zone 21 aufweist, die beispielsweise 110 konzentrische Datenspeicherspuren pro Oberfläche umfaßt, wobei jede eine Rohdatenrate von 18.13 Megabits pro Sekunde (Mbps) (eine kodierte Datenfrequenz von 27,2 MHz) für eine Gesamtspeicherkapazität von 6,48 Megabytes und 60 Datensektoren umfaßt. Die radial nach innen nächstliegende Zone 22 umfaßt beispielsweise 109 Datenspuren, wobei jede dieser Datenspuren 56 Datensektoren umfaßt und eine Rohdatenrate von 17,45 Mbps (eine kodierte Frequenz von 26,18 MHz) aufweist. Zone 2 speichert 6,19 Megabytes Benutzerdaten auf beiden Seiten der Platte. Die dritte Datenzone 23 enthält 109 Datenspuren, wobei jede 52 Datensektoren und eine Rohdatenrate von 15,69 Mbps (eine kodierte Datenfrequenz von 23,3 MHz) aufweist, wodurch 5,75 Megabytes Benutzerdaten auf beiden Seiten der Platte 162 gespeichert sind. Die vierte Datenzone 24 weist 109 Datenspuren auf, wobei jede 52 Datensektoren umfaßt und eine Rohdatenrate von 15,69 Mbps (eine kodierte Datenfrequenz von 23,53 MHz) aufweist, wodurch auf beiden Seiten der Platte 5,75 Megabytes Benutzerdaten gespeichert sind. Die fünfte Datenzone 25 kann 109 Datenspuren umfassen, wobei jede 47 Datensektoren und eine Rohdatenrate von 14,77 Mbps aufweist (eine kodierte Datenfrequenz von 22,15 MHz), um die Speicherung von 15,19 Megabytes Benutzerdaten auf beiden Seiten der Platte 14 zu erreichen. Die sechste Datenzone 26 umfaßt 108 Datenspuren, wobei jede 44 Sektoren und eine Datenrate von 14,0 Mbps (eine kodierte Datenfrequzenz von 21,0 MHz) aufweist, und eine Kapazität von 4,81 Megabytes Benutzerdaten auf beiden Seiten der Platte 162 erreicht. Die siebente Datenzone 27 umfaßt 108 Datenspuren, wobei jede 41 Sektoren und eine Rohdatenrate von 12,95 Mbps (eine kodierte Frequenz von 19,43 MHz) so aufweist, daß 4,48 Megabytes auf beiden Seiten der Platte 162 gespeichert sind. Die achte Datenzone 28 kann 108 Datenspuren umfassen, wobei jede beispielsweise 39 Datensektoren und eine Rohdatenrate von 12,09 Mbps (eine kodierte Frequenz von 18,13 MHz) aufweist, um 4,26 Megabytes auf beiden Seiten der Platte 162 zu speichern. Ein radial am äußersten Rand liegender Bereich SYS der Datenoberfläche 12, welcher beispielsweise 14 konzentrische Datenspuren nach dem Format der Zone 8 aufweist, kann Systeminformation enthalten, die zum Betrieb des Plattenlaufwerk-Teilsystems 100 benötigt wird. Mehrere Spuren innerhalb der achten Zone, die die Bit-Übertragungseigenschaften der achten Datenzone aufweisen, können für die Speicherung der Systemanalyse oder anderer Werte verfügbar sein.
- Während die acht Datenzonen so beschrieben wurden, daß sie die o. g. Eigenschaften aufweisen, wird darauf hingewiesen, daß die Anzahl der Zonen, die Anzahl der Spuren und der Sektoren pro Zone und die Datenübertragungsraten innerhalb jeder Zone von den gegebenen Beispielen in Abhängigkeit vom Kopf und Mediumdesign, der Qualität, des Kopfpositions- Servosystems und der gewünschten Speicherkapazität abweichen können. Dieses ist für den Fachmann offensichtlich. Im vorliegenden Beispiel wird eine Speicherkapazität von 92,91 Megabytes mit einer einzelnen Dünnschicht-Medium-Datenspeicherplatte 162 mit einem Durchmesser von etwa 6,3 cm (2,5 Inch) und Dünnfilm-Datenwandlerköpfen 170a und 170b erreicht.
- Die Datentransferfrequenzen, die innerhalb jeder Zone angewendet werden, werden vorzugsweise mittels eines Frequenzsynthesizers 190 synthetisiert, welcher unter der Kontrolle der System-Mikrocontrollereinrichtung 196 arbeitet. Der Synthesizer ist deshalb gesetzt, um die kodierte Frequenz für jede Datenzone zu synthetisieren und an einen PLL 188 auszugeben.
- In dem Beispiel nach Fig. 1 ist der Einschluß von Zählbytes innerhalb jedes Datensektor-ID- Feldes wichtig, welches eine Datenfolgeeinrichtung 100 in die Lage versetzt, das strukturelle Layout des unmittelbar folgenden Datenfeldes des Sektors unmittelbar zu bestimmen. Dieses Layout kann ein Teildatenfeld enthalten oder einen oder mehrere Unterbrechungs- Servosektoren enthalten (vgl. Fig. 2).
- Fig. 2 zeigt in Diagrammform auch mehrere einheitlich beabstandete Servosektoren S (beispielsweise 52 Servosektoren), die einheitlich über die Datenoberfläche einer Speicherplatte 162 verteilt sind und zwischen Datensektoren in jeder Zone eingebettet sind, oder diese tatsächlich unterbrechen. Weil diese Servosektoren S wenigstens einige der Datensektoren "unterbrechen", existiert, auf jede Servosektor-Unterbrechung folgend, ein spezielles Daten- Synchromisierungsfeld, um es dem Laufwerk zu ermöglichen, die Datenrate zu resynchronisieren. Die Datenfeld-Zählinformation, die in dem Datenblock-ID-Feld durch die Datenfolgesteuereinheit 100 während des Schreib- und Wiederleseprozesses genutzt wird, um das Layout (d. h. die Anzahl und die Orte der Servosektor-Unterbrechungen und die Länge jedes sich ergebenden Datenfeldsegmentes) des Datenfeldes zu bestimmen, was von Interesse ist. Weil die Byte-Positionszähler von Daten-ID-Feld zu Daten-ID-Feld variieren können, ist es sehr wichtig, die Genauigkeit der Information zu bestätigen, die von dem ID-Feld in Echtzeit wiedergewonnen wurde. Vorteilhaft wendet die Erfindung dieselbe Syndrom-Erzeugerschaltung 10 (Fig. 4A und 4B) an, um den Reed-Solomon-Fehlerermittlungsprozeß für jedes der mittels eines ausgewählten Kopfes 170 gelesenen Daten-ID-Felder auszuführen.
- Fig. 3A zeigt eine bevorzugte Datenblock-ID-Feldanordnung, die insbesondere für Teildatenfeld-Formate geeignet ist. Jedes ID-Feld umfaßt eine neun-Byte-Präambel, ein ID-Feld- Adressmarkierer-Byte, drei Datenfeld-Zählbytes: Zählstand 3, Zählstand 2 und Zählstand 1; ein Sektoridentifizierungsbyte und ein Kopfidentifizierungsbyte. Es sind weiterhin drei Fehlerermittlungskodebytes vorhanden: EDC-Byte 1, EDC-Byte 2 und EDC-Byte 3. Auf diese Bytes folgt eine Zwei-Byte-Anschlußstelle, ein Schreib-Spleiß-Lücken -Byte (Lücke 2) und das Datenfeld, welches an einer Servosektor-Stelle S endet. Die innerhalb der drei Zählbytes vorhandenen Werte bestimmen die jeweilige Länge von bis zu drei Segmenten des Datenfeldes, welches durch Servosektoren unterbrochen sein kann. Beispeilsweise würde das Zählbyte 1 eine volle Feldsegmentlänge von 512 Bytes anzeigen, wenn keine Unterbrechungen in dem Datenfeld existieren. Wenn zwei Servosektor-Unterbrechungen des Datenfeldes existieren, wie es für einige Datenblöcke der Fall ist, würde das Zählbyte 1 die Byte-Länge des ersten Datenfeldsegmentes, das Zählbyte 2 die Byte-Länge des zweiten Datenfeldsegments und das Zählbyte 3 die Länge des dritten Datenfeldsegments anzeigen.
- Wenn die ID-Felder, die bei den bevorzugten Zonen-Datenaufzeichnungsschemata genutzt werden, Byte-Zählwerte enthalten, ist es sehr bedeutend, ein Fehlerermittlungsverfahren zu schaffen, welches die Gültigkeit der Information prüft, die von jedem ID-Feld zurückgelesen wird. Vorzugseweise wird ein Drei-Byte-Kode in dieser Anwendung benutzt, der Teildatenfelder mit eingebetteten Servosektoren S aufweist, welche wenigstens einige der Datenblöcke unterbrechen. Ein wichtiger Aspekt der Erfindung ist es, eine Fehlerermittlungs-Kodierungsanordnung zu schaffen, welche den Syndrom-Erzeuger nach den Fig. 4A und 4B benutzt. Eine solche Anordnung wurde geschaffen. Der folgende bevorzugte Kode erzeugt drei Fehlerermittlungs-Check-Bytes, welche an jedes Daten-ID-Feld angehängt sind. Dieser Fehlerermittlungskode kann vorzugsweise wie folgt ausgedrückt werden:
- GEDC3(x) = x³ + ax² + bx + c (26)
- GEDC3(x) = x³ + Alpha&sup8;&sup7; · x² + Alpha&sup8;&sup7; · x + 1 (26a)
- In Faktorform lautet die Gleichung 26a:
- GEDC3(x) = (x + Alpha&sup0;)(x + Alpha¹&sup0;&sup8;)(x + Alpha¹&sup4;&sup7;) (26b)
- Aus der Betrachtung ergibt sich, daß die Alpha-Koeffizienten nicht fortlaufend sind. Dieser Kode erzeugt drei Fehlerermittlungsbyts. Weil der in den Fig. 4A und 4B dargestellte Syndrom-Erzeuger bereits eine Alpha&sup8;&sup7;-Vervielfacherlogik aufweist, ist diese Logik für die Nutzung in dem Fehlerermittlungsprozeß verfügbar.
- Für Laufwerke, die keine eingebetteten Servosektoren anwenden, die Datenfelder von Datensektoren unterbrechen (und in welchen die Daten-ID-Sektoren keine Byte-Zählstände enthalten), wurde gefunden, daß ein 2-Byte-Fehlerermittlungskode ausreichend ist. Ein Beispiel für ein ID-Feld, welches einen 2-Byte-Fehlerermittlungskode anwendet, ist in Fig. 3B gezeigt. Bei diesem Beispiel nach Fig. 3B umfaßt das ID-Feld eine Präambel von 9 Bytes, ein ID- Feld-Adressmarkierer-Byte, ein Zylinder-Hoch-Byte, ein Zylinder-Niedrig-Byte, ein Kopf- Byte, ein Sektor-Byte und zwei Fehlerermittlungskode-Bytes (EDC): EDC1 und EDC2. Auf diese EDC-Bytes folgt eine 2-Byte-Füllstelle und eine 2-Byte-Lücke, bevor das Datenfeld erreicht ist, welches sich unterbrochen bis zum nächsten Datensektor fortsetzt, welchem ein eingebetteter Servosektor S vorausgehen kann.
- Ein bevorzugter 2-Byte-EDC-Kode kann mit Hilfe der folgenden allgemeinen Beziehung erzeugt werden:
- GEDC2(x) = x² + ax + b (27)
- wobei b ≠ 1 ist. Eine spezifischere Form dieser Beziehung lautet:
- GEDC2(x) = x² + x + alpha¹&sup8; (27a)
- Die Faktor-Form von Gleichung (27a) lautet:
- GEDC2(x) = (x + alpha²²)(x + alpha2&sup5;¹) (27b)
- Bei diesem Kode ist nur eine Vervielfacherschaltung notwendig: Alpha¹&sup8;, wobei diese Schaltung in der ECC-Syndrom-Erzeugerschaltung nach Fig. 4 bereits vorhanden ist.
- Es sind andere EDC-Kodes bekannt, die für die Ermittlung von Fehlern innerhalb des ID- Feldes eines Datenblocks verfügbar sind. Jeder der folgenden Algorithmen verlangt jedoch einen zusätzlichen Vervielfacherterm, und ist deshalb einwenig schwieriger zu implementieren, als die bereits beschriebenen Algorithmen (26) und (27).
- Ein weniger bevorzugter 3-Byte-EDC-Kode kann durch die folgende Beziehung erzeugt werden.
- GEDC3(x) = x³ + alpha¹&sup8; · x² + alpha&sup8;&sup7; · x + alpha¹&sup8; (28)
- GEDC3(x) = (x + alpha&sup5;)(x + alpha&sup6;)(x + alpha&sup7;) (28a)
- Ein weniger bevorzugter 2-Byte-EDC-Kode kann durch die folgende Beziehung erzeugt werden:
- GEDC2(x) = x² + alph&sup8;¹ · x + alpha&sup8;¹ (29)
- GEDC2(x) = (x + alpha¹&sup0;&sup5;)(x + alpha²³¹) (29a)
- Eine ECC-Syndrom-Erzeugerschaltung 10 implementiert gleichzeitig Schaltungstechnik zur Ausführung der ECC-Funktion für die Datenfelder, die Crosscheck-Funktion der Datenfelder und die EDC-Funktion der Datenblock-ID-Felder (vgl. Fig. 4A und 4B). Diese Mehrfachfunktionen, welche innerhalb einer einzelnen, vereinfachten Schaltung 10 ausgeführt werden, erleichtern die sofortige, erfindungsgemäße Fehlerkorrektur. Die ECC-Schaltung 10 nach den Fig. 4A und 4B umfaßt einen eingehenden, seriellen Datenbus 12, der datenbytweise seriell trägt. In Übereinstimmung mit dem Ausgangszustand eines Logik-Gatters 13 gibt ein Daten-Latch 14 die seriellen Daten des Busses 12 an den internen ECC-Bus. Der Bus 16 führt zu einer exklusiven OR (hier XOR)-Gatter-Anordnung 18 mit Byte-Breite, wobei für jedes eingehende Byte ein XOR-Vergleich mit ienem Byte gemacht wird, das den ECC-Bereich der Schaltung 10 auf einem Ausfluß-Bus 63 verläßt. Die resultierende Summe wird mittels des Gatters 18 auf einen Bus 20 geführt, welcher durch eine Nullungsschaltung 22 auf einen anderen Bus 24 führt. Die Nullungsschaltung 22 wird benutzt, um den Bus 20 auf Null zu zwingen, wenn ECC- oder EDC-Bytes an die Datenfelder angehängt sind, beispielsweise während des Datenschreibens auf Plattenoperationen oder Plattenformatoperationen.
- Der Bus 24 führt in ein 3-Byte-Register 26, dessen Ausgang auf eine XOR-Gate-Anordnung 28 führt. Der Bus 24 führt auch auf einen bi-Koeffizient-Vervielfacher, welcher ein Alpha¹&sup8;- Produkt erzeugt und auf einen Bus 32 ausgibt, und welcher auch ein Alpha&sup8;&sup7;-Produkt erzeugt und auf einen Bus 34 ausgibt. Das Alpha¹&sup8;-Produkt wird in der exklusiven OR-Gatter- Anordnung 28 mit Byte-Breite einem XOR-Vergleich mit dem Ausgang des Schieberegisters 26 unterzogen. Das Alpha&sup8;&sup7;-Produkt auf dem Bus 34 wird dann einem XOR-Vergleich mit dem Ausgang des Registers 36 in einer anderen XOR-Gatter-Anordnung mit Byte-Breite 38 unterzogen. Eine Ausgangssumme der XOR-Anordnung 38 gelangt durch ein anderes 3-Byte- Schieberegister 40. Das Alpha&sup8;&sup7;-Produkt auf dem Bus 32 wird einem XOR-Vergleich mit dem Ausgang des Schieberegisters 40 unterzogen und liefert eine Ausgangssumme auf einen Bus 43.
- Die Ausgangssumme auf dem Bus 43 wird dann getrennt durch einen Multiplexer 44 an ein einzelnes Byte-Register 46 geführt. Die Multiplexereinrichtung 44 arbeitet in Verbindung mit dem EDC-Prozeß, was im folgenden erklärt wird. Ein Ausgang des Einzel-Byte-Registers 46 wird dann einem XOR-Vergleich mit dem Alpha&sup8;&sup7;-Produkt auf einem Bus 54 unterzogen. In diesem Zusammenhang gelangt das Alpha&sup8;&sup7;-Produkt durch einen Multiplexereinrichtung 50 und eine Nullungsschaltung 52 auf den Bus 34, um den Bus 54 zu erreichen. Ein Ausgang auf einem Bus 55 einer XOR-Gatter-Anordnung 48 wird dann durch eine Multiplexereinrichtung 56 geführt, um ein zweites Einzel-Byte-Schieberegister 58 zu erreichen. Die Multiplexereinrichtungen 50 und 56 werden benutzt, um zwischen ID-Feldern auszwählen, die entweder 2- EDC-Bytes oder 3-EDC-Bytes aufweisen.
- Ein Ausgang des Registers 58 wird dann in einer XOR-Gatter-Anordnung 60 einem XOR- Vergleich mit dem Alpha&sup8;&sup7;-Koeffizienten auf dem Bus 54 unterzogen. Eine resultierende Summe, die durch die XOR-Anordnung 60 ausgegeben wird, wird dann in und durch ein Einzel-Byte-Schieberegister 62 geführt, welches direkt zu dem Ausgangsbus 63 führt. Es ist offensichtlich, daß die letzte Registergruppe, die die Register 46, 58 und 52 enthält, durch die XOR-Gatter-Anordnungen 48 und 60 so aufgeteilt ist, daß die EDC-Funktion entweder auf zwei oder drei EDC-Bytes ausgeführt werden kann. Auf diese Weise kann ein Read- Solomon-Fehlerermittlungskode von zwei oder drei Bytes zum Überprüfen der Datensektor- ID-Felder ohne weiteres realisiert und innerhalb des vorhandenen ECC-Syndrom-Erzeugers 10 mit minimal zusätzlicher Schaltungstechnik implementiert werden.
- Während normaler ECC-Operationen präsentiert die Nullungsschaltung 52 anstelle eines eingehenden Byte-Werts (2 Byte EDC) oder des Alpha&sup8;&sup7;-Produkts (3 Byte EDC) Null- Koeffizienten. Während normaler ECC-Operationen arbeiten die XOR-Gatter-Anordnungen 48 und 60 deshalb auf den Wegen zwischen den Registern 46, 58 und 62 funktionell nicht. Die Multiplexereinrichtung 56 plaziert während einer 2-Byte-EDC-Operation das Alpha&sup8;&sup7;- Produkt in dem Register 58.
- Der Ausgangsbus 63 des letzten Registers 62 führt durch eine Multiplexereinrichtung 64 an einen ECC-Augangsbus 66, welcher es der Schaltung 10 ermöglicht, in angemessener Zeit 12 ECC-Syndrom-Bytes zu erzeugen und auszutakten, welche an den ECC-Check-Bytestellen jedes Datenfeldes angehängt sind (vgl. Fig. 1). Zwei Steuersignale, ein Byte-Takt-Signal BYTCLKA und ein ECC-Aktivierungs-Operationssignal ECCENOP werden in dem UND- Gatter 13 kombiniert, wobei dessen Ausgang danach ein Master-Takt-Signal zum fortschreitenden Takten von Bytes durch den Latch 14 und die Schieberegister 26, 36, 40, 46, 58 und 62 liefert. Die Schieberegister 26, 36, 40, 46, 58 und 62 werden mittels der Durchsetzung eines Initialisierungs-Steuersignals CTLIEC mit vorbestimmten Anfangswerten initialisiert. Diese Werte können beliebig ausgewählt werden, werden jedoch bei jeder Initialisierung der Schieberegister wiederholt.
- Wie oben beschrieben, ist ein Syndrom-Restlatch 68 innerhalb der Syndrom-Erzeugerschaltung 10 vorgesehen. Dieser Latch 68 empfängt und speichert eine Anzahl von Rest- Bytes. Drei Rest-Bytes werden von dem Register 26 über einen Bus 70 empfangen, einschließlich eines ersten Bytes. Drei weitere Rest-Bytes werden von dem Schieberegister 36 über einen Bus 72 empfangen, einschließlich eines vierten Bytes. Drei weitere Rest-Bytes werden von dem Schieberegister 40 über einen Bus 74 empfangen, einschließlich eines siebenten Bytes. Ein zehntes Rest-Byte wird von dem Einzel-Byte-Schieberegister 46 über einen Bus 76 empfangen. Ein elftes Rest-Byte wird von dem Schieberegister über einen Bus 77 empfangen, wohingegen ein zwölftes Rest-Byte über einen Bus 79 empfangen wird.
- Der Rest-Latch 68 wird mittels drei Steuersignalen gesteuert. Erstens enthält ein 5-Bit- Steuersignal LADD[4 : 0] die fünf niederwertigsten Adressbits des Mikrocontroller-Zyklus, der gegenwärtig arbeitet. Diese fünf Adressbits werden durch die Mikrocontrollereinrichtung genutzt, um für die Abarbeitung durch die Mikrocontrollereinrichtung 196 während einer Sofort-ECC-Operation ein spezielles Rest-Byte aufzurufen, was zwischengespeichert ist. Zweitens wird ein Syndrom-Latch-Schließsteuersignal SYNLCLS genutzt, um den Rest-Latch 68zu betreiben, so daß ein spezieller (beispielsweise ≠ 0) Rest für die Sofort-ECC- Operationen zwischengespeichert wird. Der Rest-Latch 68 ist normalerweise in der transparenten Betriebsart. Auf die Ermittlung eines Fehlers auf der Ausgangsleitung 80 setzt die Datenfolgesteuereinheit 100 dieses Signal asynchron durch, um die Rest-Bytes der Schieberegister 26, 36, 40, 46, 58 und 62 zwischenzuspeichern. Diese Operation wird vor einer Restinitialisierung ausgeführt, welche für den nächsten Datensektor auftritt. Der 12-Byte-ECC- Syndrom-Rest liefert die Information, aus der die Fehlerstelle(n) und Fehlerwert(e) mittels der Mikrocontrollereinrichtung 196 bestimmt und korrigiert werden kann, während der nächste Datensektor durch die Syndrom-Erzeuger-Schaltung 10 zirkuliert wird, und seine Rest-Bytes wiedergewonnen werden können. Drittens muß ein Syndrom-Latch-Öffnungssteuersignal SYNLOPE entgegengesetzt zu dem Syndrom-Latch-Schließsteuersignal sein. Das SYNLOPE-Signal ist wahr, wenn der Syndrom-Rest-Latch 68 in der transparenten Betriebsart ist, und ist niedrig, wenn der Syndrom-Latch 68 zwischengespeichert ist.
- Die Byte-Werte auf den Bussen 70, 72, 74, 76 und 77 werden der Nullungs-Ermittlungsschaltung 78 zugeführt und geprüft, um zu sehen, ob sie Null sind. Weil Syndrom-Bytes fortschreitend durch die Schieberegistergruppen 26, 36, 40 und die letzte Gruppe der indiviuellen Schieberegister 46, 58 und 62 in den drei Verschachtelungen takten, müssen nur solche Bytes der ersten der vier Gruppen von Syndrom-Registern in die Nullungs-Ermittlungsschaltung eingegeben werden, um den ECC-Syndrom-Null-Check auszuführen. Diese Anordnung spart Logik-Elemente. Eine Parität von Null während der Datenleseoperationen zeigt an, daß innerhalb des vorhandenen Datenblocks keine Fehler ermittelt wurden.
- Fünf Steuerwerte gelangen in die Nullungs-Ermittlungsschaltung 78: der ECC-Opperations- Steuerungs-Aktivierungswert ECCENOP; ein Fehlerermittlungs-Operationssteuerwert CRCOP; ein Fehlerkorrektur-Operationssteuerwert ECCOP; das Byte-Taktsignal BYTCLKA und ein Kein-Crosscheck-Operationssteuerwert NOXC. Diese Steuersignale aktivieren fortschreitend die Null-Ermittlungsschaltung 78, um zu bestimmen, ob ein spezielles ECC- Syndrom, ein Crosscheck-Syndrom oder ein EDC-Syndrom null ist, wodurch die sofortige Korrektur erleichtert ist.
- Ein Einzelbit-Rest-Ausgangssteuerwert wird auf einer Leitung 80 präsentiert. Diese Leitung wird in einem logischen Zustand sein, wenn die geprüften Rest-Bytes Null sind, und wird in einem anderen logischen Zustand sein, wenn mittels der Null-Ermittlungsschaltung 78 keine Parität mit Null ermittelt wird. Die Sofort-Serviceroutine wird durch die Mikrocontrollereinrichtung 196 aufgerufen. Hierbei werden die Syndrom-Byte-Werte, welche tatsächlich durch den Syndrom-Latch 68 zwischengespeichert sind, über einen Syndrom-Datenbus 82 an die Mikrocontrollereinrichtung 196 auf dem Plattefile immer ausgegeben, wenn der Einzelbit- Syndromwert auf der Leitung 80 eine Parität ungleich Null anzeigt. Solch eine Bedingung kann beim Überprüfen der zwölf ECC-Bytes auftreten, die an jedes Datenfeld angehängt sind. Eine weitere Mikrocontrollereinrichtungs-Intervention unter Fehlerbedingung kann bei spielsweise während einer Fehlerermittlungs-Kodeoperation (EDC) beim Überprüfen entweder eines 3-Byte-ID-Check-Feldes oder eines 2-Byte-ID-Check Feldes auftreten.
- Wenn die Mikrocontrollereinrichtung 196 ein Fehlerbündel in einem Sektor ortet, und fliegend korrigiert, wird die Möglichkeit einer aufgetretenen Falschkorrektur anschließend dadurch getestet, daß die Mikrocontrollereinrichtung 196 den Einfluß der Korrektur der Daten auf die Crosscheck-Rest-Bytes bestimmt, welche ebenfalls in dem Rest-Latch 68 gehalten werden und durch die Mikrocontrollereinrichtung 196 bei Bedarf gelesen werden.
- Um die Crosscheck-Rest-Bytes zu erhalten, wird der Datenblock auf dem ECC-Datenbus 16 durch ein exklusives OR-Gatter 84 geführt. Ein Ausgang des Gatters 84 wird durch einen Vervielfacher 86 geführt, welcher ein Alpha¹-Produkt erzeugt und auf einen Bus 88 ausgibt. Das Alpha¹-Produkt wird dann in den 2-Byte-Crosscheck-Schieberegistern 90a und 90b zwischengespeichert. Ein Ausgang des Schieberegisters 90b ist auf die XOR-Gatter-Anordnung 84 zurückgeführt und liefert des weiteren einen anderen Eingang auf die Multiplexereinrichtung 64, so daß die Crosscheck-Bytes an das Datenfeld, wie in Fig. 1 gezeigt, angehängt werden können.
- Der Ausgangsbus 94 des Registers 90a ermöglicht es dem ersten Crosscheck-Byte in dem Syndrom-Latch 68 zwischengespeichert zu werden, und mittels der Null- Ermittlungsschaltung 78 geprüft zu werden. In ähnlicher Weise ermöglicht es ein Ausgangsbus 96 des Registers 90b dem zweiten Crosscheck-Byte sowohl in dem Rest-Latch 68 zwischengespeichert zu werden als auch hinsichtlich der Null-Parität durch die Null- Ermittlungsschaltung 78 geprüft zu werden.
- Wenn ein ECC-Rest-Bytewert als ungleich Null bestimmt wird, und die zwölf ECC-Rest- Bytes in dem Rest-Latch zwischengespeichert werden, werden die zwei Crosscheck-Rest- Bytes, die dann in den Registern 90a und 90b angeordnet sind, ebenfalls in dem Rest-Latch 68 zwischengespeichert. Die Crosscheck-Rest-Bytes werden dann in Teilsyndrom-Bytes XC1 und XC2 umgewandelt. Nach einer ECC-Operation, die eine Berechnung einer Fehlerbündelkorrektur durch die Mikrocontrollereinrichtung 196 folgt, berechnet die Mikrocontrollereinrichtung 196 anschließend den Einfluß der Korrektur auf die Teilsyndrom-Bytes XC1 und XC2. Wenn solche Bytes nach der Korrektur des Datenfehlers ungleich Null sind, wird bestimmt, daß ein Fehler vorhanden ist, der nicht mittels einer fliegenden Fehlerkorrektur korri giert werden kann, wird der Datenstrom gestoppt und werden Wiederholungen dann in Übereinstimmung mit gewöhnlichen ECC-Verfahren gehandhabt, die beispielsweise in Übereinstimmung mit der SCSI-Schnittstellenkonvention aufgerufen werden. Letztlich wird der Fehler als unkorrigierbar bestimmt, stoppt das Plattenlaufwerk und informiert die Host-Ausrüstung darüber, daß ein unkorrigierbarer Fehler aufgetreten ist, wenn die Crosscheck-Rest- Bytes nach einer Korrektur ungleich Null sind. Wenn die Crosscheck-Bytes nach der Fehlerkorrektur Null sind, wird die Möglichkeit für eine Falschkorrektur der Daten als wesentlich reduziert angesehen.
- Die Crosscheck-Schieberegister 90a und 90b werden mit Hilfe eines Initialisierungs- Steuersignals CTLIEC initialisiert, welches diese in einen bekannten Zustand setzt, und sind mittels des Byte-Taktsignals BYTCLKA und eines Signals getaktet, welches anzeigt, daß ECC und Crosscheck-Operationen ausgeführt werden (anstatt einer ID-Feld- Fehlerermittlungs-Operation), wie es mit Hilfe des Steuergatters 89 bestimmt wird.
- Die folgende Beschreibung faßt die verschiedenen Steuer- und Datensignale zusammen, dessen Bezeichner in den Fig. 4A und 4B erscheinen. Die Zeitsteuerung für dieser Signale wird in der Zeitsteuer-Grafik in Fig. 5 dargestellt.
- SYNLDAT[7 : 0] Zwischengespeicherte Syndrom-Daten: Ein Byte der Syndrom-Daten wird von der ausgewählten, zwischengespeicherten Syndrom-Byte-Position ausgelesen, die mittels der Adresse auf dem mit einem Zwischenspeicher versehenen 5-Bit-Adreß-Bus (LADD) bestimmt ist. Dieses Byte wird während einer Mikrocontroller-Leseoperation einem Mikrocontroller-Adreß-Datenbus zugeführt. Diese Daten werden mittels eines RSECC-Steuersignals freigegeben.
- LADD[4 : 0] zwischenspeicherter Adreßbus: Die fünf niederwertigsten Adreßbits des gegenwärtig genutzten Mikrocontroller-Adreßzyklus werden eingegeben, um ein spezielles der Byte-Register des Syndrom-Latches 68 zu adressieren. Diese fünf Adreßbits werden genutzt, um zu bestimmen, welches zwischengespeicherte Syndrom-Byte während einer Mikrocontroller-Leseoperation in den Mikrocontroller 196 ausgelesen wird.
- SYNLCLS Syndrom-Latch schließen: Dieses Signal wird genutzt, um den Syndrom-Latch 68 für eine sofortige bzw. fliegende Fehlerkorrektur zu schließen. Der Syndrom-Latch 68 ist normalerweise in der transparenten Betriebsart. Nach der Ermittlung eines Fehlers in dem ECC-Syndrom setzt eine Datenfolgesteuerschaltung 100 (Fig. 6A und 6B) dieses Signal asynchron durch, um die Daten des Syndrom-Erzeuger-Schieberegsiters in dem Syndrom- Latch 68 so zwischenzuspeichern, daß die Syndrom-Daten, die den Fehler anzeigen, nicht verloren gehen. Dieses Durchsetzen mittels der Datenfolgesteuereinheit 100 wird vor einer erneuten Initialisierung ausgeführt, welche für den nächsten Datensektor über ein Initialisierungs-Steuersignal CTLIEC auftritt. Deshalb kann das Syndrom, welches die kodierte Fehlerstelle enthält, mit Hilfe der Mikrocontrollereinrichtung 196 dekodiert, und korrigiert werden, während der nächste Sektor gelesen wird, und durch die Syndrom-Schieberegisterfolge 26, 36, 40 und die letzte Gruppe der Register 44, 58 und 62 geführt werden.
- SYNLOPE Syndrom-Latch offen: Dieses Steuersignal ist zu dem Syndrom-Latch-Schließ- Steuersignal entgegengesetzt. Es ist wahr, wenn der Syndrom-Latch 68 in der transparenten Betriebsart ist (Latch-Ausgang = Syndrom). Es ist falsch, wenn der Syndrom-Latch 68 zwischengespeichert und statisch ist.
- ECCCRCN ECC/CRC-Steuerung: Dieses Signal zeigt an, welche Art von Syndrom der ECC- Erzeuger 10 berechnet. Wenn es wahr ist, zeigt diese Steuerleitung an, daß ECC und ein Crosscheck auf den Daten-Bytes verarbeitet werden. Wenn es falsch ist, zeigt diese Leitung an, daß EDC auf den Bytes eines ID-Feldes bearbeitet wird.
- CTLIEC Steuerunterbrechung ECC: Wenn es war ist, setzt diese Steuerleitung alle Syndrom- Bytes beider ECC-Erzeuger asynchron und den Crosscheck-Erzeuger auf einen vordefinierten Initialisierungswert, der invariant, jedoch ein beliebiges Muster von Einsen und Nullen sein kann.
- WRGATE Schreib Gatter: Dieses Steuersignal wird genutzt, während entweder CRCOP (Fehlerermittlung des ID-Felds) oder ECCOP (ECC-Operation) als wahr durchgesetzt sind, um die Fortsetzung der Berechnung des Syndroms durch den Syndrom-Erzeuger zu stoppen, während es mittels des Byte-Taktes BYTCLKA ausgetaktet wird.
- CRC2B EDC 2-Byte-Format: Wenn es als wahr durchgesetzt ist, wählt dieses Steuersignal ein 2-Byte-Format für den EDC auf dem Daten-ID-Feld aus. In diesem Fall wird derselbe Syndrom-Erzeuger für den 2-Byte-EDC genutzt. Wenn es nicht durchgesetzt ist, wählt diese Leitung einen 3-Byte-EDC-Syndrom-Prozeß aus.
- SYND0 Rest ist gleich Null: Dieses Steuersignal, welches von der Null-Ermittlungsschaltung 78 ausgegeben wird, wird für die Ermittlung bzw. Erfassung der Fehler genutzt. In 2-Byte- EDC-Formaten ist dieses Signal nach der Anstiegskante von BTYCLKA durchgesetzt, wenn beide EDC-Rest-Bytes gleich Null sind. Im 3-Byte-EDC-Format und während EDC- Operationen zeigt dieses Steuersignal eine Null-EDC-Rest-Byte-Bedingung an, wenn dieses Signal nach den abschließenden drei Anstiegskanten des Byte-Taktes BYTCLKA als wahr durchgesetzt ist. Dies bedeutet, die ECC-Rest-Bytes sind gleich Null, wenn ECCENAB auf den letzten zwei Anstiegskanten von BYTCLKA als wahr durchgesetzt ist, und wenn auf der Anstiegskante nach BYTCLKA ECCENAB dieses Signal nicht als wahr durchsetzt ist.
- SERDOUT[7 : 1] serieller/nicht-serieller Datenausgang: Dieser Bus 12 führt Daten-Bytes in die ECC-Schaltung 10 ein, auf welche ein Syndrom bearbeitet wird. Die Daten müssen auf der Anstiegsflanke von BYTCLKA gültig sein. Bei Datenfolgesteuereinheit-Leseoperationen kommen ECCIN-Daten von dem Parallel-Seriell-Umsetzer/Seriell-Parallel-Umsetzer SERDES 106. Dieses ist in dem US-Patent 4,675,652 von Machado näher beschrieben. Alle Daten-Bytes, Crosscheck-Bytes und ECC-Bytes sind synchron mit BYTCLKA getaktet. Bei Schreiboperationen der Datenfolgesteuereinheit kommen ECCIN-Daten von dem FIFO- Pufferspeicher, wobei alle Daten-Bytes synchron mit BYTCLKA getaktetet sind. Die Crosscheck-Bytes und die Syndrom-Bytes werden berechnet und an den Datenstrom angehängt. Auf das abschließende Daten-Byte folgend muß ECCIN mit ECCOUT verbunden werden, so daß das ECC-Syndrom auf den Crosscheck-Bytes berechnet werden kann.
- ECCDOUT[7 : 0] ECC-Datenausgang: Dieser Bus trägt Daten aus der ECC-Schaltung 10 heraus. Die Daten sind auf der Anstiegskante von BYTCLKA gültig. ECC-Syndrom-Daten sind an diesem Ausgang in einem seriellen Byte-Format verfügbar, während WRGATE- und CRCOP-Steuerleitungen als wahr durchgesetzt sind. EDC-Syndromdaten sind verfügbar, während WRGATE und ERCOP-Steuerleitungen als wahr durchgesetzt sind.
- BYTCLKA Byte-Takt A: Dieses Signal repräsentiert das Basis-Taktsignal für alle ECC- und EDC-Operationen.
- ECCENOP ECC-Aktivierungsoperationen: Diese Steuerleitung zeigt an, welche BYTCLKA- Kanten Daten für die ECC-Schaltung enthalten. Das BYTCLKA-Signal ist intern mit diesem Signal in dem UND-Gatter 13 so torgesteuert, daß beliebige transiente Fehler nicht auftreten, während BYCTLKA wahr ist.
- CRCOP EDC- und Crosscheck-Steuerung: Diese Steuerleitung zeigt an, welche Bytes EDC- Bytes sind, und welche Bytes Crosscheck-Bytes sind. Dieses Signal muß auf der Anstiegskante von BYTCLKA als wahr durchgesetzt sein, auf welcher ein EDC- oder ein Crosscheck- Byte in dem ECC-Erzeugerblok 10 getaktet wird.
- ECCOP ECC-Operationssteuerung: Diese Steuerleitung zeigt an, welche Bytes ECC-Bytes sind. Das Signal muß auf der Anstiegskante von BYTCLKA durchgesetzt sein, während der Ein-ECC-Byte in den ECC-Syndrom-Erzeuger 10 getaktet wird.
- In Fig. 5 repräsentiert die obere Gruppe von Zeitsteuersignalen entlang einer gemeinsamen, horizontalen Zeitbasis die verschiedenen logischen Bedingungen der aufgelisteten Steuersignale während eines EDC-Checks auf ein ID-Feld. Die untere Gruppe der Zeitsteuersignale in Fig. 5 repräsentiert die verschiedenen, logischen Bedingungen der aufgelisteten Steuersignale während einer ECC- und einer Crosscheck-Operation.
- Aus den Fig. 6A und 6B ergibt sich, daß die ECC-Syndrom-Erzeugerschaltung 10 nur ein funktionelles Element innerhalb der Datenfolgesteuereinheit 100 in einer Gesamtplatten- Laufwerksarchitektur 160 ist, welche in Fig. 7 dargestellt ist und im folgenden näher beschrieben wird. Die Datenfolgesteuereinheit 100 umfaßt einen Datenfeld-Adreßmarken- Detektor 102, welcher eingehend Daten unmittelbar von einem Impulsdetektor empfängt. Der Detektor 102 sucht nach einer Folge von Hochfrequenz-Flußübergängen, und, wenn eine solche erkannt ist, wird der PLL 188 mit der Folge verriegelt, und die wiedergewonnenen, digitalen kodierten Lauflängen-Daten werden hinsichtlich des Vorhandenseins einer Adreßmarken-Folge geprüft. In diesem Zusammenhang überwacht der Adreßmarken-Detektor 102 den Datenstrom, um einen einheitliche Bitfolge zu ermitteln, die nicht mit den 1,7- Kodierungsregeln übereinstimmt und vorbestimmt ist, eine Adreßmarken zu repräsentieren. Der Adreßmarken-Detektor 102 erzeugt immer das Byte-Taktsignal BYTCLKA sowohl aus dem Rohdatenstrom als auch aus dem Steuersignal, das anzeigt, daß eine Adreßmarken ge fünden wurde, wenn eine Bitfolge, die eine Adreßmarke repräsentiert, in dem Rohdantestrom gefunden ist.
- Ein lauflängenbegrenzter 1,7- Kodierer/Dekodierer 104 kodiert und dekodiert serielle Daten in und aus dem lauflängenbegrenzter 1,7- Kode (RLL). Der Parallel-Seriell-Umsetzer/Seriell- Parallel-Umsetzer (SERDES) 106 packt Daten-Bytes in ein serielles Bit zu Bit-Format zusammen und packt Daten-Bytes aus diesem Format auseinander. Der Kodierer/Dekodierer 104 und SERDES sind im wesentlichen in dem genannten US-Patent 4, 675, 652 von Machado beschrieben. Ein FIFO-Byte-Register 108 gibt Daten-Bytes frei, die asynchron zwischen der Datenfolgesteuereinheit 100 und einer externen Cash-Pufferspeicheranordnung 214 übertragen werden sollen, welche mittels eines externen Kristall-Standards getaktet wird (im Gegesatz zu BYTCLKA, welches mit dem Rohdatenstrom synchronisiert ist, der von der Platte zurückgelesen wird). Eine Multiplexereinrichtung 110 reguliert den bidirektionalen Datenfluß durch den Seriell-Parallel-Umsetzer/Parallel-Seriell-Umsetzer 106 und den Kodierer/Dekodierer 104, so daß ECC-Syndrom-Bytes, die mit Hilfe des ECC-Erzeugers 10 erzeugt wurden, an Datenblöcke angehängt werden können, die auf die Speicheroberfläche strömen, und so daß die in einem schreibbaren Steuerspeicherbus (WCS) 134 vorhandenen Datenwerte zur Speicherung an die Platte gesendet werden können.
- Referenzdatensektor-Identifizierungsbytes (d. h. physikalischer Sektor und Wandlerkopf), welche von dem Daten-ID-Feld gelesen wurden, werden durch eine Vergleichs-Multiplexereinrichtung 112 an eine Vergleichsschaltung 114 geschickt. Die Vergleichsschaltung 114 vergleicht die tatsächlichen Datensektor-Identifizierungsbytes, die von dem SRDES 106 empfangen wurden, mit Referenz-Identifizierungsbytes, die in einem Sektor-Zähler 116 gehalten werden. Wenn Übereinstimmung exisitert, wurde die gewünschte Sektorstelle erreicht, und ein Vergleich = 0-Steuersignal wird durch die Vergleichsschaltung 114 an eine Sprung- Steuer-Multiplexerschaltung 132 ausgegeben.
- Ein schreibbarer Steuerspeicher (WCS) 116 liefert die zweifache Funktion des Speicherns von Steuerwörtern, welche alle Operationszustände der Datenfolgesteuereinheit 110 steuern, und welche mit Information geladen sein können, die direkt mittels der Mikrocontrollereinrichtung 196 von Stellen gelesen oder in diese geschrieben wird, die hierdurch mittels Adressen gesteuert werden, die mit Hilfe eines Mikrocontroller-Adreßdekodierers 118 dekodiert weren. Während einer Hälfte des BYTZCLKA-Taktzyklus aktiviert eine Multiplexereinrich tung 120 mit Hilfe der Mikrocontrollereinrichtung 196 einen direkten Zugriff auf den Steuerspeicher 116.
- Während der anderen Hälft des BYTCLKA-Zyklus werden Adressen aus einer Ablauffolgesteuereinheit 122 genutzt, um den Streuerspeicher-Speicherbereich 116 zu adressieren. Die Steuereinheit 122 umfaßt einen Ablauffolgesteuer-Dekodiererblock 124, welcher die Steuereinheit 122 aktiviert, um in mehrere vorbestimmte Zustände zu springen, einen Ablauffolge- Adreßmultiplexer, welcher zwischen verschiedenen Adressen auswählt, ein letztes Adreßregister 128 zum Halten der letzten Ablauffolge-Adresse zur Anwendung auf den Steuerspeicher 116 über die Multiplexereinrichtung 120 und eine schreibbare Steuerspeicher-Multiplexereinrichtung 130, welche die letzte Adresse, die in dem Register 128 gehalten wird, auf die Ablauffolge-Adreß-Multiplexereinichtung 126 zurückführt.
- Die Ablauffolgesteuereinheit 122 wird direkt mit Hilfe einer Sprung-Steuer-Multiplexereinrichtung 132 gesteuert, welche ein Sprung-Steuersignal aus einer Vielzahl logischer Eingänge erzeugt (vgl. Fig. 6A und 6B).
- Ein schreibbarer Steuerspeicher-Datenbus 134 (WCS), der 28 Bit breit ist, kommuniziert direkt mit dem schreibbaren Steuerspeicher 116 und gibt die Werte frei, die hierin gehalten werden, um durch die Datenfolgesteuereinheit 100 entlang der in den Fig. 6A und 6B gezeigten Wege zu zirkulieren. Ein Opcode-Bus 136 führt zu einem Opcode-Dekodierer 138, welcher alle fünf Opcode -Bits in eine Vielzahl logischer Bedingungen auf den Steuerleitungen dekodiert, die aus dem Opcode -Dekodierer 138 herausführen. Die ECC/CRC SEL- Leitung, die ECCOP-Leitung und die CRCOP-Leitung sind, wie bereits beschrieben, direkt mit dem ECC-Syndrom-Erzeuger 10 verbunden. Eine PUSH-SEL-Leitung erstreckt sich zu einer Push-Multiplexereinichtung 140, welche es beispielsweise ermöglicht, die Datenfeld- Zählbytes C3, C2 und C1 direkt in den oberen Beriech eines 4-Byte-Stapelregisters 142 zu schieben. Ein Bus des oberen Bereichs des Stapelspeichers (TOS) und ein Bus des nächsten Bereichs des Stapelspeichers (NOS) verbinden den Stapelspeicher 142 über eine Multiplexereinrichtung 144 mit einem Byte-Folgezähler 146, wobei die Multiplexereinrichtung 144 weiterhin die Fähigkeit hat, die Ablauffolgezähler 146 mit "1"-Werten zu laden. Der Byte- Ablauffolgezähler 146 hält den gegenwärtigen Byte-Zählstand (verbleibende Feldlänge innerhalb eines Blocks in Byte) in der Datenfolgesteuereinheit 100. Wenn der gegenwärtig geladene Byte-Zählstand auf Null inkrementiert wird, ist das Ende des speziellen Feldes erreicht, und der Ablauffolgezähler 146 gibt einen SCHT = 0-Wert an die Sprung-Steuer- Multiplexereinrichtung 132 so aus, daß ein nächster Zustand aufgerufen werden kann.
- Ein Steuer-Dekodierer 148 empfängt von dem schreibbaren Steuerspeicher 116 primäre Steuer-Bytes, sekundäre Steuer-Bytes und Zählauswahl-Bytes und dekodiert diese Werte in spezifische logische Steuerwerte, welche über Steuerleitungen ausgegeben werden, die in den Fig. 6A und 6B als aus dem Dekodierer 148 herauskommend gezeigt sind, wobei das Schreib-Gatter-Signal WRGATE und ein Initialisierungs-ECC-Signal IECE umfaßt sind, welche den ECC-Syndrom-Erzeuger direkt steuern.
- Eine Schleifenzählereinrichtung 150 ist mit einer Anzahl von Scleifen vorgesetzt, die während einer speziellen Datenblock-Übertragungstransaktion ausgeführt werden sollen (jede Schleife repräsentiert nominell die Zustände, die notwendig sind, um einen Datenblock zu übertragen), und erzeugt einen LOOPCNT = 0-Steuerwert, wenn der Zählstand Null erreicht. Dieser Steuerwert signalisiert, daß die gewünschte Anzahl von Datenblöcken übertragen wurde und wird gleichfalls an die Sprung-Steuer-Multiplexereinrichtung 132 übermittelt. Eine Index-Zeitablauf-Zähleinrichtung 152 überwacht den Beginn jeder Spur, in dem ein Index- Zeitablauf-Wert INXCNT = 0 erzeugt wird, welcher benutzt wird, um die Datenfolgesteuereinheit 124 zu steuern. Ein Rohindex-Signal wird einmal pro Umdrehung in dem ersten der Servosektoren 5 gespeichert und mit Hilfe der Null-Steuerschaltung 180 ermittelt und benutzt, um die Index-Zähleinrichtung 152 zu takten. Andere Eingänge der Datenfolgesteuereinheit sind der Sprungwert von der Sprung-Steuer-Multiplexereinrichtung 132, der Eingang von dem Adreßmarken-Detektor 102, daß eine Adreßmarken gefunden wurde AMFOUND, und der Byte-Abfolgezähler-SCHT = 0-Wert der Abfolgezähleinrichtung 146.
- Fig. 7 zeigt ein Festplattenlaufwerks-Datenspeicher-Teilsystem 160, welches wenigstens eine sich drehende Datenspeicherplatte 162 umfaßt, die einen Durchmesser von etwa 8,9 cm (3,5 Inch), vorzugsweise einen Speicherplattendurchmesser von etwa 6,3 cm (2,5 Inch) aufweist (die Erfindung arbeitet vorteilhaft mit jedem praktischen Plattendurchmesser, ob er größer oder kleiner ist), wobei die Platte mit Hilfe eines Spindelmotors 164 mit einer im wesentlichen konstanten Winkelgeschwindigkeit gedreht wird, wie 3600 Umdrehungen pro Minute, und wobei der Spindelmotor 164 ein direkt getriebener, bürstenfreier Gleichstrom-Spindelmotor sein kann, welcher in Verbindung mit einer Plattenspindel-Nabe gebildet ist, auf der die Platte 162 befestigt ist. Der Motor 164 wird mit Hilfe einer Motortreiberschaltung 166 getrieben, welche durch eine Motorsteuerschaltung 168 gesteuert wird, die in einem VLSI- Schaltungschip enthalten ist, der darüber hinaus die Datenfolgesteuereinheit 100, den ENDEC 104, eine Servo-Steuereinrichtung 180, den PWM-Ausgnag 178, eine Mikrocontroller- Schnittstelleneinrichtung 202 und eine Puffer-Speicher-Steuereinrichutng 210 umfaßt.
- Die Motorsteuerschaltung 168 spricht direkt auf eine Servor-Steuerschaltung 180 an, welche einen Rohindex-Impuls liefert, der beispielsweise von dem ersten der mehreren Servosektoren S gelesen wird. Der Rohindex-Impuls wird gegen die Referenz-Frequnez getaktet, und die Servo-Steuerschaltung 180 liefert, wie dies von Zeit zu Zeit angezeigt werden kann, Befehle zur Beschleunigung oder zum Abbremsen an den Motortreiber 166.
- Mehrere, beipielsweise Dünnfilm-Datenwandlerköpfe 170A und 170B sind jeweils mit gegenüberliegenden Hauptdaten-Speicheroberflächen wenigstens einer Datenspeicherplatte 162 verbunden. Die Datenwandlerköpfe sind vorzugsweise, jedoch nicht notwendigerweise an Ladebalken montiert, welche in einer Linie ausgerichtet sind und ihrerseits an vertikal ausgerichteten Armen eines Arm-Aufbaus 171 eine 3 Drehschwingspulenstellantriebs 172 angeordnet sind, der im Hinblick auf die Masse austariert ist. Diese Köpfe 170A und 170B arbeiten hinsichtlich der Datenoberfläche gewöhnlich in einer Kontakt-Start-Stop-Beziehung und "fliegen" während der Operationen über der Oberfläche auf einem Luftlager, wie es beispielsweise bei der Winchester-Festplatten-Technologie üblich ist.
- Eine Spule des Stellantriebs 172 wird mittels einer Servo-Treiberschaltung 174 getrieben, welche als Reaktion auf tiefpaß-gefilterte breite-modulierte Impulse, die von einem Filter 176 empfangen werden, einen Treiberstrom entwickelt. Der Filter 176 ist innerhalb der Servo- Steuerschaltung 180 mit dem Servo-Impulsbreiten-Modulator 178 verbunden. Servo-Impulse, welche mit Hilfe eines Impulsdetektors 184 gebildet werden, und deren Spitzen mit Hilfe eines Spitzen-Detektors 192 ermittelt werden, werden in einem Analog-Digital-Wandler 194 in digitale Werte umgewandelt und dirket an die Mikrocontrollereinrichtung 196 geliefert. Gropkopfpositionsinformation, die von dem Kopf 170 von den eingebetteten Servosektoren gelesen wird, wird mittels der Servo-Steuerschaltung 180 in einer Art direkt dekodiert, die unabhängig von dem PLL 188, der ENDEC 104 und der Datenfolgesteuereinheit 100 ist. Die Servo-Steuerschaltung 180 ist mit einer Master-Ablaufsteuereineit implementiert, welche für die verschiedenen Felder, die jeden Servosektor, einschließlich eines Spuridentifkationsfeldes enthalten, eine Zeitsteuerung ausführen, wobei das Spuridentifizierungsfeld mittels eines Da tenlesers der Schaltung 180 und eines Fein-Positions-Offset-Signals kodiert wird. Die Amplituden der Fein-Positions-Offset-Signale werden abgetastet, in der Spitzen-Ermittlungsschaltung 192 gehalten und während einer Servo-Phase der gemeinsamen Operationen der Mikrocontrollereinrichtung 196 mittels dieser verarbeitet. Weitere Details der bevorzugten Servo-Anordnung des Laufwerks 160 können in dem US-Patent 5,170,299 gefunden werden, welches auf der US-Patentanmeldung 07/569,965 basiert, die am 17. August 1990 eingereicht wurde.
- Beipspielsweise wird jeder Datenkopf 170a oder 170b mit Hilfe der Kopfauswahl-Schaltungstechnik ausgewählt, welche in einer Vorverstärker/Auswahl/Schreib-Treiberschaltung 182 enthalten sind, beispielsweise vom Typ SSI 32R4610R2 oder eine 4-Kanal-Dünnfilm-Kopf- Lese/Schreib-Vorrichtung, die von Silicon Systems, Inc., Tustin, California hergestellt wird. Die analogen Flußübergangs-Signale, welche durch den ausgewählten Kopf umgewandelt werden, werden in einem Vorverstärkerteil der Schaltung 182 vorverstärkt, welches vorzugsweise auf einem dünnen, flexiblen Plastiksubstrat (MylarTM) montiert ist, welches innerhalb einer hermetisch abgedichteten Kopf und Plattenanordnung und in unmittelbarer Nähe zu den Datenwandlerköpfen 170a und 170b mehrere leitende Bahnen aufweist, um das Signal- Rausch-Verhältnis der analogen Signale zu verbessern, die von den Speicheroberflächen wiedergewonnen werden.
- Die wiedergewonnenen analogen Daten werden dann durch einen Impuls-Detektor 184 geführt, welcher, wie üblich, die analogen Flußübergänge in digitale Logik-Flanken transformiert. Eine Schreib-Vorkompensierungsschaltung 186 kompensiert Daten vor, die auf die Platte geschrieben werden sollen, welche von der Datenfolgesteuereinheit 100 aufgenommen wird. Die vorkompensierten bzw. ausgeglichenen Schreibdaten werden für die Bereitstellung an den ausgewählten Datenwandler direkt an die Kopf/Auswahl/Vorverstärker-Schaltung 182 geliefert. Eine Phasenregelkreis-Schaltung 188 trennt die digitalen Flanken in Datenbit-Paare (kodierte Daten) und liefert solche Datenbit-Paare an den Kodierer/Dekodierer 104, der in Fig. 5 als Teil der Datenfolgesteuereinheit 100 dargestellt ist. Ein Frequenz-Synthesizer 190 aktiviert mehrere Referenzfrenquenzen für die Synthetisierung, um der bereits beschriebenen Bitaufzeichnung in Zonen zu dienen. Der Synthesizer 190 arbeitet direkt unter der Aufsicht einer programmierten Mikrocontrollereinrichtung 196. Der Impuls-Detektor 184, die Schreib- Vorkompensationsschaltung 186, der PLL 188, der Frequenz-Synthesizer 190 und der Servobündel-Spitzendetektor 193 sind vorzugsweise innerhalb einer einzelnen, integrierten VLSI-Schaltung enthalten, wie DP8491, welche von der National Semiconductor Corporation hergestellt wird.
- Ein Mikrocontroller-Adreß/Datenbus 198 und ein Adreßbus hoher Ordnung 200 erstrecken sich direkt von der Mikrocontrollereinrichtung 196 zu einer Mikrocontroller-Schnittstelle 202, welche direkt mit der Datenfolgesteuereinheit 100, dem Kodierer/Dekodierer 104, der Motorsteuerung 168, der Servo-Steuerschaltung 180 und einer Pufferspeicher-Steuereinichtung 210 kommuniziert. Wie erwähnt, sind diese Schaltungen vorzugsweise, jedoch nicht notwendigerweise innerhalb einer einzelnen, spezifischen VLSI-Anwendungs-CMOS-Schaltung ausgebildet, wie es mittels des einzigen Blocks für diese Schaltungen in den Fig. 6A und 6B vorgeschlagen ist. Ein Adreßbus 204 erstreckt sich von der Mikrocontroller-Schnittstelle 202 zu einem Programmspeicher 206. Bestimmte Adreßbit-Stellen zur Adreßierung des Programmspeichers 206 werden erzeugt und mittels der Mikrocontrollereinrichtung 196 über einen Adreßbus 208 direkt an den Programmspeicher 206 ausgegeben.
- Die Pufferspeicher-Steuereinrichtung 210 erzeugt Pufferadressen und gibt diese über einen Bus 212 an einen Pufferspeicher 214 aus, welcher bevorzugt als ein Daten-Cash ausgebildet ist. Datenblöcke werden aus dem und in das FIFO-Register 108 innerhalb der Datenfolgesteuereinheit 100 und des Pufferspeichers 214 über einen Pufferdaten-Bus 216 übertragen. Der Bus 216 erstreckt sich auch zu einer Schnittstellen-Steuerschaltung 218, welche über einen Schnittstellenbus 220, der mit einem Host-System vebunden ist, Datenblöcke und Befehlswerte empfängt, speichert die Blöcke und Werte in dem Speicher 214 und übermittelt Statuswerte und Datenblöcke von dem Speicher 214 über den Schnittstellenbus 220 an den Host zurück. Die Schnittstellenschaltung kann Host-Teilsystem-Buslevel-Schnittstellen mit Industriestandard, beispielsweise den SCSI-Schnittstellenstandard, oder den IDE-Schnittstellenstandard (IBM AT-Bus) implementieren. Dieses ist aus dem Stand der Technik bekannt. Beispielsweise ist eine 5380-SCSI-Schnittstellen-Steuereinrichtung vom Typ NCR einen geeignete Schnittstellen-Steuerschaltung 218 zur Implemntierung des SCSI-Bus-Standards.
- Zwischen der Mikrocontrollereinrichtung 196 und dem Pufferspeicher 214 existiert über die Mikroschnittstelle 202 und die Puffersteuerung 210 ein direkter Speicherzugriffsweg. Auf diesem Weg ist es für die Mikrocontrollereinrichtung praktisch, auf spezielle Byte-Stellen des Pufferspeichers 214 zuzugreifen, um ein fehlerhaftes Byte von einer Fehlerstelle zurückzuziehen, das fehlerhafte Byte einem XOR-Vergleich mit einem Korrekturwert zu unterziehen, und den Korrekturwert auf die Fehlerstelle zu schreiben, um ein erfindungsgemäßes Sofort- Fehlerkorrektur-Verfahren zu implementieren.
- Wie wiederholt beschriebn wurde, ist das Plattenlaufwerk 160 vorzugsweise ein Teilsystem oder eine Umgebung zur Nutzung der erfindungsgemäßen Sofort-Fehlerkorrektur-Techniken. Wie der Fachmann zu würdigen weis, werden viele der Niedrigpegel-Wiederholungs- Syndrom-Erzeugungs- und Überprüfungs-Aufgaben von einer Syndrom-Erzeuger-Hardware ausgeführt, wie sie in Fig. 4 gezeigt ist und in Verbindung hiermit beschrieben wurde. Die höherwertige Aufgabe zur Berechnung der Fehlerkorrekturwerte wird bei Bedarf von der Mikrocontrollereinrichtung 196 in Übereinstimmung mit einem Fehlerkorrektur- Serviceroutinen-Programm ausgeführt, wie es in der Beschreibung beschrieben wurde.
- Vorzugsweise ist die Mikrocontrollereinrichtung 196 eine einzelne, monolytische Mikrocontrollereinrichtung, beispielsweise der NEC 78322, die pro Servosektor in einer Anordnung arbeitet, die in zwei Zeitphasen unterteilt ist, wobei ein erstes Zeitintervall nach der Ankunft jedes Servosektors Servo-Steueroperationen zur Kopfpositionierung gewidmet ist, und wobei ein zweites und folgendes Zeitintervall anderen Aufgaben gewidmet ist, die beispielsweise Fehlerkorrekturoperationen umfassen. Einen Überblick über diese Formen der Plattenlaufwerksarchitektur ist in dem US-Patent 4,669,004 von Moon et al. offenbart.
- Ein hierachisches System zur Ausführung der Aufgaben, die durch die Mikrocontrollereinrichtung 196 während des zweiten und folgenden Zeitintervalls ausgeführt werden, ist in der US-Patentanmeldung 07/192,353 offenbart, die am 10. Mai 1998 eingereicht wurde und auf die das US-Patent 5,005,089 erteilt wurde.
- Die Fehlerkorrekturfunktionen der beispielhaften Mikrocontrollereinrichtung 196 könnten ebenso mit Hilfe einer oder mehrerer Mikrocontrollereinrichtungen in einer Mehrfach- Mikrocontroller-Architektur mit verbesserter Echtzeit-Leistung, jedoch höheren Kosten für die Implementierung, ausgeführt werden.
- Im Überblick umfaßt der Fehlerkorrekturprozeß für Plattenoperationen zum Datenlesen von der Platte während des Rückleseprozesses der Daten (nach jedem Datenblock sind Syndrom- Bytes und Crosscheck-Bytes umfaßt, die während einer vorhergehenden Daten- Schreibopperation angehängt wurden) die folgenden Schritte:
- 1. Setzen des Schieberegisters des Syndrom-Erzeugers 10 auf einen vorbestimmten, bekannten Zustand, welches ein wiederkehrendes Muster beliebig geordneter Einsen und Nullen sein kann.
- 2. Erzeugen der Syndrom-Restbytes und Crosscheck-Syndrom-Rest-Bytes für einen Datenblock (Datensektor) aus dem Strom von Daten-Bytes, welcher von der Platte gelesen wird, indem solche Bytes durch einen Syndrom-Erzeuger 10 geschickt werden.
- 3. Prüfen, um zu sehen, ob die Rest-Bytes jeder Verschachtelung Null sind, wenn das letzte Byte jeder Verschachtelung in den Syndrom-Erzeuger 10 getaktet wird.
- a) Wenn die Rest-Bytes für jede Verschachtelung Null sind, warten auf den nächsten Block oder Sektor, weil keine Korrektur notwendig ist.
- b) Fortfahren mit Schritt 4, wenn ein oder mehrere Rest-Bytes für eine Verschachtelung ungleich Null sind, und wenn der Syndrom-Latch zum Halten des Syndroms verfügbar ist,
- c) Anhalten des Datenflusses, wenn die Rest-Bytes ungleich Null sind und wenn der Syndrom-Latch gegenwärtig nicht für das Halten des Syndroms verfügbar ist (das bedeutet, die Rest-Bytes des letzten Datenblocks bleiben während einer bereits begonnenen, sofortigen Fehlerkorrekturoperation hierin zwischengespeichert); Sofort-Fehlerkorrektur kann nicht fortgeführt werden.
- 4. Zwischenspeichern der Rest-Bytes für jede Verschachtelung in dem Syndrom-Latch 68. Diese Rest-Bytes haben die Form R0, R1, R2 und R3 (für jede Verschachtelung), wobei:
- R(x) = R3x³ + R2x² + R1x + R0 (30)
- Nachdem die Rest-Bytes R1 für einen gegenwärtigen Datenblock in dem Syndrom- Latch 68 zwischengespeichert sind, setzt der Syndrom-Erzeuger 10 die Dekodierung der Rest-Bytes für den nächsten Datenblock fort. Ein Paar Rest-Bytes benachbarter Datenblöcke, die ungleich Null sind, bricht die beschriebene Implementierung des Sofort-Fehlerkorrekturprozesses effektiv ab, weil die gegenwärtig angewendete Mikrocontrollereinrichtung 196 nicht über genügend RAM-Speicherraum verfügt, um die Rest-Bytes aufeinanderfolgende bzw. zusammenhängende Datenblöcke sofort zu empfangen und zu speichern. Es spricht jedoch nichts dagegen, einen vergrößerten RAM-Speicherraum zum Halten dieser Bytes zu nutzen, und hierdurch eine fortlaufende Sofort-Fehlerkorrektur für mehrere aufeinanderfolgende Datenblöcke zu er möglichen. Das Potential für den Abbruch hängt weiterhin von der Zeit ab, die von der Mikrocontrollereinrichtung 196 benötigt wird, um den ersten Fehler zu korrigieren und die Korrektur mit dem Crosscheck-Syndrom zu testen. Eine weitere Begrenzung liegt in dem Umfang des Blockpufferspeichers 214. Auch der Syndrom-Erzeuger 10 kann dadurch modifiziert werden, daß zusätzliche Schaltungstechnik für die direkte Berechnung und Ausgabe von Teilsyndrom-Bytes an die Mikrocontrollereinrichtung 196 über den Syndrom-Latch vorgesehen wird, um die Fehlerkorrektur zu beschleunigen.
- 5. Veranlasse die Mikrocontrollereinrichtung 196 die Fehlerkorrektur-Serviceroutine aufzurufen und auszuführen, und beginne die Ausführung der Routine. Wie dem Fachmann bekannt ist, kann dieser Schritt durch Unterbrechungs- oder Abruftechniken implementiert werden.
- 6. Übertrage während der Ausführung des Fehlerkorrektur-Algorithmus bei Bedarf Rest- Bytes von dem Rest-Latch 68 an die Mikrocontrollereinrichtung 196. Die Firmware konvertiert dann in Übereinstimmung mit der folgenden Gleichung die Rest-Bytes R(x) in Teilsyndrom-Bytes S(x), wenn irgendeines der Rest-Bytes ungleich Null ist:
- i = 0, 1, 2 und 3
- [Wobei das Plus-Symbol des Exponenten R eher eine arithmetische Addition als eine exklusive-OR-Operation anzeigt], so daß Teilsyndrome S0, S1, S2 und S3 erhalten werden. Der Umwandlungsprozeß muß ausgeführt werden, weil die Syndrom- Erzeugerschaltung 10 auch während des Zurücklesens von Daten genutzt wird, um die Rest-Bytes Ri zu liefern, so daß der Umfang der notwendigen Hardware besser minimiert werden kann.
- 7. Wandle für jede Verschachtelung die Rest-Bytes innerhalb einer Verschachtelung von drei in Teilsyndrom-Bytes um:
- S0 = Data modulo (X + alpha¹²&sup6;))
- S1 = Data modulo (X + alpha¹²&sup7;)
- S2 = Data modulo (X + alpha¹²&sup8;)
- S3 = Data modulo (X + alpha¹²&sup9;).
- a. Fliegende bzw. sofortige Einzelbündel-Fehlerkorrektur. Lasse L1 gleich der Fehlerstelle und E1 gleich dem Fehlerwert für die sofortige Einzelbündel- Fehlerkorrektur seien.
- (1) Wenn (S0 = 0) oder (S1 = 0) oder (S2 = 0) oder (S3 = 0), gehe zum Doppelbündel-Fehlerkorrektur-Algorithmus.
- (2) Wenn (S1/S0 = S2/S1 = S3/S2), fahre fort, andernfalls gehe zum Doppelbündel-Fehlerkorrektur-Algorithmus.
- (3) Führe aus: L1 = Log [S1/S0] und e1 = S1 (S0/S1)¹²&sup7; aus.
- (4) Wenn L1 außerhalb eines vorbestimmten Bereiches ist, (d. h. 0-175 für Verschachtelung 1; 0-174 für die Verschachtelungen 2 und 3), gehe zur Doppelbündel-Korrektur, andernfalls fahre mit Schritt 8 fort.
- b. Doppelbündel-Fehlerkorrektur. Lasse L1 und L2 gleich den Fehlerstellen für die Doppelbündel-Fehlerkorrektur; und lasse e1 und e2 gleich den Fehlerwerten auf den jeweiligen Stellen seien.
- (1) Berechne phi 1 und phi 2 in Übereinstimmung mit den Gleichungen (16) und (17).
- (2) Wenn der Zähler oder Nenner von phi 1 oder phi 2 gleich Null ist, zeige dem Host einen unkorrigierbaren Fehler gegenüber an.
- (3) Finde die Wurzeln der oben gegebenen quadratischen Gleichung (18) und gib die Ergebniswerte X1 und X2 aus.
- (4) Wenn phi (x) keine Lösung hat, zeige dem Host einen unkorrigierbaren Fehler an.
- (5) Berechne Fehlerstellen L1 und L2 in Übereinstimmung mit den Gleichungen (19) und (20). Zeige dem Host einen unkorrigierbaren Fehler an, wenn entweder L1 oder L2 einen Wert aufweisen, der außerhalb des vorbestimmten, erlaubten Wertebereiches ist.
- (6) Berechne die Fehlerwerte e1 und e2 in Übereinstimmung mit den obigen Gleichungen (21) und (22). Zeige dem Host einen unkorrigierbaren Fehler an, wenn entweder e1 oder e2 Null sind. Fahre mit Schritt 8 fort
- 8. Die Mikrocontrollereinrichtung 196 verarbeitet dann die Wirkung eines geänderten Bytes auf das Crosscheck-Teilsyndrom, sichert diesen verarbeiteten Wert und wiederholt diesen Prozeß für jede der anderen zwei Verschachtelungen des Datenblocks.
- 9. Wenn die Korrektur den Crosscheck-Überprüfungsschritt 8 überspringt, korrigiert die Microcontrollereinrichtung 196 anschließend den Fehler mittels des Zurückziehens des fehlerhaften Bytes von der Fehlerstelle innerhalb des Blocks, des XOR-Vergleichs des fehlerhaften Bytes mit einem Korrekturwert, um ein korrigiertes Byte zu liefern, und des Zurückschreibens des korrigierten Bytes auf die Fehlerstelle, wobei der DMA- Kanal der Mikrocontrollereinrichtung 196 zu dem Pufferspeicher 214 genutzt wird, welcher durch die Mikro-Schnittstelle 202 und die Puffersteuerung 210 führt.
- 10. Berücksichtigung der Fehlerkorrektur:
- a. Wenn das Crosscheck-Teilsyndrom gleich Null ist, wird bestimmt, daß der Fehlerkorrekturprozeß innerhalb der Wahrscheinlichkeit einer Falschkorrektur liegt, und deshalb beendet; der Syndrom-Latch 68 wird entlassen, und der Datenblock in dem Speicherpuffer 214, der den korrigierten Fehler enthält, wird dann für die Übertragung an dem Host entlassen.
- b. Wenn das Crosscheck-Teilsyndrom ungleich Null ist, wird die Sofort- Fehlerkorrektur gestoppt, und Schritt 11 wird ausgeführt.
- 11. Ein oder mehrere Wiederholungen werden dann ausgeführt, bis eine Korrektur erreicht ist, oder bis bestimmt wurde, daß der Fehler viel größer ist als ursprünglich angenommen. In diesem Fall wird dem Host ein unkorrigierbarer Fehler angezeigt. Wenn eine Wiederholung mittels der Programmierung der Mikrocontrollereinrichtung 196 befehligt wird, wird die Wiederholung durch die Mikrocontrollereinrichtung in dem Sinne offline ausgeführt, daß dieser Prozeß ausgeführt wird, nachdem der Datenfluß unterbrochen ist. Eine Fehlernachricht kann erzeugt werden und an den Host gesandt werden, und der Wiederholungsprozeß kann beispielsweise achtmal wiederholt werden, wie es für Schnittstellen Standard ist.
- Deshalb läuft der Sofort-ECC im wesentlichen im Hintergrund als Teil des Lese-Kanal- Prozesses ab, mittels dessen Daten von der Platte an den Host in einer Art übertragen werden, die für die Host-Maschine transparent ist. Wenn die hierin beschriebenen, transparenten Sofort-ECC-Verfahren nicht in der Lage sind, den Fehler oder die Fehler so zu korrigieren, daß es für den Benutzer akzeptabel ist, können an der Schnittstelle mit dem Host Fehlerwiedergewinnungs-Aktivitäten und -Verfahren in den Vordergrund treten, beispielsweise der herkömmliche SCSI-Fehlerkorrektur-Standard.
- Fehlerermittlungsprozesse zum Prüfen der ID-Felder werden vollkommen innerhalb der Datenfolgesteuereinheit 100 so ausgeführt, daß, wenn ein Fehler in dem ID-Feld ermittelt ist, Wiederholungen ausgeführt werden, bis entweder der Sektor als nicht-zugreifbar deklariert ist, oder auf ihn zugegriffen wird.
Claims (17)
1. Reed-Solomon-Fehlerkorrekturvorrichtung zum Ausführen einer Fehlerkorrektur an
einem Datenblock innerhalb einer Folge aus im wesentlichen zusammenhängenden
Datenblöcken, die von einer Quelle zu einem Ziel über eine Blockpufferspeichereinrichtung
zum vorübergehenden Speichern mehrerer aufeinanderfolgender Datenblöcke fließen, mit
einer Mikrocontrollereinrichtung (196) zum Überwachen des Flusses der Datenblöcke,
welche über die Blockpufferspeichereinrichtung gesendet werden, wobei die
Fehlerkorrektur sofort ausgeführt wird und die Vorrichtung folgende Merkmale aufweist: eine
Galois-Finitfeldsyndromgenerator- und Restwiedergewinnungsschaltungs-Einrichtung (10),
die mit dem Datenstrom verbunden ist, um jeden Datenblock von der Quelle zu
empfangen und zu verarbeiten, um mehrere Fehlerkorrekturrestbytes aus jedem Datenblock
wiederzugewinnen, wobei die Bytes eine Funktion der Daten in dem Datenblock und der an
den Datenblock angehängten Fehlerkorrekturbytes sind, welche von der Quelle gesendet
wurden, wobei die Generator- und Restwiedergewinnungsschaltungs-Einrichtung (10)
eine Prüfeinrichtung (78) zum Vergleichen vorgegebener Bytes der wiedergewonnenen
mehreren Fehlerkorrekturrestbytes mit Null aufweist, um deren Äquivalenz oder Nicht-
Äquivalenz zu ermitteln; und eine Latcheinrichtung (68) zum Zwischenspeichern
wiedergewonnener Teilfehlerkorrekturrestbytes abhängig davon, daß die Prüfeinrichtung (78)
eine Nicht-Äquivalenz ermittelt hat; wobei die Mikrocontrollereinrichtung (196) auf diese
Nicht-Äquivalenz anspricht, um eine Fehlerkorrektur-Dienstroutinen-Firmware
auszuführen und daraufhin einen direkten Zugriff auf die Latcheinrichtung (78) zu haben, um die
wiedergewonnenen Fehlerkorrekturrestbytes selektiv zu erhalten und daraus wenigstens
eine Fehlerposition und einen entsprechenden Fehlerwert aus den erhaltenen
wiedergewonnenen Fehlerkorrekturrestbytes zu berechnen, korrigierte Daten zu erzeugen und
die fehlerhaften Daten des Blocks durch die korrigierten Daten zu ersetzen, wobei die
Generator- und Restwiedergewinnungsschaltungs-Einrichtung (10) ferner eine Crosscheck-
Syndromgeneratoreinrichtung zum Wiedergewinnen von Crosscheck-
Syndrominformation, welche zuvor an jeden Datenblock angehängt wurde, bevor er die
Quelle verläßt, und zum Speichern der wiedergewonnenen Crosscheck-
Syndrominformationen der Latcheinrichtung (68) aufweist, und wobei die
Mikrocontrollereinrichtung (196) ferner den Einfluß einer Fehlerkorrektur durch Aktualisieren der
Crosscheck-Syndrominformation überprüft.
2. Reed-Solomon-Fehlerkorrekturvorrichtung nach Anspruch 1, bei der die Generator- und
Wiedergewinnungsschaltungs-Einrichtung (10) ferner eine Fehlererfassungseinrichtung
zum Wiedergewinnen und Überprüfen von Fehlererfassungssyndrominformation, die
zuvor an ein Daten-ID-Feld jedes Datenblocks angehängt wurde, aufweist.
3. Reed-Solomon-Fehlerkorrekturvorrichtung nach Anspruch 1 oder 2, bei der die
Generator- und Wiedergewinnungsschaltungs-Einrichtung (10)
Fehlerkorrekturcodiersyndrominformationen abhängig von einem Galois-Feld (2&sup8;) erzeugt, welches von einem
Feldgeneratorpolynom erzeugt wurde; das die Form x&sup8; + x&sup4; + x³ + x² + 1 hat, wobei das erste
Element des Feldes gleich alpha = 2B Hex (00101011 binär) ist und das
Codegeneratorpolynom die Form G(x) = x&sup4; + (alpha¹&sup8;) · x³ + (alpha&sup8;&sup7;) · x² + (alpha¹&sup8;) · x¹ + 1 hat.
4. Reed-Solomon-Fehlerkorrekturvorrichtung nach Anspruch 1 oder 2, bei der die
Generator- und Wiedergewinnungsschaltungs-Einrichtung (10) eine Crosscheck-
Syndromgenerator- und Wiedergewinnungsvorrichtung zum Wiedergewinnen von
Crosscheck-Restinformation aufweist, die sich auf Crosscheck-Syndrominformation
gemäß dem Polynom G(x) = x² · a bezieht, wobei a ein Element von GF(2&sup8;) und ungleich
eins ist, die an den Datenblock angehängt wird, bevor dieser von der Quelle gesendet
wird; und wobei die Mikrocontrollereinrichtung den Effekt der korrigierten Daten auf eine
Crosscheck-Restinformation berechnet.
5. Reed-Solomon-Fehlerkorrekturvorrichtung nach Anspruch 4, bei der die Crosscheck-
Syndrominformation den Polynom G(x) = x² + alpha¹ entspricht.
6. Reed-Solomon-Fehlerkorrekturvorrichtung nach Anspruch 2, bei der die
Fehlererfassungsinformation, die an das Daten-ID-Feld angehängt wird, einem Zwei-Byte-Syndrom
gemäß dem folgenden Polynom entspricht:
GEDC2(x) = x² + ax + b, wobei a und b Elemente von GF(2&sup8;) sind, und wobei b ungleich
eins ist.
7. Reed-Solomon-Fehlerkorrekturvorrichtung nach Anspruch 6, bei der die
Fehlererfassungseinrichtung ein Zwei-Byte-Syndrom gemäß dem folgenden Polynom erzeugt:
GEDC2(x) = x² + x + alpha¹&sup8;.
8. Reed-Solomon-Fehlerkorrekturvorrichtung nach Anspruch 6, bei der die Generator- und
Wiedergewinnungsschaltungs-Einrichtung ferner eine Fehlererfassungseinrichtung zum
Erfassen eines Fehlers in einem Daten-ID-Feld jedes Datenblocks durch Erzeugen eines
Zwei-Byte-Syndroms gemäß dem folgenden Polynom aufweist:
GEDC2(x) = x² + alpha&sup8;¹x + alpha&sup8;¹.
9. Reed-Solomon-Fehlerkorrekturvorrichtung nach Anspruch 2, bei der die
Fehlererfassungsinformation, welche an das ID-Feld angehängt wird, einem Drei-Byte-Syndrom
gemäß dem folgenden Polynom entspricht:
GEDC3(x) = x³ + ax² + bx + c, wobei a, b, c Elemente von GF(2&sup8;) sind.
10. Reed-Solomon-Fehlerkörrekturvorrichtung nach Anspruch 9, bei der die
Fehlererfassungseinrichtung ein Drei-Byte-Syndrom der folgenden Form erzeugt:
GEDC3(x) = X³ + alpha&sup8;&sup7; · x² + alpha&sup8;&sup7; · x + 1.
11. Reed-Solomon-Fehlerkorrekturvorrichtung nach Anspruch 9, bei der die Generator- und
Wiedergewinnungsschaltungs-Einrichtung ferner eine Fehlererfassungseinrichtung zum
Erfassen eines Fehlers in einem Daten-ID-Feld des Datenblocks durch Erzeugen eines
Drei-Byte-Syndroms der folgenden Form aufweist:
GEDC3(x) = X³ + alpha&sup8;¹ · x² + alpha&sup8;&sup7; · x + alpha¹&sup8;.
12. Reed-Solomon-Fehlerkorrekturvorrichtung nach einem der vorangehenden Ansprüche
zum Ausführen einer sofortigen Fehlerkorrektur in einem Plattenlaufwerk-
Datenspeicheruntersystem (160) mit einer Quelle in der Form wenigstens einer sich
drehenden Datenspeicherplatte (162), wenigstens einem radial positionierbaren Datenwandler
(170) zum Schreiben von Daten auf die Platte und zum Lesen von Daten von der Platte,
und einer Folgesteuereinrichtung (100) zum Weiterleiten von Datenblöcken von der
Blockpufferspeichervorrichtung (214) seriell auf die Platte (162) während der
Datenschreiboperationen und zum Weiterleiten serieller Daten in Datenblöcke zur Weitergabe
an die Blockpufferspeichereinrichtung (214) während der Datenleseoperationen, wobei
die Blockpufferspeichereinrichtung (214) mehrere Blöcke speichern kann, die
Mikroprozessoreinrichtung (196) die Kopfpositioniereinrichtung (172) überwacht, um den
Datenwandlerkopf (170) bei ausgewählten Datenspurpositionen zu positionieren und die
Übertragung der Daten zu einem Ziel in der Form eines Hostcomputers über die
Datenfolgesteuereinrichtung (100), die Blockpufferspeichereinrichtung (214) selbst und eine
Schnittstelle zu dem Host zu überwachen, wobei das Plattenlaufwerk-Datenspeicheruntersystem
folgende weitere Merkmale aufweist: die Galois-Feldsyndromgenerator- und
Wiedergewinnungsschaltungs-Einrichtung (10), die mit der Folgesteuereinrichtung (100) verbunden
ist, um jeden Datenblock zu empfangen und zu verarbeiten, um mehrere
Teilfehlerkorrektursyndrombytes für den Datenblock zu erzeugen, wobei die Bytes an den Datenblock
angehängt werden, bevor er während der Datenschreiboperation auf die Platte (162)
geschrieben wird, wobei die Generator- und Wiedergewinnungsschaltungs-Einrichtung (10)
Fehler erfaßt, indem sie mehrere Fehlerkorrekturrestbytes aus jedem Datenblock, der von
der Platte (162) gelesen wird, wiedergewinnt:
13. Vorrichtung nach Anspruch 12, bei der die programmierte Mikroprozessoreinrichtung
(196) einen einzigen Mikroprozessor (196) umfaßt.
14. Vorrichtung nach Anspruch 13, bei welcher der programmierte Mikroprozessor (196)
seine Funktionen zwischen der Kopfpositionssteuerung und -überwachung und der
Datenstromüberwachung einschließlich der Ausführung der Fehlerkorrekturdienstroutine
aufteilt.
15. Vorrichtung nach Anspruch 5, bei der die Crosscheck-Syndromgeneratoreinrichtung einen
Eingang (12) zum Empfangen jedes eingehenden Datenblocks als einen getakteten
Datenstrom aus seriellen Bytes, erste Summierknotenmittel (84) zum Summieren jedes Bytes
des eingehenden, getakteten Datenblock-Datenstroms mit einem Feedbackbyte zum
Erzeugen eines Summenbytes, erste Multiplizierermittel (86) zum Multiplizieren des
Summenbytes mit alpha¹ zum Erhalten eines ersten Produktbytes, erste getaktete
Latchstufenmittel (90a), die mit den ersten Multiplizierermitteln (86) verbunden sind, zum
Speichern des ersten Produktbytes während einer ersten Bytetaktperiode und zum
Speichern nachfolgender Produktbytes während nachfolgender Bytetaktperioden, zweite
getaktete Latchstufenmittel (90b), die mit den ersten getakteten Latchstufenmitteln (90a)
verbunden sind, zum Speichern des ersten Produktbytes während einer zweiten
Bytetaktperiode und zum Zurückführen des ersten Produktbytes während der zweiten
Bytetaktperiode als das Feedbackbyte zu dem Summierknoten (84) aufweist.
16. Reed-Solomon-Fehlerkorrekturcode-Syndromgeneratorvorrichtung nach einem der
Ansprüche 4, 5 oder 15, mit Mitteln zum Erzeugen eines Fehlererfassungssyndroms für ein
Daten-ID-Feld des Datenblocks.
17. Sofortfehlerkorrekturverfahren in einem Datenblock-Decodierprozeß zum Korrigieren des
Datenblocks innerhalb eines Strom aus im wesentlichen fortlaufenden Datenblöcken,
wobei jeder Block Fehlerkorrekturbytes aufweist, die an diesen gemäß eines vorgegebenen
Reed-Solomon-Codes während eines Codierprozesses angehängt werden, der vor dem
Datendecodierprozeß stattfindet, mit folgenden Verfahrensschritten: Weiterleiten des
Datenblocks durch eine Syndromgenerator- und Restwiedergewinnungsschaltung (10), die
einen Reed-Solomon-Syndromgenerator zum Erhalten wiedergewonnener Informationen
in Bezug auf die Daten in dem Datenblock und die Fehlersyndrominformation sowie
einen Crosscheck-Syndromgenerator umfaßt, Vergleichen der Fehlersyndrominformation
mit Null, um festzustellen, ob in dem Datenblock ein Fehlerburst vorhanden ist, und wenn
ein Fehlerburst ermittelt wird, Speichern der Fehlersyndrominformation in einem
Syndromlatch (68), um die Syndromgenerator- und Restwiedergewinnungsschaltung (10) für
den nächsten Datenblock des Datenstroms freizumachen, Bewirken, daß eine
Mikrocontrollereinrichtung (196) eine Fehlerkorrekturdienstroutinen-Firmware aufruft und
ausführt, und dann: selektives Übertragen von Bytes der Fehlersyndrominformation von dem
Syndromlatch (68) zu der Mikrocontrollereinrichtung (196), Ermitteln der Position und
eines korrigierten Wertes für den Fehlerburst gemäß eines vorgegebenen Reed-Solomon-
Burstfehlerkorrekturalgorithmus, der in der Mikrocontrollereinrichtung (196) durch die
Firmware realisiert wird, mit Hilfe der Mikrocontrollereinrichtung (196) und der
Firmware, Erzeugen korrigierter Daten und Ersetzten der fehlerhaften Daten des Blocks durch die
korrigierten Daten; wobei der Crosscheck-Syndromgenerator Crosscheck-
Syndrominformationen wiedergewinnt, welche zuvor an jeden Datenblock angehängt
wurde, bevor dieser seine Quelle verlassen hat, und Speichern der wiedergewonnen
Crosscheck-Syndrominformation in dem Syndromlatch (68), wobei die
Mikrocontrollereinrichtung ferner die Auswirkung einer Fehlerkorrektur überprüft, indem sie die
wiedergewonnene Crosscheck-Syndrominformation aktualisiert.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/650,791 US5241546A (en) | 1991-02-01 | 1991-02-01 | On-the-fly error correction with embedded digital controller |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69229753D1 DE69229753D1 (de) | 1999-09-16 |
DE69229753T2 true DE69229753T2 (de) | 2000-03-02 |
Family
ID=24610305
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69229753T Expired - Fee Related DE69229753T2 (de) | 1991-02-01 | 1992-01-30 | Sofortige Fehlerkorrektur mit eingebettetem digitalen Steuerungsgerät |
Country Status (6)
Country | Link |
---|---|
US (1) | US5241546A (de) |
EP (1) | EP0497593B1 (de) |
JP (1) | JP2724934B2 (de) |
KR (1) | KR950009384B1 (de) |
DE (1) | DE69229753T2 (de) |
IE (1) | IE920104A1 (de) |
Families Citing this family (89)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5210660A (en) * | 1990-01-17 | 1993-05-11 | International Business Machines Corporation | Sectored servo independent of data architecture |
US5475540A (en) * | 1991-06-04 | 1995-12-12 | Quantum Corporation | Magnetic data storage disk drive with data block sequencing by using ID fields after embedded servo sectors |
DE4140018A1 (de) * | 1991-12-04 | 1993-06-09 | Bts Broadcast Television Systems Gmbh, 6100 Darmstadt, De | Verfahren und schaltungsanordnung zum decodieren von rs-codierten datensignalen |
US5422895A (en) * | 1992-01-09 | 1995-06-06 | Quantum Corporation | Cross-checking for on-the-fly Reed Solomon error correction code |
US5357520A (en) * | 1992-01-31 | 1994-10-18 | International Business Machines Corporation | Method and apparatus for precompensation value determination in a PRML data channel |
EP0570648A1 (de) * | 1992-05-21 | 1993-11-24 | International Business Machines Corporation | Gerät zur Herstellung und Prüfung von Fehlerkorrekturkoden für Nachrichten in einer Nachrichtenvermittlungsanordnung |
US5517634A (en) * | 1992-06-23 | 1996-05-14 | Quantum Corporation | Disk drive system including a DRAM array and associated method for programming initial information into the array |
US5905347A (en) * | 1993-07-16 | 1999-05-18 | Dell Usa, L.P. | System and method for controlling a computer drive motor |
US5491395A (en) * | 1993-09-17 | 1996-02-13 | Maxtor Corporation | TUT servo IC architecture |
US5602857A (en) * | 1993-09-21 | 1997-02-11 | Cirrus Logic, Inc. | Error correction method and apparatus |
US5629949A (en) * | 1993-09-21 | 1997-05-13 | Cirrus Logic, Inc. | Error correction verification method and apparatus using CRC check remainders |
EP0727068A4 (de) * | 1993-11-04 | 1999-06-02 | Cirrus Logic Inc | Burstfehlerkorrektor |
US5729718A (en) * | 1993-11-10 | 1998-03-17 | Quantum Corporation | System for determining lead time latency as function of head switch, seek, and rotational latencies and utilizing embedded disk drive controller for command queue reordering |
US5544334A (en) * | 1993-12-22 | 1996-08-06 | International Business Machines Corporation | Micro channel bus computer system with IDE hard drive interface |
US5864716A (en) * | 1994-01-07 | 1999-01-26 | Cirrus Logic, Inc. | Tagged data compression for parallel port interface |
JPH10500519A (ja) * | 1994-03-03 | 1998-01-13 | シーラス ロジック, インコーポレイテッド | 自動分割フィールド処理のためのテーブル駆動方法および装置 |
US5610929A (en) * | 1994-03-11 | 1997-03-11 | Fujitsu Limited | Multibyte error correcting system |
KR100187383B1 (ko) * | 1994-03-25 | 1999-05-15 | 니시모토 강이치 | 사진필름 처리장치 및 그 제어방법 |
US5548795A (en) * | 1994-03-28 | 1996-08-20 | Quantum Corporation | Method for determining command execution dependencies within command queue reordering process |
US5623700A (en) * | 1994-04-06 | 1997-04-22 | Dell, Usa L.P. | Interface circuit having zero latency buffer memory and cache memory information transfer |
US5603063A (en) * | 1994-06-27 | 1997-02-11 | Quantum Corporation | Disk drive command queuing method using two memory devices for storing two types of commands separately first before queuing commands in the second memory device |
US5642366A (en) * | 1994-07-05 | 1997-06-24 | Adaptec, Inc. | Global parity symbol for interleaved reed-solomon coded data |
KR100335482B1 (ko) * | 1994-08-17 | 2002-11-27 | 삼성전자 주식회사 | 에러정정시스템 |
US5761220A (en) * | 1994-09-19 | 1998-06-02 | Cirrus Logic, Inc. | Minimum latency asynchronous data path controller in a digital recording system |
US6125469A (en) * | 1994-10-18 | 2000-09-26 | Cirrus Logic, Inc. | Error correction method and apparatus |
US5774481A (en) * | 1995-03-31 | 1998-06-30 | International Business Machines Corporation | Reduced gate error detection and correction circuit |
KR100255105B1 (ko) * | 1995-04-12 | 2000-05-01 | 마츠시타 덴끼 산교 가부시키가이샤 | 에러정정곱부호블록을생성하기위한데이타처리방법,그데이타를기록매체에기록하기위한데이타처리방법,그데이타처리장치및그데이타가기록된광디스크재생장치 |
US5854800A (en) * | 1995-06-07 | 1998-12-29 | Micron Technlogy, Inc. | Method and apparatus for a high speed cyclical redundancy check system |
US5778009A (en) * | 1995-06-14 | 1998-07-07 | Quantum Corporation | Dedicated ALU architecture for 10-bit Reed-Solomon error correction module |
US6012839A (en) * | 1995-06-30 | 2000-01-11 | Quantum Corporation | Method and apparatus to protect data within a disk drive buffer |
US5757826A (en) * | 1995-07-12 | 1998-05-26 | Quantum Corporation | Word-wise processing for reed-solomon codes |
US5757822A (en) * | 1995-08-24 | 1998-05-26 | Quantum Corporation | Bit-interleaved rate 16/17 modulation code with three-way byte-interleaved ECC |
US5771184A (en) * | 1995-10-12 | 1998-06-23 | Adaptec, Inc. | System and method for solving quadratic equation in galois fields |
US5787099A (en) * | 1995-10-12 | 1998-07-28 | Adaptec, Inc. | System and method for encoding and decoding data using numerical computations in galois fields |
US5812438A (en) * | 1995-10-12 | 1998-09-22 | Adaptec, Inc. | Arithmetic logic unit and method for numerical computations in galois fields |
US5805799A (en) * | 1995-12-01 | 1998-09-08 | Quantum Corporation | Data integrity and cross-check code with logical block address |
US5828513A (en) * | 1995-12-07 | 1998-10-27 | International Business Machines Corporation | Servo address apparatus and positioning methods for read, write and seek operations in a direct access storage device |
US5909334A (en) * | 1996-05-10 | 1999-06-01 | Western Digital Corporation | Verifying write operations in a magnetic disk drive |
US6108812A (en) * | 1996-06-20 | 2000-08-22 | Lsi Logic Corporation | Target device XOR engine |
US5889792A (en) * | 1996-10-01 | 1999-03-30 | Intel Corporation | Method and apparatus for generating syndromes associated with a block of data that employs re-encoding the block of data |
US5774648A (en) * | 1996-10-02 | 1998-06-30 | Mitsubishi Semiconductor Of America, Inc. | Address generator for error control system |
US5917670A (en) * | 1996-10-15 | 1999-06-29 | Quantum Corporation | Method for recovering data from disk with magneto-resistive head in presence of thermal asperities |
US6003151A (en) * | 1997-02-04 | 1999-12-14 | Mediatek Inc. | Error correction and detection system for mass storage controller |
US5905740A (en) * | 1997-04-08 | 1999-05-18 | Seagate Technology, Inc. | Apparatus and method for error correction |
GB2324445B (en) * | 1997-04-17 | 2002-08-21 | United Microelectronics Corp | Error correction and detection system for mass storage controller |
JP2954083B2 (ja) | 1997-05-01 | 1999-09-27 | 株式会社東芝 | 情報記録再生用媒体及び情報記録再生用媒体フォーマット装置並びに情報記録再生装置 |
IT1296023B1 (it) * | 1997-07-16 | 1999-06-04 | Sgs Thomson Microelectronics | Sistema di pilotaggio misto pwm/lineare impiegante due distinti stadi di pilotaggio |
US5974582A (en) * | 1997-10-14 | 1999-10-26 | Lsi Logic Corporation | High-speed chien search logic |
US5943348A (en) * | 1997-10-14 | 1999-08-24 | Lsi Logic Corporation | Method to check for burst limiting in error correcting systems |
US6279135B1 (en) * | 1998-07-29 | 2001-08-21 | Lsi Logic Corporation | On-the-fly row-syndrome generation for DVD controller ECC |
US6615387B1 (en) * | 1998-09-22 | 2003-09-02 | Seagate Technology Llc | Method and apparatus for error detection |
JP4077993B2 (ja) * | 1999-07-30 | 2008-04-23 | 株式会社日立グローバルストレージテクノロジーズ | 性能評価方法及び性能評価装置並びにこれらを用いた記録再生装置 |
WO2001039190A1 (fr) * | 1999-11-25 | 2001-05-31 | Fujitsu Limited | Procede de lecture d'un support de donnees, dispositif de stockage de donnees, procede de reproduction de donnees, systeme de reproduction de donnees et support de donnees utilise a cet effet |
EP1146650A1 (de) * | 2000-04-10 | 2001-10-17 | Hewlett-Packard Company, A Delaware Corporation | Fehlerkorrektur für Datenauzeichnung und Übertragung |
EP1146651A1 (de) * | 2000-04-10 | 2001-10-17 | Hewlett-Packard Company | Fehlerdetektion für Datenspeicherung und Übertragung |
US6986094B2 (en) * | 2001-03-29 | 2006-01-10 | Intel Corporation | Device and method for selecting opcode values with maximum hamming distance to minimize latency and buffering requirements |
US20030009558A1 (en) * | 2001-07-03 | 2003-01-09 | Doron Ben-Yehezkel | Scalable server clustering |
US7751138B1 (en) | 2001-12-28 | 2010-07-06 | Marvell International Ltd. | Correcting errors in disk drive read back signals by iterating with the Reed-Solomon decoder |
US6961197B1 (en) | 2001-12-28 | 2005-11-01 | Marvell International Ltd. | Correcting errors in disk drive read back signals by iterating with the Reed-Solomon decoder |
US6959411B2 (en) * | 2002-06-21 | 2005-10-25 | Mediatek Inc. | Intelligent error checking method and mechanism |
JPWO2004051650A1 (ja) * | 2002-11-29 | 2006-04-06 | 富士通株式会社 | データ記録再生装置及び、データ記録再生方法 |
US7426676B2 (en) | 2004-01-14 | 2008-09-16 | Broadcom Corporation | Data retrieval from a storage device using a combined error correction and detection approach |
JP4260688B2 (ja) * | 2004-06-09 | 2009-04-30 | 富士通株式会社 | データ送信装置、データ送受信システム、データ送信装置の制御方法およびデータ送受信システムの制御方法 |
US20060056092A1 (en) * | 2004-09-10 | 2006-03-16 | Ehrlich Richard M | System for microjog calibration by read-write zone |
US20060056093A1 (en) * | 2004-09-10 | 2006-03-16 | Ehrlich Richard M | Method for microjog calibration by read-write zone |
US7425719B2 (en) * | 2005-01-13 | 2008-09-16 | Wd Media, Inc. | Method and apparatus for selectively providing data from a test head to a processor |
AU2006223287C1 (en) * | 2005-03-10 | 2010-10-21 | Qualcomm Incorporated | A decoder architecture for optimized error management in streaming multimedia |
US7925955B2 (en) * | 2005-03-10 | 2011-04-12 | Qualcomm Incorporated | Transmit driver in communication system |
US8693540B2 (en) * | 2005-03-10 | 2014-04-08 | Qualcomm Incorporated | Method and apparatus of temporal error concealment for P-frame |
US20060242450A1 (en) * | 2005-04-11 | 2006-10-26 | Li-Lien Lin | Methods and apparatuses for selectively rebuffering and decoding a portion of a data block read from an optical storage medium |
US7743311B2 (en) * | 2006-01-26 | 2010-06-22 | Hitachi Global Storage Technologies Netherlands, B.V. | Combined encoder/syndrome generator with reduced delay |
US7823049B2 (en) * | 2006-03-15 | 2010-10-26 | Mediatek Inc. | Methods and apparatuses for generating parity symbols for data block |
US7913151B1 (en) | 2006-05-26 | 2011-03-22 | Pmc-Sierra, Inc. | Forward error correction with self-synchronous scramblers |
US7721178B2 (en) * | 2006-06-01 | 2010-05-18 | International Business Machines Corporation | Systems, methods, and computer program products for providing a two-bit symbol bus error correcting code |
US20070283207A1 (en) * | 2006-06-01 | 2007-12-06 | International Business Machines Corporation | Systems, methods, and computer program products for providing a two-bit symbol bus error correcting code with bus timing improvements |
US20070283208A1 (en) * | 2006-06-01 | 2007-12-06 | International Business Machines Corporation | Systems, methods, and computer program products for providing a two-bit symbol bus error correcting code with bus diagnostic features |
US20070283223A1 (en) * | 2006-06-01 | 2007-12-06 | International Business Machines Corporation | Systems, methods, and computer program products for providing a two-bit symbol bus error correcting code with all checkbits transferred last |
US7958434B1 (en) * | 2006-07-26 | 2011-06-07 | Marvell International Ltd. | Method for synchronizing to a digital signal |
JP4672743B2 (ja) * | 2008-03-01 | 2011-04-20 | 株式会社東芝 | 誤り訂正装置および誤り訂正方法 |
US8291259B2 (en) * | 2009-04-15 | 2012-10-16 | International Business Machines Corporation | Delete of cache line with correctable error |
TWI465898B (zh) * | 2009-07-13 | 2014-12-21 | Silicon Motion Inc | 避免資料儲存裝置之資料發生移位錯誤的方法及控制器 |
US20110179315A1 (en) * | 2010-01-21 | 2011-07-21 | Brocade Communications Systems, Inc. | Serdes link error management |
US9086992B1 (en) | 2012-06-08 | 2015-07-21 | Digital Ordnance Storage, Inc. | System and method for interconnecting storage elements |
US10073731B2 (en) * | 2013-11-27 | 2018-09-11 | Intel Corporation | Error correction in memory |
US9397703B2 (en) * | 2013-12-04 | 2016-07-19 | Seagate Technology Llc | Adaptive read error recovery for memory devices |
US9378083B2 (en) | 2013-12-04 | 2016-06-28 | Seagate Technology Llc | Adaptive read error recovery for memory devices |
US10991445B2 (en) * | 2018-09-06 | 2021-04-27 | Micron Technology, Inc. | Memory sub-system including an in-package sequencer to perform error correction and memory testing operations |
CN115052047B (zh) * | 2022-01-27 | 2024-08-09 | 昆明理工大学 | 一种Gossip网络协议的前置验证方法 |
CN116400200B (zh) * | 2023-06-05 | 2023-09-01 | 中国汽车技术研究中心有限公司 | 车规级安全芯片的电磁侧信道信息的交叉验证方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4185269A (en) * | 1978-06-30 | 1980-01-22 | International Business Machines Corporation | Error correcting system for serial by byte data |
US4413339A (en) * | 1981-06-24 | 1983-11-01 | Digital Equipment Corporation | Multiple error detecting and correcting system employing Reed-Solomon codes |
FR2533091A1 (fr) * | 1982-09-13 | 1984-03-16 | Cii Honeywell Bull | Systeme de detection et de correction d'erreurs de transmission d'un message binaire utilisant un code cyclique detecteur et correcteur d'erreurs de type reed-solomon entrelace |
US4567594A (en) * | 1983-06-07 | 1986-01-28 | Burroughs Corporation | Reed-Solomon error detecting and correcting system employing pipelined processors |
US4633471A (en) * | 1983-09-19 | 1986-12-30 | Storage Technology Partners Ii | Error detection and correction in an optical storage system |
US4675652A (en) * | 1986-04-11 | 1987-06-23 | Quantum Corporation | Integrated encoder decoder for variable length, zero run length limited codes |
US4730321A (en) * | 1986-05-30 | 1988-03-08 | Quantum Corporation | Disk drive with improved error correction code |
US4782490A (en) * | 1987-03-16 | 1988-11-01 | Cythera Corporation | Method and a system for multiple error detection and correction |
US4937829A (en) * | 1987-04-24 | 1990-06-26 | Ricoh Company, Ltd. | Error correcting system and device |
US4890287A (en) * | 1988-03-09 | 1989-12-26 | Magnetic Peripherals Inc. | On-the-fly error correction |
US4928280A (en) * | 1988-04-29 | 1990-05-22 | International Business Machines Corporation | Fast processor for multi-bit error correction codes |
US5170299A (en) * | 1990-08-17 | 1992-12-08 | Quantum Corporation | Edge servo for disk drive head positioner |
-
1991
- 1991-02-01 US US07/650,791 patent/US5241546A/en not_active Expired - Lifetime
-
1992
- 1992-01-14 IE IE010492A patent/IE920104A1/en not_active Application Discontinuation
- 1992-01-30 EP EP92300790A patent/EP0497593B1/de not_active Expired - Lifetime
- 1992-01-30 DE DE69229753T patent/DE69229753T2/de not_active Expired - Fee Related
- 1992-01-31 KR KR1019920001572A patent/KR950009384B1/ko not_active IP Right Cessation
- 1992-01-31 JP JP4015688A patent/JP2724934B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH05347075A (ja) | 1993-12-27 |
KR920017083A (ko) | 1992-09-26 |
US5241546A (en) | 1993-08-31 |
JP2724934B2 (ja) | 1998-03-09 |
KR950009384B1 (ko) | 1995-08-21 |
EP0497593A2 (de) | 1992-08-05 |
DE69229753D1 (de) | 1999-09-16 |
IE920104A1 (en) | 1992-08-12 |
EP0497593B1 (de) | 1999-08-11 |
EP0497593A3 (de) | 1995-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69229753T2 (de) | Sofortige Fehlerkorrektur mit eingebettetem digitalen Steuerungsgerät | |
DE69612293T2 (de) | Bitverschachtelter 16/17-modulationscode mit dreiwege-byteverschachteltem fehlerkorrekturcode | |
DE69114380T2 (de) | Verfahren und Gerät zur Datenübertragung zwischen einem Datenbus und einem Datenspeichergerät. | |
DE69231308T2 (de) | Fehlertolerante Dekodierschaltung von RLL-Daten-Sektoradressierungmustern | |
DE69019590T2 (de) | Spuraufzeichnung mit verbesserter Fehleraufdeckung. | |
DE69832030T2 (de) | Magnetplattenvorrichtung und Fehlerkorrektur dafür | |
DE69626130T2 (de) | Datenintegritätscode und querüberprüfender code mit logischer blockadresse | |
US4730321A (en) | Disk drive with improved error correction code | |
US4667326A (en) | Method and apparatus for error detection and correction in systems comprising floppy and/or hard disk drives | |
US4454595A (en) | Buffer for use with a fixed disk controller | |
DE69132618T2 (de) | Steuerungsarchitektur für festplattenantrieb mit mehreren mikrokontrollern | |
DE69118250T2 (de) | Zugriff für komprimierte daten | |
DE69608230T2 (de) | Sofortige Fehlerkorrektur mit Löschzeigern für thermische Unebenheiten in einem amplitudenabgetasteten Lesekanal in einem Magnetplattenlaufwerk | |
DE69023372T2 (de) | Zuverlässigkeitsverbesserung von nichtflüchtigen Datenspuren einer Speichervorrichtung. | |
DE69123093T2 (de) | Kanal zur Datenregenerierung in einer fehlertoleranten Plattenlaufwerkanordnung und Verfahren zur Fehlerkorrektur darin | |
DE69025464T2 (de) | Fehlerkorrektur in Datenspeichervorrichtungen | |
DE3040004C2 (de) | ||
DE69903188T2 (de) | Mehrstufige fehlererkennungs- und korrekturtechnik für datenspeicher-aufzeichnungsvorrichtung | |
EP0360424B1 (de) | Verfahren zur Korrektur von Mehr-Byte-Fehlern | |
US5422895A (en) | Cross-checking for on-the-fly Reed Solomon error correction code | |
DE2847801C2 (de) | Kodier- und Korrektureinrichtung zum Korrigieren von seriell auf einem Aufzeichnungsträger aufgezeichneten digitalen Daten | |
DE3789418T2 (de) | Ausfallerkennung von Fehlerprüfungs- und -korrekturschaltung. | |
DE3855101T2 (de) | Anordnung zur sofortigen Fehlerkorrektur | |
EP2327076B1 (de) | Erneutes schreiben von kodewortobjekten auf magnet-datenband bei detektion eines fehlers | |
DE102017129990A1 (de) | Logisches format, bei dem laterales codieren genutzt wird, zum speichern von daten auf magnetband |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |