DE102013009364B4 - Verfahren und System zur Erkennung von latenten Fehlern in Mikrocontrollern - Google Patents

Verfahren und System zur Erkennung von latenten Fehlern in Mikrocontrollern Download PDF

Info

Publication number
DE102013009364B4
DE102013009364B4 DE102013009364.3A DE102013009364A DE102013009364B4 DE 102013009364 B4 DE102013009364 B4 DE 102013009364B4 DE 102013009364 A DE102013009364 A DE 102013009364A DE 102013009364 B4 DE102013009364 B4 DE 102013009364B4
Authority
DE
Germany
Prior art keywords
registers
cpu
microcontrollers
read
register
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.)
Active
Application number
DE102013009364.3A
Other languages
English (en)
Other versions
DE102013009364A1 (de
Inventor
Simon Brewerton
Neil S. Hastie
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of DE102013009364A1 publication Critical patent/DE102013009364A1/de
Application granted granted Critical
Publication of DE102013009364B4 publication Critical patent/DE102013009364B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1641Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1679Temporal synchronisation or re-synchronisation of redundant processing components at clock signal level

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)

Abstract

System mit:
wenigstens zwei Mikrocontrollern, die mit den gleichen Eingabedaten betrieben werden, wobei jeder der Mikrocontroller eine Vielzahl von Registern aufweist, die den Betrieb eines jeweiligen Mikrocontrollers steuern;
einem Bussystem zum nichtinvasiven Lesen von wenigstens einem Satz von entsprechenden Registern von der Vielzahl von Registern von verschiedenen Mikrocontrollern der Mikrocontroller, wobei jeder der Mikrocontroller einen Ausgangsport aufweist, um Inhalte der Vielzahl von Registern des entsprechenden Mikrocontrollers auszugeben, die von dem Bussystem nichtinvasiv gelesen werden, wobei die Vielzahl von Registern m Bits breit ist, wobei die Breite des Ausgangsports nur m/n Bits breit ist, wodurch eine reduzierte Breite für einen Komparator bereitgestellt wird, der die Inhalte von dem wenigstens einen Satz von entsprechenden Registern von der Vielzahl von Registern von den verschiedenen Mikrocontrollern vergleicht, wobei m eine vorbestimmte natürliche Zahl ist, wobei m = n · i ist, und i eine vorbestimmte natürliche Zahl ist, wobei i ≥ 2 ist.

