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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding 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.
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)
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)
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 | 株式会社日立製作所 | 並列型演算処理装置 |
-
1986
- 1986-09-15 US US06/907,671 patent/US4791641A/en not_active Expired - Fee Related
-
1987
- 1987-09-09 CA CA000546500A patent/CA1292579C/en not_active Expired - Lifetime
- 1987-09-09 AU AU78209/87A patent/AU7820987A/en not_active Abandoned
- 1987-09-15 AT AT87402061T patent/ATE106582T1/de active
- 1987-09-15 EP EP87402061A patent/EP0261031B1/de not_active Expired - Lifetime
- 1987-09-15 DE DE3789929T patent/DE3789929T2/de not_active Expired - Fee Related
- 1987-09-16 JP JP62231967A patent/JP2738687B2/ja not_active Expired - Lifetime
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 |