-
Die
vorliegende Erfindung betrifft eine Speicheranordnung mit einem
beschreibbaren Datenspeicher und Mitteln zum Erkennen und Korrigieren eines
Fehlers in einem aus dem Datenspeicher gelesenen Datenwort sowie
ein Betriebsverfahren für eine
solche Speicheranordnung.
-
In
einem beschreibbaren Datenspeicher können Funktionsstörungen auftreten,
die sich darin äußern, dass
ein oder mehrere Bits eines gespeicherten Datenworts spontan ihren
Wert ändern. Wenn
ein solcher Datenspeicher in einer sicherheitsrelevanten Anwendung
eingesetzt wird, z.B. in einem Motorsteuergerät eines Kraftfahrzeuges oder
dgl., ist es zwingend erforderlich, derartige Störungen zu erkennen und geeignete
Gegenmaßnahmen
zu treffen, um gefährliche
Fehlfunktionen zu vermeiden. Im einfachsten Fall können die
Gegenmaßnahmen
darin bestehen, bei Erkennung eines Fehlers eine Anwendung, die
auf den Datenspeicher zugreift, in einer vorbe stimmten Weise zu
terminieren, so dass auf einen fehlerhaften Datenwert nicht mehr
zugegriffen wird und Fehlsteuerungen aufgrund des Fehlers ausgeschlossen
sind. Die Anwendung kann dann solange nicht betrieben werden, wie
nicht der Fehler in dem Datenspeicher behoben ist.
-
Um
eine solche Betriebsunterbrechung zu vermeiden, ist in Betracht
gezogen worden, Datenwörter
in einem Speicher zusammen mit redundanter Information zu speichern,
anhand derer nicht nur ein Fehler eines Datenworts erkannt werden
kann, sondern dieser Fehler unter Umständen auch korrigiert werden
kann. Es ist eine Vielzahl von Codierverfahren bekannt, die es erlauben,
Fehler in einem Datenwort zu erkennen und zu korrigieren, wobei
die Reed-Solomon- oder
Hamming-Codes zu den bekanntesten gehören. Fehlerkorrigierende Codes
können
daher im Rahmen der vorliegenden Beschreibung als bekannt vorausgesetzt
werden und werden nicht im Detail erläutert. Wenn eine Anwendung
auf eine Zelle des Speichers zugreift und anhand der redundanten
Information festgestellt wird, dass das in dieser Zelle gespeicherte
Datenwort fehlerhaft ist, kann der Anwendung ein korrigiertes Datenwort
zur Verfügung
gestellt werden, und die Anwendung kann ohne die Gefahr einer Fehlsteuerung
weiterbetrieben werden.
-
Die
Zahl der Bitfehler, die in einem Datenwort oder in einem Block von
gemeinsam unter Verwendung eines Fehlerkorrekturcodes codierten
Datenwörtern
korrigiert werden kann, ist abhängig
von der Bitzahl der zu diesem Datenwort bzw. Block erzeugten redundanten
Information. Dies bedeutet z.B., dass, wenn die Bitzahl der redundanten
Information ausreichend ist, um einen einzelnen Bitfehler in einem
Datenwort oder Block zu korrigieren, die Funktionsfähigkeit
der Anwendung nur so lange aufrecht erhalten werden kann, wie nicht
mehr als ein Bitfehler in dem betreffenden Datenwort oder Block
auftritt. Sobald ein zweiter Bitfehler auftritt, ist keine Korrektur
mehr möglich,
und die Anwendung muss wie oben bereits beschrieben terminiert werden.
-
Speicherfehler
neigen jedoch dazu, gehäuft aufzutreten.
D.h., die Wahrscheinlichkeit des Auftretens eines Fehlers in einem
Speicherbit ist nicht überall
die gleiche, sondern sie ist besonders hoch in der Umgebung eines
bereits vorhandenen Fehlers. Um eine Weiterbenutzbarkeit des Speichers
sicherzustellen, auch wenn eine große Zahl von Bitfehlern eng
zueinander benachbart auftritt, wird eine große Menge an redundanter Information
benötigt,
was den erforderlichen Speicherplatz und folglich die Kosten der
Speicheranordnung erhöht.
-
Vorteile der
Erfindung
-
Durch
die vorliegende Erfindung werden ein Verfahren zum Betreiben eines
beschreibbaren Datenspeichers bzw. eine Speicheranordnung mit einem
solchen Datenspeicher geschaffen, die es erlauben, ein hohes Maß an Verfügbarkeit
des Datenspeichers zu ge währleisten
und dabei den für
die Speicherung redundanter Information benötigten Speicherplatz gering
zu halten.
-
Der
Vorteil wird dadurch erreicht, dass zusammen mit einem Datenwort
die diesem Datenwort zugeordnete redundante Information aus dem
Datenspeicher gelesen wird, anhand der redundanten Information überprüft wird,
ob das Datenwort fehlerhaft ist, und, wenn es fehlerhaft ist, das
Datenwort nicht nur korrigiert wird, sondern außerdem an eine neue Adresse
in einem freien Bereich des Datenspeichers geschrieben wird. Da
sich somit an der neuen Adresse wieder eine korrekte Version des
Datenworts befindet, können
evtl. an dieser Adresse auftretende zukünftige Fehler in der maximalen
anhand der redundanten Information möglichen Zahl korrigiert werden. Die
Zuverlässigkeit
des Datenspeichers wird daher durch das Auftreten einzelner Bitfehler
so lange nicht beeinträchtigt,
wie freier Speicherbereich vorhanden ist, in die die Inhalte defekter
Speicherzellen verlagert werden können. Da die neue Adresse in
den meisten Fällen
von der ursprünglichen
Adresse des als fehlerhaft erkannten Datenworts weit entfernt sein
wird, ist die Wahrscheinlichkeit des Auftretens weiterer Bitfehler
an der neuen Adresse geringer als an der ursprünglichen, was die Sicherheit
weiter verbessert.
-
Zweckmäßigerweise
wird die Lesereihenfolge der Datenwörter in dem Datenspeicher abgeändert, um
zum Lesen des Datenworts auf die neue Adresse zuzugrei fen. Dies
ist insbesondere notwendig, wenn das Datenwort eine Programmanweisung darstellt,
die in einem vorgegebenen Zusammenhang mit anderen Anweisungen ausgeführt werden muss.
-
Um
die Lesereihenfolge abzuändern,
kann zusammen mit dem korrigierten Datenwort wenigstens ein ihm
in der Lesereihenfolge vorangehendes Datenwort in den freien Bereich
des Datenspeichers geschrieben werden, um so an dem ursprünglichen Speicherplatz
des letzteren einen Verweis, z.B. einen Sprungbefehl, auf dessen
neuen Speicherplatz unterbringen zu können.
-
Nach
dem korrigierten Datenwort kann in den freien Bereich ein Verweis
auf einen Speicherplatz geschrieben werden, der dem ursprünglichen Speicherplatz
des korrigierten Datenworts nachfolgt.
-
Alternativ
besteht die Möglichkeit,
den freien Bereich, in den das korrigierte Datenwort geschrieben
wird, in einem auf die Adresse des als fehlerhaft erkannten Datenworts
folgenden Adressbereich zu schaffen, indem die Inhalte von Speicherzellen,
deren Adressen auf die des als fehlerhaft erkannten Datenworts folgen,
verschoben werden.
-
Anstatt
auf das als fehlerhaft erkannte Datenwort folgende Speicherzellen
nach hinten zu verschieben, um den freien Bereich zu schaffen, kann dieser
natürlich
auch geschaffen werden, indem die Inhalte von Speicherzellen, deren
Adressen der des als feh lerhaft erkannten Datenworts vorangehen, nach
vorn verschoben werden, wobei in diesem Fall in den freien Bereich
im Anschluss an das korrigierte Datenwort ein Verweis auf einen
dem ursprünglichen Speicherplatz
des korrigierten Datenworts nachfolgenden Speicherplatz geschrieben
wird.
-
In
beiden Fällen
ist es zweckmäßig, wenn
die Verschiebung von weit von der Adresse des als fehlerhaft erkannten
Datenworts entfernten Adressen zu ihr nah benachbarten Adressen
fortschreitend erfolgt, damit nicht Datenwörter außerhalb des Speichers an einer
Stelle zwischengespeichert werden müssen, an der ein Datenverlust
z.B. durch Ausschalten des einen Datenverarbeitungssystems, das die
erfindungsgemäße Speicheranordnung
verwendet, möglich
ist.
-
Zu
dem gleichen Zweck umfasst die Verschiebung vorzugsweise das Kopieren
eines Datenworts von einer ursprünglichen
Adresse an eine neue Adresse, gefolgt von dem Überschreiben der ursprünglichen
Adresse mit einem anderen Datenwort nach dem Kopieren. So ist gewährleistet,
dass zu jedem Zeitpunkt jedes Datenwort wenigstens einmal in dem
Speicher vorhanden ist.
-
Sofern
der Satz von Datenwörtern
einen Verweis auf ein Datenwort enthält, das in den freien Bereich
verlagert wurde, im Falle von Programmanweisungen also z.B. einen
Sprungbefehl zu diesem Datenwort, so sollte dieser Verweis ermittelt
und an die neue Adresse des Datenworts angepasst werden.
-
Wenn
eine Verschiebung von Datenwörtern vor
oder nach dem als fehlerhaft erkannten Datenwort stattfindet, sollten
ferner in den nicht verschobenen Datenwörtern Verweise auf verschobene
Datenwörter
und in den verschobenen Datenwörtern
relative Verweise auf nicht verschobene Datenwörter an die Verschiebung angepasst
werden, um eine weiterhin korrekte Ausführung der Programmanweisungen zu
gewährleisten.
-
Aufgrund
der erhöhten
Wahrscheinlichkeit des Auftretens von Fehlern in enger Nachbarschaft zueinander
ist es immer zweckmäßig, zu
prüfen,
ob das als fehlerhaft erkannte Datenwort Teil eines Blocks mit mehreren
fehlerhaften Datenwörtern
ist und gegebenenfalls den gesamten Block zu korrigieren und in
den freien Bereich zu schreiben.
-
Weitere
Merkmale und Vorteile der Erfindung ergeben sich aus der nachfolgenden
Beschreibung von Ausführungsbeispielen
unter Bezugnahme auf die beigefügten
Figuren.
-
Figuren
-
1 zeigt
ein Blockdiagramm eines Datenverarbeitungssystems gemäß einer
ersten Ausgestaltung der Erfindung;
-
2 veranschaulicht
die Belegung eines Programmspeichers des Datenverarbeitungssystems
aus 1, in dem ein Fehler aufgetreten ist;
-
3 veranschaulicht
die Belegung des Programmspeichers nach Korrektur des Fehlers gemäß einer
ersten Ausgestaltung des Verfahrens;
-
4 veranschaulicht
die Speicherbelegung während
der Korrektur gemäß einer
zweiten Ausgestaltung des Verfahrens;
-
5 veranschaulicht
die Belegung nach erfolgter Korrektur gemäß der zweiten Ausgestaltung; und
-
6 zeigt
ein Blockdiagramm einer zweiten Ausgestaltung des erfindungsgemäßen Datenverarbeitungssystems.
-
Als
Beispiel für
ein erfindungsgemäßes Datenverarbeitungssystem
ist in 1 ein Kfz-Steuergerät als Blockschaltbild dargestellt.
Es umfasst einen Prozessor 101, einen Flash-Speicher 102,
in dem Anweisungen eines vom Prozessor 101 auszuführenden
Anwendungsprogramms gespeichert sind, eine dem Flash-Speicher 102 zugeordnete
Speicherüberwachungsschaltung 103,
einen Schreiblesespeicher 104 sowie diverse Sensoren 105 und
nicht dargestellte Aktoren zum Erfassen bzw. Beeinflussen von Betriebsparametern
eines Kraftfahrzeugmotors. Die Komponenten 101 bis 105 kommunizieren über einen gemeinsamen
Daten- und Adressbus 106. Die Breite des Datenbusses kann
z.B. 16 Bit betragen. Die Bitzahl der Speicherzellen des Flash-Speichers ist
größer, sie
beträgt
hier z.B. 16 + 3 Bit, wobei ein 16-Bit-Datenwort jeweils eine vom
Prozessor 1 zu verarbeitende Programmanweisung enthalten
und die übrigen
3 Bit z.B. durch Reed-Solomon-Codierung des Datenworts erhaltene
redundante Information enthalten, die es der Speicherüberwachungsschaltung 103 ermöglichen,
das Vorhandensein eines Bitfehlers in dem Datenwort zu erkennen.
-
Die
Speicherüberwachungsschaltung 103 ist mit
einem Interrupt-Eingang 107 des Prozessors 101 verbunden,
um einen Interrupt des Prozessors 101 auszulösen, wenn
ein Fehler in einem Datenwort des Flash-Speichers 102 erkannt wird.
Durch diesen hoch priorisierten Interrupt wird das Anwendungsprogramm
unterbrochen, und der Prozessor 101 liest die redundanten
Bits zu dem als fehlerhaft erkannten Datenwort und führt eine
Decodierung aus, um das vom Speicher 102 fehlerhaft ausgegebene
Datenwort zu korrigieren, und trägt
die Adresse, an der das fehlerhafte Datenwort gelesen wurde, in
eine Tabelle ein. Anschließend
wird das Anwendungsprogramm anhand des korrigierten Datenworts fortgesetzt.
-
Programmanweisungen,
die im Falle eines durch die Überwachungsschaltung 103 ausgelösten Interrupts
vom Prozessor 101 auszuführen sind, können wie
das Anwendungsprogramm in dem Flash-Speicher 102 gespeichert
sein. Da in diesem Fall der von der Über wachungsschaltung 103 ausgelöste Interrupt
nicht mehr ausführbar
ist, falls der Fehler oder ein weiterer Fehler sich in den Programmanweisungen
dieses Interrupts befindet, kann alternativ für die Programmanweisungen des
Interrupts ein weiterer Festwertspeicher 108 vorgesehen
sein, der im Gegensatz zum Flash-Speicher 102 nicht durch den
Prozessor 101 überschreibbar
sein muss und bei dem die Wahrscheinlichkeit, dass ein gespeichertes Bit
fehlerhaft ist, geringer ist als bei dem Flash-Speicher 102.
-
2 zeigt
schematisch die Nutzung des Flash-Speichers 102. In der Fig.
dargestellt sind 16 Speicherzellen, wobei sich versteht,
dass die Anzahl der Speicherzellen und der darin gespeicherten Programmanweisungen
in der Praxis um ein Vielfaches größer ist. Zur Erläuterung
der Erfindung wird nun angenommen, dass von den gezeigten 16 Speicherzellen
des Flash-Speichers 102 die Zellen 0 bis 10 mit Programmanweisungen
Instr1 bis Instr11 einer vom Prozessor 101 auszuführenden
Anwendung belegt sind, und dass die restlichen Speicherzellen 11 bis 15 unbelegt
sind. In den Zellen 6, 7 sei jeweils ein Bitfehler
aufgetreten, symbolisiert durch kursive Beschriftung Instr7 bzw.
Instr8.
-
Einer
ersten Ausgestaltung des erfindungsgemäßen Verfahrens zufolge liest
der Prozessor 101 die Programmanweisungen im Flash-Speicher 102, soweit
sie keine Sprungbefehle enthalten, in der Reihenfolge ansteigender
Adressen. Wenn die Überwachungsschal tung 103 keinen
Fehler in den gelesenen Programmanweisungen erfasst, werden diese so
wie gelesen vom Prozessor 101 ausgeführt. Wenn die Überwachungsschaltung 103 eine
Programmanweisung als fehlerhaft erkennt, im in 2 gezeigten Fall
also erstmalig mit der Anweisung Instr7, gibt die Überwachungsschaltung 103 die
oben erwähnte
Interrupt-Anforderung
von hoher Priorität
an den Prozessor 101 aus, die diesen veranlasst, die Korrektur der
vom Flash-Speicher 102 falsch ausgegebenen Anweisung selbst
anhand der zugehörigen
redundanten Information auszuführen.
-
Während der
Ausführung
des hoch priorisierten Interrupts wird ein zweiter Interrupt ausgelöst, dessen
Priorität
niedriger als die des ersten Interrupts und auch als die bestimmter
zeitkritischer Teile des Anwendungsprogramms ist und der den Prozessor 1 veranlasst,
eine Korrektur des Inhalts des Flash-Speichers 2 vorzunehmen.
Diese Korrektur muss nicht unverzüglich nach Erfassung des Fehlers im
Flash-Speicher stattfinden, da das System, indem es, wie oben beschrieben,
den Fehler jeweils in Echtzeit korrigiert, weiterhin lauffähig bleibt.
Auf das konkrete Anwendungsbeispiel eines Motorsteuergeräts bezogen
bedeutet dies, dass eine Korrektur am Inhalt des Flash-Speichers 2 nicht
unverzüglich
nach Erkennung des Fehlers vorgenommen werden muss, sondern aufgeschoben
werden kann, bis eine zur Fehlerkorrektur erforderliche Unterbrechung
des Anwendungsprogramms gefahrlos vorgenommen werden kann, z.B.
bei stehendem Fahrzeug, im Nachlauf einer Motorsteuerung oder in
einer Idle Task.
-
Nachdem
der Prozessor 1 die korrigierte Anweisung Instr7 ausgeführt hat,
adressiert er die im vorliegenden Beispiel ebenfalls als fehlerhaft
angenommene Anweisung Instr8. Es wiederholt sich der oben beschriebene
Ablauf: der Fehler wird während einer
kurzfristigen Unterbrechung des Anwendungsprogramms auf dem Prozessor 1 korrigiert,
die korrigierte Anweisung wird ausgeführt, und der zweite Interrupt
wird ausgelöst,
mit dem die fehlerhafte Anweisung später korrigiert werden soll.
-
Wenn
zu einem späteren
Zeitpunkt ein niedrig priorisierter Teil des Anwendungsprogramms
ausgeführt
wird, d.h. wenn das Anwendungsprogramm lang genug unterbrochen werden
kann, um den zweiten Interrupt auszuführen und die in dem Flash-Speicher 102 festgestellten
Fehler zu beheben, liegt durch die bei jedem aufgetretenen Fehler
ausgelösten
hoch priorisierten Interrupts eine Liste von fehlerhaften Speicherzellen
vor. Diese umfasst im hier betrachteten Beispielfall die Speicherzellen 6 und 7 mit den
Anweisungen Instr7 und Instr8.
-
Einer
ersten Ausgestaltung des erfindungsgemäßen Verfahrens zufolge schreibt
der Prozessor 1 in Ausführung
des zweiten Interrupts an die erste freie Speicherzelle des Speichers 102,
im vorliegenden Fall also die Speicherzelle 11, die Anweisung Instr6,
die den Anweisungen der fehlerhaften Spei cherzellen 6, 7 unmittelbar
vorangeht, die korrigierten Anweisungen Instr7 und Instr8 an die
nachfolgenden Speicherzellen 12, 13 und einen
Sprungbefehl zu der auf die fehlerhaften Zellen folgende Zelle 8 in
die Speicherzelle 14. Die Anweisung Instr6 in Zelle 5 wird
mit einem Sprungbefehl zur Zelle 11 überschrieben.
-
Auf
die defekten Speicherzellen 6, 7 braucht nun nicht
mehr zugegriffen zu werden. Da der Inhalt dieser Speicherzellen
vor dem Übertragen
in die Zellen 12, 13 korrigiert worden ist, kann
auch ein in diesen neuen Zellen auftretender Fehler in der gleichen Weise
wie oben beschrieben korrigiert werden, sofern genügend freier
Speicherplatz hierfür
zur Verfügung
steht.
-
Eine
zweite Ausgestaltung des Verfahrens wird anhand der 4 und 5 erläutert. Als
Ausgangssituation wird angenommen, dass wie in 3 gezeigt,
die Speicherzellen 6, 7 defekt sind. Um die defekten
Speicherzellen außer
Betrieb zu nehmen, werden n = 3 Speicherzellen benötigt. Die
Zahl n ist immer um 1 größer als
die Zahl der aufeinanderfolgenden defekten Zellen, weil eine zusätzliche
Zelle benötigt
wird, um einen Sprungbefehl darin unterzubringen. Zunächst kopiert
der Prozessor 101 die n letzten Anweisungen des Anwendungsprogramms einschließlich der
zugehörigen
redundanten Information aus den Speicherzellen 8 bis 10 in
neue, bisher unbelegte Speicherzellen 11 bis 13,
und die zuvor von diesen Anweisungen belegten Speicherzellen werden zum
Neubeschreiben freigegeben. Die freigegebenen Speicherzellen werden
jeweils mit den Inhalten der n vorhergehenden Speicherzellen überschrieben,
die ihrerseits freigegeben werden. Dies wird so oft wiederholt,
bis auch die defekten Speicherzellen 7, 8 und
die unmittelbar vorhergehende Speicherzelle 6 gelesen und
in die anschließenden Speicherzellen,
hier also die Zellen 8 bis 10, übertragen
worden sind. Eine Korrektur der aus den Zellen 6 und 7 gelesenen
Anweisungen erfolgt, wie oben für die
Anwendung beschrieben, unter der Kontrolle des hoch priorisierten
Interrupts automatisch, so dass die Zellen 9 und 10 die
Anweisungen Instr7, Instr8 und die zugehörige redundante Information
in korrigierter Form enthalten. Die Speicherzelle 5 wird
nun mit einem Sprungbefehl an die neue Adresse der Anweisung Instr6,
die Zelle 8, überschrieben.
-
Das
anhand der 4 und 5 beschriebene
Verfahren geht davon aus, dass ein freier Speicherbereich im Anschluss
an die vom Anwendungsprogramm belegten Speicherzellen vorhanden ist,
so dass die Gesamtheit der Anweisungen, die auf die fehlerhaften
Speicherzellen folgen, zu höheren Adressen
hin verschoben werden kann. Selbstverständlich besteht auch die analoge
Möglichkeit,
freie Speicherzellen vor den von den Anweisungen des Anwendungsprogramms
belegten Zellen vorzusehen und im Falle eines Fehlers Anweisungen,
deren Adresse niedriger ist als die der fehlerhaften Zelle oder
Zellen, zu niedrigeren Adressen hin zu verschieben.
-
In
der Praxis weist ein Anwendungsprogramm Sprungbefehle in großer Zahl
auf. Um zu gewährleisten,
dass die Sprungbefehle korrekt ausführbar bleiben, ist es erforderlich,
diese unter den Anweisungen des Anwendungsprogramms zu identifizieren
und ggf. zu korrigieren. Im Falle der mit Bezug auf 3 erläuterten
Ausgestaltung des Verfahrens ist eine Korrektur von Sprungbefehlen
in den intakten Speicherzellen nur erforderlich, wenn diese die
als defekt erkannten Speicherzellen 6, 7 als Ziel
haben. Sprungbefehle, für
die dies gilt, werden durch entsprechende Sprungbefehle zu den Zellen 12, 13 ersetzt.
-
Im
Falle der mit Bezug auf die 4, 5 erläuterten
Ausgestaltung müssen
zusätzlich
zu den direkt auf die fehlerhaften Zellen 6, 7 gerichteten Sprungbefehlen
noch weitere korrigiert werden. Bei absoluten Sprungbefehlen, d.h.
Sprungbefehlen, die als Argument einen Programmzählerstand haben, wird überprüft, ob dieser
Programmzählerstand
oberhalb oder unterhalb der ersten fehlerhaften Speicherzelle, hier
also der Zelle 6, liegt. Liegt das Sprungziel unterhalb,
bleibt der Sprungbefehl unverändert,
liegt es oberhalb, wird es um n erhöht. Bei relativen Sprungbefehlen,
d.h. solchen, deren Argument zum aktuellen Programmzählerstand
hinzu zu addieren ist, um das Sprungziel zu erhalten, wird geprüft, ob die
Sprunganweisung und ihr Sprungziel auf der gleichen Seite oder auf
verschiedenen Seiten der fehlerhaften Speicherzellen liegen. In
ersterem Fall ist keine Korrektur erforderlich, in letzterem wird
die Sprungweite jeweils um n heraufgesetzt.
-
Da
das erfindungsgemäße Verfahren
keine Korrektur eines erfassten Fehlers im Flash-Speicher 102 sofort
nach der Erfassung erfordert, sondern die Korrektur bis zu einem
geeigneten Zeitpunkt aufgeschoben werden kann, ist das Verfahren
gut kompatibel mit Echtzeitanwendungen, die innerhalb von vorgegebenen
Zeitgrenzen bestimmte Aufgaben erfüllen müssen. Eine Verzögerung,
die sich aus der Decodierung des Inhalts einer fehlerhaften Speicherzelle
ergibt, kann für
eine solche Anwendung dennoch störend
sein. Um die Wahrscheinlichkeit, dass eine solche Korrektur erforderlich
wird, zu minimieren, kann es zweckmäßig sein, in einer Startphase der
Anwendung, in der noch keine strengen Echtzeitanforderungen zu erfüllen sind,
die im Flash-Speicher 102 gespeicherten Programmanweisungen
sukzessive zu lesen, um dabei evtl. Speicherfehler zu erfassen.
Wenn kein Speicherfehler erfasst wird, kann die Anwendung anschließend normal
in Betrieb gehen; wenn jedoch ein Speicherfehler vorliegt, ist es möglich, diesen
zu korrigieren, bevor die Echtzeit-Anforderungen stringent werden. Bezogen
auf das Ausführungsbeispiel
eines Motorsteuergeräts bedeutet
dies beispielsweise, dass eine Prüfung auf fehlerhafte Speicherzellen
immer dann durchgeführt wird,
wenn ein Benutzer z.B. durch Drehen eines Zündschlüssels seinen Wunsch zum Ausdruck bringt,
den Motor anzulassen, und dass ein tatsächlicher Start des Motors durch
das Motorsteuergerät erst gesteuert
wird, nachdem, wenn nötig,
fehlerhafte Speicherzellen korrigiert worden sind.
-
Zweckmäßig ist
auch eine Durchführung
im Nachlauf des Steuergerätes,
d.h. in einer begrenzten Zeitspanne nach Abschalten des Motors,
in der das Steuergerät
noch aktiv bleibt.
-
Eine
zweite Ausgestaltung eines Datenverarbeitungssystems, das eine gegenüber der
Ausgestaltung der 1 weiter erhöhte Betriebssicherheit bietet,
ist in 6 gezeigt. Zusätzlich
zu den mit Bezug auf 1 beschriebenen Komponenten
umfasst dieses Datenverarbeitungssystem einen zweiten Prozessor 111,
der über
den gemeinsam mit dem Prozessor 101 genutzten Bus 106 oder
auch über
einen zweiten, eigenen Bus in der Lage ist, auf den Flash-Speicher 102 des
Prozessors 101 zuzugreifen. Dem Prozessor 111 ist
ein zweiter Flash-Speicher 112 zugeordnet, der ein Anwendungsprogramm
für den
Prozessor 111 enthält.
Während
bei dieser Ausgestaltung die dem Flash-Speicher 102 zugeordnete Speicherüberwachungsschaltung 103 mit
dem Prozessor 101 nur verbunden ist, um diesen im Fall
einer fehlerhaften Ausgabe des Flash-Speichers 102 zeitweilig
zu unterbrechen, löst
sie beim zweiten Prozessor 111 einen Interrupt aus, der
diesen veranlasst, das fehlerhaft ausgegebene Datenwort zu decodieren,
ein korrigiertes Datenwort an den Prozessor 101 zu übergeben
und die Adresse des fehlerhaften Datenworts in einer Liste zu vermerken
und einen zweiten Interrupt auszulösen, der zu einem geeigneten spä teren Zeitpunkt
die Korrektur des Speichers 102 anhand der Liste in analoger
Weise wie oben mit Bezug auf 3 oder auf 4, 5 beschrieben vornimmt.
In symmetrischer Weise verarbeitet der Prozessor 101 Interrupts,
die eine Speicherüberwachungsschaltung 113 aufgrund
eines Fehlers im Flash-Speicher 112 des zweiten Prozessors 111 auslöst. Fehler,
die in den Anweisungen des ersten Interrupts in einem der beiden
Speicher 102 oder 112 auftreten, können nicht
mehr zu einem Absturz des Systems führen, da sie durch im jeweils
anderen Speicher gespeicherte Interrupt-Anweisungen korrigiert werden.
-
Der
zweite Interrupt kann bei den oben beschriebenen Ausgestaltungen
jeweils von demselben Prozessor 101 oder 111 behandelt
werden, der auch das erste Interrupt behandelt hat. Denkbar ist
aber auch, ihn von einem externen Prozessor behandeln zu lassen,
der mit dem Datenverarbeitungssystem der 1 oder 6 über eine
Netzwerkverbindung, eine Mobilfunkverbindung oder dgl. kommuniziert.
-
Eine
weitere mögliche
Abwandlung ist, die Überwachungsschaltung 103 so
auszulegen, dass sie nicht nur die Erkennung eines Fehlers in einem vom
Speicher 102 ausgegebenen Datenworts, sondern auch dessen
Decodierung und Korrektur ohne Rückgriff
auf den dem Speicher 102 zugeordneten Prozessor 101 ausführt. Die
zeitweilige Unterbrechung des Prozessors 101, die erforderlich
ist, um ihn an der Übernahme
eines falsch auf den Bus 106 ausgegebenen Datenworts zu
hindern, kann hier erfolgen, indem die Überwachungsschaltung 103 ein dem
Prozessor 101 zugeführtes
Taktsignal solange unterbricht, wie sie braucht, um die fehlerhaft
vom Speicher 102 ausgegebene Anweisung zu korrigieren und
ihrerseits korrekt auf den Bus 106 auszugeben. Ein Scheitern
der Decodierung in Folge einer in dem Speicher 102 fehlerhaft
gespeicherten Interrupt-Anweisung ist hier ebenfalls ausgeschlossen. Diese
Ausgestaltung hat den Vorteil, Fehler nicht nur in einem Instruktionsspeicher
sondern auch in einem Parameterspeicher korrigieren zu können.
-
Die
Erfindung ist auch auf andere Typen von Datenspeichern anwendbar.
So kann als Speicher z.B. eine Festplatte eingesetzt werden, auf
der Nutzdaten blockweise zusammen mit jedem Block zugeordneter redundanter
Information gespeichert werden und in dem Fall, dass anhand der
redundanten Information ein Fehler erkannt wird, der betroffene Block
korrigiert, an einer anderen Stelle der Festplattenoberfläche neu
gespeichert wird und ein Block, der in der Lesereihenfolge einer
Datei, zu der die Blöcke
gehören,
dem fehlerhaften Block vorangeht, mit einem Verweis auf den neuen
Speicherort des korrigierten Blocks versehen wird. Der korrigierte Block
seinerseits kann einen Verweis auf einen in der Lesereihenfolge
nachfolgenden Block erhalten, so dass die Blöcke weiterhin der Reihe nach
gelesen werden können,
auch wenn sie nicht örtlich
zusammenhängend
auf der Plattenoberfläche
aufgezeichnet sind.