Description

  • Die vorliegende Erfindung bezieht sich allgemein auf ein Verfahren und ein System zur Erkennung von latenten Fehlern in Mikrocontrollern und insbesondere zur Ermittlung bzw. Detektion einer Korrumpierung, also Verfälschung bzw. Beschädigung von Mikrocontroller-Registern durch latente Fehler, um ein unerwartetes Verhalten bzw. einen unerwarteten Betrieb von Mikrocontrollern, zum Beispiel von Mikrocontrollern mit einer hohen Integrität in elektronischen Steuergeräten (ECUS; electronic control units) von Kraftfahrzeugen, zu vermeiden.
  • Im Folgenden wird die Erfindung zu veranschaulichenden Zwecken unter Bezugnahme auf Mikrocontroller in elektronischen Steuergeräten von Kraftfahrzeugen beschrieben. Aber die Erfindung ist nicht darauf beschränkt und kann ihre Anwendung auch in Verbindung mit jeder anderen Art von Fehlererkennung für Mikrocontroller finden.
  • Es gibt einen Trend, dass moderne elektronische Steuergeräte von Kraftfahrzeugen, die im Folgenden kurz „Kraftfahrzeug-ECUs“ genannt werden, immer mehr Funktionalitäten integrieren. Auf der einen Seite wird dieser Trend durch die Skalierung der Technologie angetrieben, die ständig zunehmende Integrationsgrade ermöglicht. Darüber hinaus zwingt auch die stark kostengesteuerte Natur der Automobilindustrie die Entwickler dazu, die Gesamtanzahl an ECUs pro Fahrzeug zu reduzieren.
  • In diesem Kontext spielt die Elektronik eine immer größer werdende Rolle bei der Bereitstellung von fortschrittlichen Fahrassistenzfunktionen, die insbesondere dabei helfen, Gefahren zu verhindern und die Anzahl an tödlichen Verletzungen zu reduzieren.
  • Die Integration dieser Assistenzfunktionen im Innern eines ECU konzentriert sich hauptsächlich um einen Mikrocontroller mit mehreren CPUs (CPU = central processing unit; Zentraleinheit), im Folgenden kurz „Multi-CPU-Mikrocontroller“ genannt, der eine entscheidende Rolle spielt, indem er die kritischen Rechen- und Steuerfunktionen beherbergt. Ein solcher Multi-CPU-Mikrocontroller kann als ein Cluster von Rechenknoten mit definierten und eingeschlossenen Aufgaben betrachtet werden.
  • Unter solchen Annahmen - d.h., dass eine Vielzahl von kritischen Rechen- und Steuerfunktionen, die sich auf verschiedene Assistenzfunktionen beziehen, von ein und demselben Multi-CPU-Mikrocontroller durchgeführt werden - ist die frühe Erkennung von latenten Fehlern ein Hauptanliegen, das in Angriff genommen werden muss, um zu vermeiden, dass der Betrieb des Multi-CPU-Mikrocontrollers tatsächlich beeinträchtigt wird.
  • Eine typische Ursache für solche Fehler kann die Korrumpierung, also Verfälschung bzw. Beschädigung von CPU-Registern durch Effekte wie etwa das Auftreffen von Alphapartikeln, Netzspannungsspitzen oder dergleichen sein, die als latente Fehler zusammengefasst werden können. Als Folge davon wird jede derartige Korrumpierung zu einem unerwarteten Verhalten bzw. Betrieb der CPU führen, wenn die Registerinhalte das nächste Mal benutzt werden. Dies basiert auf der Tatsache, dass eine typische CPU viele Register enthält, die den aktuellen Zustand der CPU speichern, der ihr zukünftiges Verhalten bzw. Funktionieren bestimmt. Folglich streben Ausführungsformen ein Verfahren und System zum Ermitteln von korrumpierten, also verfälschten bzw. beschädigten Registern vor der Verwendung dieser Register durch die CPU an.
  • Darüber hinaus können diese CPU-Register Architekturregister sein, die für ein Programm sichtbar sind, das in der CPU läuft, oder sie können „versteckte“ Register sein, die von der CPU benutzt werden, um eine Operation bzw. den Betrieb zu steuern, aber für ein Programm nicht sichtbar sind, z. B. Register in den Sprungvorhersagetabellen.
  • Da beide Arten von Registern lange Zeiträume zwischen Zugriffen erleben, während denen sie anfällig für eine Korrumpierung sind, steigt die Anfälligkeit der entsprechenden CPU gegenüber latenten Fehlern.
  • Typische Lösungen für das Ermitteln bzw. Detektieren von korrumpierten Registern umfassen die folgenden Lösungen. Eine erste bekannte Lösung basiert auf dem Auslesen von architektonisch sichtbaren Registern durch ein Programm, das in der CPU läuft, und auf dem Vergleichen des Wertes mit einem bekannten guten Wert, der an anderer Stelle in dem System gespeichert ist. Dies erfordert es, dass ein bekannter guter Wert zur Verfügung steht. Aber für Register, die dynamisch aktualisiert werden, kann ein solcher Wert nicht zur Verfügung stehen.
  • Ein weiteres Problem bei dieser Lösung ist, dass das Auslesen des architektonischen Zustands durch ein Programm invasiv ist und für die Durchführung CPU-Ressourcen verbrauchen wird. Darüber hinaus sind versteckte Register typischerweise für das Programm nicht sichtbar und können folglich nicht verglichen werden.
  • Eine zweite bekannte Lösung basiert auf der Verwendung von wenigstens zwei im Gleichschritt synchronisiert agierenden, also im Lockstep-Modus agierenden CPUs (lockstepped CPUs). Im Lockstep-Modus agierende CPUs erlauben es, dass eine Korrumpierung entdeckt werden kann, wenn eine solche Korrumpierung dazu führt, dass das Verhalten bzw. der Betrieb der zwei CPUs divergiert. Aber dieser divergierende Betrieb kann nur einige Zeit, nachdem die Korrumpierung tatsächlich stattgefunden hat, erkannt werden, und dann kann es für das System zu spät sein, sich von einer solchen Korrumpierung zu erholen bzw. eine solche Korrumpierung zu beheben.
  • Aus diesen und anderen Gründen besteht ein Bedarf an der vorliegenden Erfindung. Ferner wird auf die folgenden Druckschriften verwiesen, in denen verschiedene Systeme beschrieben sind: US 2010 / 0 070 803 A1 ; US 6 496 940 B1 ; US 2011 / 0 283 033 A1 ; US 5 854 640 A ; und US 4 799 140 A . Ausgehend davon kann es als Aufgabe gesehen werden, einen effizient arbeitenden Microcontroller bereitzustellen, beispielsweise mit einem geringeren Energieverbrauch als herkömmlicherweise verwendete Vorrichtungen. Diese und andere Aufgaben werden durch den anspruchsgemäßen Gegenstand gelöst.
  • Es werden ein Verfahren und ein System zur Erkennung von latenten Fehlern in Mikrocontrollern bereitgestellt, wie diese im Wesentlichen in wenigstens einer der Figuren gezeigt sind und/oder in Verbindung mit wenigstens einer der Figuren beschrieben sind und wie sie in den Ansprüchen vollständiger dargelegt sind.
  • Nachfolgend sind verschiedene Aspekte beschrieben, die unter anderem zur Veranschaulichung der Erfindung dienen. Es versteht sich, dass die Erfindung durch den Patentanspruch 1 definiert ist. Weitere Ausgestaltungen ergeben sich aus den abhängigen Patentansprüchen.
  • Gemäß einem Aspekt der Erfindung wird ein System bereitgestellt zum Ermitteln einer Registerkorrumpierung von redundanten CPUs, die mit den gleichen Eingabedaten betrieben werden, mit: einem separaten Bus in jeder der redundanten CPUs, um wenigstens ein vorbestimmtes Register der jeweiligen einen CPU von den redundanten CPUs auf eine nichtinvasive Art und Weise zu lesen; einem Komparator zum Vergleichen der Inhalte von wenigstens einem Satz von entsprechenden Registern von verschiedenen CPUs der redundanten CPUs, um korrumpierte Registerinhalte zu ermitteln.
  • Vorteilhaft weist das System des Weiteren einen Sequenzer in jeder der redundanten CPUs auf, um eine Häufigkeit zu bestimmen, mit der das wenigstens eine vorbestimmte Register gelesen wird, und/oder um eine Sequenz zu bestimmen, in der wenigstens zwei vorbestimmte Register der jeweiligen einen CPU von den redundanten CPUs gelesen werden.
  • Vorteilhaft sind die redundanten CPUs im Lockstep-Modus agierende CPUs.
  • Vorteilhaft ist der separate Bus in jedem der redundanten CPUs so konfiguriert, dass er nichtinvasiv auf alle Architekturregister und auf wenigstens eine Teilmenge der versteckten Register der jeweiligen einen CPU der redundanten CPUs zugreift.
  • Vorteilhaft ist jeder Sequenzer so konfiguriert, dass er wenigstens ein kritisches Register von dem wenigstens einen vorbestimmten Register häufiger liest.
  • Vorteilhaft ist jeder Sequenzer so konfiguriert, dass er wenigstens ein kritisches Register von dem wenigstens einen vorbestimmten Register in Reaktion auf ein vorbestimmtes Ereignis liest.
  • Gemäß einem weiteren Aspekt wird ein System bereitgestellt mit: wenigstens zwei Mikrocontrollern, die mit den gleichen Eingabedaten betrieben werden bzw. die gleichen Eingabedaten verarbeiten, wobei jeder der Mikrocontroller eine Vielzahl von Registern aufweist, die den Betrieb eines jeweiligen Mikrocontrollers von den Mikrocontrollern steuert; einem Bussystem zum nichtinvasiven Lesen und zum Vergleichen von Inhalten von wenigstens einem Satz von entsprechenden Registern von der Vielzahl von Registern von verschiedenen Mikrocontrollern der Mikrocontroller, um korrumpierte Register in der Form von entsprechenden Registern mit inkonsistenten Inhalten zu ermitteln.
  • Vorteilhaft ist das System dafür konfiguriert, wenigstens eine Lesezugriffsadresse zu der Zugriffsadresse, die einen entsprechenden nichtinvasiven Lesezugriff durch das Bussystem auf ein entsprechendes Register von der Vielzahl von Registern initiiert, auszugeben und mit dieser zu vergleichen, um zu gewährleisten, dass keine Korrumpierung eines entsprechenden Adressfeldes während des entsprechenden nichtinvasiven Lesezugriffs stattgefunden hat.
  • Vorteilhaft weist das System des Weiteren einen Sequenzer auf, um eine Häufigkeit zu bestimmen, mit der der wenigstens eine Satz von entsprechenden Registern von der Vielzahl von Registern gelesen wird, und/oder um eine Sequenz zu bestimmen, in der wenigstens zwei Sätze von entsprechenden Registern von der Vielzahl von Registern gelesen werden.
  • Vorteilhaft ist der Sequenzer so konfiguriert, dass er gedrosselt werden kann, um den wenigstens einen Satz von entsprechenden Registern von der Vielzahl von Registern nur bei jedem n-ten Taktzyklus der Mikrocontroller zu lesen, um den Stromverbrauch zu reduzieren, wobei n eine vorbestimmte natürliche Zahl ist, wobei n ≥ 2 ist.
  • Vorteilhaft weist das System einen Komparator auf, um die Inhalte von dem wenigstens einen Satz von entsprechenden Registern von der Vielzahl von Registern der verschiedenen Mikrocontroller von den Mikrocontrollern zu vergleichen, wobei jeder der Mikrocontroller einen Ausgangsport aufweist, um Inhalte der Vielzahl von Registern des entsprechenden einen Mikrocontrollers von den Mikrocontrollern auszugeben, die von dem Bussystem nichtinvasiv gelesen werden, wobei die Vielzahl von Registern m Bits breit ist, wobei die Breite des Ausgangsports nur m/n Bits breit ist, wodurch eine reduzierte Breite des Komparators bereitgestellt wird, um den Stromverbrauch noch weiter zu reduzieren, wobei m eine vorbestimmte natürliche Zahl ist, wobei m = n·i ist, und i eine vorbestimmt natürliche Zahl ist, wobei i ≥ 2 ist.
  • Gemäß einem Aspekt wird ein System bereitgestellt zum Ermitteln einer Registerkorrumpierung in CPUs, die mit den gleichen Eingabedaten betrieben werden, mit: Einrichtungen für einen nichtinvasiven Lesezugriff auf Inhalte von wenigstens einem Satz von entsprechenden Registern von Registern von verschiedenen CPUs und einen Vergleich von Inhalten von wenigstens einem Satz von entsprechenden Registern von Registern von verschiedenen CPUs, um korrumpierte Register in der Form von entsprechenden Registern mit inkonsistenten Inhalten zu ermitteln.
  • Vorteilhaft weist die Einrichtung wenigstens einen Bus auf, der den nichtinvasiven Lesezugriff auf die Register bereitstellt, wenigstens einen Sequenzer, der eine Häufigkeit und/oder Sequenz des nichtinvasiven Lesezugriffs steuert, und einen Komparator für den Vergleich der Inhalte der Register, wobei jede der CPUs einen Scanausgang zum Ausgeben der Inhalte der Register der entsprechenden einen CPU von den CPUs zu dem Komparator aufweist.
  • Vorteilhaft ist das System dafür konfiguriert, Inhalte von einer Vielzahl von Registern der CPUs in jedem Taktzyklus der CPUs zu lesen und auszugeben, indem es die Vielzahl von Registern in mehrere Teilblöcke teilt.
  • Vorteilhaft ist das System dafür konfiguriert, eine Geschwindigkeit des nichtinvasiven Lesezugriffs in Abhängigkeit von einer benötigten Ausfallreaktionszeit einer Anwendung der CPUs zu variieren.
  • Gemäß einem Aspekt wird ein Verfahren bereitgestellt zum Ermitteln einer Registerkorrumpierung von redundanten CPUs, die mit den gleichen Eingabedaten betrieben werden, wobei das Verfahren die folgenden Schritte umfasst: nichtinvasives Lesen wenigstens eines vorbestimmten Registers der jeweiligen einen CPU von den redundanten CPUs durch einen separaten Bus in jeder der redundanten CPUs; Vergleichen von Inhalten von wenigstens einem Satz von entsprechenden Registern von verschiedenen CPUs von den redundanten CPUs durch einen Komparator, um korrumpierte Registerinhalte zu ermitteln.
  • Vorteilhaft weist das nichtinvasive Lesen das Verwenden eines Sequenzers in jeder der redundanten CPUs auf, um eine Häufigkeit zu bestimmen, mit der das wenigstens eine vorbestimmte Register gelesen wird, und/oder um eine Sequenz zu bestimmen, in der wenigstens zwei vorbestimmte Register der jeweiligen einen CPU der redundanten CPUs gelesen werden.
  • Vorteilhaft sind die redundanten CPUs im Lockstep-Modus agierende CPUs.
  • Vorteilhaft ist der separate Bus in jeder der redundanten CPUs dafür konfiguriert, nichtinvasiv auf alle Architekturregister und auf wenigstens eine Teilmenge der versteckten Register der jeweiligen einen CPU der redundanten CPUs zuzugreifen.
  • Vorteilhaft weist das Verwenden des Sequenzers das häufigere Lesen wenigstens eines kritischen Registers von dem wenigstens einen vorbestimmten Register auf.
  • Gemäß einem Aspekt wird ein Verfahren bereitgestellt, das die folgenden Schritte umfasst:
    • Betreiben von wenigstens zwei Mikrocontrollern mit den gleichen Eingabedaten,
    • wobei jeder der Mikrocontroller eine Vielzahl von Registern aufweist, die den Betrieb eines jeweiligen Mikrocontrollers von den Mikrocontrollern steuert; nichtinvasives Lesen und Vergleichen von Inhalten von wenigstens einem Satz von entsprechenden Registern von der Vielzahl von Registern von verschiedenen Mikrocontrollern der Mikrocontroller durch ein Bussystem, um korrumpierte Register in der Form von entsprechenden Registern mit inkonsistenten Inhalten zu ermitteln.
  • Vorteilhaft weist das Verfahren des Weiteren das Ausgeben und das Vergleichen von wenigstens einer Lesezugriffsadresse zu der Zugriffsadresse bzw. mit der Zugriffsadresse, die einen entsprechenden nichtinvasiven Lesezugriff durch das Bussystem auf ein entsprechendes Register von der Vielzahl von Registern initiiert, auf, um zu gewährleisten, dass keine Korrumpierung eines entsprechenden Adressfeldes während des entsprechenden nichtinvasiven Lesezugriffs stattgefunden hat.
  • Vorteilhaft weist das nichtinvasive Lesen das Verwenden eines Sequenzers zum Bestimmen einer Häufigkeit, mit der der wenigstes eine Satz von entsprechenden Registern von der Vielzahl von Registern gelesen wird, und/oder einer Sequenz, in der wenigstens zwei Sätze von entsprechenden Registern von der Vielzahl von Registern gelesen werden, auf.
  • Vorteilhaft weist das Verwenden des Sequenzers das Drosseln des nichtinvasiven Lesens auf, um den wenigstens einen Satz von entsprechenden Registern von der Vielzahl von Registern nur bei jedem n-ten Taktzyklus der Mikrocontroller zu lesen, um den Stromverbrauch zu reduzieren, wobei n eine vorbestimmte natürliche Zahl ist, wobei n ≥ 2 ist.
  • Gemäß einem Aspekt wird ein Verfahren bereitgestellt zum Ermitteln einer CPU-Register-Korrumpierung durch redundante CPUs, die mit den gleichen Eingabedaten betrieben werden, das den folgenden Schritt umfasst: nichtinvasives Lesen und Vergleichen von Inhalten von wenigstens einem Satz von entsprechenden CPU-Registern von CPU-Registern von verschiedenen CPUs von den redundanten CPUs, um korrumpierte CPU-Register in der Form von entsprechenden CPU-Registern mit inkonsistenten Inhalten zu ermitteln.
  • Weitere Merkmale und Vorteile der Ausführungsformen werden aus der nachfolgenden ausführlichen Beschreibung deutlich, die unter Bezugnahme auf die beigefügten Zeichnungen vorgenommen wird.
  • Figurenliste
  • Die beigefügten Zeichnungen sind einbezogen, um ein weiteres Verständnis der vorliegenden Erfindung bereitzustellen, und sie sind in die vorliegende Patentspezifikation eingegliedert und bilden einen Teil davon. Die Zeichnungen beziehen sich auf Beispiele und Ausführungsformen, und zusammen mit der Beschreibung dienen sie dazu, die Prinzipien der Erfindung zu erläutern. Andere Ausführungsformen und viele der beabsichtigten Vorteile von Ausführungsformen werden ohne Weiteres erkannt werden, wenn sie durch die Bezugnahme auf die nachfolgende ausführliche Beschreibung besser verstanden werden.
    • 1 zeigt eine Ausführungsform eines Systems für einen CPU-Zustandsregister-Scan bzw. eine CPU-Zustandsregister-Überprüfung in zwei im Lockstep-Modus agierenden CPUs zur Erkennung von latenten Fehlern;
    • 2 zeigt eine Ausführungsform eines Verfahrens zum Ermitteln einer Registerkorrumpierung von redundanten CPUs, die mit den gleichen Eingabedaten betrieben werden.
  • In der nachfolgenden ausführlichen Beschreibung wird Bezug auf die beigefügten Zeichnungen genommen, die einen Teil davon bilden und in denen durch Veranschaulichung spezifische Ausführungsformen gezeigt sind. Es soll klar sein, dass andere Ausführungsformen verwendet werden können und dass strukturelle oder andere Änderungen vorgenommen werden können, ohne dass von dem Schutzumfang der vorliegenden Erfindung abgewichen wird. Die nachfolgende ausführliche Beschreibung soll daher nicht in einem beschränkenden Sinne betrachtet werden, und der Schutzumfang der vorliegenden Erfindung ist durch die angehängten Ansprüche definiert.
  • Ein Schwerpunktthema in Bezug auf Multi-CPU-Mikrocontroller oder Mehrkern- bzw. Multi-Core-Mikrocontroller ist die Systemintegrität. Eine Grundvoraussetzung für diese Systemintegrität ist, dass latente Fehler entdeckt werden, bevor sie den weiteren Betrieb der Multi-CPU- oder Mehrkern-Mikrocontroller korrumpieren bzw. verfälschen können.
  • Für Sicherheits-Mikrocontroller mit einer hohen Integrität liegt der Stand der Technik in Bezug auf die Systemintegrität darin, Duplexsysteme für einen Rechencluster zu verwenden, was auch als eine Lockstep-Ausführung (Gleichschritt-Ausführung) von zwei CPUs bekannt ist. Diese Lockstep-Ausführung von CPUs beschreibt die Tatsache, dass z.B. zwei CPUs den gleichen Prozess um - zum Beispiel - zwei Taktzyklen verzögert ausführen, um Ausfälle aufgrund gemeinsamer Ursache (Common Cause Failures) zu mindern.
  • Folglich gibt es im Falle eines Fehlers in einer ersten Lockstep-CPU - in dem oben genannten Beispiel - auch eine Verzögerung von mindestens zwei Taktzyklen, um den Fehler zu entdecken. Dies wird durch die Tatsache bewirkt, dass der Fehler typischerweise durch einen Vergleich einer konsequenterweise um zwei Taktzyklen verzögerten Ausgabe einer zweiten Lockstep-CPU mit einer verzögerten Ausgabe der ersten Lockstep-CPU erkannt wird. Aber in der Zwischenzeit, bis der Fehler entdeckt wird, kann es für das System der Lockstep-CPUs zu spät sein, um sich von der Korrumpierung von CPU-Registern zu erholen bzw. um diese Korrumpierung von CPU-Registern zu beheben.
  • Folglich beziehen sich Ausführungsformen auf ein neuartiges System und Verfahren für die Ermittlung bzw. Detektion von Zustandsregisterkorrumpierungen in CPUs oder Mikrocontrollern vorzugweise bevor diese Korrumpierungen den weiteren Betrieb der CPUs oder Mikrocontroller beeinträchtigen und ohne dass der normale Betrieb der CPUs oder Mikrocontroller gestört wird.
  • Heutzutage werden Kraftfahrzeug-ECUs typischerweise auf eine Art und Weise gebaut, dass ein kritischer Fehler immer dazu führt, dass in einen Fail-Safe-Modus (ausfallsicheren Modus bzw. Sicherheitsmodus) eingetreten wird. Aber in solchen Situationen ist der Prozess des Wiedereintretens in den normalen Modus kaum definiert. Mit anderen Worten, die Fehlerbehebung bzw. Fehlerbehandlung befindet sich heute gerade in der Definitionsphase.
  • Da die wahre Komplexität der oben genannten Fahrassistenzfunktionen typischerweise in der Komplexität der unterstützenden Software reflektiert ist, konzentrierte man sich in der Forschung und Entwicklung bisher in keinster Weise auf die entsprechende Mikrocontrollerarchitektur und ihre Fähigkeit, diese Fehlerbehebung bzw. Fehlerbehandlung durch z.B. eine frühe Erkennung von latenten Fehlern zu unterstützen. Dementsprechend steht heutzutage keine Schaltung zur Verfügung, die es erlaubt, dass CPU-ZustandsregisterKorrumpierungen ermittelt werden können, bevor sie den weiteren Betrieb der CPU in einer echten Anwendung beeinträchtigen.
  • Deshalb weisen Ausführungsform ein System und ein Verfahren auf, die dafür angepasst sind, zu erlauben, dass Architekturregister und versteckte Register eines Multi-CPU-Mikrocontrollers auf eine nichtinvasive Art und Weise gelesen werden können. Das Ergebnis des Lesezugriffs kann zu einem Ausgang für einen Vergleich, zum Beispiel in einem im Lockstep-Modus agierenden System, weitergeleitet werden. Zu diesem Zweck können Ausführungsformen ein internes Bussystem in jeder CPU des Multi-CPU-Mikrocontrollers enthalten, das es erlaubt, dass jedes Register, d.h. architektonisch und versteckt, gelesen werden kann.
  • Jedes Register kann mit einer einzigartigen Zugriffsadresse in dem internen Bus versehen sein und kann gelesen werden, ohne dass der Zustand des Multi-CPU-Mikrocontrollers durcheinandergebracht wird oder der normale Betrieb des Multi-CPU-Mikrocontrollers störend beeinflusst wird.
  • Ein Sequenzer (Ablaufsteuerungselement) kann verwendet werden, um jedes Register der Reihe nach zu lesen und das Ergebnis in einen dedizierten CPU-Scanausgang einzugeben. Der Multi-CPU-Mikrocontroller kann in einem im Lockstep-Modus agierenden System verwendet werden, und der Scanausgang kann mit dem identischen Scanausgang in der entsprechenden CPU eines im Lockstep-Modus agierenden Paares von CPUs verglichen werden.
  • Der Sequenzer kann verwendet werden, um die Register des Multi-CPU-Mikrocontrollers wiederholt zu scannen bzw. zu überprüfen, wodurch erlaubt wird, dass latente Fehler entdeckt werden können, bevor eine weitere Benutzung der Register zu einem Systemausfall führt. Die Rate, mit der die Register gescannt werden, kann variiert werden, um ein Gleichgewicht zwischen der Zugriffshäufigkeit und dem Stromverbrauch und der Ausfallreaktionszeit zu halten. Kritische Register können häufiger gelesen werden als nichtkritische Register des Multi-CPU-Mikrocontrollers.
  • Wie vorher angegeben worden ist, wird diese Fehlererkennung typischerweise auf der Basis einer verzögerten Verarbeitung des gleichen Eingangssignals durch wenigstens eine zweite CPU, wie etwa in einem verzögerten Duplexsystem, und auf der Basis eines nachfolgenden Vergleichs von geeigneten Ausgangssignalen der ersten CPU und der wenigstens einen zweiten CPU durchgeführt, um ein entsprechendes Fehlersignal zu erzeugen.
  • 1 zeigt eine Ausführungsform eines Systems für einen CPU-Register-Scan bzw. eine CPU-Register-Überprüfung in zwei im Lockstep-Modus agierenden CPUs für die Erkennung von latenten Fehlern. In diesem System weist eine erste CPU 110 ein erstes CPU-Zustandsregister 111, ein zweites CPU-Zustandsregister 112, ein drittes CPU-Zustandsregister 113 und ein n-tes CPU-Zustandsregister 119 auf. In dem Kontext der Ausführungsform in 1 werden alle CPU-Register als „CPU-Zustandsregister“ bezeichnet. Aber - obwohl alle Register einer CPU ihren aktuellen Zustand in einem breiteren Sinne charakterisieren - brauchen einige der oben genannten Zustandsregister nicht „CPU-Zustands“-Register in einem engen Sinne sein.
  • Wie vorher zum Ausdruck gebracht worden ist, kann jedes der CPU-Zustandsregister 111, 112, 113, 119 ein Architekturregister sein, das für ein Programm, das in der ersten CPU 110 läuft, sichtbar ist, oder kann jedes davon ein „verstecktes“ Register sein, das von der ersten CPU 110 für die Steuerung ihres Betriebs verwendet wird, aber für ein Programm nicht sichtbar ist.
  • Auf jeden Fall kann auf jedes der CPU-Zustandsregister 111, 112, 113, 119 durch eine einzigartige Registeradresse in dem Adressbusteil 114 eines nichtinvasiven Lesebusses zugegriffen werden. In Reaktion auf einen solchen Zugriff kann ein entsprechendes Register von den CPU-Zustandsregistem 111, 112, 113, 119 seinen Dateninhalt über ein Datenbusteil 116 des nichtinvasiven Lesebusses zu einem dedizierten CPU-Scanausgang 118 der ersten CPU 110 übertragen. In Ausführungsformen kann der nichtinvasive Lesebus einen separaten Bus in der ersten CPU 110 aufweisen, der einen Zugriff auf diese CPU-Zustandsregister 111, 112, 113, 119 ermöglicht, ohne dass der Zustand der ersten CPU 110 beeinträchtigt wird oder ohne dass der normale Betrieb der ersten CPU 110 störend beeinflusst wird.
  • Wie bei der Ausführungsform von 1 kann ein Sequenzer 115 in der ersten CPU 110 verwendet werden, um jedes der ersten 111, der zweiten 112, der dritten 113 und der n-ten CPU-Zustandsregister 119 der ersten CPU 110 der Reihe nach zu lesen und das Ergebnis in den dedizierten CPU-Scanausgang 118 der ersten CPU 110 einzugeben. Darüber hinaus kann der Sequenzer 115 dafür konfiguriert sein, die Häufigkeit oder die Sequenz bzw. Reihenfolge zu variieren, mit bzw. in der auf die ersten 111, die zweiten 112, die dritten 113 und die n-ten CPU-Zustandsregister 119 der ersten CPU 110 zugriffen wird, um ein Gleichgewicht zwischen der Zugriffshäufigkeit und der Ausfallreaktionszeit zwischen mehr oder weniger kritischen Zustandsregistem der CPU-Zustandsregister 111, 112,113, 119 aufrecht zu halten.
  • Außerdem weist die Ausführungsform in 1 eine zweite CPU 190 auf, die in einem Lockstep-Modus mit der ersten CPU 110 arbeitet. Mit anderen Worten, die zweite CPU 190 sieht eine redundante CPU vor, die mit den gleichen Eingabedaten wie die erste CPU 110 betrieben wird bzw. die die gleichen Eingabedaten wie diese verarbeitet, um zu ermöglichen, dass Inhalte von Sitzen von entsprechenden Registern der ersten CPU 110 und der zweiten CPU 190 verglichen werden können, um korrumpierte Registerinhalte zu ermitteln.
  • Die zweite CPU 190 weist ein erstes CPU-Zustandsregister 191, ein zweites CPU-Zustandsregister 192, ein drittes CPU-Zustandsregister 193 und ein n-tes CPU-Zustandsregister 199 auf.
  • Auch im Hinblick auf die zweite CPU 190 kann jedes der CPU-Zustandsregister 191, 192, 193, 199 ein Architekturregister sein, das für ein Programm, das in der zweiten CPU 190 läuft, sichtbar ist, oder kann jedes davon ein „verstecktes“ Register sein, das von der zweiten CPU 190 zur Steuerung ihres Betriebs verwendet wird, aber für ein Programm nicht sichtbar ist.
  • Ähnlich wie bei der ersten CPU 110 kann auf jedes der CPU-Zustandsregister 191, 192, 193, 199 durch eine eindeutige Registeradresse in einem Adressbusteil 194 eines weiteren nichtinvasiven Lesebusses zugriffen werden. In Reaktion auf einen solchen Zugriff kann ein entsprechendes Zustandsregister von den CPU-Zustandsregistern 191, 192, 193, 199 seinen Dateninhalt über ein Datenbusteil 196 des weiteren nichtinvasiven Lesebusses zu einem dedizierten CPU-Scanausgang 198 der zweiten CPU 190 übertragen. In Ausführungsformen kann der nichtinvasive Lesebus einen separaten Bus in der zweiten CPU 190 aufweisen, der einen Zugriff auf die CPU-Zustandsregister 191, 192, 193, 199 ermöglicht, ohne den Zustand der zweiten CPU 190 zu beeinträchtigen oder ohne den normalen Betrieb der zweiten CPU 190 störend zu beeinflussen.
  • Wie bei der Ausführungsform von 1, so kann ein weiterer Sequenzer 195 in der zweiten CPU 190 verwendet werden, um jedes Zustandsregister der ersten 191, der zweiten 192, der dritten 193 und der n-ten CPU-Zustandsregister 199 der zweiten CPU 190 der Reihe nach zu lesen und das Ergebnis in den dedizierten CPU-Scanausgang 198 der zweiten CPU 190 einzugeben. Darüber hinaus kann der Sequenzer 195 dafür konfiguriert sein, die Häufigkeit oder die Sequenz zu variieren, mit bzw. in der auf die ersten 191, die zweiten 192, die dritten 193 und die n-ten CPU-Zustandsregister 199 der zweiten CPU 190 zugegriffen wird, um das Gleichgewicht zwischen der Zugriffshäufigkeit und der Ausfallreaktionszeit zwischen mehr oder weniger kritischen Zustandsregistern der CPU-Zustandsregister 191,192, 193, 199 zu halten.
  • 1 zeigt, dass ein Komparator (Vergleicher) 150 den dedizierten CPU-Scanausgang 118 der ersten CPU 110 mit dem dedizierten CPU-Scanausgang 198 der zweiten CPU 190 verbinden kann. Auf diese Weise kann der Komparator 150 verwendet werden, um Inhalte von Sätzen von entsprechenden Registern der ersten CPU 110 und der zweiten CPU 190 zu vergleichen, um korrumpierte Registerinhalte zu ermitteln. So kann zum Beispiel der Inhalt des ersten Registers 111 der ersten CPU 110 mit dem Inhalt des ersten Registers 191 der zweiten CPU 190 verglichen werden, kann der Inhalt des zweiten Registers 112 der ersten CPU 110 mit dem Inhalt des zweiten Registers 192 der zweiten CPU 190 verglichen werden, kann der Inhalt des dritten Registers 113 der ersten CPU 110 mit dem Inhalt des dritten Registers 193 der zweiten CPU 190 verglichen werden und kann der Inhalt des n-ten Registers 119 der ersten CPU 110 mit dem Inhalt des n-ten Registers 199 der zweiten CPU 190 verglichen werden. Als Teil diese Prozesses zur Entdeckung eines latenten Fehlers kann ein Port des dedizierten CPU-Scanausgangs 118 der ersten CPU 110 mit dem entsprechenden, im Lockstep-Modus agierenden Port des dedizierten CPU-Scanausgangs 198 der zweiten CPU 190 verglichen werden.
  • Zu diesem Zwecke können die erste CPU 110 und die zweite CPU 190 in einem im Lockstep-Modus agierenden System arbeiten. D.h., die zweite CPU 190 kann den gleichen Prozess wie die erste CPU 110 um - zum Beispiel - zwei Taktzyklen verzögert ausführen. Auf diese Weise wird die Wahrscheinlichkeit erhöht, dass die zweite CPU 190 nicht in der gleichen Art und Weise wie die erste CPU 110 durch den Effekt, der die Registerkorrumpierung bewirkt, in Mitleidenschaft gezogen wird.
  • Folglich kann ein CPU-Zustandsregister jedes Mal dann als korrumpiert ermittelt werden, wenn der oben genannte Vergleich von entsprechenden Registern der im Lockstep-Modus agierenden, also im Gleichschritt agierenden ersten CPU 110 und zweiten CPU 190, die den gleichen Prozess mit den gleichen Eingabedaten ausführen, zu inkonsistenten CPU-Zustandsregister-Inhalten dieser entsprechenden Register fuhrt. Um zu verhindern, das dieses korrumpierte CPU-Zustandsregister den weiteren Betrieb der entsprechenden CPU beeinträchtigt, können sowohl die erste CPU 110 als auch die zweite CPU 190 auf einen Scanzustand ohne irgendeine Registerinkonsistenz zwischen der ersten CPU 110 und der zweiten CPU 190 zurückgesetzt werden und können dahingehend instruiert werden, die Anweisungen zu wiederholen, die bis zu dem Zeitpunkt ausgeführt wurden, an dem die Registerkorrumpierung stattgefunden hat. In alternativen Ausführungsformen könnte der korrekte Inhalt von inkonsistenten CPU-Zustandsregister-Inhalten durch eine Mehrheitsentscheidung zwischen entsprechenden Registern von drei oder mehr gemeinsam im Lockstep-Modus agierenden CPUs bestimmt werden, um den inkorrekten CPU-Zustandsregisterinhalt in dem entsprechenden CPU-Zustandsregister zu ersetzen, bevor irgendein weiterer Prozessbefehl in dem entsprechenden Satz von im Lockstep-Modus agierenden CPUs ausgeführt wird.
  • 2 zeigt eine Ausführungsform eines Verfahrens zum Ermitteln einer Registerkorrumpierung von redundanten CPUs, die die gleichen Eingabedaten verarbeiten bzw. mit den gleichen Eingabedaten betrieben werden, d.h. mit dem gleichen Satz von Anweisungen und Daten betrieben werden. Im Schritt 60 des Verfahrens können wenigstens zwei Mikrocontroller mit den gleichen Eingabedaten betrieben werden. Jeder der Mikrocontroller kann eine Vielzahl von Registern aufweisen.
  • Im Schritt 61 des Verfahrens können Inhalte von wenigstens einem Satz von entsprechenden Registern von der Vielzahl von Registern von verschiedenen Mikrocontrollern der Mikrocontroller durch ein Bussystem gelesen werden.
  • Darüber hinaus kann in dem optionalen Schritt 62 des Verfahrens, wie es in 2 gezeigt ist, ein Sequenzer zur Bestimmung einer Sequenz bzw. Reihenfolge verwendet werden, in der wenigstens zwei Sätze von entsprechenden Registern von der Vielzahl von Registern gelesen werden.
  • In einem weiteren Schritt 63 des Verfahrens, wie es in 2 gezeigt ist, können Inhalte von wenigstens einem Satz von entsprechenden Registern von der Vielzahl von Registern von verschiedenen Mikrocontrollern der Mikrocontroller verglichen werden.
  • Im Schritt 64 des Verfahrens können als ein Ergebnis des oben genannten Vergleichs korrumpierte Register der Mikrocontroller in der Form von entsprechenden Registern mit inkonsistenten Inhalten ermittelt werden.
  • Im Hinblick auf die oben beschriebenen Ausführungsformen, die sich auf die Figuren beziehen, wird betont, dass diese Ausführungsformen grundsätzlich dazu dienten, die Verständlichkeit zu erhöhen. Zusätzlich dazu versuchen die folgenden weiteren Ausführungsformen, ein allgemeineres Konzept zu veranschaulichen. Aber auch die folgenden Ausführungsformen sind nicht in einem beschränkenden Sinne zu betrachten.
  • Vielmehr wird der Schutzumfang der vorliegenden Erfindung - wie oben bereits zum Ausdruck gebracht worden ist - von den angehängten Patentansprüchen definiert.
  • In dieser Hinsicht bezieht sich eine erste Ausführungsform auf ein System zum Ermitteln bzw. Detektieren einer Registerkorrumpierung von redundanten CPUs, die mit den gleichen Eingabedaten betrieben werden bzw. die gleichen Eingabedaten verarbeiten, das einen separaten Bus in jeder der redundanten CPUs aufweist, um wenigstens ein vorbestimmtes Register der jeweiligen einen CPU der redundanten CPUs auf eine nichtinvasive Art und Weise zu lesen. Diese Ausführungsform weist einen Komparator zum Vergleichen von Inhalten von wenigstens einem Satz von entsprechenden Registern von verschiedenen CPUs der redundanten CPUs auf, um korrumpierte Registerinhalte zu ermitteln.
  • Eine Ausführungsform weist des Weiteren einen Sequenzer in jeder der redundanten CPUs auf, um eine Häufigkeit zu bestimmen, mit der das wenigstens eine vorbestimmte Register gelesen wird, und/oder um eine Sequenz zu bestimmen, in der wenigstens zwei vorbestimmte Register der jeweiligen einen CPU der redundanten CPUs gelesen werden.
  • In einer Ausführungsform sind die redundanten CPUs im Lockstep-Modus agierende CPUs.
  • In einer anderen Ausführungsform ist der separate Bus in jeder der redundanten CPUs dafür konfiguriert, in einer nichtinvasiven Art und Weise auf alle Architekturregister und auf wenigstens eine Teilmenge der versteckten Register der jeweiligen einen CPU der redundanten CPUs zuzugreifen.
  • In einer Ausführungsform ist jeder Sequenzer so konfiguriert, dass er wenigstens ein kritisches Register von dem wenigstens einen vorbestimmten Register häufiger liest.
  • In einer anderen Ausführungsform ist jeder Sequenzer so konfiguriert, dass er wenigstens ein kritisches Register von dem wenigstens einen vorbestimmten Register in Reaktion auf ein vorbestimmtes Ereignis liest.
  • Eine weitere Ausführungsform bezieht sich auf ein System, das wenigstens zwei Mikrocontroller aufweist, die mit den gleichen Eingabedaten betrieben werden bzw. die gleichen Eingabedaten verarbeiten. In diesem System weist jeder der Mikrocontroller eine Vielzahl von Registern auf, die den Betrieb eines jeweiligen Mikrocontrollers von den Mikrocontrollern steuern.
  • Darüber hinaus weist dieses System ein Bussystem auf, um Inhalte von wenigstens einem Satz von entsprechenden Registern von der Vielzahl von Registern von verschiedenen Mikrocontrollern von den Mikrocontrollern nichtinvasiv zu lesen und zu vergleichen, um korrumpierte Register in der Form von entsprechenden Registern mit inkonsistenten Inhalten zu ermitteln.
  • In einer Ausführungsform ist das System dafür konfiguriert, wenigstens eine Lesezugriffsadresse an die Zugriffsadresse, die einen entsprechenden, nichtinvasiven Lesezugriff durch das Bussystem auf ein entsprechendes Register von der Vielzahl von Registern initiiert, auszugeben und mit dieser zu vergleichen, um zu gewährleisten, dass keine Korrumpierung eines entsprechenden Adressfeldes während des entsprechenden nichtinvasiven Lesezugriffs stattgefunden hat.
  • Eine Ausführungsform weist des Weiteren einen Sequenzer auf, um eine Häufigkeit zu bestimmen, mit der der wenigstens eine Satz von entsprechenden Registern von der Vielzahl von Registern gelesen wird, und/oder um eine Sequenz zu bestimmen, in der wenigstens zwei Sätze von entsprechenden Registern von der Vielzahl von Registern gelesen werden.
  • In einer Ausführungsform ist der Sequenzer so konfiguriert, dass er gedrosselt werden kann, um den wenigstens einen Satz von entsprechenden Registern von der Vielzahl von Registern nur bei jedem n-ten Taktzyklus der Mikrocontroller zu lesen, um den Stromverbrauch zu reduzieren, wobei n eine vorbestimmte natürliche Zahl ist, wobei n ≥ 2 ist.
  • Eine weitere Ausführungsform weist einen Komparator auf, um die Inhalte des wenigstens einen Satzes von entsprechenden Registern von der Vielzahl von Registern der verschiedenen Mikrocontroller von den Mikrocontrollern zu vergleichen. In dieser Ausführungsform weist jeder der Mikrocontroller einen Ausgangsport zum Ausgeben von Inhalten der Vielzahl von Registern des entsprechenden einen Mikrocontrollers von den Mikrocontrollern auf, die nichtinvasiv von dem Bussystem gelesen werden.
  • Darüber hinaus ist in Übereinstimmung mit der vorliegenden Ausführungsform die Vielzahl von Registern m Bits breit, wobei die Breite des Ausgangsports nur m/n Bits breit ist, was eine reduzierte Breite des Komparators vorsieht, um den Stromverbrauch weiter zu reduzieren. In dieser Ausführungsform ist m eine vorbestimmte natürliche Zahl, wobei m = n · i ist, und ist i eine vorbestimmte natürliche Zahl, wobei i ≥ 2 ist.
  • Noch eine andere Ausführungsform bezieht sich auf ein System zum Ermitteln einer Registerkorrumpierung in CPUs, die die gleichen Eingabedaten verarbeiten bzw. mit den gleichen Eingabedaten betrieben werden, das Einrichtungen für einen nichtinvasiven Lesezugriff auf Inhalte von wenigstens einem Satz von entsprechenden Registern von Registern von verschiedenen CPUs und den Vergleich von Inhalten von wenigstens einem Satz von entsprechenden Registern von Registern von verschiedenen CPUs aufweist, um korrumpierte Register in der Form von entsprechenden Registern mit inkonsistenten Inhalten zu ermitteln.
  • In einer Ausführungsform weist diese Einrichtung wenigstens einen Bus, der den nichtinvasiven Lesezugriff auf die Register bereitstellt, wenigstens einen Sequenzer, der eine Häufigkeit und/oder Sequenz des nichtinvasiven Lesezugriffs steuert, und einen Komparator für den Vergleich der Inhalte der Register auf. Darüber hinaus weist in diesem System jede der CPUs einen Scanausgang auf, um die Inhalte der Register der entsprechenden einen CPU von den CPUs zu dem Komparator auszugeben.
  • In einer Ausführungsform ist das System so konfiguriert, dass es Inhalte einer Vielzahl von Registern der CPUs in jedem Taktzyklus der CPUs liest und ausgibt, indem es die Vielzahl von Registern in mehrere Teilblöcke teilt.
  • In einer weiteren Ausführungsform ist das System so konfiguriert, dass es eine Geschwindigkeit des nichtinvasiven Lesezugriffs in Abhängigkeit von einer benötigten Ausfallreaktionszeit einer Anwendung der CPUs variiert.
  • Eine andere Ausführungsform bezieht sich auf ein Verfahren zum Ermitteln einer Registerkorrumpierung von redundanten CPUs, die die gleichen Eingabedaten verarbeiten bzw. die mit den gleichen Eingabedaten betrieben werden. Dieses Verfahren umfasst den Schritt des nichtinvasiven Lesens wenigstens eines vorbestimmten Registers der jeweiligen einen CPU der redundanten CPUs durch einen separaten Bus in jeder der redundanten CPUs.
  • Darüber hinaus weist das Verfahren den Schritt des Vergleichens von Inhalten von wenigstens einem Satz von entsprechenden Registern von verschiedenen CPUs der redundanten CPUs durch einen Komparator auf, um korrumpierte Registerinhalte zu ermitteln.
  • In einer Ausführungsform des Verfahrens umfasst ein nichtinvasiver Lesevorgang das Verwenden eines Sequenzers in jeder der redundanten CPUs, um eine Häufigkeit zu bestimmen, mit der das wenigstens eine vorbestimmte Register gelesen wird, und/oder um eine Sequenz zu bestimmen, in der wenigstens zwei vorbestimmte Register der jeweiligen einen CPU der redundanten CPUs gelesen werden.
  • In Übereinstimmung mit einer Ausführungsform sind die redundanten CPUs im Lockstep-Modus agierende CPUs.
  • In einer Ausführungsform ist der separate Bus in jeder der redundanten CPUs so konfiguriert, dass er nichtinvasiv auf alle Architekturregister und auf wenigstens eine Teilmenge der versteckten Register der jeweiligen einen CPU der redundanten CPUs zugreift.
  • In einer weiteren Ausführungsform umfasst das Verwenden des Sequenzers das häufigere Lesen wenigstens eines kritischen Registers von dem wenigstens einen vorbestimmten Register.
  • Eine andere Ausführungsform bezieht sich auf ein Verfahren, das den Schritt des Betreibens von wenigstens zwei Mikrocontrollern mit den gleichen Eingabedaten umfasst. In diesem Verfahren weist jeder der Mikrocontroller eine Vielzahl von Registern auf, die den Betrieb eines jeweiligen einen Mikrocontrollers von den Mikrocontrollern steuert.
  • Darüber hinaus umfasst dieses Verfahren den Schritt des nichtinvasiven Lesens und des Vergleichens von Inhalten von wenigstens einem Satz von entsprechenden Registern von der Vielzahl von Registern von verschiedenen Mikrocontrollern von den Mikrocontrollern durch ein Bussystem, um korrumpierte Register in der Form von entsprechenden Registern mit inkonsistenten Inhalten zu ermitteln.
  • Eine Ausführungsform umfasst des Weiteren die Schritte des Ausgebens und des Vergleichens von wenigstens einer Lesezugriffsadresse an die Zugriffsadresse bzw. mit der Zugriffsadresse, die einen entsprechenden nichtinvasiven Lesezugriff durch das Bussystem auf ein entsprechendes Register von der Vielzahl von Registern initiiert, um zu gewährleisten, dass keine Korrumpierung eines entsprechenden Adressfeldes während des entsprechenden, nichtinvasiven Lesezugriffs stattgefunden hat.
  • In einer Ausführungsform umfasst das nichtinvasive Lesen das Verwenden eines Sequenzers für die Bestimmung einer Häufigkeit, mit der der wenigstens eine Satz von entsprechenden Registern von der Vielzahl von Registern gelesen wird, und/oder für die Bestimmung einer Sequenz, in der wenigstens zwei Sätze von entsprechenden Registern von der Vielzahl von Registern gelesen werden.
  • In einer weiteren Ausführungsform umfasst das Verwenden des Sequenzers das Drosseln des nichtinvasiven Lesens, um den wenigstens einen Satz von entsprechenden Registern von der Vielzahl von Registern nur bei jedem n-ten Taktzyklus der Mikrocontroller zu lesen, um den Stromverbrauch zu reduzieren, wobei n eine vorbestimmte natürliche Zahl ist, wobei n ≥ 2 ist.
  • Noch eine weitere Ausführungsform bezieht sich auf ein Verfahren zum Ermitteln einer CPU-Register-Korrumpierung durch redundante CPUs, die die gleichen Eingabedaten verarbeiten bzw. mit den gleichen Eingabedaten betrieben werden. Dieses Verfahren umfasst den Schritt des nichtinvasiven Lesens und des Vergleichens von Inhalten von wenigstens einem Satz von entsprechenden Registern von CPU-Registern von verschiedenen CPUs der redundanten CPUs, um korrumpierte CPU-Register in der Form von entsprechenden CPU-Registern mit inkonsistenten Inhalten zu ermitteln.
  • Obwohl hier spezifische Ausführungsformen veranschaulicht und beschrieben worden sind, wird es den Durchschnittsfachleuten auf dem Gebiet klar sein, dass eine Ersetzung durch eine Vielfalt von alternativen und/oder äquivalenten Implementierungen für die gezeigten und beschriebenen spezifischen Ausführungsformen vorgenommen werden kann, ohne dass von dem Schutzumfang der vorliegenden Erfindung abgewichen wird. Die vorliegende Patentanmeldung soll alle Anpassungen oder Variationen der spezifischen Ausführungsformen, die hier erörtert worden sind, abdecken. Deshalb soll die vorliegende Erfindung nur durch die Ansprüche und deren Äquivalente beschränkt sein.

