[go: up one dir, main page]

DE3789929T2 - Verfahren und Gerät zur Fehlerkorrektur in einem aus parallelem Prozessor bestehenden Datenverarbeitungssystem. - Google Patents

Verfahren und Gerät zur Fehlerkorrektur in einem aus parallelem Prozessor bestehenden Datenverarbeitungssystem.

Info

Publication number
DE3789929T2
DE3789929T2 DE3789929T DE3789929T DE3789929T2 DE 3789929 T2 DE3789929 T2 DE 3789929T2 DE 3789929 T DE3789929 T DE 3789929T DE 3789929 T DE3789929 T DE 3789929T DE 3789929 T2 DE3789929 T2 DE 3789929T2
Authority
DE
Germany
Prior art keywords
memory
data
parallel
error code
data words
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
Application number
DE3789929T
Other languages
English (en)
Other versions
DE3789929D1 (de
Inventor
W Daniel Hillis
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Thinking Machines Corp
Original Assignee
Thinking Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Thinking Machines Corp filed Critical Thinking Machines Corp
Publication of DE3789929D1 publication Critical patent/DE3789929D1/de
Application granted granted Critical
Publication of DE3789929T2 publication Critical patent/DE3789929T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)

Description

  • Die vorliegende Erfindung bezieht sich auf eine Vorrichtung gemäß dem Oberbegriff des Patentanspruchs 1 und auf ein Verfahren gemäß dem Oberbegriffs des Patentanspruchs 7.
  • Mit zunehmender Größe von RAM's, die in Zusammenhang mit einem digitalen Prozessor als Teil eines Gesamtcomputersystems eingesetzt werden, ist es notwendig geworden, für die Korrektur von Fehlern, die bei Lese-/Schreib-Operationen an solchen großen Speichern auftreten, für eine Korrektur zu sorgen. Eine einfache Form einer Fehlerkorrektur betrifft die Verwendung eines Parity-Bits als ein zusätzliches digitales Bit in einem Multibit-Wort, welches entweder den binären Wert Eins oder Null basierend auf einer Funktion der Bit-Charakteristik einer jeden Bitposition in dem Datenwort einnimmt. Ein unterschied zwischen dem digitalen Wort, wie es gelesen worden ist und dem digitalen Wort, wie es in den Speicher eingeschrieben worden ist, welcher einen Fehler repräsentiert, könnte beispielsweise durch Verwendung eines Parity-Bits oder einer ungeraden Anzahl von Bitfehlern innerhalb des Wortes erkannt werden, indem das Parity-Bit zusammen mit dem Wort, welches in den Speicher eingeschrieben worden ist, aufgezeichnet wird und anschließend das ausgelesene Parity-Bit mit einer Rekonstruktion des Parity-Bits von dem Datenwort, wie es gelesen worden ist, verglichen wird. Wenn ein unterschied auftritt, so stellt dies ein Anzeichen für einen Fehler in einer ungeraden Anzahl von Bits dar. Typischerweise ist die Wahrscheinlichkeit für einen Fehler ausreichend gering, so daß die Wahrscheinlichkeit, daß ein Fehler in mehr als einem einzelnen Bit auftritt, gering ist. Bei der Verwendung eines Parity-Bits konnte jedoch nicht festgestellt werden, an welcher Stelle der Fehler auftrat, sondern konnte das Computersystem lediglich über das Vorhandensein eines Fehlers informiert werden, woraufhin zusätzliche Korrekturschritte, wie beispielsweise ein zweiter Versuch, die Daten in korrekter Weise zu lesen, ausgeführt werden konnte.
  • In letzter Zeit wurden verbesserte Fehlerkorrekturcodes entsprechend dem einen oder anderen Algorithmus entwickelt, welche eine Funktion aller Bits in jedem digitalen Wort waren. Während der Schreib- und Lese-Operationen werden diese Fehlerkorrekturcodes in dem Speicher an der gleichen Adresse, wie das Datenwort selbst ausgezeichnet. Ein Fehlerdetektionsschaltkreis, der das digitale Wort untersucht und ein Fehlerkorrekturcode, der von dem Speicher gelesen wird, bewirkt, daß nicht nur die Existenz eines Fehlers identifiziert wird, sondern daß angezeigt wird, welches Bit fehlerhaft ist und daß dieses Bit korrigiert wird. Entsprechend dem Umfang des Fehlerkorrekturcodes konnten viele in einem oder mehreren Bitpositionen detektiert werden. Ein bei sechzehn Bitprozessoren und Speichern üblicherweise angewendetes Verfahren benutzt einen sechs Bit-Fehlerkorrekturcode, welcher als Funktion eines jeden Bits in dem Datenwort durch einen speziellen Algorithmus erzeugt worden ist, wobei der Algorithmus so ausgelegt wird, daß er die Erkennung der häufigsten Fehlertypen ermöglichte.
  • Selbstverständlich ist es, mit Ausnahme einer vollständigen Redundanz, unmöglich, alle Fehler zu detektieren, die während Lese-/Schreib-Zyklen bei digitalen Speichern auftreten können. Es wurde jedoch erkannt, daß es ausreichend ist, weniger als die vollständige Redundanz zu verwenden, wie beispielsweise einen sechs Bit-Korrekturcode für ein sechzehn Bit-Datenwort, um damit in hohem Maße die Wahrscheinlichkeit zu erhöhen in der Lage zu sein, Daten in korrekter Weise in einen Speicher zu schreiben und von diesem zu lesen, trotz der Existenz eines gewissen vorgegebenen Satzes von Fehlern, die derartige Speicher typischerweise ausgesetzt sind.
  • Die folgenden US-Patentanmeldungen betreffen den technischen Hintergrund und können als nützlich für das Verständnis der Erfindung angesehen werden:
  • Anmelde-Nr. 499 474, Anmeldetag: 31. Mai 1993, Titel: Parallel Prozessor;
  • Anmelde-Nr. 499 471, Anmeldetag: 31. Mai 1983, Titel: Parallel Prozessor/Memory Circuit (entspricht US-A-4 709 327);
  • Anmelde-Nr. 671 835, Anmeldetag: 15. Nov. 1984, Titel; Method and Apparatus for Routing Message Packets (entspricht US-A- 4 598 400);
  • Anmelde-Nr. 740 943, Anmeldetag: 31. Mai 1985, Titel: Method and Apparatus for interconnecting Prozessors in a Hyperdimensional Array (entspricht US-A-4 805 091);
  • Anmelde-Nr. 814 348, Anmeldetag: 27. Dez. 1985, Titel: Method and Apparatus for Simulating Systems Described by Partial Differential Equations (entspricht US-A-4 809 202);
  • Anmelde-Nr. 832 913, Anmeldetag: 24. Feb. 1986, Titel: Method of Simulated Additional Processors in a Simd Parallel Processor Array (entspricht US-A-4 773 038).
  • Mit Einführung parallel verarbeitender Digitalcomputer, für die obige US-Patentanmeldungen repräsentativ sind, werden die inhärenten Geschwindigkeitsbegrenzungen der Seriendatenverarbeitung, die selbst bei extrem großen und schnellen Prozessoren und dazu assoziierten Speichern auftreten, vermieden, indem die Verarbeitungsfunktion über eine große Anzahl von parallelen Prozessoren und zugeordneten Speichern verteilt wird, von denen jeder relativ klein im Vergleich zu den Prozessoren- und Speichergrößen großer Computer sein kann, die jedoch, wenn sie miteinander in einer hierarchischen Anordnung von Nachrichtennetzwerken verbunden sind, in effektiver Weise große Menge von Daten sehr schnell verarbeiten können.
  • Die Speichergröße eines jeden Speichers, der mit einem einzigen Prozessor in einen derartigen parallelen Prozessorarrangement assoziiert ist, kann relativ klein, beispielsweise in der Größenordnung von 4K-Bits sein. Während es technisch möglich ist, einen Speicher in dieser Größe zu fertigen, welcher eine genügend kleine Fehlerwahrscheinlichkeit aufweist, so daß keine Fehlerkorrektur benötigt wird, so nimmt die Fahlerwahrscheinlichkeit dennoch dramatisch als statistische Funktion bezogen auf die gesamte Speicheranordnung zu, wenn tausende derartiger Speicher typischerweise in einem parallelen Prozessorarrangement Verwendung finden. Als Ergebnis davon wird es notwendig, Fehlerkorrekturen für jeden der tausenden von Speichern in einen parallelen Prozessorarrangement vorzusehen. Ein Fehlerkorrektursystem, welches bei jedem der Speicher in einem parallel verarbeitenden Datensystem Anwendung finden könnte, ist aus US-A-4 228 496 bekannt, welches im Detail in Zusammenhang mit Fig. 3 diskutiert werden soll. Die Kosten eines derartigen Fehlerkorrektursystems jedem Speicher zuzufügen, erhöhen in starkem Maße die Kosten des parallel verarbeitenden Systems.
  • Es ist daher die Aufgabe der vorliegenden Erfindung, eine Fehlerkorrektureinrichtung und ein Verfahren zur Fehlerkorrektur anzugeben, welche die Effektivität und die Effizienz bei der Fehlerkorrektur in einem parallelen Datenverarbeitungssystem erhöhen.
  • Diese Aufgabe wird durch die Gegenstände der Ansprüche 1 und 7 gelöst.
  • Gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung wird das Lesen und Schreiben von Daten zwischen einer Vielzahl von Speichern und dazu assoziierten parallelen Prozessoren synchronisiert und koordiniert, um ein einzelnes Datenwort und einen einzigen Fehlerkorrekturcode, der von dem einzelnen Datenwort bestimmt wird, zu bilden. Das einzelne Datenwort umfaßt eine Sammlung von Datenwörtern, welche in eine Vielzahl von Speichern eingeschrieben oder von diesen gelesen werden sollen. Der entwickelte Fehlerkorrekturcode, welcher die mehreren Datenwörter als einziges Wort behandelt, erhöht die Effizienz und die Effektivität der Fehlerkorrektur in einer Multiprozessor-Umgebung. Der einzelne Fehlerkorrekturcode, der einer Vielzahl von Datenwörtern, die von der Vielzahl von Speichern gelesen werden und in diese eingeschrieben werden, zugefügt wird, kann aus einem einzelnen Parity-Bit oder einem komplexen Satz von Bits, welche basierend auf einem mehreren Fehlerkorrekturalgorithmen welche für die Korrektur von Fehlern in einer oder mehreren Bitstellen in dem einzelnen kombinierten Datenwort geschaffen wurden, entwickelt werden.
  • Bei einer anderen bevorzugten Ausführungsform der vorliegenden Erfindung werden eine Vielzahl von Speichern typischerweise durch parallele Prozessoren einer Berechnungseinheit, bei der die Berechnungskapazität über die Vielzahl von parallel und simultan arbeitenden kleinen Prozessoren verteilt ist, koordiniert. Der Lese/Schreibdatenfluß der von einem Satz von mehreren derartiger Prozessoren oder von einem Satz mehrerer derartiger Prozessoren gesteuert wird, wird kombiniert, um ein einziges, gleichzeitig zugeführtes Datenwort zu bilden, welches in den mehreren assoziierten Speichern zusammen mit dem Fehlerkorrekturcode gespeichert wird, wobei der Fehlerkorrekturcode durch einen einzigen Fehlerkorrekturcodegenerator als Funktion der kombinierten Wörter von den mehreren Prozessoren gebildet wird. Der Speicher, dem das kombinierte Wort und der assoziierte Fehlerkorrekturcode zugeführt wird, kann aus mehreren separaten Speichern oder segmentierten Abschnitten aus einzelnen Hardewarespeichern bestehen. Daten, die von einem derartigen Speicher oder derartigen Speichern gelesen werden, werden dann durch ein einziges Fehlerdetektions- und Korrekturschema verarbeitet, um ein korrigiertes kombiniertes Datenwort zu erhalten, welches dann separiert wird, um den korrespondierenden Prozessor des Satzes der mehreren Prozessoren zugeführt zu werden oder von diesem verwendet zu werden.
  • Diese und andere Merkmale der vorliegenden Erfindung sind im folgenden anhand der beispielhaften detaillierten Beschreibung und den zugehörigen Zeichnungen näher erläutert, von denen zeigen:
  • Fig. 1 ein verallgemeinertes Blockschaltbild einer parallelen Prozessorumgebung;
  • Fig. 2 ein verallgemeinertes Blockschaltbild des Datenflusses und der Steuerung zwischen einem Prozessor und einem assoziierten RAM;
  • Fig. 3 ein Blockschaltbild, das ein typisches Fehlerkorrekturschema zum Lesen und Schreiben von Daten zu und von einem Speicher illustriert;
  • Fig. 4 ein Blockschaltbild zur Verwendung des Verfahrens der einheitlichen Fehlerkorrektur mit einer Vielzahl von Prozessoren und einem assoziierten Speicher;
  • Fig. 5 ein Speicherzuordnungsdiagramm, welches zum Verständnis der vorliegenden Erfindung geeignet ist.
  • Die vorliegende Erfindung stellt eine Verbesserung der Fehlerkorrekturmöglichkeit bei Lese/Schreibfunktionen, wie sie mit einer Vielzahl von Speichern und korrespondierenden Prozessoren assoziiert sind, wie dies typischerweise bei einer Multiprozessor- oder parallelen Prozessorumgebung anzutreffen ist, dar.
  • In Fig. 1 ist ein Blockdiagramm gezeigt, das die Umgebung eines parallelen Prozessorsystems repräsentiert und das insbesondere derartige Systeme repräsentiert, wie sie in den oben angegebenen Anmeldungen angetroffen werden können. Insbesondere wird eine derartige parallele Prozessorumgebung eine Vielzahl von Modulen 12 aufweisen, die kleine parallel arbeitende Prozessoren repräsentieren und wird weiterhin dazu assoziierte Speicher aufweisen. Derartige Prozessoren arbeiten typischerweise unter Steuerung eines externen Prozessors 14 über Steuerleitungen 16, wie dies genauer in den oben angegebenen Anmeldungen beschrieben ist. Zusätzlich wird der Datenfluß zwischen den Prozessor-/ und Speichermodulen 12 innerhalb der parallelen Prozessorumgebung über die Datenleitungen 18 durch ein Kommunikationsschema bestimmt, wobei ein Satz von N Prozessor-Speichermodulen 12 eine direkte Nachrichtenverbindung miteinander aufweisen, wohingegen eine Kommunikation zwischen anderen Modulen 12 einen Datenaustausch über einen oder mehrere Prozessoren erfordert. Zusätzliche Steuerleitungen 20 werden verwendet, um den Datenfluß und die Steuersignale innerhalb der Multiprozessorumgebung zu erleichtern, wie dies in den oben angegebenen Anmeldungen genauer beschrieben ist.
  • Innerhalb eines jeden Prozessor/Speichermoduls 12 existiert ein identifizierbarer Prozessor 24 und ein assoziiertes RAM oder Speicher 26, wie dies vollständig in Fig. 2 gezeigt ist. Die Datenkommunikation kann direkt zwischen dem Prozessor und dem Speicher oder über einen Datenbus 28 unter Steuerung eines Steuerinterfaces 30 erfolgen, welches die Lese/Schreibfunktionen der Daten an den Speicher 26 in Zusammenhang mit dem Prozessor 24 bestimmt. Die Fig. 2 zeigt eine verallgemeinerte Beziehung zwischen dem Prozessor und dem Speicher, wobei Eingangs/Ausgangs-Funktionen vernachlässigt sind.
  • Obwohl der Speicher 26 nach außen und auch für den Prozessor 24 und die Steuerelemente 30 als einfacher physikalischer Speicher erscheint, in dem Daten geschrieben werden und von dem Daten gelesen werden, erfordern heutige Ansprüche an Zuverlässigkeit in Verbindung mit großem Speichervolumen die Verwendung eines Fehlerkorrekturschemas für die Lese/Schreibfunktion. Eine verallgemeinerte Darstellung für ein derartiges Schema ist in Fig. 3 gezeigt. Das Fehlerkorrekturschema korrigiert Fehler, die ein gelesenes Wort in ein oder mehreren Bitstellen von dem aufgezeichneten Datenwort abweichen lassen würden. Entsprechend dem Verfahren der Fig. 3 werden Daten, die dem Speicher über einen Datenbus 34 zugeführt werden und typischerweise eine Bitgröße X aufweisen, die vorzugsweise 16 beträgt, über ein Latch oder einen Pufferschalter 36 der Speicherhardware eines RAM's 38 zugeführt. Jedes Datenwort auf dem Bus 34 wird auch einem Codierschaltkreis 40 zugeführt, welcher entsprechend dem Verfahren einen Fehlerkorrekturcode oder ein Datenwort erzeugt, welches typischerweise eine geringe Anzahl von Bits Y aufweist, und, welches ebenfalls über den Interface-Schaltkreis 36 dem Speicher 38 zugeführt wird, um mit dem Datenwort auf dem Bus 34 an derselben Adresse abgespeichert zu werden. Im typischen Fall eines sechzehn Bit-Datenworts auf dem Bus 34 beträgt die Größe des Fehlerkorrekturcodes von dem Encoder 40 typischerweise sechs Bits gemäß allgemein üblicher Korrekturverfahren. Der Encoder 40 erzeugt ein Codewort, welches eine Funktion spezieller Bitzustände des Datenworts auf dem Bus 34 darstellt und welches statistisch gesehen das Auffinden und Anzeigen der am wahrscheinlichsten vorkommenden Fehler in den Daten, die von dem Speicher 38 gelesen werden, erlaubt. Wenn vollständige Redundanz benötigt wird, wäre der Fehlerkorrekturcode ein Duplikat des ursprünglich aufgezeichneten Wortes. Für eine minimale Fehleranzeige wäre der Fehlerkorrekturcode ein einfaches Parity-Bit. Dazwischen gibt es eine Vielzahl von Möglichkeiten. Die statistische Fehlerwahrscheinlichkeit und die Art des Fehlers bestimmt die vorteilhafteste und wirtschaftlichste Weise für die Erzeugung des Korrekturcodes durch den Encoder 40. Das Ziel ist es, die Größe des zusätzlichen Schaltkreises und die Größe des Fehlerkorrekturcodes und des Speicherplatzes, der dafür bereitgestellt wird, zu minimieren, während zur gleichen Zeit das notwendige Maß an Zuverlässigkeit für eine genaue Datenschreib- und Leseoperation erreicht werden sollte.
  • Beim Lesen des Speichers 38 werden die Daten von dem Bus 34 zusammen mit dem Fehlerkorrekturcode durch die Ausgangspuffer 42 einem Fehlerkorrekturschaltkreis 44 und einem Fehlerdetektionsschaltkreis 46 zugeführt. Der Fehlerdetektor 46 bestimmt durch Lesen des Fehlerkorrekturcodes im Zusammenhang mit den ausgelesenen Daten, ob ein Fehler aufgetreten ist oder nicht. Wenn ein Fehler aufgetreten ist, kann der Decoderschaltkreis 48 bestimmen, ob der Fehler zu einer Klasse von erwarteten Fehlern gehört und wo der Fehler aufgetreten ist und veranlaßt die Fehlerkorrekturschaltung 44 die ausgelesenen Daten zu korrigieren, so daß die von dem Korrekturschaltkreis 44 auf einen Ausgangsbus 45 gegebenen Daten eine exakte Reproduktion des ursprünglichen Wortes auf den Bus 34, wie es der Speicheradresse in dem Speicher 38 zugeführt worden ist, darstellen. Sollte der Fehler des Ausgangswortes nicht in einer erwarteten Kategorie liegen, beispielsweise wenn der Fehler auf mehr als einer Bit-Position des ursprünglichen Datenworts auftritt, ist es unmöglich, die gelesenen Daten zurückzuspeichern oder zu korrigieren und es wird dann manchmal ein zusätzlicher Detektionsschaltkreis verwendet, um diese Bedingung zu identifizieren oder über Interrupts oder andere Steuerpfade eine Fehlerbedingung bezüglich des Speichers anzuzeigen.
  • Da die Korrektur von Speicher/Lese-Schreibfehlern unter Verwendung von Fehlerkorrekturtechniken im wesentlichen einen auf Statistik begründeten Prozeß darstellt, bei dem Wahrscheinlichkeiten und über Erfahrungen gewonnene Feststellungen möglicher Fehler verwendet werden, beruht seine Komplexität nicht so sehr auf der Wahrscheinlichkeit, daß ein Fehler auftreten wird, sondern auf der wahrscheinlichen Weise in dem der Fehler auftreten wird. Die Hardware und die Zeit, die für einen Operationszyklus benötigt wird, muß nichtsdestotrotz unabhängig davon zur Verfügung gestellt werden, wie gering die Wahrscheinlichkeit dafür ist, daß sie benötigt wird. Daher ist die erforderliche Benutzung sehr unregelmäßig. Nichtsdestotrotz muß die aufgewendete Hardware ausreichend sein, um den benötigten Level an Speicherzuverlässigkeit sicherzustellen.
  • In einer Multi-Prozessorumgebung, bei der die Speicher-Prozessorbeziehung der Fig. 2 vervielfacht ist, beispielsweise auf das Zehntausendfache, wird die zusätzliche Systemkomplexität, die benötigt wird, um ein Fehlerkorrektursystem in Zusammenhang mit jedem Speicher zu verwenden, eine beträchtliche Belastung in wirtschaftlicher Hinsicht und in bezug auf die Verarbeitungsgeschwindigkeit. Obwohl die Wahrscheinlichkeit, daß ein Fehler in einem kleinen Speicher auftritt, sehr gering ist, erreicht die Wahrscheinlichkeit bei vielen Speichern einen Pegel, der die Verwendung einer Fehlerkorrektur erforderlich macht. Da es nicht möglich ist, zuverlässig vorauszusagen, welcher Speicher den Fehler bewirkt, ist es notwendig, daß für jeden kleinen Speicher eine Fehlerkorrektur vorgesehen ist. Gemäß der Lehre der vorliegenden Erfindung wird eine weitaus bessere Verwendung einer Fehlerkorrektur in einer Multiprozessor/Multispeicher-Umgebung dadurch erreicht, daß der Datenfluß zwischen einer Vielzahl von Prozessoren und einer Vielzahl von Speichern zusammengeführt wird und für diese Daten ein einzelnes Fehlerkorrekturschema verwendet wird. Da in einer Parallelprozessorumgebung der Datenfluß zwischen Prozessoren und ihrem Speicher innerhalb eines Prozessorsatzes typischerweise für gleichzeitige Lese/Schreibzyklen synchronisiert ist, wird es möglich, ein einziges Fehlerkorrektursystem für einen derartigen Satz von einer Vielzahl von Prozessoren zu verwenden. Da die Wahrscheinlichkeit für einen Fehler während einer Lese/Schreib-Operation mit dem Speicher weiterhin gering ist, ist es möglich, einen einzigen Fehlerkorrekturcode zu verwenden, der für ein kombiniertes Datenwort, welches die gesamten Daten der Vielzahl von Speichern, die mit der Vielzahl von Prozessoren assoziiert sind, einschließt, mit weniger als einer vollständigen Redundanz zu erreichen als dies bei mehrere dezentralisierter Fehlerkorrekturen der Fall ist. Dies erhöht die Effizienz beträchtlich und minimiert Hardwarekosten in einer Parallelprozessorumgebung.
  • Fig. 4 zeigt ein derartiges System, bei dem eine Vielzahl von Prozessoren 50 und zugeordnete Datenbusse 52 zum Zuführen von Daten, die in einen Speicher eingeschrieben werden sollen, vorgesehen sind, welche derart assoziiert sind, daß die Daten auf den Bussen 52 in einem Interface 54 als ein einzelnes großes Datenwort zusammengefaßt werden, welches auf den Ausgangsbus 56 gegeben wird. Die Daten auf dem Bus 56 weisen eine Byte-Größe von "NX" auf, wobei "X" die ursprüngliche Byte-Größe der Daten auf dem Bus 52 bedeutet und "N" die Anzahl der Prozessoren 50 darstellt, welche mit einem einzelnen Interface 54 assoziiert sind. Der System-Timing- und Steuerschaltkreis 58 wird betrieben um sicherzustellen, daß alle Daten von den Bussen 52 gleichzeitig auf dem Bus 56 erscheinen, um ein einzelnes kombiniertes Datenwort zu bilden. Ein derartiger Schaltkreis 58 ist typischerweise in Computersystemen vorgesehen. Dieses Datenwort wird durch ein Interface oder ein Puffersystem 60 einem Speicher 62 zugeführt. Gleichzeitig werden die Daten auf dem Bus 56 einem Fehlerencodierer 64 zugeführt, welcher einen Fehlercode auf dem Bus 66 erzeugt, welcher über ein Interface 60 dem Speicher 62 zugeführt wird, um an derselben Adresse, wie die Daten auf dem Bus 56 gespeichert zu werden. Der Speicher 62 kann aus einer Vielzahl separater Speicher bestehen oder kann typischerweise, wie dies in Fig. 5 gezeigt ist, aus einem einzelnen Speicher 68 bestehen, der für jede Adresse in Zellen 70 aufgeteilt ist, von denen jede einem Prozessor 50 zugewiesen ist und wobei eine abschließende Zelle 72 den Fehlerkorrekturcode des Busses 66 enthält. Auf diese Weise kann der Speicher 62 tatsächlich als eine Vielzahl von Speicher oder als eine Vielzahl von Speicherbereichen angesehen werden, von denen jeder mit einem der Prozessoren 50 assoziiert ist.
  • Die Daten, die von dem Speicher 62 von jeder Adresse ausgelesen werden, einschließlich den von der Vielzahl von Zellen 70 und der Fehlerzelle 72, die über einen Puffer oder ein Interface 76 auf den Ausgangsbus 74 kommen, werden einem Fehlerkorrektursystem 78 zugeführt. Die Zelle 72 wird über einen Bus 74 durch das Interface 76 einem Fehlerdetektions- und Decodiersystem 80 zugeführt, welcher für die Fehlerkorrektur bei den kombinierten Datenworten, die mit den Prozessoren 50 assoziiert sind, zuständig ist. Das Fehlerkorrektursystem 78 antwortet auf die Anzeige eines Fehlers von dem Fehlerdetektier- und Decodiersystem 80, um eine Fehlerkorrektur für die betroffenen Fehler, die in dem kombinierten Datenwort auf dem Bus 74 auftreten, zur Verfügung zu stellen und ein korrigiertes Datenwort auf dem Bus 82 durch einen Interface-Schaltkreis 84 zur Verfügung zu stellen, welcher das kombinierte Datenwort auf eine Vielzahl von Ausgangsbussen 86 verteilt, von denen jeder mit einem der Prozessoren 50 assoziiert ist. Daten von jeder der Zellen 70 werden für eine einzelne Adresse gleichzeitig von dem Speicher 62 gelesen, um ein einzelnes vergrößertes Datenwort zu bilden bezüglich dem, das Fehlerdetektiersystem 80 simultan arbeiten kann, um eine geeignete Fehlerkorrektur zur Verfügung zu stellen.
  • Bei einer geringen Fehlerwahrscheinlichkeit erlaubt das Zusammenführen einer größeren Anzahl von Bits innerhalb eines einzelnen Datenworts die Verwendung eines effizienteren und/oder effektiveren Fehlerkorrektur-Codierschemas, während gleichzeitig nur ein einzelnes Fehlerkorrektursystem für eine Vielzahl von Prozessoren und deren assoziierte Speicher benötigt wird. Es sei angemerkt, daß mehrere Fehlerkorrekturverfahren bekannt sind, deren Verwendung von spezifischen Annahmen und Wahrscheinlichkeiten von Fehlermustern in den Lese/Schreibspeicherzyklen abhängen und daß die Verwendung nicht auf eine oder mehrere spezielle Computerarchitekturen beschränkt ist. Die vorliegende Erfindung ist somit nur durch den Wortlaut der Ansprüche festgelegt.

