Die
vorliegende Erfindung betrifft ein elektronisches Datenverarbeitungssystem
mit einem Prozessor, einem Datenspeicher, der in eine Mehrzahl von
Nutzdatenblöcken
und Prüfdatenblöcken gegliedert
ist, und einer Datenprüfschaltung
zum Prüfen
eines jeden Nutzdatenblocks, auf den der Prozessor zugreift, auf
Fehlerfreiheit anhand von in einem diesem Nutzdatenblock zugeordneten
Prüfdatenblock gespeicherten
Prüfdaten.
Ein solches Datenverarbeitungssystem ist aus DE 103 49 580 A1 bekannt.The present invention relates to an electronic data processing system comprising a processor, a data memory which is divided into a plurality of payload data blocks and test data blocks, and a data check circuit for checking each payload data block accessed by the processor for accuracy on the basis of test data blocks associated with this payload data block stored test data. Such a data processing system is off DE 103 49 580 A1 known.
Wenn
bei diesem herkömmlichen
System die Datenprüfschaltung
einen Fehler feststellt, gibt sie ein Fehlersignal an den Prozessor
aus, das diesen veranlasst, die Ausführung eines laufenden Anwendungsprogramms
zu unterbrechen und statt dessen ein Korrekturprogramm auszuführen, welches
aus dem Nutzdatenblock, in welchem der Fehler festgestellt wurde,
und den Prüfdaten
den korrekten Nutzdatenblock neu berechnet. Auf diese Weise werden korrekte
Nutzdaten erhalten, die nach Abschluss des Korrekturprogramms von
dem Anwendungsprogramm weiterverarbeitet werden können.If
in this conventional
System the data check circuit
detects an error, it gives an error signal to the processor
which causes them to run a running application program
to interrupt and instead execute a correction program, which
from the user data block in which the error was detected
and the test data
recalculated the correct user data block. In this way, will be correct
User data obtained after completion of the correction program of
the application program can be further processed.
Dieses
herkömmliche
System versagt jedoch, wenn ein Fehler in einer Region des Datenspeichers
auftritt, in der die Anweisungen des Korrekturprogramms gespeichert
sind. Wenn der Prozessor auf einen Nutzdatenblock in dieser Region
zugreift, um Programmanweisungen zu lesen, und die Datenprüfschaltung
einen Fehler in diesem Nutzdatenblock feststellt, so wird das Korrekturprogramm
erneut gestartet, so dass das System in eine Endlosschleife gelangt.This
conventional
System fails, however, if an error occurs in a region of the data store
occurs in which the instructions of the correction program are stored
are. If the processor is on a payload block in that region
accesses to read program instructions, and the data check circuit
detects an error in this user data block, then the correction program
restarted so that the system enters an infinite loop.
Vorteile der
ErfindungAdvantages of
invention
Gemäß der vorliegenden
Erfindung ist ein Datenverarbeitungssystem der eingangs genannten Art
zusätzlich
mit einer Datenkorrekturschaltung ausgestattet, die – ohne Rückgriff
auf den das Anwendungsprogramm ausführenden Prozessor – einen von
der Datenprüfschaltung
festgestellten Fehler in einem von dem Prozessor aufgerufenen Nutzdatenblock
korrigiert und die Verwendung des fehlerhaften Nutzdatenblocks durch
den Prozessor so lange sperrt, bis sie den Fehler korrigiert hat.
So ist der Prozessor vor Fehlfunktionen, die durch einen Zugriff
auf fehlerhafte Daten verursacht sind, geschützt.According to the present
Invention is a data processing system of the type mentioned
additionally
equipped with a data correction circuit that - without resorting
to the processor executing the application program - one of
the data check circuit
detected errors in a user data block called by the processor
corrected and the use of the erroneous user data block by
Lock the processor until it corrects the error.
So the processor is facing malfunction caused by an access
on erroneous data caused, protected.
Um
die Verwendung des Nutzdatenblocks durch den Prozessor zu sperren,
ist gemäß einer
ersten Ausgestaltung die Datenkorrekturschaltung eingerichtet, den
Betrieb des Prozessors zu unterbrechen, während sie den Fehler korrigiert.
Eine solche Unterbrechung kann auf unterschiedliche Weise erfolgen.
Eine erste Möglichkeit
ist, dass dem Prozessor Leeroperationsbefehle zugeführt werden,
bis der Zugriff auf den Nutzdatenblock wieder freigegeben werden
kann. Eine andere Möglichkeit
ist, den Betrieb des Prozessors völlig zum Erliegen zu bringen, indem
ein ihm zugeführtes
Taktsignal unterbrochen wird. Eine weitere Alternative ist, ein
Signal, das dem Prozessor die Gültigkeit
von Daten auf einem den Prozessor und den Speicher verbindenden
Bus anzeigt, zu unterdrücken
und den Prozessor dadurch am Empfang der Daten zu hindern, bis der
Fehler des Datenblocks behoben ist. Eine dritte Möglichkeit
ist, ein Haltesignal (WAIT) an den Prozessor anzulegen, bis die
Datenkorrekturschaltung den Fehler des Datenblocks korrigiert hat.Around
disable the use of the payload block by the processor,
is according to one
In the first embodiment, the data correction circuit is set up
Interrupting operation of the processor while correcting the error.
Such an interruption can be done in different ways.
A first possibility
is that idle operation instructions are supplied to the processor,
until the access to the user data block is released again
can. Another possibility
is to completely stop the operation of the processor by
a fed him
Clock signal is interrupted. Another alternative is one
Signal that is valid to the processor
of data on one connecting the processor and the memory
Bus indicates to suppress
and thereby prevent the processor from receiving the data until the
Error of the data block is fixed. A third possibility
is to apply a hold signal (WAIT) to the processor until the
Data correction circuit has corrected the error of the data block.
Bei
einem Datenverarbeitungssystem, das einen Pufferspeicher umfasst,
der vom Prozessor aus dem Speicher abgefragte Daten vor ihrer Verarbeitung
durch den Prozessor zwischenspeichert, kann die Datenkorrekturschaltung
eingerichtet sein, ein aus einem als fehlerhaft erkannten Nutzdatenblock
herrührendes
Datenwort in dem Pufferspeicher so lange als ungültig zu kennzeichnen, bis sie
den Fehler korrigiert hat. Eine andere Möglichkeit ist, im Falle eines
von der Datenprüfschaltung
festgestellten Fehlers in einem von dem Prozessor aufgerufenen Nutzdatenblock
den Pufferspeicher zu leeren, um so den Prozessor am Zugriff auf
eventuell fehlerhafte Daten zu hindern.at
a data processing system comprising a buffer memory,
the data retrieved from memory by the processor before processing
buffered by the processor, the data correction circuit
be established, one from a user data block recognized as defective
herrührendes
Data word in the buffer memory as invalid until they are
corrected the error. Another possibility is, in the case of a
from the data check circuit
detected error in a user data block called by the processor
empty the cache to access the processor
possibly prevent erroneous data.
Um
zu verhindern, dass Daten wiederholt fehlerhaft gelesen werden,
umfasst das System vorzugsweise Mittel zum Überschreiben wenigstens eines
fehlerhaften Teiles eines als fehlerhaft erkannten Nutzdatenblocks
durch einen von der Datenkorrekturschaltung korrigierten Teil des
Nutzdatenblocks.Around
to prevent data from being read repeatedly erroneously,
For example, the system preferably includes means for overwriting at least one
faulty part of a useful data block recognized as defective
by a corrected by the data correction circuit part of
Payload data.
Die
Breite eines Nutzdatenblocks kann der Lesewortbreite des Prozessors
entsprechen. Es sind aber auch Ausgestaltungen denkbar, bei denen
die Breite eines Nutzdatenblocks einem Mehrfachen der Lesewortbreite
des Prozessors entspricht. So können
zusammen mit einem vom Prozessor tatsächlich gelesenen Datenwort
eines Blocks auch andere Datenwörter
auf eventuelle Fehler überprüft und ggf. korrigiert
werden. Eine Korrektur dieser Datenwörter kann folglich stattfinden,
noch bevor der Prozessor auf sie zugreift, so dass die Korrektur
keine Verzögerung
des Anwendungsprogramms bewirkt. Denkbar ist auch, dass die Breite
des Nutzdatenblocks nur ein Bruchteil der Lesewortbreite des Prozessors
ist.The
Width of a payload data block can be the read word width of the processor
correspond. But there are also embodiments conceivable in which
the width of a payload data block is a multiple of the read word width
of the processor. So can
together with a data word actually read by the processor
a block also other data words
checked for possible errors and corrected if necessary
become. Correction of these data words can thus take place
even before the processor accesses it, so the correction
no delay
of the application program causes. It is also conceivable that the width
of the payload data block is only a fraction of the read word width of the processor
is.
Um
ein hohes Maß an
Sicherheit gegen Fehlfunktionen der Datenkorrekturschaltung zu erzielen,
kann diese als eine fest verdrahte Schaltung ausgeführt sein.Around
a high level of
To provide security against malfunction of the data correction circuit,
This can be designed as a hard-wired circuit.
Bei
einem Datenverarbeitungssystem mit mehreren Prozessoren kann auch
jeweils ein Prozessor als Datenkorrekturschaltung für den anderen fungieren.
Auch wenn in einem solchen System die Datenkorrektur jeweils programmgesteuert
erfolgt, ist ein Prozessor somit in der Lage, Datenfehler im Korrekturprogramm
des anderen zu beheben, so dass die oben erwähnte Endlosschleife nur auftreten
kann, wenn kein Prozessor mehr in der Lage ist, die Daten eines
anderen zu korrigieren.In a multi-processor data processing system, one pro act as a data correction circuit for the other. Even if the data correction is carried out in a program-controlled manner in such a system, one processor is thus able to correct data errors in the correction program of the other, so that the abovementioned endless loop can only occur if no processor is able to store the data of one to correct others.
Weitere
Merkmale und Vorteile der Erfindung ergeben sich aus der nachfolgenden
Beschreibung von Ausfüh rungsbeispielen
unter Bezugnahme auf die beigefügten
Figuren.Further
Features and advantages of the invention will become apparent from the following
Description of exemplary embodiments
with reference to the attached
Characters.
Figurencharacters
1 bis 6 zeigen
jeweils Blockdiagramme von Ausführungsbeispielen
von Datenverarbeitungssystemen gemäß der vorliegenden Erfindung. 1 to 6 FIG. 2 each shows block diagrams of embodiments of data processing systems according to the present invention.
Beschreibung
der Ausführungsbeispieledescription
the embodiments
Das
in 1 gezeigte Datenverarbeitungssystem umfasst einen
Mikroprozessor 1, durch den Mikroprozessor beschreibbare
Speicher 2, 3 unterschiedlichen Typs, zum Beispiel
einen RAM-Arbeitsspeicher und einen Flash-Speicher, sowie diverse Sensoren 4 und
Aktoren, die miteinander über
einen Datenbus 5 und einen Adressbus verbunden sind. Die
Sensoren 4 und Aktoren dienen zum Erfassen bzw. Beeinflussen
von Betriebsparametern eines zu steuernden Gerätes, zum Beispiel eines Kraftfahrzeugmotors.
Die Art und Weise, wie von den Sensoren 4 erzeugte Messwerte
vom Mikroprozessor 1 verarbeitet werden, um die Aktoren
anzusteuern, ist durch ein in dem Flash-Speicher 3 gespeichertes Anwendungsprogramm
festgelegt.This in 1 The data processing system shown includes a microprocessor 1 , memory writable by the microprocessor 2 . 3 different types, for example a RAM memory and a flash memory, and various sensors 4 and actuators communicating with each other via a data bus 5 and an address bus are connected. The sensors 4 and actuators are used for detecting or influencing operating parameters of a device to be controlled, for example a motor vehicle engine. The way how from the sensors 4 generated measurements from the microprocessor 1 be processed to control the actuators, is by a in the flash memory 3 stored application program.
Die
Breite des Datenbusses 5 zwischen den Speichern 2, 3 und
dem Prozessor 1 bzw. die Lesewortbreite des Prozessors 1 ist
im Prinzip beliebig; im Fol genden wird als Beispiel eine Breite
von 16 Bit angenommen.The width of the data bus 5 between the stores 2 . 3 and the processor 1 or the read word width of the processor 1 is in principle arbitrary; In the following, a width of 16 bits is assumed as an example.
Die
Breite des Flash-Speichers 3 ist um mehrere Bit größer als
die des Datenbusses 5, die zusätzlichen Bits dienen zum Speichern
von jedem im Flash-Speicher 3 gespeicherten
Datenwort zugeordneter redundanter Information. Der Flash-Speicher 3 ist
in der Figur in Abschnitte 3-0 bis 3-18 unterteilt dargestellt,
von denen die Abschnitte 3-0 bis 3-15 jeweils
eines der 16 Bits jedes Datenwortes und die Abschnitte 3-16 bis 3-18 die
dazugehörige
redundante Information aufnehmen. Die Abschnitte 3-16 bis 3-18 haben
jeweils einen Datenein- und -ausgang, der mit einem Datencontroller 7 verbunden
ist. Dieser erzeugt zu jedem Datenwort, das in den Flash-Speicher 3 geschrieben
wird, die korrekte redundante Information anhand eines Fehlerkorrekturcodes,
zum Beispiel eines an sich bekannten Hamming-Codes, und gibt sie
an die Abschnitte 3-16 bis 3-18 aus, so dass sie
zusammen mit dem Datenwort abgespeichert wird, bzw. berechnet zu
jedem aus dem Speicher 3 gelesenen Datenwort die zugehörige redundante
Information und vergleicht sie mit der gleichzeitig aus den Abschnitten 3-16 bis 3-18 gelesenen.
Bei Nichtübereinstimmung
liegt ein Fehler des Speichers 3 vor, und der Datencontroller 7 erzeugt
ein Fehlersignal, das über
eine Leitung 8 einem Interrupt-Eingang 9 des Mikroprozessors 1 zugeführt wird.
Gleichzeitig betätigt
der Datencontroller 7 einen Schalter 10, der den
Mikroprozessor 1 von Datenbus 5 und Adressbus
abkoppelt und statt dessen die Dateneingänge des Mikroprozessors 1 mit
einem Register 11 verbindet. Der Inhalt des Regis ters 11 entspricht
einem Null-Operationsbefehl (NOP) des Prozessors 1, so
dass dieser unabhängig
davon, welche Adresse er ausgibt, um die nächste auszuführende Programmanweisung
zu lesen, nur NOP-Anweisungen
zu lesen bekommt. Gleichzeitig gelangen die vom Mikroprozessor 1 ausgegebenen
Adressen nicht mehr auf den Adressbus.The width of the flash memory 3 is several bits larger than the data bus 5 , the extra bits are used to store everyone in flash memory 3 stored data word associated redundant information. The flash memory 3 is in the figure in sections 3-0 to 3-18 shown divided, of which the sections 3-0 to 3-15 one of the 16 bits of each data word and the sections 3-16 to 3-18 record the associated redundant information. The sections 3-16 to 3-18 each have a data input and output connected to a data controller 7 connected is. This generates to every data word that in the flash memory 3 is written, the correct redundant information from an error correction code, for example, a known Hamming code, and gives them to the sections 3-16 to 3-18 out, so that it is stored together with the data word, or calculated to each from the memory 3 read data word the associated redundant information and compares them with the same from the sections 3-16 to 3-18 read. If there is no match, there is an error in the memory 3 before, and the data controller 7 generates an error signal via a line 8th an interrupt input 9 of the microprocessor 1 is supplied. At the same time, the data controller operates 7 a switch 10 that the microprocessor 1 from data bus 5 and address bus decouples and instead the data inputs of the microprocessor 1 with a register 11 combines. The content of the registry 11 corresponds to a zero operation instruction (NOP) of the processor 1 so that regardless of which address it outputs to read the next program statement to be executed, it will only read NOP instructions. At the same time, they come from the microprocessor 1 issued addresses no longer on the address bus.
Während sich
der Mikroprozessor 1 im Interrupt-Zustand befindet und nur NOP-Operationen ausführt, führt der
Datencontroller 7 eine Decodierung des fehlerhaft gelesenen
Datenwortes aus und schreibt dieses an dieselbe Adresse des Speichers 3 zurück, an der
es zuvor fehlerhaft gelesen wurde. Sofern die fehlerhafte Lesung
nicht auf einen permanenten Defekt des Speichers 3 zurückgeht,
ist das Datenwort nun wieder korrekt lesbar. Gleichzeitig mit dem
Zurückschreiben
des korrigierten Datenwortes betätigt
der Datencontroller 7 den Schalter 10 erneut, um
den Mikroprozessor mit einem zweiten Register 12 zu verbinden,
das eine Anweisung zur Rückkehr vom
Interrupt RTI enthält.
Durch Ausführung
dieser Anweisung kehrt der Mikroprozessor zu dem Zustand, insbesondere
zu dem Programmzählerstand, zurück, den
er bei Auftreten des Fehlers hatte, und liest folglich anschließend erneut
die Adresse des Speichers 3, die zuvor zu dem Fehler geführt hat.
Bevor dies geschieht, hat der Datencontroller 7 den Schalter 10 bereits
erneut betätigt,
um den Mikroprozessor 1 wieder mit Datenbus 5 und
Adressbus zu verbinden. Der Mikroprozessor 1 liest somit
erneut die Speicheradresse, die zuvor zum Fehler geführt hat,
doch da sie nun den korri gierten Datenwert enthält, wird das Anwendungsprogramm
normal fortgesetzt.While the microprocessor 1 is in the interrupt state and performs only NOP operations, the data controller performs 7 a decoding of the erroneously read data word and writes this to the same address of the memory 3 back, where it was previously read incorrectly. Unless the erroneous reading does not indicate a permanent defect of the memory 3 goes back, the data word is now correctly readable again. Simultaneously with the writing back of the corrected data word the data controller operates 7 the switch 10 again to the microprocessor with a second register 12 which contains an instruction to return from the interrupt RTI. By executing this instruction, the microprocessor returns to the state, in particular to the program count, that it had when the error occurred, and subsequently reads the address of the memory again 3 that previously led to the error. Before this happens, the data controller has 7 the switch 10 already pressed again to the microprocessor 1 again with data bus 5 and address bus to connect. The microprocessor 1 thus reads again the memory address that previously led to the error, but now that it contains the corrected data value, the application program continues normally.
Nur
wenn eine dauerhafte Störung
an der betreffenden Adresse des Speichers 3 vorliegt, die
dazu führt,
dass das korrigiert hineingeschriebene Datenwort jedes Mal wieder
fehlerhaft gelesen wird, gelangt der Prozessor 1 in eine
Endlosschleife. Dies kann jedoch einer bevorzugten Weiterentwicklung zufolge
vermieden werden, indem dem Mikroprozessor 1 der vom Datencontroller 7 korrigierte
Wert unmittelbar und nicht auf dem Umweg über eine Speicherung in dem
Speicher 3 zur Verfügung
gestellt wird. Dies kann zum Beispiel geschehen, indem der Datencontroller 7 zunächst die
Rückkehr
des Prozessors 1 vom Interrupt veranlasst und dann in demjenigen
Taktzyklus, in welchem der Prozessor 1 das fehlerhafte
Datenwort erneut zu lesen versucht, dieses Datenwort selbst anstelle
des Speichers 3 auf den Datenbus 5 ausgibt.Only if a permanent failure at the address of the memory concerned 3 is present, which results in that the corrected written-in data word is read again every time erroneous, the processor arrives 1 in an endless loop. However, this may be a preferred development According to the microprocessor 1 that of the data controller 7 corrected value immediately and not by way of storage in the memory 3 is made available. This can be done, for example, by the data controller 7 first the return of the processor 1 caused by the interrupt and then in that clock cycle in which the processor 1 the erroneous data word tries to reread this data word itself instead of the memory 3 on the data bus 5 outputs.
In
diesem Fall kann ein Zurückschreiben
des korrigierten Datenwertes in den Speicher 3 unter Umständen auch
völlig
unterbleiben.In this case, a write back of the corrected data value to memory 3 under certain circumstances completely omitted.
Einer
abgewandelten Ausgestaltung zufolge löst der Datencontroller 7,
wenn er einen Fehler in vom Speicher 3 ausgegebenen Daten
erkennt, keinen Interrupt des Mikroprozessors 1 aus, sondern koppelt
ihn lediglich mit Hilfe des Schalters 10 vom Datenbus 5 ab,
um ihm NOP-Anweisungen zuzuführen,
während
er eine Korrektur des fehlerhaften Datenwertes durchführt. Um
nach erfolgreicher Korrektur des fehlerhaft gelesenen Datenwertes
den Prozessor in denjenigen Zustand zurückzubringen, in dem der Fehler
aufgetreten ist, wird der Prozessor wiederum über den Schalter 10 mit
dem Register 12 verbunden, wobei jedoch das Register 12 in
diesem Fall einen relativen Sprungbefehl enthält, der den Prozessor 1 veranlasst,
seinen Programmzähler
um die Anzahl der während
des Korrekturvorganges aus dem Register 11 gelesenen NOP-Befehle
zurückzusetzen,
so dass der gescheiterte Leseversuch wiederholt wird. Im einfachsten
Fall ist die Anzahl der Taktperioden fest und groß genug
gewählt,
dass eine Datenkorrektur, so sie überhaupt möglich ist, in dieser Zahl von
Taktperioden mit Gewissheit ausgeführt werden kann; dann kann
der Inhalt des Registers 12 eine Konstante sein. Denkbar
ist aber auch, dass der Datencontroller 7 die Zahl der
für die
Korrektur benötigten
Taktperioden zählt
und in das Register als Sprungweite des Sprungbefehls einträgt. So ist
die Dauer der Betriebsunterbrechung des Prozessors 1 stets
minimal.According to a modified embodiment, the data controller triggers 7 if he made a mistake in the memory 3 output data detects no interrupt of the microprocessor 1 but only couples it with the help of the switch 10 from the data bus 5 to supply NOP instructions to him while correcting the erroneous data value. In order to bring the processor back into the state in which the error has occurred after successful correction of the erroneously read data value, the processor is again switched via the switch 10 with the register 12 but the register 12 In this case, it contains a relative jump instruction, which is the processor 1 causes its program counter to count out during the correction process from the register 11 reset the read NOP instructions so that the failed read attempt is repeated. In the simplest case, the number of clock periods is chosen to be fixed and large enough that data correction, if at all possible, can be carried out with certainty in this number of clock periods; then the contents of the register 12 be a constant. It is also conceivable that the data controller 7 the number of clock periods required for the correction counts and enters into the register as a jump distance of the jump instruction. Such is the duration of the interruption of the processor 1 always minimal.
2 zeigt
eine zweite Ausgestaltung eines erfindungsgemäßen Datenverarbeitungssystems. Elemente
des Systems, die die gleichen Bezugszeichen wie in 1 tragen,
entsprechen denjenigen der ersten Ausgestaltung und werden nicht
erneut erläutert.
Parallel zum Datenbus 5 erstreckt sich zwischen dem Mikroprozessor 1 und
jeder Datenquelle, auf die dieser zugreift, insbesondere dem Speicher 3, eine
Datenbereitschaftsleitung 13, die von jeder Datenquelle,
auf die der Mikroprozessor 1 lesend zugreift, auf einen
vorgegebenen Pegel, z.B. den Pegel logisch 1, gesetzt wird, sobald
die angeforderten Daten stabil auf dem Datenbus 5 stehen.
An die se Datenbereitschaftsleitung 13 ist ein Eingang 14 des
Datencontrollers 7 direkt und ein Eingang 15 des
Mikroprozessors über
ein Verzögerungsglied 16 angeschlossen,
so dass der Datencontroller 7 die Präsenz der Daten auf dem Bus 5 etwas
früher
im Laufe eines Prozessortaktes erkennt als der Prozessor 1 selber und
prüfen
kann, ob das gelesene Datenwort zusammen mit der gleichzeitig empfangenen
redundanten Information ein zulässiges
Codewort bildet. Wenn dies nicht der Fall ist, steuert der Datencontroller 7 einen
zwischen die Datenbereitschaftsleitung 13 und Masse geschalteten
Transistor 17 auf, der dann den Eingang 15 des
Mikroprozessors 1 auf niedrigem Niveau hält, mit
der Folge, dass dieser die auf dem Datenbus 5 vorhandenen
Daten nicht als gültig
akzeptiert und darauf wartet, dass der Eingang 15 hohen Pegel
annimmt. So wird der Mikroprozessor 1 daran gehindert,
einen auf dem Datenbus 5 liegenden fehlerhaften Datenwert
zu empfangen und zu verarbeiten, während der Datencontroller 7 den
betreffenden Wert anhand der redundanten Information korrigiert. Sobald
dies geschehen ist und der Datencontroller 7 den korrigierten
Wert auf den Bus 5 gibt, öffnet er auch den Transistor 17 wieder,
so dass der Eingang 15 des Mikroprozessors einen hohen
Pegel annimmt und der korrigierte Datenwert vom Mikroprozessor 1 akzeptiert
wird. 2 shows a second embodiment of a data processing system according to the invention. Elements of the system that have the same reference numbers as in 1 wear, correspond to those of the first embodiment and will not be explained again. Parallel to the data bus 5 extends between the microprocessor 1 and any data source it accesses, especially the memory 3 , a data preparedness line 13 from any data source to which the microprocessor 1 read access, set to a predetermined level, eg the level logical 1, as soon as the requested data is stable on the data bus 5 stand. To the se data standby line 13 is an entrance 14 of the data controller 7 directly and an entrance 15 of the microprocessor via a delay element 16 connected so that the data controller 7 the presence of data on the bus 5 detects something earlier in the course of a processor clock than the processor 1 itself and can check whether the read data word together with the simultaneously received redundant information forms a permissible code word. If not, the data controller controls 7 one between the data standby line 13 and ground switched transistor 17 on, then the entrance 15 of the microprocessor 1 at a low level, with the result that this is on the data bus 5 existing data is not accepted as valid and waiting for the input 15 assumes high level. This is how the microprocessor works 1 prevented from being on the data bus 5 while the data controller is receiving and processing the erroneous data value 7 corrects the relevant value based on the redundant information. Once this is done and the data controller 7 the corrected value on the bus 5 he also opens the transistor 17 again, so the entrance 15 the microprocessor goes high and the corrected data from the microprocessor 1 is accepted.
Es
kann vorgesehen werden, dass der Datencontroller 7 gleichzeitig
mit dem korrigierten Datenwert auf dem Datenbus auf dem Adressbus
auch die Adresse des Speichers 3 ausgibt, an welcher der Mikroprozessor 1 zuvor
versucht hat, das Datenwort zu lesen, und ein Schreibsignal an den
Speicher 3 sendet, um so das fehlerhaft gespeicherte Datenwort zu
korrigieren.It can be provided that the data controller 7 simultaneously with the corrected data value on the data bus on the address bus and the address of the memory 3 outputs at which the microprocessor 1 previously tried to read the data word, and a write signal to the memory 3 sends, so as to correct the erroneously stored data word.
Ein ähnlicher
Ansatz wie in der Ausgestaltung der 2 wird in
derjenigen der 3 verfolgt. Hier liefert ein
Taktgenerator 18 ein Taktsignal an den Mikroprozessor 1,
den Datencontroller 7 und den Speicher 3. Wenn
der Mikroprozessor 1 eine Zelle des Speichers 3 adressiert,
empfangen er und der Datencontroller 7 das daraufhin vom
Speicher 3 ausgegebene Datenwort. Der Datencontroller 7 empfängt darüber hinaus
die zu dem Datenwort gehörige redundante
Information und prüft,
ob diese zusammen mit dem Datenwort ein zulässiges Codewort ergibt. Wenn
nicht, geht ein Ausgang 19 des Datencontrollers 7 auf
Null, an den ein Eingang eines Und-Gatters 20 angeschlossen
ist. Ein zweiter Eingang des Und-Gatters
empfängt
das Taktsignal vom Taktgenerator 18, und der Ausgang des
Und-Gatters 20 ist mit dem Takteingang des Mikroprozessors 1 verbunden. Indem
der Datencontroller 7 einen Eingang des Gatters 20 auf
Null legt, unterdrückt
er die Weitergabe des Taktsignals an den Mikroprozessor 1 und
hält diesen
dadurch an. Der Ausgang 19 bleibt so lange auf Null, wie
der Datencontroller 7 benötigt, um das empfangene fehlerhafte
Datenwort zu korrigieren. Wenn der Datencontroller 7 das
korrigierte Datenwort auf den Datenbus 5 ausgegeben hat,
geht sein Ausgang 19 wieder auf 1, so dass das Taktsignal
wieder zum Mikroprozessor 1 durchgelassen wird. Dieser übernimmt
so anstelle des fehlerhaft gelesenen das korrigierte Datenwort vom
Datenbus 5 und verarbeitet es.A similar approach as in the embodiment of 2 will be in those of 3 tracked. Here is a clock generator 18 a clock signal to the microprocessor 1 , the data controller 7 and the memory 3 , If the microprocessor 1 a cell of memory 3 addressed, he received and the data controller 7 then the memory 3 output data word. The data controller 7 furthermore receives the redundant information associated with the data word and checks whether this together with the data word yields a permissible code word. If not, an exit goes 19 of the data controller 7 to zero, to an input of an AND gate 20 connected. A second input of the AND gate receives the clock signal from the clock generator 18 , and the output of the AND gate 20 is with the clock input of the microprocessor 1 connected. By the data controller 7 an entrance of the gate 20 Zero, it suppresses the passing of the clock signal to the microprocessor 1 and stops it. The exit 19 stays at zero for as long as the data controller 7 needed to correct the received erroneous data word. When the data controller 7 the corrected data word on the data bus 5 his output goes out 19 back to 1, allowing the clock signal back to the microprocessor 1 is allowed through. This takes over instead of the erroneously read the corrected data word from the data bus 5 and process it.
Wie
bei der Ausgestaltung der 2 kann die
Ausgabe des korrigierten Datenwortes auf den Bus 5 verbunden
sein mit einem Zurückschreiben dieses
Datenwortes an die Adresse des Speichers 3, von der es
zuvor fehlerhaft gelesen wurde.As in the embodiment of 2 can the output of the corrected data word on the bus 5 be associated with a write back of this data word to the address of the memory 3 from which it was previously read incorrectly.
Bei
einer nicht eigens in einer Figur dargestellten Abwandlung der Ausgestaltung
von 3 ist das Und-Gatter 20 weggelassen und
der Taktgenerator 18 direkt mit dem Takteingang des Mikroprozessors 1 verbunden.
Der Mikroprozessor hat in an sich bekannter Weise einen Eingang
für ein
Wartesignal, das den Betrieb des Prozessors unterbricht. Dieser Eingang
ist mit dem Ausgang 19 der Datenkorrekturschaltung 7 verbunden,
so dass auch hier der Betrieb des Mikroprozessors 1 unterbrochen
wird, so lange die Datenkorrekturschaltung 7 mit dem Korrigieren eines
fehlerhaft gelesenen Datenworts beschäftigt ist.In a not specifically shown in a figure modification of the embodiment of 3 is the and gate 20 omitted and the clock generator 18 directly to the clock input of the microprocessor 1 connected. The microprocessor has, in a manner known per se, an input for a wait signal which interrupts the operation of the processor. This input is with the output 19 the data correction circuit 7 connected, so again, the operation of the microprocessor 1 is interrupted as long as the data correction circuit 7 is concerned with correcting a misread data word.
Bei
der in 4 gezeigten Ausgestaltung ist dem Mikroprozessor 1 ein
Pufferspeicher 22 zugeordnet, in welchem vom Mikroprozessor 1 gelesene Datenwörter vor
ihrer Verarbeitung durch den Mikroprozessor zwischengespeichert
werden, um sie zum Zeitpunkt ihrer tatsächlichen Verarbeitung mit minimalem
Zeitverlust zur Verfügung
stellen zu können. Der
Pufferspeicher 22 ist hier zwar vom Mikroprozessor 1 getrennt
dargestellt, er kann aber auch in die Struktur des Mikroprozessors 1 in
Art einer Verarbeitungspipeline integriert sein, um verschiedene
aufeinanderfolgende Verarbeitungsschritte wie etwa das Identifizieren
eines Datenwortes als Anweisung oder als Argument einer Anweisung,
das Berechnen einer absoluten Adresse aus einer in einem Argument
spezifizierten relativen Adresse etc., fortlaufend bei einer Mehrzahl
von Datenwörtern
gleichzeitig durchführen zu
können
und so die Verarbeitungsleistung zu erhöhen. Üblicherweise enthält bei einem
solchen Prozessor der Pufferspeicher 22 eine Mehrzahl von
an aufeinanderfolgenden Adressen eines Programmspeichers gelesenen
Datenwörtern.
Wenn der Prozessor einen Sprungbefehl ausführt, führt dies meist dazu, dass die
Daten im Pufferspeicher 22 nicht mehr den als nächstes auszuführenden
Anweisungen entsprechen. In einem solchen Fall muss der Inhalt des Pufferspeichers 22 verworfen
und ausgehend von der Zieladresse des Sprungbefehls neu gelesen
werden. Die hierfür
benötigten
Schaltungslogiken und ihre Arbeitsweise sind bekannt und brauchen
daher hier nicht im Detail beschrieben zu werden.At the in 4 The embodiment shown is the microprocessor 1 a cache 22 assigned in which by the microprocessor 1 read data words are cached before their processing by the microprocessor to make them available at the time of their actual processing with minimal loss of time. The cache 22 is here from the microprocessor 1 but it can also be seen in the structure of the microprocessor 1 in the manner of a processing pipeline, to concurrently perform various successive processing steps such as identifying a data word as an instruction or argument of an instruction, calculating an absolute address from a relative address specified in an argument, etc., on a plurality of data words can and so increase processing power. Usually, in such a processor, the buffer memory 22 a plurality of data words read at consecutive addresses of a program memory. When the processor executes a jump instruction, it usually causes the data in the buffer memory 22 no longer follow the instructions to be executed next. In such a case, the contents of the buffer memory must be 22 discarded and re-read starting from the destination address of the jump instruction. The required circuit logic and their operation are known and therefore need not be described in detail here.
Die
vorliegende Erfindung nutzt diese Technik, indem der Datencontroller
jedes Mal, wenn er ein fehlerhaftes Datenwort auf dem Datenbus 5 erfasst, den
Pufferspeicher 22 löscht.
Dies zwingt wie bei einem Sprungbefehl den Mikroprozessor 1,
den Inhalt des Pufferspeichers 22 neu zu lesen und die
an den gelöschten
Datenwörtern
bereits ausgeführten
Vorverarbeitungsschritte zu wiederholen. Die dadurch eintretende
Verzögerung
des Mikroprozessors 1 nutzt der Datencontroller 7,
um das fehlerhaft gelesene Datenwort zu korrigieren. Die Verzögerungszeit entspricht
so viel Taktperioden, wie der Pufferspeicher 22 Speicherplätze hat.
Die Zahl der Speicherplätze
ist daher zweckmäßigerweise
so groß gewählt, dass
die Verzögerung
zum Korrigieren des fehlerhaften Datenwerts ausreicht.The present invention utilizes this technique by having the data controller each time it generates a bad data word on the data bus 5 detects the cache 22 extinguished. This forces the microprocessor as with a jump command 1 , the contents of the cache 22 to re-read and repeat the preprocessing steps already performed on the deleted data words. The resulting delay of the microprocessor 1 uses the data controller 7 to correct the erroneously read data word. The delay time corresponds to as many clock periods as the buffer memory 22 Has storage spaces. The number of memory locations is therefore expediently chosen so that the delay for correcting the erroneous data value is sufficient.
Um
zu verhindern, dass sich der Fehler wiederholt und der Puffer erneut
gelöscht
wird, wenn der Mikroprozessor 1 erneut auf die zuvor bereits
fehlerhaft gelesene Speicherzelle zugreift, kann vorgesehen sein,
dass der Datencontroller 7, wenn er den fehlerhaften Datenwert
korrigiert hat, für
einen Taktzyklus die Kontrolle über
den Bus 5 erhält,
um den korrigierten Datenwert zurück in den Speicher 3 zu schreiben,
so dass, sofern der Fehler nicht durch eine dauerhafte Störung der
betreffenden Speicherzelle bedingt ist, der nächste Lesevorgang durch den Mikroprozessor 1 fehlerfrei
abläuft.To prevent the error from being repeated and the buffer cleared again when the microprocessor 1 accesses again the previously erroneously read memory cell, it can be provided that the data controller 7 if it has corrected the erroneous data value, control over the bus for one clock cycle 5 receives the corrected data back to memory 3 to write, so that, unless the error is caused by a permanent failure of the memory cell concerned, the next read by the microprocessor 1 runs without errors.
Alternativ
kann vorgesehen werden, dass nach einer festen Zahl von Taktperioden
nach Löschen
des Pufferspeichers 22, wenn der Mikroprozessor 1 wieder
die Speicherzelle lesen muss, die den Fehler verursacht hat, der
Datencontroller 7 den Lesezugriff des Mikroprozessors 1 abfängt und
diesem, wie durch einen gestrichelten Multiplexer 23 in 4 angedeutet,
den korrigierten Inhalt der adressierten Speicherzelle liefert.
Der Mikroprozessor 1 erhält somit korrekte Daten unabhängig davon,
ob die betreffende Speicherzelle dauerhaft defekt ist oder ob der
Datencontroller 7 zwischenzeitlich Gelegenheit gehabt hat,
die Speicherzelle mit dem korrigierten Wert zu überschreiben.Alternatively it can be provided that after a fixed number of clock periods after clearing the buffer memory 22 if the microprocessor 1 again must read the memory cell that caused the error, the data controller 7 the read access of the microprocessor 1 intercepts and this, as by a dashed multiplexer 23 in 4 indicated, the corrected content of the addressed memory cell supplies. The microprocessor 1 thus receives correct data regardless of whether the memory cell concerned is permanently defective or whether the data controller 7 meanwhile has had occasion to overwrite the memory cell with the corrected value.
Bei
einer anderen Ausgestaltung, die ebenfalls mit Bezug auf das Blockschaltbild
der 4 erläutert
wird, ist in dem als FIFO organisierten Pufferspei cher 22 zu
jedem Speicherplatz ein Zusatzbit vorgesehen, das durch den Datencontroller
beschreibbar ist, um anzugeben, ob das in dem Speicherplatz gespeicherte
Datenwort fehlerhaft ist oder nicht. Während der Controller 7 die
Korrektur eines als fehlerhaft erkannten und gekennzeichneten Datenworts
durchführt,
können
die oben beschriebenen Vorverarbeitungsschritte an ihm durchgeführt werden.
Wenn sich im Laufe der Korrektur herausstellt, dass der Fehler nicht
in dem Datenwort selbst, sondern in der zugehörigen redundanten Information
lag, löscht
der Controller 7 lediglich im Puffer 22 die Kennzeichnung
des betreffenden Datenworts als fehlerhaft, und es wird vom Prozessor 1 genauso
verarbeitet, wie wenn es von Anfang an als korrekt erkannt worden
wäre. Lediglich
wenn sich bestätigt,
dass das Datenwort selbst fehlerhaft ist, wird das korrigierte Datenwort
in den Speicher 3 zurückgeschrieben,
und der Pufferspeicher wird ab dem fehlerhaften Datenwort gelöscht und
neu gelesen.In another embodiment, which also with reference to the block diagram of 4 is explained in the buffer memory organized as a FIFO 22 an additional bit is provided for each memory location, which is writable by the data controller to indicate whether the data word stored in the memory location is faulty or not. While the controller 7 carries out the correction of a data word recognized and identified as defective, the preprocessing steps described above can be carried out on it. If it turns out in the course of the correction that the error was not in the data word itself, but in the associated redundant information, the controller deletes 7 only in the buffer 22 the marking of the relevant data word as error adhere, and it gets from the processor 1 processed as if it had been recognized as correct from the beginning. Only if it is confirmed that the data word itself is faulty, the corrected data word is in the memory 3 is written back, and the buffer is deleted from the erroneous data word and rewritten.
5 zeigt
die Anwendung der Erfindung auf ein Datenverarbeitungssystem mit
zwei Mikroprozessoren 1a, 1b. Den Mikroprozessoren
sind jeweils eigene Busse 5a, 5b und Speicher 2a, 2b, 3a, 3b zugeordnet,
so dass sie unter normalen Umständen
unabhängig
voneinander arbeiten können.
Die Datencontroller 7a, 7b sind gegenüber den
Controllern 7 der oben betrachteten Ausführungsbeispiele
vereinfacht, denn im Gegensatz zu Letzteren sind sie lediglich in
der Lage, die Fehlerhaftigkeit von aus dem Speicher 3a bzw. 3b gelesenen
Daten zu erkennen, nicht aber, diese anhand der zugehörigen redundanten
Information zu korrigieren. Wie bei der Ausgestaltung der 3 ist
jedem Datencontroller 7a, 7b jeweils ein Und-Gatter 20a, 20b zugeordnet,
das es dem Datencontroller 7a, 7b ermöglicht,
den ihm zugeordneten Mikroprozessor 1a bzw. 1b von
dem Taktsignal des Taktgenerators 18 abzuschneiden, wenn
ein aus dem Speicher 3 gelesenes Datenwort fehlerhaft ist,
und ihn so an dessen Verarbeitung zu hindern. Die Datencontroller 7a, 7b sind über Interrupt-Leitungen 25a, 25b in
der Lage, beim jeweils anderen Mikroprozessor 1b bzw. 1a einen
Interrupt auszulösen,
wenn sie einen fehlerhaften Datenwert auf dem Bus 5a bzw. 5b erfassen.
Außerdem
ist jeder Datencontroller 7a, 7b auch an den Datenbus 5b, 5a des
jeweils anderen Mikroprozessors 1b, 1a angeschlossen. 5 shows the application of the invention to a data processing system with two microprocessors 1a . 1b , The microprocessors each have their own buses 5a . 5b and memory 2a . 2 B . 3a . 3b so they can work independently under normal circumstances. The data controller 7a . 7b are opposite the controllers 7 of the embodiments considered above, because, unlike the latter, they are only able to recover the defectiveness from memory 3a respectively. 3b to recognize read data, but not to correct them on the basis of the associated redundant information. As in the embodiment of 3 is every data controller 7a . 7b each an And gate 20a . 20b assigned to the data controller 7a . 7b allows its assigned microprocessor 1a respectively. 1b from the clock signal of the clock generator 18 cut off when one is out of memory 3 read data word is faulty, thus preventing it from being processed. The data controller 7a . 7b are via interrupt lines 25a . 25b capable of working with each other's microprocessor 1b respectively. 1a trigger an interrupt if there is a bad data value on the bus 5a respectively. 5b to capture. Besides, every data controller is 7a . 7b also to the data bus 5b . 5a the other microprocessor 1b . 1a connected.
Wenn
zum Beispiel der Controller 7a aufgrund eines Fehlers auf
dem Datenbus 5a einen Interrupt des Prozessors 1b auslöst, fragt
dieser über den
Bus 5b vom Controller 7a das fehlerhafte Datenwort
und die zugehörige
redundante Information ab, führt
die Korrektur aus, liefert den korrigierten Datenwert an den Controller 7a und
nimmt dann seinen Normalbetrieb wieder auf. Der Controller 7a ist
nun in der Lage, wie bei den zuvor betrachteten Ausführungsbeispielen
den korrigierten Datenwert an die betreffende Adresse des Speichers 3a zurückzuschreiben
und/oder ihn direkt dem – während der Ausführung der
Korrektur blockierten – Mikroprozessor 1a zur
Verfügung
zu stellen. Eine eigene Logik zum Durchführen der Korrektur benötigen die
Controller 7a, 7b nicht.If, for example, the controller 7a due to an error on the data bus 5a an interrupt of the processor 1b he asks about the bus 5b from the controller 7a the erroneous data word and the associated redundant information executes the correction, supplying the corrected data value to the controller 7a and then resumes normal operation. The controller 7a is now able, as in the previously considered embodiments, the corrected data value to the relevant address of the memory 3a to write back and / or directly to the microprocessor - blocked during execution of the correction 1a to provide. The controllers need their own logic to carry out the correction 7a . 7b Not.
Es
ist leicht nachvollziehbar, dass auch mehr als zwei Mikroprozessorsysteme,
zum Beispiel in einer Ringkonfiguration, zusammenarbeiten können, um
sich jeweils gegenseitig fehlerhafte Daten zu korrigieren.It
is easy to understand that more than two microprocessor systems,
For example, in a ring configuration, can work together to
to correct mutually incorrect data.
6 zeigt
ein weiteres, von der Ausgestaltung der 3 abgeleitetes
Datenverarbeitungssystem, das sich vom Ausführungsbeispiel der 3 im Wesentlichen
durch die Struktur des Speichers 3 unterscheidet. Der Speicher 3 ist
hier als eine Matrixanordnung von Speicherzellen 27, 28 organisiert,
wobei jede Zeile zum Beispiel vier Speicherzellen 27 für Datenwörter und
eine Speicherzelle 28 für
anhand der Gesamtheit der Datenwörter
der Zeile berechnete redundante Information enthält. Wenn n die Breite des Adressbusses 29 zwischen
Mikroprozessor 1 und Speicher 3 ist, dann sind
n-2 dieser Bits einem Decoder 30 zugeführt, der je nach Wert dieser
Bits eine von 2n –2 Zeilen
des Speichers 3 selektiert. Alle Zellen 27, 28 einer
selektierten Zeile geben ihren Inhalt gleichzeitig aus, und zwar
einerseits an einen Multiplexer 31, der, gesteuert durch
die restlichen zwei Adressbits, eine der Zellen 27 selektiert
und ihren Inhalt auf dem Datenbus 5 ausgibt, und andererseits
an den Datencontroller 7, der auf diese Weise die Fehlerfreiheit
des Inhaltes nicht nur für
die jeweils unmittelbar adressierte Speicherzelle, sondern für alle anderen
Speicherzellen 27 der gleichen Zeile überprüft. 6 shows another, from the embodiment of 3 derived data processing system, which differs from the embodiment of the 3 essentially by the structure of the memory 3 different. The memory 3 is here as a matrix arrangement of memory cells 27 . 28 organized, each row, for example, four memory cells 27 for data words and a memory cell 28 for redundant information calculated from the entirety of the data words of the line. If n is the width of the address bus 29 between microprocessor 1 and memory 3 is, then n-2 of these bits are a decoder 30 supplied, depending on the value of these bits one of 2 n -2 lines of memory 3 selected. All cells 27 . 28 A selected line outputs its contents simultaneously, on the one hand to a multiplexer 31 , which, controlled by the remaining two address bits, one of the cells 27 selected and their content on the data bus 5 and on the other hand to the data controller 7 , which in this way the accuracy of the content not only for each directly addressed memory cell, but for all other memory cells 27 checked the same line.
Das
Verhalten des Datencontrollers 7 gegenüber dem Mikroprozessor 1 im
Falle eines Fehlers ist im einfachsten Falle das gleiche wie bei
den zuvor be schriebenen Ausführungsbeispielen.
In einer fortgeschrittenen Ausgestaltung kann vorgesehen werden,
dass der Datencontroller 7, sobald er feststellt, dass
ein in den von ihm empfangenen Datenwörtern enthaltener Fehler nicht
in dem tatsächlich
vom Mikroprozessor 1 angeforderten Datenwort liegt, die Blockade
des Mikroprozessors 1 aufhebt und die Korrektur des Datenworts
zu Ende führt,
während
der Mikroprozessor 1 normal weiterarbeitet.The behavior of the data controller 7 opposite the microprocessor 1 in the case of a fault is in the simplest case, the same as in the previously described embodiments be. In an advanced embodiment, it may be provided that the data controller 7 as soon as he determines that an error contained in the data words received by him is not actually in the microprocessor 1 requested data word is the blockade of the microprocessor 1 repeals and the correction of the data word completes while the microprocessor 1 continues to work normally.
In 6 ist
zwar in Anlehnung an die Ausgestaltung der 3 nur der
Datencontroller 7 gezeigt, der im Fehlerfall das Taktsignal
des Mikroprozessors 1 unterbricht, doch versteht sich,
dass alle anderen oben beschriebenen Typen von Datencontroller 7 genauso
anwendbar sind. Insbesondere ist das Konzept der 6 vorteilhaft
kombinierbar mit der zweiten mit Bezug auf 4 beschriebenen
Ausgestaltung, da die Wahrscheinlichkeit, dass eine Zeile von Speicherzellen
sich als fehlerhaft erweist, aber der Fehler nicht in der tatsächlich vom
Mikroprozessor angeforderten Speicherzelle liegt, um so größer ist,
je größer die
Zahl von gleichzeitig von dem Controller 7 überprüften Speicherzellen
ist.In 6 Although is based on the design of the 3 only the data controller 7 shown in the event of an error, the clock signal of the microprocessor 1 interrupts, but it is understood that all other types of data controllers described above 7 are equally applicable. In particular, the concept is the 6 advantageously combined with the second with respect to 4 described embodiment, since the probability that a row of memory cells proves to be faulty, but the error is not in the memory cell actually requested by the microprocessor, the greater the number of simultaneously from the controller 7 checked memory cells is.