Claims (9)

  1. System mit: wenigstens zwei Mikrocontrollern, die mit den gleichen Eingabedaten betrieben werden, wobei jeder der Mikrocontroller eine Vielzahl von Registern aufweist, die den Betrieb eines jeweiligen Mikrocontrollers steuern; einem Bussystem zum nichtinvasiven Lesen von wenigstens einem Satz von entsprechenden Registern von der Vielzahl von Registern von verschiedenen Mikrocontrollern der Mikrocontroller, wobei jeder der Mikrocontroller einen Ausgangsport aufweist, um Inhalte der Vielzahl von Registern des entsprechenden Mikrocontrollers auszugeben, die von dem Bussystem nichtinvasiv gelesen werden, wobei die Vielzahl von Registern m Bits breit ist, wobei die Breite des Ausgangsports nur m/n Bits breit ist, wodurch eine reduzierte Breite für einen Komparator bereitgestellt wird, der die Inhalte von dem wenigstens einen Satz von entsprechenden Registern von der Vielzahl von Registern von den verschiedenen Mikrocontrollern vergleicht, wobei m eine vorbestimmte natürliche Zahl ist, wobei m = n · i ist, und i eine vorbestimmte natürliche Zahl ist, wobei i ≥ 2 ist.
  2. System nach Anspruch 1, wobei das System dafür konfiguriert ist, die Inhalte von dem wenigstens einen Satz von entsprechenden Registern zu vergleichen, um korrumpierte Register in der Form von entsprechenden Registern mit inkonsistenten Inhalten zu ermitteln.
  3. System nach Anspruch 1, das dafür konfiguriert ist, wenigstens eine Lesezugriffsadresse zu einer Zugriffsadresse, die einen entsprechenden nichtinvasiven Lesezugriff durch das Bussystem auf ein entsprechendes Register von der Vielzahl von Registern initiiert, auszugeben.
  4. System nach Anspruch 3, das dafür konfiguriert ist, die Lesezugriffsadresse mit der Zugriffsadresse, die den entsprechenden nichtinvasiven Lesezugriff durch das Bussystem initiiert, zu vergleichen, um zu gewährleisten, dass keine Korrumpierung eines entsprechenden Adressfeldes während des entsprechenden nichtinvasiven Lesezugriffs stattgefunden hat.
  5. System nach Anspruch 1, wobei das System des Weiteren einen Sequenzer aufweist.
  6. System nach Anspruch 5, das dafür konfiguriert ist, mit Hilfe des Sequenzers eine Häufigkeit zu bestimmen, mit der der wenigstens eine Satz von entsprechenden Registern von der Vielzahl von Registern gelesen wird.
  7. System nach Anspruch 5 oder 6, das dafür konfiguriert ist, mit Hilfe des Sequenzers eine Sequenz zu bestimmen, in der wenigstens zwei Sätze von entsprechenden Registern von der Vielzahl von Registern gelesen werden.
  8. System nach einem der Ansprüche 5 bis 7, bei welchem der Sequenzer so konfiguriert ist, daß er gedrosselt werden kann.
  9. System nach Anspruch 8, das dafür konfiguriert ist, den Sequenzer zu drosseln, um den wenigstens einen Satz von entsprechenden Registern von der Vielzahl von Registern nur bei jedem n-ten Taktzyklus der Mikrocontroller zu lesen, um den Stromverbrauch zu reduzieren, wobei n eine vorbestimmte natürliche Zahl ist, wobei n ≥ 2 ist.
