[go: up one dir, main page]

DE102005040916A1 - Speicheranordnung und Betriebsverfahren dafür - Google Patents

Speicheranordnung und Betriebsverfahren dafür Download PDF

Info

Publication number
DE102005040916A1
DE102005040916A1 DE102005040916A DE102005040916A DE102005040916A1 DE 102005040916 A1 DE102005040916 A1 DE 102005040916A1 DE 102005040916 A DE102005040916 A DE 102005040916A DE 102005040916 A DE102005040916 A DE 102005040916A DE 102005040916 A1 DE102005040916 A1 DE 102005040916A1
Authority
DE
Germany
Prior art keywords
data
data word
memory
corrected
address
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.)
Withdrawn
Application number
DE102005040916A
Other languages
English (en)
Inventor
Thomas Kottke
Yorck Collani
Markus Ferch
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Robert Bosch GmbH filed Critical Robert Bosch GmbH
Priority to DE102005040916A priority Critical patent/DE102005040916A1/de
Priority to EP06778041A priority patent/EP1924916A2/de
Priority to RU2008111995/09A priority patent/RU2008111995A/ru
Priority to CNA2006800314197A priority patent/CN101253485A/zh
Priority to KR1020087004856A priority patent/KR20080037060A/ko
Priority to JP2008528446A priority patent/JP4917604B2/ja
Priority to US11/989,383 priority patent/US20090327838A1/en
Priority to PCT/EP2006/064768 priority patent/WO2007025816A2/de
Publication of DE102005040916A1 publication Critical patent/DE102005040916A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Eine Speicheranordnung umfasst einen beschreibbaren Datenspeicher (102) sowie Mittel zum Erkennen (103) eines Fehlers in einem aus dem Datenspeicher (102) gelesenen Datenwort, zum Korrigieren (101) des Fehlers und zum Speichern (101) des korrigierten Datenworts an eine neue Adresse in einem freien Bereich des Datenspeichers (102).

Description

  • 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.