Claims (10)

1. Parallelcomputersystem mit einer Vielzahl von Prozessoren (16), von denen jeder einen zugewiesenen Speicherbereich (70) innerhalb einer Speichereinrichtung (62) aufweist, dadurch gekennzeichnet, daß
eine Vielzahl von Datenwörtern der entsprechenden Vielzahl von Prozessoren parallel einer einzigen kombinierten Fehlerkodiereinrichtung (64) zugeführt werden, um einen einzelnen kombinierten Fehlercode für die Vielzahl der Datenworte zu erzeugen, welcher in einem zugewiesenen Speicherbereich (72) zusammen mit der Vielzahl von Datenwörtern in einem adressierten Speicherplatz in der Speichereinrichtung gespeichert wird, und
die Vielzahl von Datenwörtern und der assoziierte einzelne kombinierte Fehlercode beim Lesen der Vielzahl von Datenwörtern parallel einer einzelnen kombinierten Fehlerdetektier- und Korrektureinrichtung (78, 80) zugeführt werden, um die Fehlerdetektier- und Korrektureinrichtung in die Lage zu versetzen, für die Vielzahl von Datenwörtern eine Fehlerdetektionsoperation gemäß dem einzelnen kombinierten Fehlercode auszuführen.
2. Parallelcomputersystem nach Anspruch 1, dadurch gekennzeichnete daß es weiterhin eine Einrichtung (58) zum gleichzeitigen Schreiben und Lesen der Vielzahl von Datenwörtern in der Speichereinrichtung, die dem einzelnen kombinierten Fehlercode entsprechen, enthält.
3. Parallelcomputersystem nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß es weiterhin eine Einrichtung (54) aufweist, zum Assoziieren der Vielzahl von Prozessoren (50), um eine parallele Verarbeitung sicherzustellen.
4. Parallelcomputersystem nach mindestens einem der Ansprüche 1 bis 3, dadurch gekennzeichnete daß die Speichereinrichtung (62) korrespondierende Segmente (70) mit einer einzigen Speicheradresse aufweist, wobei ein vorgegebenes Segment (72) der Speicheradresse für den einzelnen kombinierten Fehlercode verwendet wird.
5. Parallelcomputersystem nach mindestens einem der Ansprüche 1 bis 4, dadurch gekennzeichnete daß der einzelne kombinierte Fehlercode ein einzelnes Parity-Bit aufweist.
6. Parallelcomputersystem nach mindestens einem des Ansprüche 1 bis 4, dadurch gekennzeichnet, daß der einzelne kombinierte Fehlercode eine Vielzahl von Bits aufweist.
7. Verfahren zum Ausführen einer Fehlerkorrektur bei einem Parallelcomputersystem mit einer Vielzahl von Prozessoren, von denen jeder einen zugewiesenen Speicherbereich (70) innerhalb einer Speichereinrichtung aufweist, gekennzeichnet durch folgende Schritte:
Codieren der Datenwörter der Vielzahl von Prozessoren, von denen jeder ein Datenwort parallel zur Verfügung stellt, um einen einzelnen kombinierten Fehlercode für alle Datenwörter zu erhalten und Speichern der Vielzahl von Datenwörtern zusammen mit-dem einzelnen kombinierten Fehlercode in der Speichereinrichtung (62),
Ausführen einer einzelnen kombinierten Fehlerdetektionsoperation im Zusammenhang mit der Vielzahl von Datenwörtern, in dem diese parallel von der Speichereinrichtung zusammen mit dem einzelnen Fehlercode gelesen werden und durch Aktivieren einer Fehlerdetektier- und Korrektureinrichtung parallel bei der Vielzahl von Datenwörtern Fehler zu detektieren und zu korrigieren gemäß dem einzelnen kombinierten Fehlercode.
8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, daß die Daten die zu dem einzelnen kombinierten Fehlercode gehören, gleichzeitig in die Speichereinrichtung geschrieben und von dieser gelesen werden.
9. Verfahren nach Anspruch 7 oder 8, dadurch gekennzeichnet, daß weiterhin vorgesehen ist, daß die Vielzahl von Prozessoren (50) miteinander assoziiert sind, um eine parallele Verarbeitung zu gewährleisten.
10. Verfahren nach Anspruch 7, 8 oder 9, dadurch gekennzeichnet, daß weiterhin vorgesehen ist, daß die Speichereinrichtung (62) Speichersegmente mit einer einzigen Speicheradresse aufweist, wobei ein vorgegebenes Segment (72) der Speicheradresse für den einzelnen kombinierten Fehlercode verwendet wird.
DE3789929T 1986-09-15 1987-09-15 Verfahren und Gerät zur Fehlerkorrektur in einem aus parallelem Prozessor bestehenden Datenverarbeitungssystem. Expired - Fee Related DE3789929T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/907,671 US4791641A (en) 1986-09-15 1986-09-15 Parallel processor error checking