DE102013009364.3A 2012-06-05 2013-06-04 Verfahren und System zur Erkennung von latenten Fehlern in Mikrocontrollern Active DE102013009364B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/488,571 2012-06-05
US13/488,571 US8954794B2 (en) 2012-06-05 2012-06-05 Method and system for detection of latent faults in microcontrollers

Publications (2)

Publication Number Publication Date
DE102013009364A1 DE102013009364A1 (de) 2013-12-05
DE102013009364B4 true DE102013009364B4 (de) 2020-09-10

Family

ID=49579581

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013009364.3A Active DE102013009364B4 (de) 2012-06-05 2013-06-04 Verfahren und System zur Erkennung von latenten Fehlern in Mikrocontrollern

Country Status (3)

Country Link
US (1) US8954794B2 (de)
CN (1) CN103473153B (de)
DE (1) DE102013009364B4 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9459979B2 (en) * 2013-08-08 2016-10-04 International Business Machines Corporation Detection of hardware errors using redundant transactions for system test
CN107766188B (zh) * 2017-10-13 2020-09-25 交控科技股份有限公司 列车控制系统中的内存检测方法及装置
CN113238941B (zh) * 2021-05-12 2023-04-07 展讯通信(上海)有限公司 开发调试系统、方法、设备和介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4799140A (en) * 1986-03-06 1989-01-17 Orbital Sciences Corporation Ii Majority vote sequencer
US5854640A (en) * 1996-01-02 1998-12-29 Intel Corporation Method and apparatus for byte alignment of video data in a memory of a host system
US6496940B1 (en) * 1992-12-17 2002-12-17 Compaq Computer Corporation Multiple processor system with standby sparing
US20100070803A1 (en) * 2008-09-07 2010-03-18 Eads North America Defense Test And Services, Inc. Sequencer and test system including the sequencer
US20110283033A1 (en) * 2010-05-12 2011-11-17 Renesas Electronics Corporation Computer system

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404465A (en) * 1992-03-18 1995-04-04 Aeg Transportation Systems, Inc. Method and apparatus for monitoring and switching over to a back-up bus in a redundant trainline monitor system
US5903717A (en) 1997-04-02 1999-05-11 General Dynamics Information Systems, Inc. Fault tolerant computer system
US7197542B2 (en) * 2000-06-30 2007-03-27 Ponzio Jr Frank J System and method for signaling quality and integrity of data content
KR100337149B1 (ko) * 2000-07-05 2002-05-18 권 기 홍 프로그램 테스트 및 디버깅이 용이한 중앙처리장치
EP1538533A3 (de) * 2003-12-05 2006-02-22 STMicroelectronics Pvt. Ltd Verbesserter FFT/IFFT-Prozessor
US7877645B2 (en) * 2007-07-30 2011-01-25 Hewlett-Packard Development Company, L.P. Use of operational configuration parameters to predict system failures
CN101369241A (zh) 2007-09-21 2009-02-18 中国科学院计算技术研究所 一种机群容错系统、装置及方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4799140A (en) * 1986-03-06 1989-01-17 Orbital Sciences Corporation Ii Majority vote sequencer
US6496940B1 (en) * 1992-12-17 2002-12-17 Compaq Computer Corporation Multiple processor system with standby sparing
US5854640A (en) * 1996-01-02 1998-12-29 Intel Corporation Method and apparatus for byte alignment of video data in a memory of a host system
US20100070803A1 (en) * 2008-09-07 2010-03-18 Eads North America Defense Test And Services, Inc. Sequencer and test system including the sequencer
US20110283033A1 (en) * 2010-05-12 2011-11-17 Renesas Electronics Corporation Computer system