Claims (13)

  1. Verfahren zum Betreiben eines beschreibbaren Datenspeichers (102), der einen Satz von in einer Lesereihenfolge zu lesenden Datenwörtern (116) sowie redundante Information enthält, bei dem zusammen mit einem Datenwort (Instr1, ..., Instr11) die diesem Datenwort zugeordnete redundante Information gelesen wird und anhand der redundanten Information überprüft wird, ob das Datenwort fehlerhaft ist und, wenn es fehlerhaft ist, das Datenwort (Instr7, Instr8) korrigiert wird, dadurch gekennzeichnet, dass das korrigierte Datenwort (Instr7, Instr8) an eine neue Adresse (12, 13; 8, 9) in einem freien Bereich des Datenspeichers (102) geschrieben wird.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass ferner die Lesereihenfolge abgeändert wird, um zum Lesen des Datenworts auf die neue Adresse zuzugreifen.
  3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass zusammen mit dem korrigierten Datenwort (Instr7, Instr8) wenigstens ein ihm in der Lesereihenfolge vorangehendes Datenwort (Instr6) in den freien Bereich des Datenspeichers (102) geschrieben wird und an den ursprünglichen Speicherplatz (5) des wenigstens einen vorangehenden Datenworts (Instr6) ein Verweis auf dessen neuen Speicherplatz (11) eingetragen wird.
  4. Verfahren nach Anspruch 2 oder 3, dadurch gekennzeichnet, dass in den freien Bereich nach dem korrigierten Datenwort (Instr8) ein Verweis auf einen dem ursprünglichen Speicherplatz (7) des korrigierten Datenworts (Instr8) nachfolgenden Speicherplatz (8) geschrieben wird.
  5. Verfahren nach Anspruch 3, dadurch gekennzeichnet, dass nach Erkennung eines Datenworts (Instr7, Instr8) als fehlerhaft der freie Bereich in einem auf die Adresse des als fehlerhaft erkannten Datenworts folgenden Adressbereich (8, 9, 10) geschaffen wird, indem die Inhalte von Speicherzellen (811), deren Adressen auf die des als fehlerhaft erkannten Datenworts (Instr7, Instr8) folgen, verschoben werden.
  6. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass nach Erkennung eines Datenworts als fehlerhaft der freie Bereich in einem der Adresse des als fehlerhaft erkannten Datenworts vorangehenden Adressbereich geschaffen wird, indem die Inhalte von Speicherzellen, deren Adressen der des als fehlerhaft erkannten Datenworts vorangehen, verschoben werden, und dass in den freien Bereich im Anschluss an das korrigierte Datenwort ein Verweis auf einen dem ursprünglichen Speicherplatz des kor rigierten Datenworts nachfolgenden Speicherplatz geschrieben wird.
  7. Verfahren nach Anspruch 5 oder 6, dadurch gekennzeichnet, dass die Verschiebung von weit von der Adresse des als fehlerhaft erkannten Datenworts entfernten Adressen zu ihr nah benachbarten Adressen fortschreitend erfolgt.
  8. Verfahren nach Anspruch 5, 6 oder 7, dadurch gekennzeichnet, dass die Verschiebung das Kopieren eines Datenworts von einer ursprünglichen Adresse an eine neue Adresse und das Überschreiben der ursprünglichen Adresse mit einem anderen Datenwort nach dem Kopieren umfasst.
  9. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Datenwörter Programmanweisungen beinhalten, und dass in dem Satz von Datenwörtern Verweise auf jedes in den freien Bereich geschriebene Datenwort angepasst werden.
  10. Verfahren nach Anspruch 9 und einem der Ansprüche 5 bis 8, dadurch gekennzeichnet, dass in den nicht verschobenen Datenwörtern absolute und relative Verweise auf verschobene Datenwörter und in den verschobenen Datenwörtern relative Verweise auf nicht verschobene Datenwörter an die Verschiebung angepasst werden.
  11. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass geprüft wird, ob das als fehlerhaft erkannte Datenwort (Instr7, Instr8) Teil eines Blocks (6, 7) mit mehreren fehlerhaften Datenwörtern ist und der gesamte Block (6, 7) korrigiert und in den freien Bereich geschrieben wird.
  12. Speicheranordnung mit einem beschreibbaren Datenspeicher (102), Mitteln zum Erkennen (103) und zum Korrigieren (101; 103; 111) eines Fehlers in einem aus dem Datenspeicher (102) gelesenen Datenwort, dadurch gekennzeichnet, dass sie Mittel (101; 111) zum Speichern des korrigierten Datenworts an eine neue Adresse in einem freien Bereich des Datenspeichers (102) umfasst.
  13. Datenverarbeitungssystem mit einer Speicheranordnung nach Anspruch 12, dadurch gekennzeichnet, dass es einen ersten und einen zweiten Prozessor (101, 111) umfasst, dass der Datenspeicher (102) von dem ersten Prozessor (101) auszuführende Programmanweisungen enthält und dass der zweite Prozessor (111) die Mittel zum Speichern des korrigierten Datenworts an der neuen Adresse bildet.
DE102005040916A 2005-08-30 2005-08-30 Speicheranordnung und Betriebsverfahren dafür Withdrawn DE102005040916A1 (de)

Priority Applications (8)