Publications (2)

Publication Number Publication Date
DE3789929D1 DE3789929D1 (de) 1994-07-07
DE3789929T2 true DE3789929T2 (de) 1994-09-08

Family

ID=25424453

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3789929T Expired - Fee Related DE3789929T2 (de) 1986-09-15 1987-09-15 Verfahren und Gerät zur Fehlerkorrektur in einem aus parallelem Prozessor bestehenden Datenverarbeitungssystem.

Country Status (7)

Country Link
US (1) US4791641A (de)
EP (1) EP0261031B1 (de)
JP (1) JP2738687B2 (de)
AT (1) ATE106582T1 (de)
AU (1) AU7820987A (de)
CA (1) CA1292579C (de)
DE (1) DE3789929T2 (de)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3706734C1 (de) * 1987-03-02 1988-03-17 Force Computers Gmbh Verfahren zur UEbertragung von Daten sowie Computer
US5170482A (en) * 1987-08-14 1992-12-08 Regents Of The University Of Minnesota Improved hypercube topology for multiprocessor computer systems
DE68923736T2 (de) * 1988-05-27 1996-03-21 Philips Electronics Nv Dekoder für Hamming kodierte Daten.
US5283791A (en) * 1988-08-02 1994-02-01 Cray Research Systems, Inc. Error recovery method and apparatus for high performance disk drives
US5218689A (en) * 1988-08-16 1993-06-08 Cray Research, Inc. Single disk emulation interface for an array of asynchronously operating disk drives
US5146461A (en) * 1989-11-13 1992-09-08 Solbourne Computer, Inc. Memory error correction system distributed on a high performance multiprocessor bus and method therefor
US5170370A (en) * 1989-11-17 1992-12-08 Cray Research, Inc. Vector bit-matrix multiply functional unit
US5280474A (en) * 1990-01-05 1994-01-18 Maspar Computer Corporation Scalable processor to processor and processor-to-I/O interconnection network and method for parallel processing arrays
EP0509055A4 (en) * 1990-01-05 1994-07-27 Maspar Computer Corp Parallel processor memory system
US5442797A (en) * 1991-12-04 1995-08-15 Casavant; Thomas L. Latency tolerant risc-based multiple processor with event driven locality managers resulting from variable tagging
EP0800133A1 (de) * 1992-01-24 1997-10-08 Digital Equipment Corporation Paritäts- und Hochgeschwindigkeitsnormierungskreis für ein massivparalleles Verarbeitungssystem
DE69317602T2 (de) * 1992-01-24 1998-10-01 Digital Equipment Corp Paritäts-und hochgeschwindigkeitsnormierungskreis für ein massivparalleles verarbeitungssystem
US5524212A (en) * 1992-04-27 1996-06-04 University Of Washington Multiprocessor system with write generate method for updating cache
GB2268817B (en) * 1992-07-17 1996-05-01 Integrated Micro Products Ltd A fault-tolerant computer system
US5432801A (en) * 1993-07-23 1995-07-11 Commodore Electronics Limited Method and apparatus for performing multiple simultaneous error detection on data having unknown format
US5771247A (en) * 1994-10-03 1998-06-23 International Business Machines Corporation Low latency error reporting for high performance bus
US6836838B1 (en) 1998-06-29 2004-12-28 Cisco Technology, Inc. Architecture for a processor complex of an arrayed pipelined processing engine
US6513108B1 (en) 1998-06-29 2003-01-28 Cisco Technology, Inc. Programmable processing engine for efficiently processing transient data
US6195739B1 (en) 1998-06-29 2001-02-27 Cisco Technology, Inc. Method and apparatus for passing data among processor complex stages of a pipelined processing engine
US6101599A (en) * 1998-06-29 2000-08-08 Cisco Technology, Inc. System for context switching between processing elements in a pipeline of processing elements
US6119215A (en) * 1998-06-29 2000-09-12 Cisco Technology, Inc. Synchronization and control system for an arrayed processing engine
US6356548B1 (en) 1998-06-29 2002-03-12 Cisco Technology, Inc. Pooled receive and transmit queues to access a shared bus in a multi-port switch asic
US6728839B1 (en) 1998-10-28 2004-04-27 Cisco Technology, Inc. Attribute based memory pre-fetching technique
US6175941B1 (en) 1998-12-08 2001-01-16 Lsi Logic Corporation Error correction apparatus and associated method utilizing parellel processing
US6385747B1 (en) 1998-12-14 2002-05-07 Cisco Technology, Inc. Testing of replicated components of electronic device
US6173386B1 (en) 1998-12-14 2001-01-09 Cisco Technology, Inc. Parallel processor with debug capability
US6920562B1 (en) 1998-12-18 2005-07-19 Cisco Technology, Inc. Tightly coupled software protocol decode with hardware data encryption
US6529983B1 (en) 1999-11-03 2003-03-04 Cisco Technology, Inc. Group and virtual locking mechanism for inter processor synchronization
US6681341B1 (en) 1999-11-03 2004-01-20 Cisco Technology, Inc. Processor isolation method for integrated multi-processor systems
US6892237B1 (en) 2000-03-28 2005-05-10 Cisco Technology, Inc. Method and apparatus for high-speed parsing of network messages
US6505269B1 (en) 2000-05-16 2003-01-07 Cisco Technology, Inc. Dynamic addressing mapping to eliminate memory resource contention in a symmetric multiprocessor system
US7447872B2 (en) * 2002-05-30 2008-11-04 Cisco Technology, Inc. Inter-chip processor control plane communication
EP2553438B1 (de) 2010-04-02 2020-02-26 3M Innovative Properties Company Filtersysteme mit strukturierten optischen analytsensoren und optischen lesegeräten
JP2020198044A (ja) * 2019-06-05 2020-12-10 富士通株式会社 並列処理装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3660646A (en) * 1970-09-22 1972-05-02 Ibm Checking by pseudoduplication
US4228496A (en) * 1976-09-07 1980-10-14 Tandem Computers Incorporated Multiprocessor system
US4215395A (en) * 1978-08-24 1980-07-29 Texas Instruments Incorporated Dual microprocessor intelligent programmable process control system
US4310879A (en) * 1979-03-08 1982-01-12 Pandeya Arun K Parallel processor having central processor memory extension
US4240156A (en) * 1979-03-29 1980-12-16 Doland George D Concatenated error correcting system
US4255808A (en) * 1979-04-19 1981-03-10 Sperry Corporation Hard or soft cell failure differentiator
US4295218A (en) * 1979-06-25 1981-10-13 Regents Of The University Of California Error-correcting coding system
US4314350A (en) * 1979-12-31 1982-02-02 Bell Telephone Laboratories, Incorporated Self-checking arithmetic unit
US4371930A (en) * 1980-06-03 1983-02-01 Burroughs Corporation Apparatus for detecting, correcting and logging single bit memory read errors
US4345328A (en) * 1980-06-30 1982-08-17 Sperry Corporation ECC Check bit generation using through checking parity bits
JPS57100698A (en) * 1980-12-15 1982-06-22 Fujitsu Ltd Error correction system
US4414669A (en) * 1981-07-23 1983-11-08 General Electric Company Self-testing pipeline processors
US4473902A (en) * 1982-04-22 1984-09-25 Sperrt Corporation Error correcting code processing system
JPS5985153A (ja) * 1982-11-08 1984-05-17 Hitachi Ltd 冗長化制御装置
US4604750A (en) * 1983-11-07 1986-08-05 Digital Equipment Corporation Pipeline error correction
JPH0654505B2 (ja) * 1983-12-23 1994-07-20 株式会社日立製作所 並列型演算処理装置