Also Published As

Publication number Publication date
CN103473153A (zh) 2013-12-25
US8954794B2 (en) 2015-02-10
CN103473153B (zh) 2016-12-07
DE102013009364A1 (de) 2013-12-05
US20130326289A1 (en) 2013-12-05

Similar Documents

Publication Publication Date Title
DE102010013349B4 (de) Computersystem und Verfahren zum Vergleichen von Ausgangssignalen
DE102009049078B4 (de) Verwendung von Ausführer-Wissen über Speicherregion-Ordnungsanforderungen zum Modifizieren von Transaktionsattributen
DE112006003598T5 (de) Fehlertolerantes Booten in Multiprozessorsystemen
DE2619159A1 (de) Fehlererkennungs- und korrektureinrichtung
EP1952239A1 (de) Vorrichtung und verfahren zum beheben von fehlern bei einem wenigstens zwei ausführungseinheiten mit registern aufweisenden system
DE102010034555A1 (de) Bereitstellen von Zustandsspeicher in einem Prozessor für Systemmanagement-Modus
DE10297166T5 (de) Mechanismus zur Interrupt-Abwicklung in Computersystemen, welche die gleichzeitige Ausführung mehrerer Threads unterstützen
DE102010052680A1 (de) Ein Befehl, um einen Prozessor-Wartezustand zu ermöglichen
EP0104635A2 (de) Verfahren und Anordnung zum Prüfen eines digitalen Rechners
DE112013002054T5 (de) Neu konfigurierbare Wiederherstellungsmodi in Hochverfügbarkeitsprozessoren
DE102007009909A1 (de) Zeitmarkentransaktionen zum Validisieren von automaren Operationen in Multiprozessor-Systemen
DE112015001477T5 (de) Hardwarezähler zum Verfolgen einer Auslastung in einem Multithreading-Computersystem
DE112016005823T5 (de) Überwachen des betriebs eines prozessors
DE102018204864A1 (de) Technologie zum Ermöglichen eines schnellen Bootens mit einem schnellen und langsamen nichtflüchtigen Speicher
DE102006039747A1 (de) Verfahren für Kontextzustandsmanagement
DE102005037230A1 (de) Verfahren und Vorrichtung zur Überwachung von Funktionen eines Rechnersystems
DE102013009364B4 (de) Verfahren und System zur Erkennung von latenten Fehlern in Mikrocontrollern
DE102022101477A1 (de) Nichtflüchtige speichervorrichtungen, systeme und verfahren für einen schnellen, sicheren, stabilen systemboot
DE112017003350T5 (de) Speicherauslesebefehle, prozessoren, verfahren und systeme, die bei defekten daten keine ausnahme annehmen
DE112020005987T5 (de) Setzen von prüfpunkten in akkumulatorregister-ergebnissen in einem mikroprozessor
DE102004034766A1 (de) Fehlererfassungsverfahren und System für Prozessoren, das verriegelungsschrittweise betriebene gleichzeitige Teilprozesse verwendet
DE102011011333B4 (de) Lesen in Peripheriegeräte und schreiben aus Peripheriegeräten mit zeitlich getrennter, redundanter Prozessorausführung
WO2007057270A1 (de) Programmgesteuerte einheit und verfahren zum betreiben derselbigen
DE112011100168T5 (de) Erfassen von Diagnosedaten in einer Datenverarbeitungsumgebung
DE112015004405T5 (de) Nichtflüchtiges speichermodul

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R082 Change of representative

Representative=s name: VIERING, JENTSCHURA & PARTNER MBB PATENT- UND , DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R082 Change of representative