Application Number Priority Date Filing Date Title
DE102005040916A DE102005040916A1 (de) 2005-08-30 2005-08-30 Speicheranordnung und Betriebsverfahren dafür
EP06778041A EP1924916A2 (de) 2005-08-30 2006-07-28 Speicheranordnung und betriebsverfahren dafür
RU2008111995/09A RU2008111995A (ru) 2005-08-30 2006-07-28 Запоминающее устройство и способ управления его работой
CNA2006800314197A CN101253485A (zh) 2005-08-30 2006-07-28 存储装置及其运行方法
KR1020087004856A KR20080037060A (ko) 2005-08-30 2006-07-28 메모리 장치와 이 메모리 장치의 작동 방법
JP2008528446A JP4917604B2 (ja) 2005-08-30 2006-07-28 記憶装置構成およびその駆動方法
US11/989,383 US20090327838A1 (en) 2005-08-30 2006-07-28 Memory system and operating method for it
PCT/EP2006/064768 WO2007025816A2 (de) 2005-08-30 2006-07-28 Speicheranordnung und betriebsverfahren dafür

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102005040916A DE102005040916A1 (de) 2005-08-30 2005-08-30 Speicheranordnung und Betriebsverfahren dafür

Publications (1)

Publication Number Publication Date
DE102005040916A1 true DE102005040916A1 (de) 2007-03-08

Family

ID=37708307

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102005040916A Withdrawn DE102005040916A1 (de) 2005-08-30 2005-08-30 Speicheranordnung und Betriebsverfahren dafür

Country Status (8)

Country Link
US (1) US20090327838A1 (de)
EP (1) EP1924916A2 (de)
JP (1) JP4917604B2 (de)
KR (1) KR20080037060A (de)
CN (1) CN101253485A (de)
DE (1) DE102005040916A1 (de)
RU (1) RU2008111995A (de)
WO (1) WO2007025816A2 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2632210A1 (de) * 2007-09-14 2013-08-28 Research In Motion Limited System und Verfahren für diskontinuierliche Empfangssteuerungsstartzeit
JP5813450B2 (ja) * 2011-10-17 2015-11-17 日立オートモティブシステムズ株式会社 電子制御装置
CN103514058B (zh) * 2012-06-29 2016-06-15 华为技术有限公司 一种数据失效的处理方法、设备及系统
JP6102515B2 (ja) * 2013-05-24 2017-03-29 富士通株式会社 情報処理装置、制御回路、制御プログラム、および制御方法
FR3025035B1 (fr) * 2014-08-22 2016-09-09 Jtekt Europe Sas Calculateur pour vehicule, tel qu’un calculateur de direction assistee, pourvu d’un enregistreur d’evenements integre
WO2016143168A1 (en) * 2015-03-10 2016-09-15 Kabushiki Kaisha Toshiba Memory device and memory system
US9772899B2 (en) * 2015-05-04 2017-09-26 Texas Instruments Incorporated Error correction code management of write-once memory codes
US11481273B2 (en) 2020-08-17 2022-10-25 Micron Technology, Inc. Partitioned memory having error detection capability

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69033262T2 (de) * 1989-04-13 2000-02-24 Sandisk Corp., Santa Clara EEPROM-Karte mit Austauch von fehlerhaften Speicherzellen und Zwischenspeicher
JP2830308B2 (ja) * 1990-02-26 1998-12-02 日本電気株式会社 情報処理装置
US5497457A (en) * 1994-10-17 1996-03-05 International Business Machines Corporation Redundant arrays of independent libraries of dismountable media with parity logging
JPH08234928A (ja) * 1995-02-22 1996-09-13 Matsushita Electric Ind Co Ltd 情報記憶制御装置
JP2002109895A (ja) * 1996-02-29 2002-04-12 Hitachi Ltd 半導体記憶装置
JP3565687B2 (ja) * 1997-08-06 2004-09-15 沖電気工業株式会社 半導体記憶装置およびその制御方法
JP3937214B2 (ja) * 1999-09-17 2007-06-27 株式会社ルネサステクノロジ エラー訂正回数を記録する記憶装置
EP1096379B1 (de) * 1999-11-01 2005-12-07 Koninklijke Philips Electronics N.V. Datenschaltung mit einem nichtflüchtigen Speicher und mit einer fehlerkorrigierenden Schaltung
JP4059472B2 (ja) * 2001-08-09 2008-03-12 株式会社ルネサステクノロジ メモリカード及びメモリコントローラ
JP4213053B2 (ja) * 2004-01-29 2009-01-21 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法