Also Published As

Publication number Publication date
US4791641A (en) 1988-12-13
EP0261031B1 (de) 1994-06-01
ATE106582T1 (de) 1994-06-15
CA1292579C (en) 1991-11-26
EP0261031A3 (en) 1989-11-02
JP2738687B2 (ja) 1998-04-08
DE3789929D1 (de) 1994-07-07
JPS6394353A (ja) 1988-04-25
EP0261031A2 (de) 1988-03-23
AU7820987A (en) 1988-03-17

Similar Documents

Publication Publication Date Title
DE3789929T2 (de) Verfahren und Gerät zur Fehlerkorrektur in einem aus parallelem Prozessor bestehenden Datenverarbeitungssystem.
DE2060643C3 (de) Schaltungsanordnung zur Korrektur von Einzelfehlern
DE3587137T2 (de) Inhaltsadressierbarer speicher.
DE2916710C2 (de)
DE3853206T2 (de) Verfahren und gerät zur byteschreibfehlerkodierung.
DE2328869C2 (de) Verfahren und Schaltungsanordnung zum Betreiben eines digitalen Speichersystems
DE3209679C2 (de)
EP0228559A1 (de) Fehlertolerante Mehrrechneranordnung
DE69126057T2 (de) Ein Informationsverarbeitungsgerät mit einer Fehlerprüf- und Korrekturschaltung
DE68924639T2 (de) Matrixspeicher, der Standardblöcke, Standard-Unterblöcke, einen redundanten Block und redundante Unterblöcke beinhaltet, und integrierter Kreis, der eine Vielzahl solcher Matrixspeicher beinhaltet.
DE2357168C2 (de) Schaltungsanordnung für einen Speichermodul
DE3011552A1 (de) Datenverarbeitungsanlage mit einem hauptspeicher sowie wenigsten einem datenprozessor mit zugeordnetem adressenumformer
DE2430464A1 (de) Einrichtung zur fehlergesicherten datenuebertragung
DE68923694T2 (de) LRU-Fehlerdetektion unter Verwendung der Sammlung der geschriebenen und gelesenen LRU-Bits.
DE2132565A1 (de) Umsetzer
DE3618136C2 (de)
DE3784181T2 (de) Fehlererkennung unter verwendung von paritaetspruefung mit veraenderlichem feld.
DE2610411A1 (de) Datenverarbeitungsanlage
DE69904618T2 (de) Detektionstechnik von speicherabschnittfehlern und einzel-, doppel und triplebitfehlern
DE3632603A1 (de) Verfahren und vorrichtung zur druckersteuerung
DE69317766T2 (de) Fehlerkorrekturgerät für digitale Daten zur Korrektur von Einfachfehlern (sec), von Doppelfehlern (ded) und Vielfacheinzelbytefehlern (sbd) und zur Korrektur von Einzelbytefehlern ungerader Anzahl (odd sbc)
DE2513262C3 (de) Digitale Codeumwandlungsanordnung
DE3814875C2 (de)
DE68918840T2 (de) Fehlererkennung für teilschreiboperationen für speicher.
DE60215687T2 (de) Fehlerkorrektion von multibit-baueinheiten mit unbeschränkter erkennung von doppelfehlern

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee