-
Die Erfindung betrifft eine Vorrichtung und ein Verfahren zur Erkennung von fehlerhaften Daten in wenigstens einem, wenigstens eine bistabilen Kippstufe (Flipflops) umfassenden Speicherelement, insbesondere einem Register. Sie betrifft weiterhin eine Vorrichtung zur Durchführung eines derartigen Verfahrens sowie eine Integrierte Schaltung mit einer derartigen Vorrichtung.
-
Die Besonderheit eines Registers ist, dass seine Datenausgänge immer(und nicht wie z. B. bei einem RAM nur nach Adressierung) das gespeicherte Datum zeigen und oft nicht nur zur Speicherung verwendet werden, sondern eine Hardware-Funktion bestimmen, beispielsweise die Baud Rate eines Timers, das Protokoll einer Kommunikation etc.
-
Als „Soft Errors“ oder „weiche Fehler“ werden Fehler bezeichnet, die nicht durch physikalische Beschädigung verursacht werden, sondern durch Veränderung des Zustandes einer bistabilen Komponente durch externe Einflüsse. Bistabile Komponenten sind beispielsweise Flipflops bzw. Kippstufen, die zwei verschiedene Zustände annehmen und auch halten können.
-
Soft Errors werden gewöhnlich verursacht durch hochenergetische Teilchen, beispielsweise auch als Teil der kosmischen Strahlung oder radioaktive Einschlüsse im Gehäusematerial, die in einen Halbleiter eindringen und dort aufschlagen, was als Einzelereignisstörung bzw. „Single Event Upset“ (SEU) bezeichnet wird. Typischerweise sind dabei RAM-Bausteine aber auch Flipflops betroffen. Bekannte Gegenmaßnahmen sind fehlererkennende und/oder fehlerkorrigierende Codierungen der Daten im RAM, beispielsweise durch Error Correcting Code (ECC).
-
Bei Flipflops ist bekannt, als absichernde Maßnahme eine Mehrheitsentscheidung durchzuführen. Dabei wird der Flipflop dreifach ausgeführt und in dem Fall, dass nicht alle Flip-Flops den gleichen Zustand haben, wird ein „2 aus 3“ bzw. Zweidrittel-Mehrheitsentscheid durchgeführt. Weiterhin sind strahlungsresistente Flipflops bekannt, die zwar weniger anfällig, aber dafür auch deutlich größer als standardmäßige Flipflops sind. Andere bekannte Verfahren nutzen periodisches Auslesen (programmgesteuert) und Wiederbeschreiben der kritischen Daten. Bekannt ist ebenfalls die periodische Überprüfung mit CRC indem durch z. B. einen Zustandsautomaten periodisch jedes Bit seriell abgefragt wird und in der Berechnung einer CRC Summe einbezogen wird.
-
Flipflops werden gewöhnlich als Grundbausteine für viele Arten von Registern verwendet, die insbesondere in Mikrocontrollern aber auch in den meisten anderen IC-Typen zur Speicherung von Daten verwendet werden. Eine Anwendung ist z. B. die Speicherung von Kalibrierdaten für eine analoge Schaltung oder von Konfigurationsdaten zur Anpassung an eine spezifische Aufgabe.
-
Das Auftreten der oben genannten Fehler bedeutet bei Registern, die veränderliche Daten speichern, eine temporäre Abweichung im Berechnungs- oder Kontrollfluss, die oft im System ignoriert werden kann. Deutlich kritischer ist eine Veränderung der Daten in einem Konfigurations- oder Trimmregister, da in derartigen Registern die abgelegten Daten in der Regel nur einmal nach dem Einschalten des Systems geschrieben werden. Ein Fehler durch SEU bleibt dann gegebenenfalls bis zum Ausschalten bestehen und kann zu gravierenden Fehlfunktionen führen.
-
Der Erfindung liegt daher die Aufgabe zugrunde, ein Verfahren zur Entdeckung und Beherrschung von weichen Fehlern in einem Register bereitzustellen. Weiterhin sollen eine entsprechende Vorrichtung und eine entsprechende integrierte Schaltung bereitgestellt werden.
-
In Bezug auf das Verfahren wird die oben genannte Aufgabe erfindungsgemäß gelöst, indem bei einem Schreiben von Daten in das wenigstens eine Datenspeicherelement wenigstens ein Schreibsicherheitsbit aus diesen Daten erzeugt und in einem zugeordneten Sicherheitsspeicherelement gespeichert wird und wobei aus den Daten kontinuierlich auf die gleiche Weise wie beim Schreiben wenigstens ein Ausgangssicherheitsbit berechnet und mit dem korrespondierenden Schreibsicherheitsbit verglichen wird.
-
Vorteilhafte Ausgestaltungen sind Gegenstand der Unteransprüche.
-
Die Erfindung geht von der Überlegung aus, dass die Entdeckung von weichen Fehlern insbesondere dann wichtig ist, wenn Daten nicht regelmäßig geschrieben werden sondern vielmehr, insbesondere am Betriebsanfang, nur einmal hinterlegt werden. Obwohl diese Daten nur einmal geschrieben werden, können Sie wichtige Informationen enthalten, beispielsweise Konfigurationseinstellungen, die für den weiteren Betrieb wichtig sind. Fehler in den Daten sollten unmittelbar nach dem Auftreten oder mit kurzer Latenz erkannt werden. Eine Implementierung von Mehrheitsentscheidern, bei denen die Daten gewissermaßen in redundanter Weise in mehrere Speicherbausteine geschrieben werden, benötigt große Chipflächen und hohen Stromverbrauch. Die Verfahren mit periodischer Überprüfung verbrauchen Rechenzeit. Diese Rechenzeit ist umso höher, je kritischer die Anforderung an die Latenz der Fehlerentdeckung ist.
-
Wie nunmehr erkannt wurde, ist eine zuverlässige und ressourcenschonende Entdeckung weicher Fehler möglich, indem bereits beim ursprünglichen Schreiben der Daten eine die Daten charakterisierende Anzahl von Sicherheitsbits erzeugt bzw. berechnet werden. Diese (Ausgangs-)Sicherheitsbits können aus den Ausgangsdaten mittels kombinatorischer Logik auf die gleiche Weise, also nach den gleichen Rechenvorschriften, erneut erzeugt werden, wobei ein Vergleich mit dem beim Schreiben dieser Bits dann bei Fehlen einer Übereinstimmung zuverlässig auf das Auftreten von weichen Fehlern hindeutet. Das Auftreten von Fehlern kann also sofort entdeckt werden. Dies ermöglicht dann vor der Verwendung dieser Daten zu warnen und/oder diese direkt zu korrigieren.
-
Erfindungsgemäß wird aus den Daten aus dem Datenspeicherelement auf die gleiche Weise wie beim Schreiben wenigstens ein Sicherheitsbit bzw. Ausgangssicherheitsbit berechnet und mit dem korrespondierenden Schreibsicherheitsbit verglichen. Eine fehlende Übereinstimmung weist auf das zwischenzeitliche Eintreten eines weichen Fehlers hin, der sich beispielsweise in einem oder mehreren Bitumschaltungen äußert.
-
Das Schreiben der Daten wird vorteilhafterweise von einem Prozessor (CPU) oder von einem Zustandsautomaten oder von einem Signal eingeleitet.
-
Eine fehlende Übereinstimmung des jeweiligen Schreibsicherheitsbits mit dem korrespondierenden Auslesesicherheitsbit wird bevorzugt dem Prozessor signalisiert.
-
Die Signalisierung erfolgt vorzugsweise durch Setzen wenigstens eines Flags und/oder Interrupts. Dies erfolgt vorteilhafterweise z. B. in einem Statusregister mit oder ohne Interruptfähigkeit und ermöglicht dem System bzw. dem Prozessor, Fehlerbehandlungsmaßnahmen einzuleiten und durchzuführen.
-
So werden in einer bevorzugten Ausführungsform aufgrund fehlender Übereinstimmung der berechneten Sicherheitsbits bzw. Ausgangssicherheitsbits mit den erzeugten Schreibsicherheitsbits, d. h. bei Erkennen eines aufgetretenen Fehlers, die Daten erneut in das Datenspeicherelement geschrieben. Das heißt, der Vorgang, mit dem ursprünglich die Daten in den das Speicherelement geschrieben wurden, wird von dem Prozessor oder Zustandsautomaten wiederholt. Im Gegensatz zu bekannten Verfahren wird dies jedoch nicht periodisch, sondern nur im Bedarfsfall, d. h. wenn ein Fehler aufgetreten ist, durchgeführt. Auf diese Weise stehen die Daten dann für weitere Vorgänge – zumindest zunächst – wieder in fehlerloser Form zur Verfügung.
-
Die Sicherheitsbits sind vorzugsweise Paritätsbits und/oder ECC-Bits. Paritätsbits charakterisieren dabei, ob und wie viele „1“ oder „0“ Zustände in den Datenbits vorliegen. Bei geraden Paritätsbits entspricht dem Wert „1“ des Paritätsbits eine ungerade Anzahl von „1“ Zuständen der Daten; eine „0“ repräsentiert eine gerade Anzahl von „1“ Bits der Daten. Diese Zuordnung wird bei ungeraden Paritätsbits umgekehrt gewählt.
-
Mit ECC (Error Correcting Code) Bits werden hier Bits bzw. die Methode ihrer Erzeugung verstanden, die – zumindest in eingeschränktem Maße – nicht nur die Entdeckung von Fehlern sondern auch ihre Korrektur mit Hilfe der ECC Bits erlauben. Üblicherweise können 1-Bit-Fehler sofort korrigiert und 2-Bit-Fehler erkannt, aber nicht korrigiert werden. Mehr-Bit-Fehler können teilweise erkannt werden. Die Sicherheitsbits können auch auf Grundlage von anderen Speicherschutzverfahren erzeugt und geschrieben werden.
-
In Bezug auf die Vorrichtung wird die oben genannte Aufgabe erfindungsgemäß gelöst, mit wenigstens einer Logikeinheit, in der ein oben beschriebenes Verfahren ausgeführt wird. Das Verfahren ist in der wenigstens einen Logikeinheit bevorzugt hardware- und/oder softwaremäßig implementiert. Es kann dieselbe Logikeinheit zum Erzeugen der Sicherheitsbits beim Schreiben und Auslesen der Daten vorgesehen sein, oder je eine Logikeinheit für jeden der beiden Vorgänge. Die Logikeinheiten können auch Teil des Prozessors bzw. mit diesem kombiniert sein.
-
In Bezug auf die integrierte Schaltung wird die oben genannte Aufgabe gelöst mit wenigstens einem Datenspeicherelement, wenigstens einem Sicherheitsspeicherelement und einer derartigen Vorrichtung. Eine derartige integrierte Schaltung wird vorzugsweise eingesetzt in ICs mit Trimmung der Parameter. (Die Bauteiltoleranzen sind oft zu groß um die geforderte Präzision einer Schaltung zu erreichen. In solchen Fällen werden Komponenten abgeglichen- z. B. bei einem Spannungsteiler eine aus mehreren Anzapfungen gewählt.) Eine Trimmung wird in allen Messschaltungen z. B. für Sensorsignale, Ventilstrom, aber auch Stromversorgung und Komparatoren verwendet. Eine weitere Einsatzmöglichkeit ist die Konfiguration zur Anpassung des ICs an eine Umgebung, z. B. Fahrzeugtyp, Radsensortyp, Überwachungsschwellen der Bordspannung etc.
-
Das Datenspeicherelement umfasst in einer bevorzugten Ausführung wenigstens ein Flipflop.
-
Die Vorteile der Erfindung liegen insbesondere darin, dass durch das parallele Schreiben von Sicherheitsbits beim Schreiben der Daten und eine kontinuierliche Überwachung der Datenausgänge eine ressourcenschonende Möglichkeit geschaffen wird, das Auftreten von weichen Fehlern zu erkennen. Durch eine kontinuierliche Berechnung der Sicherheitsbits und einem Vergleich mit den ursprünglich geschriebenen Sicherheitsbits kann bei Entdeckung einer Diskrepanz durch ein Benachrichtigung an den Prozessor vor einer weiteren Verwendung der – fehlerhaften – Daten gewarnt werden, wodurch Fehlfunktionen des Systems verhindert werden können.
-
Ein Ausführungsbeispiel der Erfindung wird anhand einer Zeichnung näher erläutert. Darin zeigen in stark schematisierter Darstellung:
-
1 eine bekannte Konfiguration von drei Flipflops mit einer Mehrheitsentscheider-Schaltung,
-
2 eine integrierte Schaltung mit einer Vorrichtung zur Erkennung von fehlerhaften Daten in wenigstens einem Speicherelement, einem Datenspeicherelement und einem Sicherheitsspeicherelement in einer ersten bevorzugten Ausführung, und
-
3 eine integrierte Schaltung in einer zweiten bevorzugten Ausführung.
-
Gleiche Teile sind in allen Figuren mit denselben Bezugszeichen versehen.
-
In 1 ist ein Register 2 für ein Bit dargestellt. Das Register 2 ist dabei als Mehrheitsentscheider ausgebildet und umfasst drei Flipflops 6, 10, 14, welche als D-Flipflops ausgebildet sind. Das jeweilige Flipflop 6, 10, 14 umfasst jeweils einen Dateneingang D, einen Takt-Eingang Ck („Clock“) sowie einen Datenausgang Q. Über eine Datenleitung 20 wird durch einen Prozessor (nicht dargestellt) in den drei Flipflops 6, 10, 14 jeweils einer von zwei stabilen Zuständen (beispielsweise gekennzeichnet als „0“ und „1“) gesetzt, wobei in allen drei Flipflops 6, 10, 14 jeweils der gleiche Zustand gesetzt wird. Das Datenbit wird also gewissermaßen mit dreifacher Redundanz bzw. in dreifacher Ausführung gespeichert.
-
Das in dem durch die drei Flipflops 6, 10, 14 realisierten Register 2 gespeicherte Datum bzw. Bit gibt eine Mehrheitsentscheiderlogik 24 jeweils den Zustand bzw. das Bit aus den Flipflops 6, 10, 14 aus und stellt an einem Ausgang A einen Wert bereit. Hierbei können nun zwei Fälle unterschieden werden. In dem Fall, dass der Zustand aller drei Flipflops 6, 10, 14 identisch ist, wird dieser Zustand an dem Ausgang A bereitgestellt. Haben zwei der Flipflops 6, 10, 14 einen Zustand, der von dem Zustand des dritten Flipflops 6, 10, 14 abweicht, wird der Zustand, den die zwei Flipflops 6, 10, 14 haben, an dem Ausgang A bereitgestellt. Dadurch wird eine 2/3 Mehrheitsentscheidung durchgeführt und das einzelne Flipflop 6, 10, 14 mit dem abweichenden Wert gewissermaßen überstimmt.
-
Nachteilig bei der Ausführung eines derartigen Registers sind aufgrund der Redundanz die hohe Anzahl an Komponenten und der damit einhergehende Platz- und Stromverbrauch.
-
In 2 ist eine erfindungsgemäße integrierte Schaltung 30 mit einem Hauptprozessor (CPU) oder einem Zustandsautomaten o. Ä. 34 und einem Datenspeicherelement 38, welches als Register 42 ausgebildet ist, dargestellt. Das Register 42 ist als 32-Bit Register ausgebildet und umfasst eine Mehrzahl von Flipflops. Im Gegensatz zu der im Zusammenhang mit 1 diskutierten Schaltung wird nun jedes Bit durch ein einziges Flipflop repräsentiert. Das Register 42 kann alternativ auch mit einer Mehrzahl an schreib- und lesbaren Speicherstellen ausgebildet sein.
-
Die integrierte Schaltung 30 ist dazu ertüchtigt, „Soft Errors“ bzw. „weiche Fehler“, die beispielsweise durch das Auftreffen von hochenergetischer Strahlung auf dem entsprechenden Datenspeicherelement 38 herrühren, zu erkennen. Durch die ionisierende Wirkung der Strahlung erfolgt in dem Register beispielsweise eine Bitumschaltung, d. h. der Zustand eines Bits wird invertiert. Im Gegensatz zu harten Fehlern verursachen weiche Fehler keine Schäden an den Bauelementen, sondern sorgen für eine Veränderung ihres inneren Zustandes. Je nachdem, welche Stelle bzw. Zahl das umgeschaltete Bit repräsentiert, kann sich beispielsweise ein in dem Register 2 repräsentierter Zahlenwert drastisch ändern oder sogar bei entsprechender Repräsentation sein Vorzeichen ändern, was zu drastischen Fehlfunktionen in Systemen führen kann, bei denen der Zahlenwert eine wichtige bzw. relevante Größe kennzeichnet.
-
Die integrierte Schaltung 30 weist daher zur Erkennung von weichen Fehlern neben dem Datenspeicherelement 38 ein Sicherheitsspeicherelement 46 auf. Werden von dem Hauptprozessor 34 oder einem Zustandsautomaten Daten über eine Datenleitung 36 in das Datenspeicherelement geschrieben, werden von einer Logikeinheit 50 Sicherheitsbits in das Sicherheitsspeicherelement 46 geschrieben. Die Sicherheitsbits können dabei ein oder mehrere Paritätsbits oder ECC-Bits sein.
-
Die im Register 42 hinterlegten Daten werden von einer Logikeinheit 54 auf die gleiche Weise, in der die Logikeinheit 50 die Sicherheitsbits berechnet hat, aus den im Datenspeicherelement 38 hinterlegten Daten, Sicherheitsbits berechnet und mit denen im Sicherheitsspeicherelement 46 hinterlegten Sicherheitsbits verglichen. Die Logikeinheiten 50 und 54 können auch zu einer gemeinsamen Logikeinheit und/oder mit dem Hauptprozessor 34 / einem Zustandsautomaten kombiniert sein. Durch sie wird eine Vorrichtung 56 zum Erkennen von weichen Fehlern realisiert.
-
In dem Fall, dass eine fehlende Übereinstimmung zwischen den beim Schreiben der Daten erzeugten bzw. generierten Sicherheitsbits und von den aktuellen Registerdaten berechneten festgestellt wird, übermittelt die Logikeinheit 54 über eine Datenleitung 58 ein Signal an den Hauptprozessor 34. Dieses Signal kann das Setzen eines Flags oder eines Interrupts umfassen. Auf diese Weise kann in der integrierten Schaltung 30 auf die fehlerhaften Daten reagiert werden. Bevorzugt werden die Daten erneut von dem Hauptprozessor 34 erzeugt oder ermittelt und erneut in das Register 42 geschrieben und damit der Fehler repariert. In einer anderen Realisierung können die Daten (z. B. Kalibrierdaten) von einem Festwertspeicher neu geladen werden. Alternativ dazu kann der Hauptprozessor 34 auch eine Warnung ausgeben, dass ein zuverlässiges Funktionieren des Systems nicht gewährleistet werden kann und/oder Notfallmaßnahmen einleiten wie beispielsweise einen Systemreset, eine Notabschaltung oder ähnliches.
-
Eine integrierte Schaltung 30 in einer zweiten bevorzugten Ausführungsform ist in 3 dargestellt. Hierbei erzeugt die Logikeinheit 50 beim Schreiben von Daten in das Register 42 ECC-Bits, d. h. Bits, die zu einem fehlerkorrigierenden Algorithmus korrespondieren. Die ECC-Bits erlauben nicht nur das Erkennen von Fehlern sondern auch ihre Korrektur. Diese Korrektur wird im vorliegenden Ausführungsbeispiel von der Logikeinheit 54 durchgeführt, welche dann an der Datenleitung 58 die korrigierten Daten bereitstellt. Das heißt, es findet neben der Erkennung von Fehlern auch eine Korrektur der Daten statt. Auch in diesem Fall kann vorgesehen sein, dass bei Erkennen eines Fehlers die Daten erneut in das Register geschrieben werden. Darüber hinaus kann diese Konfiguration in gewissem Maße auch „harte“ Fehler tolerieren.
-
Die integrierte Schaltung 30 gemäß 2 oder 3 wird vorteilhafterweise beispielsweise eingesetzt zur Absicherung von Konfigurationsdaten in Mikrocontroller Peripheriemodulen, z. B. Frequenzteiler für Taktgeber, Erfassungswerte, SPI Baudrate, CAN zeitliche Bit-Taktung etc.
-
Sie kann weiterhin vorteilhafterweise eingesetzt werden zur Absicherung von Kalibrierdaten in Analog-ICs. Hier können z. B. 500 bis 1000 Bit zur Trimmung der Parameter verwendet werden. Diese Daten werden bei der Produktion in einem Festwertspeicher geschrieben und dann nach Einschalten der Spannung oder eines Resets in Flipflops übernommen. Diese können dann mit wenigen Bits auf Abweichungen permanent geprüft werden. Ähnliches ist möglich mit Konfigurationsdaten im IC. Im Gegensatz zur Kalibrierung wird die Konfiguration in der Anwendung festgelegt. Beispiele dafür sind Schwellen von Komparatoren, Protokolle für Radsensoren etc.
-
Bezugszeichenliste
-
- 2
- Register
- 6
- Flipflop
- 10
- Flipflop
- 14
- Flipflop
- 20
- Datenleitung
- 24
- Mehrheitsentscheiderlogik
- 30
- Integrierte Schaltung
- 34
- Hauptprozessor
- 36
- Datenleitung
- 38
- Datenspeicherelement
- 42
- Register
- 46
- Sicherheitsspeicherelement
- 50
- Logikeinheit
- 54
- Logikeinheit
- 56
- Vorrichtung
- 58
- Datenleitung
- 62
- Datenleitung
- D
- Dateneingang
- Ck
- Takt-Eingang
- Q
- Datenausgang
- A
- Ausgang