Also Published As

Publication number Publication date
JP4917604B2 (ja) 2012-04-18
WO2007025816A2 (de) 2007-03-08
US20090327838A1 (en) 2009-12-31
RU2008111995A (ru) 2009-12-10
EP1924916A2 (de) 2008-05-28
JP2009506445A (ja) 2009-02-12
KR20080037060A (ko) 2008-04-29
WO2007025816A3 (de) 2007-05-24
CN101253485A (zh) 2008-08-27

Similar Documents

Publication Publication Date Title
EP0011685B1 (de) Programmierbare Speicherschutzeinrichtung für Mikroprozessorsysteme und Schaltungsanordnung mit einer derartigen Einrichtung
DE69615277T2 (de) Wiederherstellung von Firmware-Unverträglichkeit auf einer Festplatte
DE19839680B4 (de) Verfahren und Vorrichtung zur Veränderung des Speicherinhalts von Steuergeräten
DE4331703C2 (de) Elektronische Einrichtung
DE102012109614A1 (de) Fehlerbehebung bei Stapel-Korruption in eingebetteten Softwaresystemen
DE2225841A1 (de) Verfahren und anordnung zur systematischen fehlerpruefung eines monolithischen halbleiterspeichers
EP1588380B1 (de) Verfahren zur erkennung und/oder korrektur von speicherzugriffsfehlern und elektronische schaltungsanordnung zur durchführung des verfahrens
DE19931184A1 (de) Verfahren und Vorrichtung zur Veränderung des Speicherinhalts von Steuergeräten
DE102005040916A1 (de) Speicheranordnung und Betriebsverfahren dafür
WO2004090732A2 (de) Programmgesteuerte einheit
EP1611516A2 (de) Programmgesteuerte einheit
EP4266175B1 (de) Verfahren zum rechnergestützten betreiben einer speichereinheit und ausführen von applikationsprogrammen mit speicherüberprüfung auf speicherfehler
DE60128596T2 (de) Interrupt-steuerung für einen mikroprozessor
DE102013202961A1 (de) Verfahren zum Überwachen eines Stackspeichers in einem Betriebssystem eines Steuergeräts eines Kraftfahrzeuges
EP1611515A2 (de) Programmgesteuerte einheit
DE102016203283A1 (de) Verfahren zum Betreiben eines Mikroprozessors
DE102004059392B4 (de) Verfahren zur Neubelegung eines Befehlsspeichers, Subsystem zur Durchführung eines derartigen Verfahrens, sowie Mikrokontroller
DE102004006308B4 (de) Verfahren zum Verändern von Programmcode eines tragbaren Datenträgers mittels Patchdaten
EP0613077B1 (de) Verfahren zur Reset-Erzeugung in Datenverarbeitungsanlagen
DE10128996B4 (de) Verfahren und Vorrichtung zur Überwachung von Speicherzellen eines flüchtigen Datenspeichers
DE10148157B4 (de) Programmgesteuerte Einheit
DE2240432C3 (de) Verfahren und Einrichtung zum Festlegen von Fixpunkten und zur Operationswiederholung ab dem letzten Fixpunkt in Datenverarbeitungsanlagen mit überlappter Arbeitsweise
DE102024206331A1 (de) Verfahren zum dynamischen Definieren von Parametern einer Steuergeräte-Software eines Fahrzeuges
EP1246066A2 (de) Verfahren zum Betrieb eines von einem Prozessor gesteuerten Systems
EP4266176A1 (de) Verfahren zum rechnergestützten betreiben einer speichereinheit und ausführen von applikationsprogrammen mit redundanter datenspeicherung

Legal Events

Date Code Title Description
R012 Request for examination validly filed

Effective date: 20120511

R016 Response to examination communication
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee