-
QUERVERWEIS AUF VERWANDTE ANMELDUNG
-
Diese Anmeldung beansprucht den Vorteil unter 35 U.S.C. §119(e) des Prioritätstags der vorläufigen US-Patentanmeldung mit der Seriennummer
63/148,060 , eingereicht am 10. Februar 2021, deren gesamte Offenbarung hiermit durch diese Bezugnahme aufgenommen wird.
-
TECHNISCHES GEBIET
-
Diese Offenbarung bezieht sich im Allgemeinen auf Trap-Unterabschnitte von computerlesbaren Anweisungen und insbesondere auf den sicheren Betrieb von sicherheitskritischen Produkten, die auf Trap-Unterabschnitte von computerlesbaren Anweisungen reagieren.
-
STAND DER TECHNIK
-
Stuck-at-Fehler in Programmzählem (PCs) von Verarbeitungsschaltungen können als Reaktion auf eine Beschädigung oder einen Fehler einer oder mehrerer Halbleitervorrichtungen (z. B. Transistoren) des PC auftreten. Ein „Stuck-at-Fehler“ ist ein Fehlerzustand, bei dem die Ausgabe eines Bits unabhängig von der Programmierung auf einem bestimmten Logikpegel stehen bleibt. Zum Beispiel können hochenergetische Partikel (z. B. Strahlungsteilchen, wie Alpha-, Beta- und Gammateilchen) Materialien der Aufbau- und Verbindungstechnik einer Vorrichtung mit integrierter Schaltung durchdringen und auf einen Halbleiterchip treffen, wodurch die Schaltung, die die PC-Funktion implementiert, beschädigt werden kann. Ähnliche Probleme können durch einen Adressbus verursacht werden, bei dem eine oder mehrere Leitungen an einem bestimmten Wert hängen bleiben.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Während diese Offenbarung mit Ansprüchen schließt, die bestimmte Beispiele besonders hervorheben und eindeutig beanspruchen, können verschiedene Merkmale und Vorteile von Beispielen innerhalb des Schutzumfangs dieser Offenbarung leichter aus der folgenden Beschreibung entnommen werden, wenn sie in Verbindung mit den beigefügten Zeichnungen gelesen wird, in denen:
- 1 ein Flussdiagramm ist, das Probleme veranschaulicht, die als Reaktion auf einen Stuck-at-Fehler in einem Verfahren zum Betreiben einer Verarbeitungsschaltung auftreten können;
- 2 ein Blockdiagramm einer Verarbeitungsschaltung gemäß einigen Beispielen ist;
- 3 ein Betriebsflussdiagramm ist, das ein Beispiel eines Verfahrens zum Betreiben der Verarbeitungsschaltung von 2 gemäß einigen Beispielen veranschaulicht;
- 4 ein Betriebsflussdiagramm ist, das ein anderes Beispiel eines Verfahrens zum Betreiben der Verarbeitungsschaltung von 2 gemäß einigen Beispielen veranschaulicht;
- 5 ein Betriebsflussdiagramm ist, das noch ein anderes Beispiel eines Verfahrens zum Betreiben der Verarbeitungsschaltung von 2 gemäß einigen Beispielen veranschaulicht;
- 6 ein Blockdiagramm eines sicherheitskritischen Systems, das die Verarbeitungsschaltung von 3 einschließt, gemäß einigen Beispielen ist;
- 7 ein Flussdiagramm ist, das ein Verfahren zum Betreiben einer Verarbeitungsschaltung gemäß einigen Beispielen veranschaulicht; und
- 8 ein Blockdiagramm einer Schaltlogik ist, die in einigen Beispielen verwendet werden kann, um verschiedene hierin offenbarte Funktionen, Vorgänge, Handlungen, Prozesse und/oder Verfahren zu implementieren.
-
ART(EN) ZUM AUSFÜHREN DER ERFINDUNG
-
In der folgenden detaillierten Beschreibung wird auf die beiliegenden Zeichnungen Bezug genommen, die einen Teil hiervon bilden und in denen zur Veranschaulichung spezifische Beispiele gezeigt sind, in denen die vorliegende Offenbarung ausgeübt werden kann. Diese Beispiele sind hinreichend detailliert beschrieben, um es Durchschnittsfachleuten zu ermöglichen, die vorliegende Offenbarung in die Praxis umzusetzen. Es können jedoch auch andere hierin ermöglichte Beispiele genutzt werden, und Änderungen der Struktur, des Materials und des Prozesses können vorgenommen werden, ohne vom Schutzumfang der Offenbarung abzuweichen.
-
Die hierin dargestellten Veranschaulichungen sollen keine tatsächlichen Ansichten eines bestimmten Verfahrens oder Systems oder einer bestimmten Vorrichtung oder Struktur sein, sondern sind lediglich idealisierte Darstellungen, die zum Beschreiben der Beispiele der vorliegenden Offenbarung verwendet werden. Ähnliche Strukturen oder Komponenten in den verschiedenen Zeichnungen können in manchen Fällen zum Vereinfachen für den Leser die gleiche oder eine ähnliche Nummerierung beibehalten; die Ähnlichkeit in der Nummerierung bedeutet jedoch nicht notwendigerweise, dass die Strukturen oder Komponenten in Größe, Zusammensetzung, Konfiguration oder einer anderen Eigenschaft identisch sind.
-
Die folgende Beschreibung kann Beispiele einschließen, um es Durchschnittsfachleuten zu ermöglichen, die offenbarten Beispiele auszuüben. Die Verwendung der Begriffe „beispielhaft“, „als Beispiel“ und „zum Beispiel“ bedeutet, dass die zugehörige Beschreibung erläuternd ist, und obwohl der Schutzumfang der Offenbarung die Beispiele und ihre rechtlichen Äquivalente umfassen soll, ist die Verwendung dieser Begriffe nicht dazu bestimmt, den Schutzumfang eines Beispiels oder dieser Offenbarung auf die spezifizierten Komponenten, Schritte, Merkmale, Funktionen oder dergleichen einzuschränken.
-
Es versteht sich von selbst, dass die Komponenten der Beispiele, wie sie hierin allgemein beschrieben und in der Zeichnung veranschaulicht sind, in einer Vielzahl unterschiedlicher Konfigurationen angeordnet und gestaltet werden können. Somit soll die folgende Beschreibung verschiedener Beispiele den Schutzumfang der vorliegenden Offenbarung nicht einschränken, sondern ist lediglich für verschiedene Beispiele repräsentativ. Während die verschiedenen Gesichtspunkte der Beispiele in den Zeichnungen dargestellt sein können, sind die Zeichnungen nicht notwendigerweise maßstabsgetreu gezeichnet, sofern nicht ausdrücklich angegeben.
-
Des Weiteren sind die gezeigten und beschriebenen spezifischen Implementierungen nur Beispiele und sollten nicht als die einzige Möglichkeit zum Implementieren der vorliegenden Offenbarung ausgelegt werden, sofern hierin nicht anders angegeben. Elemente, Schaltungen und Funktionen können in Blockdiagrammform gezeigt sein, um die vorliegende Offenbarung nicht durch unnötige Details undeutlich werden zu lassen. Umgekehrt sind gezeigte und beschriebene spezifische Implementierungen nur beispielhaft und sollten nicht als die einzige Möglichkeit zur Implementierung der vorliegenden Offenbarung ausgelegt werden, sofern hierin nicht anders angegeben. Außerdem sind Blockdefinitionen und die Aufteilung von Logik zwischen verschiedenen Blöcken beispielhaft für eine spezifische Implementierung. Es ist für den Durchschnittsfachmann ohne Weiteres ersichtlich, dass die vorliegende Offenbarung durch zahlreiche andere Aufteilungslösungen ausgeübt werden kann. Auf Details zu zeitlichen Erwägungen und dergleichen wurde größtenteils verzichtet, soweit solche Details für ein vollständiges Verständnis der vorliegenden Offenbarung nicht erforderlich sind und innerhalb der Fähigkeiten von Durchschnittsfachleuten liegen.
-
Der Durchschnittsfachmann wird verstehen, dass Informationen und Signale unter Verwendung einer Vielfalt verschiedener Technologien und Techniken dargestellt werden können. Manche Zeichnungen können Signale zur Übersichtlichkeit der Darstellung und Beschreibung als ein einzelnes Signal veranschaulichen. Ein Durchschnittsfachmann wird verstehen, dass das Signal einen Bus von Signalen darstellen kann, wobei der Bus eine Vielfalt von Bitbreiten aufweisen kann und die vorliegende Offenbarung auf einer beliebigen Anzahl von Datensignalen, einschließlich eines einzelnen Datensignals, implementiert werden kann.
-
Die verschiedenen veranschaulichenden logischen Blöcke, Module und Schaltungen, die in Verbindung mit den hierin offenbarten Beispielen beschrieben sind, können mit einem Universalprozessor, einem Spezialprozessor, einem Digitalsignalprozessor (DSP), einer integrierten Schaltung (IC), einer anwendungsspezifischen integrierten Schaltung (ASIC), einem feldprogrammierbaren Gate-Array (FPGA) oder einer anderen programmierbaren Logikvorrichtung, einer diskreten Gate- oder Transistorlogik, diskreten Hardwarekomponenten oder einer beliebigen Kombination davon, die zum Durchführen der hierin beschriebenen Funktionen ausgelegt sind, implementiert oder durchgeführt werden. Ein Universalprozessor (der hierin auch als Hostprozessor oder einfach als Host bezeichnet werden kann) kann ein Mikroprozessor sein, aber alternativ kann es sich auch um einen beliebigen herkömmlichen Prozessor, einen Controller, einen Mikrocontroller oder eine Zustandsmaschine handeln. Ein Prozessor kann auch als eine Kombination von Rechenvorrichtungen, wie eine Kombination aus einem DSP und einem Mikroprozessor, eine Vielzahl von Mikroprozessoren, ein oder mehrere Mikroprozessoren in Verbindung mit einem DSP-Kern oder eine beliebige andere derartige Konfiguration implementiert sein. Ein Universalcomputer einschließlich eines Prozessors gilt als ein Spezialcomputer, während der Universalcomputer Rechenanweisungen (z. B. einen Softwarecode) ausführt, die sich auf Beispiele der vorliegenden Offenbarung beziehen.
-
Die Beispiele können in Bezug auf einen Prozess beschrieben sein, der als ein Flussdiagramm, ein Fließschema, ein Strukturdiagramm oder ein Blockdiagramm dargestellt ist. Obwohl ein Flussdiagramm Vorgangshandlungen als einen sequentiellen Prozess beschreiben kann, können viele dieser Handlungen in einer anderen Abfolge, parallel oder im Wesentlichen gleichzeitig durchgeführt werden. Außerdem kann die Reihenfolge der Handlungen geändert werden. Ein Prozess kann einem Verfahren, einem Thread, einer Funktion, einer Prozedur, einer Subroutine, einem Unterprogramm, einer anderen Struktur oder Kombinationen davon entsprechen. Des Weiteren können die hierin offenbarten Verfahren in Hardware, Software oder beidem implementiert werden. Bei Implementieren in Software können die Funktionen als eine oder mehrere Anweisungen oder als Code auf computerlesbaren Medien gespeichert oder übertragen werden. Computerlesbare Medien schließen sowohl Computerspeichermedien als auch Kommunikationsmedien, einschließlich aller Medien, welche die Übertragung eines Computerprogramms von einem Ort zu einem anderen unterstützen, ein.
-
Jeder Verweis auf ein Element hierin unter Verwendung einer Bezeichnung, wie „erste/r/s“, „zweite/r/s“ usw. schränkt die Menge oder Reihenfolge dieser Elemente nicht ein, es sei denn, eine solche Einschränkung wird ausdrücklich angegeben. Vielmehr können diese Bezeichnungen hierin als ein zweckmäßiges Verfahren zum Unterscheiden zwischen zwei oder mehr Elementen oder Instanzen eines Elements verwendet werden. Eine Bezugnahme auf ein erstes und ein zweites Element bedeutet also nicht, dass dort nur zwei Elemente eingesetzt werden dürfen oder dass das erste Element dem zweiten Element in irgendeiner Art und Weise vorausgehen muss. Außerdem kann ein Satz von Elementen, sofern nicht anders angegeben, ein oder mehrere Elemente einschließen.
-
Wie hierin verwendet, bedeutet der Begriff „im Wesentlichen“ in Bezug auf einen gegebenen Parameter, eine gegebene Eigenschaft oder eine gegebene Bedingung und schließt in einem für den Durchschnittsfachmann verständlichen Ausmaß ein, dass der gegebene Parameter, die gegebene Eigenschaft oder die gegebene Bedingung mit einem geringen Maß an Varianz, wie zum Beispiel innerhalb annehmbarer Fertigungstoleranzen, erfüllt ist. Beispielhaft kann in Abhängigkeit von dem bestimmten Parameter, der bestimmten Eigenschaft oder der bestimmten Bedingung, der bzw. die im Wesentlichen erfüllt ist, der Parameter, die Eigenschaft oder die Bedingung zu mindestens 90 % erfüllt, zu mindestens 95 % erfüllt oder sogar zu mindestens 99 % erfüllt sein.
-
Bei sicherheitskritischen Produkten ist es erforderlich, Fehler in Verarbeitungsschaltungen (z. B. Mikrocontrollern) zu testen oder zu erfassen (z. B. zu diagnostizieren), um den sicheren Betrieb des Produkts sicherstellen zu können. Als nicht einschränkendes Beispiel kann ein sicherheitskritisches Produkt, das die Steuerung eines Ventils zum Aktivieren und Deaktivieren des Durchflusses eines entflammbaren Fluids durch das Ventil beinhaltet, auf unvorhersehbare und gefährliche Weise funktionieren, wenn in einem Programmzähler einer Verarbeitungsschaltung oder eines Adressbusses ein Stuck-at-Fehler auftritt. Der Durchfluss von entflammbarem Fluid zu einem unerwünschten Zeitpunkt kann zu Verletzungen oder zum Tod einer oder mehrerer Personen und/oder zur Beschädigung oder Zerstörung von Ausrüstung, Einrichtungen und/oder der Umgebung führen.
-
Empfohlene und ausreichende Diagnosetests sind durch Standards, wie IEC 60730, spezifiziert. IEC 60730, Anhang H, Tabelle H.1 spezifiziert, dass Diagnosetests Stuck-at-Fehler im Programmzähler (PC) identifizieren müssen.
-
Diagnosetests für Stuck-at-Fehler im Programmzähler werden durchgeführt, indem getestet wird, dass keine Bits hängen bleiben. Ein Watchdog-Timer wird verwendet, um die MCU oder einen anderen Prozessor einer sicherheitskritischen Vorrichtung zurückzusetzen, wenn ein unerwarteter Programmfluss/Zeitablauf auftritt, um Stuck-at-Fehler im Programmzähler abzufangen, die während der Laufzeit auftreten und durch den Diagnosetest nicht erfasst werden.
-
Wenn jedoch ein Bit im Programmzähler oder in einem Adressbus hängen bleibt, ist die Verarbeitungsschaltung möglicherweise nicht in der Lage, Anweisungen in der erwarteten Reihenfolge auszuführen. Dies kann dazu führen, dass der Diagnosetest nicht oder nicht wie vorgesehen ausgeführt werden kann. Der Fehlererfassungsmechanismus wird durch Fehler beeinflusst und kann daher nicht als unabhängiger Sicherheitsmechanismus betrachtet werden. Die erfolgreiche Ausführung des Diagnosetests erfordert, dass keine Stuck-at-Fehler im Programmzähler vorliegen, was bedeutet, dass der Fehlererfassungsmechanismus seinen Zweck nicht erfüllt und nicht zu Recht behauptet werden kann, dass er erfolgreich zur Sicherheit des Systems beiträgt. Im Falle eines Stuck-at-Fehlers im Programmzähler ist der Watchdog-Timer die einzige und letzte Verteidigungslinie, aber da der Watchdog-Timer häufig durch Software initialisiert wird, kann die erfolgreiche Initialisierung des Watchdog-Timers davon abhängen, ob Stuck-at-Fehler im Programmzähler vorliegen oder nicht. In der Praxis bedeutet dies, dass die Fähigkeit eines softwareinitialisierten Watchdog-Timers, Fehler zu erfassen, ebenfalls beeinträchtigt ist, da auch er von dem Fehler betroffen ist. Der Erfinder dieser Offenbarung hat nun erkannt, dass jede Annahme, dass eine Kombination aus einem softwareinitialisierten Watchdog-Timer und einer Diagnose, die verifiziert, dass keine Stuck-at-Fehler vorliegen, funktionieren wird, unsicher ist, da ein Stuck-at-Fehler verhindern kann, dass die Initialisierung des Watchdog-Timers, die Diagnose oder beides ordnungsgemäß funktioniert.
-
Viele sicherheitskritische Systeme verwenden möglicherweise ein Verfahren zur Stuck-at-Diagnose eines Programmzählers, das in der Praxis nicht notwendigerweise funktioniert und daher potenziell unsicher ist. Hierin offenbarte Beispiele für Programmzähler-Stuck-at-Trapper können im Wesentlichen alle Einzelbit-Stuck-at-Fehler des Programmzählers abfangen, unabhängig davon, ob der Watchdog-Timer durch Software initialisiert wird, um wie vorgesehen zu arbeiten.
-
1 ist ein Flussdiagramm, das Probleme veranschaulicht, die als Reaktion auf einen Stuck-at-Fehler in einem Verfahren 100 zum Betreiben einer Verarbeitungsschaltung (z. B. einer CPU) auftreten können. Wenn ein Bit hoch hängen bleibt, ist die Hälfte der Anweisungsadressen für die Verarbeitungsschaltung unzugänglich. Wenn keine Stuck-at-Bits (z. B. Stuck-at-High-Bits oder Stuck-at-Low-Bits) vorliegen, kann das Verfahren 100 in einem normalen Betriebsfluss fortfahren, der unter Verwendung von durchgezogenen Linien gezeigt wird. Gestrichelte Linien veranschaulichen dagegen einen anormalen Betriebsfluss des Verfahrens 100 als Reaktion auf einen Einzelbitfehler 114 (z. B. einen Stuck-at-High-Fehler).
-
Bei normalem Betrieb (keine Stuck-at-Fehler) kann das Verfahren 100 bei Vorgang 102 das Auslösen eines Rücksetzvorgangs einschließen. Bei Vorgang 104 schließt das Verfahren 100 ein, dass die CPU mit der Ausführung ab der Adresse 0x0000 beginnt. Da keine Stuck-at-Fehler den Programmzähler beeinträchtigen, der auf die Adresse 0x0000 zeigt, kann das der Adresse 0x0000 zugeordnete Programm ausgeführt werden, und das Verfahren 100 kann dementsprechend bei Vorgang 106 zu einer bekannten Adresse springen, um einen Watchdog-Timer bei Vorgang 108 zu initialisieren. Bei Vorgang 110 kann das Verfahren 100 das Ausführen eines Diagnosetests (z. B. eines Stuck-at-Diagnosetests für den Programmzähler und/oder den Adressbus, der auf Stuck-at-Fehler getestet werden soll) einschließen. Als Reaktion auf das Bestehen des Stuck-at-Diagnosetests kann das Verfahren 100 mit dem Vorgang 112 fortfahren, bei dem das Verfahren 100 das Ausführen einer Anwendung einschließt. Das Verfahren 100 kann periodisch zu Vorgang 110 zurückkehren, um den Stuck-at-Diagnosetest auszuführen, und zu Vorgang 112 zurückkehren, um die Anwendung während des normalen Betriebs auszuführen.
-
Wenn der Programmzähler jedoch einem Stuck-at-Fehler, wie dem Einzelbitfehler 114 unterliegt, kann das Verfahren 100 als Reaktion auf das Auslösen des Rücksetzvorgangs bei Vorgang 102 ein Springen zu einer unbekannten Adresse bei Vorgang 116 einschließen. Dementsprechend kann das Verfahren 100 anstatt mit der Ausführung ab der Adresse 0x0000 bei Vorgang 104 zu beginnen, stattdessen einschließen, dass die CPU mit der Ausführung ab einer anderen Adresse, die ein Bit von der Adresse 0x0000 entfernt ist, beginnt. Als spezifische, nicht einschränkende Beispiele kann die CPU bei Vorgang 118 mit der Ausführung ab der Adresse 0x0001 beginnen, bei Vorgang 120 kann die CPU mit der Ausführung ab der Adresse 0x0002 beginnen, bei Vorgang 122 kann die CPU mit der Ausführung ab der Adresse 0x0004 beginnen oder bei Vorgang 124 kann die CPU mit der Ausführung ab der Adresse 0x8000 beginnen. Infolgedessen kann die CPU bei Vorgang 126 einen unbekannten Block von Anweisungen außerhalb der Sequenz ausführen, ohne den Watchdog-Timer zu initialisieren (Vorgang 108), ohne einen Stuck-at-Diagnosetest für den Programmzähler auszuführen (z. B. Vorgang 110) und ohne die Anwendung auszuführen (Vorgang 112). Mit anderen Worten erreicht das Verfahren 100, als Reaktion auf den Einzelbitfehler 114, möglicherweise nie Vorgang 108 (Initialisieren des Watchdog-Timers), Vorgang 110 (Ausführen von Stuck-at-Diagnosetests für den Programmzähler) oder Vorgang 112 (Ausführen der Anwendung).
-
Wie in 1 veranschaulicht, können beliebige von verschiedenen unbekannten Anweisungsblöcken, die beliebigen von verschiedenen Adressen zugeordnet sind, als Reaktion auf den Einzelbitfehler 114 bei Vorgang 126 schließlich ausgeführt werden. Zum Beispiel sei A ein Satz von Anweisungsadressen und F ein Stuck-at-Fehler-Wert von 2^n, wobei n die Bitadresse des Bits ist, das hoch hängen bleibt. Wenn also ein Stuck-at-High-Bitfehler vorhanden ist, werden alle Adressen A als A|F (wobei _|_ der bitweise ODER-Operator ist) und nicht als A ausgeführt. Wenn zum Beispiel Bit 0 hoch hängen bleibt, wird die Anweisungsadresse 0x0000 durch 0x0001 ersetzt, wird 0x0002 durch 0x0003 ersetzt und so weiter. Ein ähnliches Problem besteht, wenn ein Programmzählerbit niedrig hängen bleibt. Merkmale eines einzelnen Stuck-at-Fehlers schließen ein:
- • Nur die Hälfte der Anweisungsadressen ist für den Verarbeitungskern zugänglich
- • Eine zufällige Anweisung weist eine Wahrscheinlichkeit einer fehlerhaften Ausführung von 50 % auf
- • Statistisch gesehen besteht nach nur zehn Anweisungen eine Wahrscheinlichkeit einer fehlerhaften Ausführung von 99,9 % (unter Annahme einer vereinheitlichten Wahrscheinlichkeit für jede Adresse, auf die zugegriffen werden soll)
-
Ein Merkmal eines Stuck-at-High schließt ein, dass die Adresse 0x0000 immer fehlerhaft ausgeführt wird. Ein Merkmal eines Stuck-at-Low schließt ein, dass die Adresse 0x0000 immer korrekt ausgeführt wird und die Adresse 0xFFFF immer fehlerhaft ausgeführt wird.
-
2 ist ein Blockdiagramm einer Verarbeitungsschaltung 200 gemäß einigen Beispielen. Die Verarbeitungsschaltung 200 schließt einen Verarbeitungskern 202 und eine Datenspeichervorrichtung 204 ein. Der Verarbeitungskern 202 schließt einen Programmzähler 208 zum Durchlaufen von Adressen ein. Eine aktuelle Adresse 210 ist in dem Programmzähler 208 von 2 angegeben. Der Verarbeitungskern 202 schließt auch eine Code-Ausführungslogik 252 ein, um computerlesbare Anweisungen 206 auszuführen, die durch die Datenspeichervorrichtung 204 gespeichert werden.
-
Die computerlesbaren Anweisungen 206 schließen Unterabschnitte der computerlesbaren Anweisungen (z. B. einen ersten Unterabschnitt 212, einen zweiten Unterabschnitt 218, erste Trap-Unterabschnitte 224, zweite Trap-Unterabschnitte 226 und Anwendungsunterabschnitte 240) ein. Die Unterabschnitte der computerlesbaren Anweisungen 206 sollen den Verarbeitungskern 202 anweisen, Unterprogramme auszuführen. Jeder Unterabschnitt der computerlesbaren Anweisungen 206 entspricht einem der jeweiligen Unterprogramme. Zum Beispiel entspricht der erste Unterabschnitt 212 einem ersten Unterprogramm 232, entspricht der zweite Unterabschnitt 218 einem zweiten Unterprogramm 234, entsprechen die ersten Trap-Unterabschnitte 224 ersten Trap-Unterprogrammen 236, entsprechen die zweiten Trap-Unterabschnitte 226 zweiten Trap-Unterprogrammen 238 und entsprechen die Anwendungsunterabschnitte 240 Anwendungsunterprogrammen 244.
-
Die Unterabschnitte der computerlesbaren Anweisungen 206 befinden sich an Orten der Datenspeichervorrichtung 204. Wie hierin verwendet, bezieht sich der Begriff „Ort“ bei Verwendung in Bezug auf einen Ort von Daten oder computerlesbaren Anweisungen, die in einer Datenspeichervorrichtung gespeichert sind, auf logische Orte, physische Orte oder beides. Als nicht einschränkende Beispiele können die Orte physischen Orten von physischen Datenspeicherelementen (z. B. Speicherzellen), die die entsprechenden Unterabschnitte der computerlesbaren Anweisungen 206 speichern, oder logischen Orten, die solchen physischen Orten entsprechen, entsprechen. Zum Beispiel wird der erste Unterabschnitt 212 an einem ersten Ort 214 gespeichert, der zweite Unterabschnitt 218 wird an einem zweiten Ort 222 gespeichert, die ersten Trap-Unterabschnitte 224 werden an jeweiligen ersten Trap-Orten 254 gespeichert, die zweiten Trap-Unterabschnitte 226 werden an jeweiligen zweiten Trap-Orten 256 gespeichert und die Anwendungsunterabschnitte 240 werden an jeweiligen Anwendungsorten 258 gespeichert.
-
Die Orte der Unterabschnitte der computerlesbaren Anweisungen 206 werden unter Verwendung von Adressen angegeben. Zum Beispiel befindet sich der erste Unterabschnitt 212 an dem ersten Ort 214, der unter Verwendung einer ersten Adresse 216 (z. B. 0x0000) angegeben wird. Der zweite Unterabschnitt 218 befindet sich an dem zweiten Ort 222, der unter Verwendung einer zweiten Adresse 220 (z. B. der Bootend- oder Speicherendadresse 0xFFFF, die einem Bootend- oder Speicherendort entspricht) angegeben wird. Die ersten Trap-Unterabschnitte 224 befinden sich an den jeweiligen ersten Trap-Orten 254, die unter Verwendung von jeweiligen ersten Trap-Adressen 228 (z. B. 0x0001, ..., 0x8000) angegeben werden. Die zweiten Trap-Unterabschnitte 226 befinden sich an den jeweiligen zweiten Trap-Orten 256, die unter Verwendung von jeweiligen zweiten Trap-Adressen 230 (z. B. 0x7FFF, ..., 0xFFFE) angegeben werden, und die Anwendungsunterabschnitte 240 befinden sich an den jeweiligen Anwendungsorten 258, die durch jeweilige Anwendungsadressen 242 angegeben werden (wobei z. B. eine der Anwendungsadressen eine Anwendungsstartadresse ist).
-
Im Betrieb durchläuft die aktuelle Adresse 210 Adressen, die den Unterabschnitten der computerlesbaren Anweisungen 206 entsprechen, die auf einer Datenspeichervorrichtung 204 gespeichert sind. Der Verarbeitungskern 202 stellt der Datenspeichervorrichtung 204 (z. B. über einen Adressbus 246) eine aktuelle Adresse 210 bereit. Als Reaktion auf die aktuelle Adresse 210 stellt die Datenspeichervorrichtung 204 dem Verarbeitungskern 202 (z. B. über einen Datenbus 248) einen aktuellen Unterabschnitt 250 (d. h. einen der Unterabschnitte der computerlesbaren Anweisungen 206, der sich an einem durch die aktuelle Adresse 210 angegebenen Ort befindet) bereit.
-
Die erste Adresse 216 umfasst eine Vielzahl von Bits, und jede der ersten Trap-Adressen 228 unterscheidet sich von der ersten Adresse 216 durch ein einzelnes jeweiliges Bit. Als nicht einschränkendes Beispiel kann die erste Adresse 216 eine aufeinanderfolgende Reihe von Nullen sein. Da sich die ersten Trap-Adressen 228 jeweils nur durch ein Einzelbit von der ersten Adresse 216 unterscheiden, wobei die erste Adresse 216 0x0000 (hexadezimal, was 16 aufeinanderfolgenden Nullen im Binärformat entspricht) ist, können die ersten Trap-Adressen 228 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080, 0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, 0x4000 und 0x8000 sein. Die ersten Trap-Unterabschnitte 224 weisen den Verarbeitungskern 202 an, die jeweiligen ersten Trap-Unterprogramme 236 auszuführen, um zu der ersten Adresse 216 oder zu sich selbst zurück zu springen. Wenn ein Stuck-at-High den Verarbeitungskern 202 veranlasst, einen der ersten Trap-Unterabschnitte 224 abzurufen und eines der ersten Trap-Unterprogramme 236 auszuführen, anstatt den ersten Unterabschnitt 212 abzurufen und das erste Unterprogramm 232 auszuführen, kann einer der ersten Trap-Unterabschnitte 224 wiederholt abgerufen und kann das entsprechende der ersten Trap-Unterprogramme 236 wiederholt ausgeführt werden. Dementsprechend bleibt der Verarbeitungskern 202 als Reaktion auf einen einzelnen Stuck-at-Fehler des Programmzählers 208 oder des Adressbusses 246 in einer Endlosschleife des Ausführens eines der ersten Trap-Unterprogramme 236 hängen.
-
In einigen Beispielen weist der erste Unterabschnitt 212 den Verarbeitungskern 202 an, das erste Unterprogramm 232 auszuführen, um zu der zweiten Adresse 220 zu springen. Infolgedessen kann in dem Fall, dass die erste Adresse 216 eine aufeinanderfolgende Reihe von Nullen ist, wenn keine Stuck-at-High-Fehler an dem Programmzähler 208 vorhanden sind, die aktuelle Adresse 210 des Programmzählers 208 auf die zweite Adresse 220 aktualisiert werden (z. B. eine aufeinanderfolgende Reihe von Einsen: 0xFFFF, die Bootend-Adresse oder die Speicherendadresse). Die zweite Adresse 220 kann ein Einerkomplement der ersten Adresse 216 sein, um die Erfassung aller Stuck-at-Fehler durch die Ausführung des ersten Unterprogramms 232 und des zweiten Unterprogramms 234 zu ermöglichen. Mit anderen Worten ermöglichen das erste Unterprogramm 232 und die ersten Trap-Unterprogramme 236 die Erfassung von Stuck-at-High-Fehlern, und das zweite Unterprogramm 234 und die zweiten Trap-Unterprogramme 238 ermöglichen die Erfassung von Stuck-at-Low-Fehlern.
-
Die zweiten Trap-Adressen 230 unterscheiden sich von der zweiten Adresse 220 nur durch ein Einzelbit. Zum Beispiel, wenn die zweite Adresse 220 0xFFFF (hexadezimal, was 16 aufeinanderfolgenden Einsen im Binärformat entspricht) ist, können die zweiten Trap-Unterabschnitte 226 an den Adressen 230 0x7FFF, 0xBFFF, 0xDFFF, 0xEFFF, 0xF7FF, 0xFBFF, 0xFDFF, 0xFEFF, 0xFF7F, 0xFFBF, 0xFFDF, 0xFFEF, 0xFFF7, 0xFFFB, 0xFFFD und 0xFFFE sein. Die zweiten Trap-Unterabschnitte 226 weisen den Verarbeitungskern 202 an, die zweiten Trap-Unterprogramme 238 auszuführen, um zu der zweiten Adresse 220, zurück zu sich selbst oder zu der ersten Adresse 216 zu springen. Wenn ein Stuck-at-Low den Verarbeitungskern 202 veranlasst, einen der zweiten Trap-Unterabschnitte 226 abzurufen und eines der zweiten Trap-Unterprogramme 238 auszuführen, anstatt den zweiten Unterabschnitt 218 abzurufen und das zweite Unterprogramm 234 auszuführen, kann einer der zweiten Trap-Unterabschnitte 226 wiederholt abgerufen und kann das entsprechende der zweiten Trap-Unterprogramme 238 wiederholt ausgeführt werden. Dementsprechend bleibt der Verarbeitungskern 202 als Reaktion auf einen einzelnen Stuck-at-Low-Fehler des Programmzählers 208 oder des Adressbusses 246 in einer Endlosschleife des Ausführens eines der zweiten Trap-Unterprogramme 238 hängen.
-
Um alle möglichen Ein-Bit-Stuck-at-Fehler abzufangen, ist die Anzahl, d. h. die Menge, der ersten Trap-Unterabschnitte 224 und der zweiten Trap-Unterabschnitte 226 jeweils gleich einer Anzahl von Bits der Adressen, d. h. für Adressen mit X Bits sind X erste Trap-Unterabschnitte 224 und X zweite Trap-Unterabschnitte 226 vorhanden.
-
In einigen Beispielen schließt die Verarbeitungsschaltung 200 einen Watchdog-Timer 260 ein, um Stuck-at-Fehler des Programmzählers 208 während der Laufzeit zu erfassen. Der Watchdog-Timer 260 leitet als Reaktion auf das Erfassen eines Fehlers, wie eines Stuck-at-Fehlers des Programmzählers 208, einen Rücksetzvorgang ein, z. B. weil der Watchdog-Timer 260 vor Ablauf der Zeit nicht zurückgesetzt wird. Nach dem Rücksetzvorgang bleibt der Verarbeitungskern 202 in einer Endlosschleife des Ausführens eines der ersten Trap-Unterprogramme 236 oder der zweiten Trap-Unterprogramme 238 hängen, wie vorstehend erörtert. In einigen Beispielen kann der Watchdog-Timer 260 unabhängig von den computerlesbaren Anweisungen 206 implementiert werden, um zu verhindern, dass Stuck-at-Fehler den Betrieb des Watchdog-Timers 260 beeinträchtigen. In einigen Beispielen kann ein (nicht gezeigter) Watchdog-Timer außerhalb der Verarbeitungsschaltung 200 verwendet werden. In einigen Beispielen leitet der Watchdog-Timer 260 den Rücksetzvorgang unabhängig von dem Verarbeitungskern 202 ein.
-
3 ist ein Betriebsflussdiagramm, das ein Beispiel eines Verfahrens 300 zum Betreiben der Verarbeitungsschaltung 200 von 2 gemäß einigen Beispielen veranschaulicht. 3 ist mit einem 16-Bit-Programmzähler 208 (2) gezeigt. Die Implementierung deckt alle Einzelbit-Stuck-at-Fehler ab, die nach einem Rücksetzvorgang auftreten. Bei der Implementierung wird angenommen, dass die erste ausgeführte Anweisung an Adresse 0x0000 erfolgt. Es ist zu beachten, dass stattdessen auch ein Programmzähler mit einer anderen Anzahl von Bits implementiert werden kann und dass ein 16-Bit-Programmzähler 208 hierin lediglich als Beispiel erörtert wird. Zum Beispiel kann die Implementierung angepasst werden, um mit Programmzählern anderer Größe (z. B. 8-Bit-, 32-Bit-, 64-Bit-Programmzählern), d. h. anderen als 16-Bit-Programmzählem, zu arbeiten. Die Implementierung kann angepasst werden, um mit anderen Startadressen als 0x0000 zu arbeiten
-
Der normale Betrieb (z. B. der Betrieb ohne einen einzelnen Stuck-at-High-Bitfehler 314 oder einen einzelnen Stuck-at-Low-Bitfehler 316) der Verarbeitungsschaltung 200 (2) ist in 3 unter Verwendung von Pfeilen mit durchgezogenen Linien angegeben, und der anormale Betrieb der Verarbeitungsschaltung 200 ist unter Verwendung von Pfeilen mit gestrichelten Linien angegeben. Bei Vorgang 302 schließt das Verfahren 300 das Auslösen eines Rücksetzvorgangs ein. Bei normalem Betrieb (keine Stuck-at-Fehler, wie ein einzelner Stuck-at-High-Bitfehler 314 oder ein einzelner Stuck-at-Low-Bitfehler 316) kann der Programmzähler 208 nach dem Auslösen des Rücksetzvorgangs auf 0x0000 eingestellt werden und einen Sprung zur Speicherendadresse 0xFFFF (z. B. JMP 0xFFFF) bei Vorgang 304 ausführen. Als Reaktion auf die Ausführung des Sprungs zur Speicherendadresse bei Vorgang 304, d. h. zur Speicheradresse 0xFFFF, schließt das Verfahren 300 das Ausführen eines Sprungs zu einem Start der Anwendung bei Vorgang 306 ein (z. B. JMP, Start der Anwendung von der Speicheradresse 0xFFFF). Werden keine Fehler erfasst, so schließt das Verfahren 300 bei Vorgang 308 das Ausführen einer Anwendung ein.
-
Wenn jedoch der Programmzähler 208 oder der Adressbus 246 (2) einem einzelnen Stuck-at-High-Bitfehler 314 unterliegt, kann anstelle eines Rücksetzvektors (Adresse 0x0000) eines von mehreren Stuck-at-High-Traps 310 ausgeführt werden. Die ersten Trap-Adressen 228 (2), die diesen Stuck-at-High-Traps 310 zugeordnet sind, können sich um ein Bit von der anfänglichen Rücksetzadresse 0x0000 unterscheiden, wie 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080, 0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, 0x4000 und 0x8000. In dem in 3 veranschaulichten Beispiel führt jede der Stuck-at-High-Traps 310 einen Sprung zu 0x0000 (Rücksetzvektoradresse) aus. Aufgrund des einzelnen Stuck-at-High-Bitfehlers 314 wird jedoch das gleiche der Stuck-at-High-Traps 310 ausgeführt, wodurch das Verfahren 300 in eine wiederholte Ausführung des einen der Stuck-at-High-Traps 310 abgefangen wird. Dementsprechend fährt die Verarbeitungsschaltung 200 (2) in einem sicheren Betrieb fort, d. h. ohne zu einer unbekannten Adresse zu springen.
-
Wenn der Programmzähler 208 oder der Adressbus 246 einem einzelnen Stuck-at-Low-Bitfehler 316 unterliegt, wird der Rücksetzvektor (0x0000) korrekt ausgeführt. Es kann jedoch eines von mehreren Stuck-at-Low-Traps 312 anstelle von 0xFFFF (Ende des Programmspeichers) bei Vorgang 306 ausgeführt werden. Die zweiten Trap-Adressen 230 (2), die diesen Stuck-at-Low-Traps 312 zugeordnet sind, können sich um ein Bit von 0xFFFF unterscheiden, wie 0x7FFF, 0xBFFF, 0xDFFF, 0XEFFF, 0xF7FF, 0xFBFF, 0xFDFF, 0xFEFF, 0xFF7F, 0xFFBF, 0xFFDF, 0xFFEF, 0xFFF7, 0xFFFB, 0xFFFD und 0xFFFE. In dem in 3 veranschaulichten Beispiel kann jedes der Stuck-at-Low-Traps 312 ausgeführt werden, um zu 0xFFFF zu springen. Aufgrund des einzelnen Stuck-at-Low-Bitfehler 316 wird jedoch das gleiche der Stuck-at-Low-Traps 312 ausgeführt, wodurch das Verfahren 300 in eine wiederholte Ausführung des einen der Stuck-at-Low-Traps 312 abgefangen wird. Dementsprechend fährt die Verarbeitungsschaltung 200 (2) in einem sicheren Betrieb fort, d. h. ohne zu einer unbekannten Adresse zu springen.
-
Beispiele der Offenbarung fangen alle Einzelbit-Programmzähler-Stuck-at-Fehler sicher ab. Wie zuvor erörtert, können hierin offenbarte Beispiele in Kombination mit einem Watchdog-Timer verwendet werden, der einen unabhängigen Überwachungsmechanismus für Zeitschlitze implementiert, sodass zur Laufzeit auftretende Stuck-at-Fehler durch den Watchdog-Timer erfasst werden (unabhängig von einer fehlerhaften Ausführung von Code, die durch Stuck-at-Fehler des Programmzählers verursacht wird), der dann von einem anderen System überwacht werden kann, um die wiederholte Ausführung eines der Stuck-at-High-Traps 310 oder eines der Stuck-at-Low-Traps 312 zu identifizieren. Der Watchdog-Timer erzeugt unabhängig von der CPU ein RESET und ermöglicht es dadurch dem Stuck-at-Trapper des Programmzählers, das System nach einem Rücksetzvorgang in einem sicheren Zustand zu halten. Sobald der Stuck-at-Trapper durch den Fehler ausgelöst wurde, bleibt das System sicher, selbst wenn der Watchdog-Timer nicht durch Software initialisiert werden kann.
-
Alternativ zum Springen zu den Stuck-at-High-Traps 310, die zu der Adresse 0x0000 springen, kann ein Stuck-at-High-Trap 310 zu sich selbst springen. In ähnlicher Weise kann ein Stuck-at-Low-Trap 312 anstatt zu 0xFFFF zu springen zu sich selbst springen. Ein Beispiel für diese Alternative wird in Bezug auf 4 beschrieben.
-
4 ist ein Betriebsflussdiagramm, das ein anderes Beispiel eines Verfahrens 400 zum Betreiben der Verarbeitungsschaltung 200 von 2 gemäß einigen Beispielen veranschaulicht. Das Verfahren 400 ist ähnlich dem Verfahren 300 von 3. Zum Beispiel schließt das Verfahren 400 die Vorgänge 302, 304, 306 und 308 ein, die vorstehend unter Bezugnahme auf 3 erörtert wurden. Im Gegensatz zu den Stuck-at-High-Traps 310 von 3, die ausgeführt werden, um zu 0x0000 zu springen, schließt das Verfahren 400 Stuck-at-High-Traps 402 ein, die ausgeführt werden, um zu sich selbst zu springen (JMP SELF). Im Gegensatz zu den Stuck-at-Low-Traps 312 von 3, die ausgeführt werden, um zu 0xFFFF zu springen, schließt das Verfahren 400 auch Stuck-at-Low-Traps 404 ein, die ausgeführt werden, um zu sich selbst zu springen (JMP SELF).
-
Wenn der Programmzähler 208 dem einzelnen Stuck-at-High-Bitfehler 314 unterliegt, kann eines von mehreren Stuck-at-High-Traps 402 anstelle des Rücksetzvektors (Adresse 0x0000) ausgeführt werden. In dem in 4 veranschaulichten Beispiel kann jedes der Stuck-at-High-Traps 402 ausgeführt werden, um zu sich selbst zu springen, was wiederum ausgeführt wird, um zum gleichen der Stuck-at-High-Traps 402, d. h. zu sich selbst, zu springen. Die Sprünge zurück zu sich selbst werden ständig wiederholt, wodurch das Verfahren 400 in eine wiederholte Ausführung eines der Stuck-at-High-Traps 402 abgefangen wird. Dementsprechend fährt die Verarbeitungsschaltung 200 (2) in einem sicheren Betrieb fort, d. h. ohne zu einer unbekannten Adresse zu springen.
-
Wenn der Programmzähler 208 einem einzelnen Stuck-at-Low-Bitfehler 316 unterliegt, wird der Rücksetzvektor (0x0000) korrekt ausgeführt. Es kann jedoch eines von mehreren Stuck-at-Low-Traps 404 anstelle von 0xFFFF ausgeführt werden. In dem in 4 veranschaulichten Beispiel kann jedes der Stuck-at-Low-Traps 404 ausgeführt werden, um zu sich selbst zu springen, was wiederum ausgeführt wird, um erneut zu sich selbst (d. h. dem gleichen der Stuck-at-Low-Traps 404) zu springen. Sprünge zurück zum gleichen der Stuck-at-Low-Traps 404 werden ständig wiederholt, wodurch das Verfahren 400 in eine wiederholte Ausführung eines der Stuck-at-Low-Traps 404 abgefangen wird. Dementsprechend fährt die Verarbeitungsschaltung 200 (2) in einem sicheren Betrieb fort, d. h. ohne zu einer unbekannten Adresse zu springen.
-
5 ist ein Betriebsflussdiagramm, das noch ein anderes Beispiel eines Verfahrens 500 zum Betreiben der Verarbeitungsschaltung 200 von 2 gemäß einigen Beispielen veranschaulicht. Das Verfahren 500 ist ähnlich dem Verfahren 300 von 3. Zum Beispiel schließt das Verfahren 500 die Vorgänge 302, 304, 306 und 308 ein, die vorstehend unter Bezugnahme auf 3 erörtert wurden. Das Verfahren 500 schließt auch die Stuck-at-High-Traps 310 ein, die vorstehend unter Bezugnahme auf 3 erörtert wurden. Im Gegensatz zu den Stuck-at-Low-Traps 312 von 3, die ausgeführt werden, um zu 0xFFFF zu springen, schließt das Verfahren 500 jedoch Stuck-at-Low-Traps 502 ein, die ausgeführt werden, um zum anfänglichen Rücksetzvektor 0x0000 (JMP 0x0000) zu springen.
-
Als Reaktion auf den einzelnen Stuck-at-High-Bitfehler 314 kann das Verfahren 500 ähnlich wie das Verfahren 300 von 3 betrieben werden, da das Verfahren 500 die Stuck-at-High-Traps 310 von 3 einschließt. Außerdem wird als Reaktion auf den einzelnen Stuck-at-Low-Bitfehler 316 der Rücksetzvektor (0x0000) korrekt ausgeführt. Es kann jedoch eines von mehreren Stuck-at-Low-Traps 502 anstelle von Vorgang 306 bei 0xFFFF ausgeführt werden. In dem in 5 veranschaulichten Beispiel kann jedes der Stuck-at-Low-Traps 502 ausgeführt werden, um zu dem Rücksetzvektor 0x0000 zu springen. In Abwesenheit eines einzelnen Stuck-at-High-Bitfehlers 314 kann der Vorgang 304 korrekt ausgeführt werden, um zu 0xFFFF zu springen, aber als Reaktion auf den einzelnen Stuck-at-Low-Bitfehler 316 kann das gleiche der Stuck-at-Low-Traps 502, das zuvor den Sprung zurück zum Rücksetzvektor 0x0000 ausgeführt hat, erneut ausgeführt werden, um erneut zurück zum Rücksetzvektor 0x0000 zu springen. Sprünge zurück zum Rücksetzvektor, die Ausführung von Vorgang 304 und der einzelne Stuck-at-Low-Bitfehler 316 können sich ständig wiederholen, wodurch das Verfahren 500 in eine wiederholte Ausführung eines der Stuck-at-Low-Traps 502 abgefangen wird. Dementsprechend fährt die Verarbeitungsschaltung 200 (2) in einem sicheren Betrieb fort, d. h. ohne zu einer unbekannten Adresse zu springen.
-
6 ist ein Blockdiagramm eines sicherheitskritischen Systems 600, das die Verarbeitungsschaltung 200 von 2 gemäß einigen Beispielen einschließt. Das sicherheitskritische System 600 schließt auch eine sicherheitskritische Vorrichtung 602 ein, die durch die Verarbeitungsschaltung 200 gesteuert wird.
-
Als nicht einschränkendes Beispiel kann die sicherheitskritische Vorrichtung 602 ein Ventil einschließen, das den Durchfluss eines entflammbaren Fluids zulässt und einschränkt. Ebenfalls als nicht einschränkendes Beispiel kann die sicherheitskritische Vorrichtung 602 eine medizinische Vorrichtung (z. B. einen Herzschrittmacher, ein Beatmungsgerät, ein Dialysegerät, eine lebenserhaltende Vorrichtung usw.) eine elektrische Infrastrukturvorrichtung (z. B. eine Sicherung, einen Leistungsschalter, einen Alarm usw.), ein Kernkraftsystem, eine Fahrzeugbremse, andere sicherheitskritische Vorrichtungen oder Kombinationen davon einschließen.
-
Da die Verarbeitungsschaltung 200 den Betrieb der Verarbeitungsschaltung 200 als Reaktion auf Einzelbit-Stuck-at-Fehler in dem Programmzähler 208 oder in dem Adressbus 246 (2) in eine Endlosschleife abfängt, kann die Verarbeitungsschaltung 200 keine zufälligen Anwendungsunterprogramme 244 (2) durchlaufen, was einen unsicheren Betrieb der sicherheitskritischen Vorrichtung 602 verhindern kann.
-
7 ist ein Flussdiagramm, das ein Verfahren 700 zum Betreiben einer Verarbeitungsschaltung (z. B. der Verarbeitungsschaltung 200 von 2) gemäß einigen Beispielen veranschaulicht. Bei Vorgang 702 schließt das Verfahren 700 das Erfassen eines Fehlers im Betrieb der Verarbeitungsschaltung während der Laufzeit der Verarbeitungsschaltung ein. Als nicht einschränkendes Beispiel kann das Erfassen des Fehlers das Erfassen eines Stuck-at-Fehlers durch eines von einem Watchdog-Timer (z. B. den Watchdog-Timer 260 von 2) oder einen Diagnosetest einschließen. Bei Vorgang 704 schließt das Verfahren 700 das Zurücksetzen des Betriebs der Verarbeitungsschaltung als Reaktion auf den erfassten Fehler ein.
-
Bei Vorgang 706 schließt das Verfahren 700 das Einleiten des Durchlaufens von Adressen in einem Programmzähler (z. B. dem Programmzähler 208 von 2, ohne Einschränkung) mit einer ersten Adresse (z. B. der ersten Adresse 216 von 2, ohne Einschränkung) ein, die einem ersten Unterabschnitt (z. B. dem ersten Unterabschnitt 212 von 2, ohne Einschränkung) von computerlesbaren Anweisungen (z. B. den computerlesbaren Anweisungen 206 von 2, ohne Einschränkung), die von einer Datenspeichervorrichtung (z. B. der Datenspeichervorrichtung 204 von 2, ohne Einschränkung) an einem ersten Ort (z. B. an dem ersten Ort 214 von 2, ohne Einschränkung) gespeichert werden. Bei Vorgang 712 schließt das Verfahren 700 das Ausführen eines ersten Trap-Unterprogramms, das einem entsprechenden Trap-Unterabschnitt der computerlesbaren Anweisungen entspricht, als Reaktion auf die erste Adresse im Programmzähler und einen ersten Typ eines Stuck-at-Fehlers (z. B. einen Stuck-at-High-Fehler) des Programmzählers oder des Adressbusses ein, um zur ersten Adresse oder zurück zu sich selbst zu springen.
-
Bei Vorgang 708 schließt das Verfahren 700 das Ausführen eines ersten Unterprogramms, das dem ersten Unterabschnitt der computerlesbaren Anweisungen entspricht, als Reaktion darauf, dass die erste Adresse im Programmzähler und Adressbus den ersten Typ von Stuck-at-Fehler nicht enthält, ein, um zu einer zweiten Adresse zu springen, die einem zweiten Unterabschnitt der computerlesbaren Anweisungen an einem zweiten Ort der Datenspeichervorrichtung entspricht. Bei Vorgang 714 schließt das Verfahren 700 das Ausführen eines zweiten Trap-Unterprogramms, das einem zweiten Trap-Unterabschnitt der computerlesbaren Anweisungen entspricht, als Reaktion auf die zweite Adresse im Programmzähler und einen zweiten Typ eines Stuck-at-Fehlers (z. B. einen Stuck-at-Low-Fehler) des Programmzählers oder des Adressbusses ein, um zur zweiten Adresse, zurück zu sich selbst oder zur ersten Adresse zu springen. Pfeile mit gestrichelten Linien werden von Vorgang 714 zu Vorgang 706 und Vorgang 714 gezogen, um anzugeben, dass entweder Vorgang 706 oder Vorgang 714 als Reaktion auf Vorgang 714 ausgeführt werden kann.
-
Bei Vorgang 710 schließt das Verfahren 700 das Ausführen eines zweiten Unterprogramms, das einem zweiten Unterabschnitt der computerlesbaren Anweisungen entspricht, als Reaktion darauf, dass die zweite Adresse im Programmzähler und Adressbus den zweiten Typ von Stuck-at-Fehler nicht enthält, ein, um zu einer Anwendungsstartadresse zu springen, die einem Anwendungsunterabschnitt der computerlesbaren Anweisungen und einem Anwendungsunterprogramm entspricht.
-
Die Vorgänge 702 und 704 sind unter Verwendung von gestrichelten Linien angegeben, um anzugeben, dass diese Vorgänge nur ausgeführt werden können, wenn der Stuck-at-Fehler während einer Laufzeit der Verarbeitungsschaltung auftritt. Tritt der Stuck-at-Fehler außerhalb der Laufzeit der Verarbeitungsschaltung auf, kann das Verfahren 700 bei Vorgang 706 beginnen.
-
Es versteht sich für den Durchschnittsfachmann, dass Funktionselemente von hierin offenbarten Beispielen (z. B. Funktionen, Vorgänge, Handlungen, Prozesse und/oder Verfahren) in jeder geeigneten Hardware, Software, Firmware oder Kombinationen davon implementiert werden können. 8 veranschaulicht nicht einschränkende Beispiele von Implementierungen von hierin offenbarten Funktionselementen. In einigen Beispielen können einige oder alle Abschnitte der hierin offenbarten Funktionselemente durch Hardware durchgeführt werden, die speziell zum Ausführen der Funktionselemente konfiguriert ist.
-
8 ist ein Blockdiagramm einer Schaltlogik 800, die in einigen Beispielen verwendet werden kann, um verschiedene hierin offenbarte Funktionen, Vorgänge, Handlungen, Prozesse und/oder Verfahren zu implementieren. Die Schaltlogik 800 schließt einen oder mehrere Prozessoren 802 (hierin manchmal als „Prozessoren 802“ bezeichnet) ein, die betriebsfähig mit einer oder mehreren Datenspeichervorrichtungen (hierin manchmal als „Speicher 8004“ bezeichnet) gekoppelt sind. Der Speicher 804 schließt einen darauf gespeicherten maschinenausführbaren Code 806 ein, und die Prozessoren 802 schließen eine Logikschaltlogik 808 ein. Der maschinenausführbare Code 806 schließt Informationen ein, die Funktionselemente beschreiben, die durch die Logikschaltlogik 808 implementiert (z. B. durchgeführt) werden können. Die Logikschaltlogik 808 ist dafür geeignet, die durch den maschinenausführbaren Code 806 beschriebenen Funktionselemente zu implementieren (z. B. durchzuführen). Die Schaltlogik 800 sollte bei der Ausführung der durch den maschinenausführbaren Code 806 beschriebenen Funktionselemente als Spezialhardware zum Ausführen von hierin offenbarten Funktionselementen betrachtet werden. In einigen Beispielen können die Prozessoren 802 die durch den maschinenausführbaren Code 806 beschriebenen Funktionselemente nacheinander, gleichzeitig (z. B. auf einer oder mehreren unterschiedlichen Hardwareplattformen) oder in einem oder mehreren parallelen Prozessströmen durchführen.
-
Wenn der maschinenausführbare Code 806 von der Logikschaltlogik 808 der Prozessoren 802 implementiert wird, passt er die Prozessoren 802 an, um Vorgänge von hierin erörterten Beispiele durchzuführen. Zum Beispiel kann der maschinenausführbare Code 806 die Prozessoren 802 so anpassen, dass sie mindestens einen Abschnitt oder eine Gesamtheit des Verfahrens 300 von 3, des Verfahrens 400 von 4, des Verfahrens 500 von 5 und/oder des Verfahrens 700 von 7 durchführen. Als weiteres Beispiel kann der maschinenausführbare Code 806 die Prozessoren 802 so anpassen, dass sie mindestens einen Abschnitt oder eine Gesamtheit der für die Verarbeitungsschaltung 200 von 2 erörterten Vorgänge durchzuführen.
-
Die Prozessoren 802 können einen Universalprozessor, einen Spezialprozessor, eine zentrale Verarbeitungseinheit (CPU), einen Mikrocontroller, eine speicherprogrammierbare Steuerung (SPS), einen Digitalsignalprozessor (DSP), eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA) oder eine andere programmierbare Logikvorrichtung, diskrete Gate- oder Transistorlogik, diskrete Hardwarekomponenten, eine andere programmierbare Vorrichtung oder eine beliebige Kombination davon, die zum Durchführen der hierin offenbarten Funktionen ausgelegt ist, einschließen. Ein Universalcomputer, einschließlich eines Prozessors, wird als Spezialcomputer betrachtet, während der Universalcomputer Funktionselemente ausführt, die dem maschinenausführbaren Code 806 (z. B. Softwarecode, Firmwarecode, Hardwarebeschreibungen) entsprechen, der sich auf Beispiele der vorliegenden Offenbarung bezieht. Es ist zu beachten, dass ein Universalprozessor (der hierin auch als Hostprozessor oder einfach als Host bezeichnet werden kann) ein Mikroprozessor sein kann, aber alternativ können die Prozessoren 802 jeden herkömmlichen Prozessor, jede herkömmliche Steuerung, jeden herkömmlichen Mikrocontroller oder jede herkömmliche Zustandsmaschine einschließen. Die Prozessoren 802 können auch als eine Kombination von Rechenvorrichtungen, wie eine Kombination aus einem DSP und einem Mikroprozessor, eine Vielzahl von Mikroprozessoren, ein oder mehrere Mikroprozessoren in Verbindung mit einem DSP-Kern oder eine beliebige andere derartige Konfiguration implementiert sein.
-
In einigen Beispielen schließt der Speicher 804 einen flüchtigen Datenspeicher (z. B. einen Direktzugriffsspeicher (RAM)), einen nichtflüchtigen Datenspeicher (z. B. einen Flash-Speicher, ein Festplattenlaufwerk, ein Solid-State-Laufwerk, einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM) usw.) ein. In einigen Beispielen können die Prozessoren 802 und der Speicher 804 in einer einzelnen Vorrichtung (z. B. einem Halbleitervorrichtungsprodukt, einem System-on-Chip (SOC) usw.) implementiert sein. In einigen Beispielen können die Prozessoren 802 und der Speicher 804 in getrennten Vorrichtungen implementiert sein.
-
In einigen Beispielen kann der maschinenausführbare Code 806 computerlesbare Anweisungen (z. B. Softwarecode, Firmwarecode) einschließen. Als nicht einschränkendes Beispiel können die computerlesbaren Anweisungen durch den Speicher 804, auf den die Prozessoren 802 direkt zugreifen können, gespeichert werden und durch die Prozessoren 802 unter Verwendung mindestens der Logikschaltlogik 808 ausgeführt werden. Ebenfalls als nicht einschränkendes Beispiel können die computerlesbaren Anweisungen auf dem Speicher 804 gespeichert, zur Ausführung an eine Speichervorrichtung (nicht gezeigt) übertragen und durch die Prozessoren 802 unter Verwendung mindestens der Logikschaltlogik 808 ausgeführt werden. Dementsprechend schließt die Logikschaltlogik 808 in einigen Beispielen eine elektrisch konfigurierbare Logikschaltlogik 808 ein.
-
In einigen Beispielen kann der maschinenausführbare Code 806 Hardware (z. B. Schaltlogik) beschreiben, die in der Logikschaltlogik 808 zu implementieren ist, um die Funktionselemente durchzuführen. Diese Hardware kann auf einer Vielfalt von Abstraktionsebenen beschrieben werden, von Low-Level-Transistor-Layouts bis hin zu High-Level-Beschreibungssprachen. Auf einer hohen Abstraktionsebene kann eine Hardwarebeschreibungssprache (HDL), wie eine IEEE-Standard-Hardwarebeschreibungssprache (HDL), verwendet werden. Als nicht einschränkende Beispiele können Verilog™, SystemVerilog™ oder Hardwarebeschreibungssprachen (VHDL™) mit Very Large Scale Integration (VLSI) verwendet werden.
-
HDL-Beschreibungen können nach Belieben in Beschreibungen auf einer beliebigen von zahlreichen anderen Abstraktionsebenen umgewandelt werden. Als nicht einschränkendes Beispiel kann eine Beschreibung auf hoher Ebene in eine Beschreibung auf Logikebene umgewandelt werden, wie eine Registerübertragungssprache (RTL), eine Beschreibung auf Gate-Ebene (GL), eine Beschreibung auf Layout-Ebene oder eine Beschreibung auf Masken-Ebene. Als nicht einschränkendes Beispiel können Mikrovorgänge, die durch Hardwarelogikschaltungen (z. B. Gates, Flip-Flops, Register, ohne Einschränkung) der Logikschaltlogik 808 durchgeführt werden sollen, in einer RTL beschrieben und dann durch ein Synthese-Tool in eine GL-Beschreibung umgewandelt werden, und die GL-Beschreibung kann durch ein Platzierungs- und Routing-Tool in eine Beschreibung auf Layout-Ebene umgewandelt werden, die einem physischen Layout einer integrierten Schaltung einer programmierbaren Logikvorrichtung, einer diskreten Gate- oder Transistorlogik, diskreten Hardwarekomponenten oder Kombinationen davon entspricht. Dementsprechend kann der maschinenausführbare Code 806 in einigen Beispielen eine HDL-, eine RTL-, eine GL-Beschreibung, eine Masken-Ebenen-Beschreibung, eine andere Hardwarebeschreibung oder eine beliebige Kombination davon einschließen.
-
In Beispielen, in denen der maschinenausführbare Code 806 eine Hardwarebeschreibung (auf beliebiger Abstraktionsebene) einschließt, kann ein System (nicht gezeigt, aber den Speicher 804 einschließend) die durch den maschinenausführbaren Code 806 beschriebene Hardwarebeschreibung implementieren. Als ein nicht einschränkendes Beispiel können die Prozessoren 802 eine programmierbare Logikvorrichtung (z. B. eine FPGA oder eine SPS) einschließen, und die Logikschaltlogik 808 kann elektrisch gesteuert werden, um eine der Hardwarebeschreibung entsprechende Schaltlogik in der Logikschaltlogik 808 zu implementieren. Ebenfalls als nicht einschränkendes Beispiel kann die Logikschaltlogik 808 eine festverdrahtete Logik einschließen, die von einem Fertigungssystem (nicht gezeigt, aber den Speicher 804 einschließend) gemäß der Hardwarebeschreibung des maschinenausführbaren Codes 806 hergestellt wird.
-
Ungeachtet dessen, ob der maschinenausführbare Code 806 computerlesbare Anweisungen oder eine Hardwarebeschreibung einschließt, ist die Logikschaltlogik 808 dafür ausgelegt, die durch den maschinenausführbaren Code 806 beschriebenen Funktionselemente durchzuführen, wenn die Funktionselemente des maschinenausführbaren Codes 806 implementiert werden. Es sei darauf hingewiesen, dass, obwohl eine Hardwarebeschreibung Funktionselemente möglicherweise nicht direkt beschreibt, eine Hardwarebeschreibung indirekt Funktionselemente beschreibt, welche die durch die Hardwarebeschreibung beschriebenen Hardwareelemente durchführen können.
-
Ausführungsbeispiele
-
Es folgt eine nicht erschöpfende, nicht einschränkende Liste von Beispielen. Bei nicht jedem der nachstehend aufgeführten Beispiele wird ausdrücklich und einzeln angegeben, dass es mit allen anderen der nachstehend aufgeführten Beispiele und vorstehend erörterten Beispiele kombinierbar ist. Es ist jedoch vorgesehen, dass diese Beispiele mit allen anderen Beispielen kombinierbar sind, es sei denn, es wäre für Durchschnittsfachleute offensichtlich, dass die Beispiele nicht kombinierbar sind.
-
Beispiel 1: Eine Einrichtung, umfassend: einen Verarbeitungskern, der einen Programmzähler zum Durchlaufen von Adressen einschließt; und eine Datenspeichervorrichtung mit darauf gespeicherten computerlesbaren Anweisungen, wobei die computerlesbaren Anweisungen Unterabschnitte der computerlesbaren Anweisungen einschließen, um den Verarbeitungskern anzuweisen, Unterprogramme auszuführen, wobei jeder Unterabschnitt der computerlesbaren Anweisungen einem der Unterprogramme entspricht, wobei Orte der Unterabschnitte der computerlesbaren Anweisungen innerhalb der Datenspeichervorrichtung den Adressen zugeordnet sind, wobei die Unterabschnitte einschließen: einen ersten Unterabschnitt an einem ersten Ort innerhalb der Datenspeichervorrichtung, die durch eine erste Adresse angegeben wird; und erste Trap-Unterabschnitte an ersten Trap-Orten innerhalb der Datenspeichervorrichtung, wobei die ersten Trap-Unterabschnitte durch jeweilige erste Trap-Adressen angegeben werden, wobei sich die ersten Trap-Adressen von der ersten Adresse nur durch ein Einzelbit unterscheiden, wobei die ersten Trap-Unterabschnitte den Verarbeitungskern anweisen, jeweilige erste Trap-Unterprogramme auszuführen, um zu einer der ersten Adresse oder zu sich selbst zu springen.
-
Beispiel 2: Die Einrichtung von Beispiel 1, wobei die erste Adresse eine aufeinanderfolgende Reihe von Nullen ist.
-
Beispiel 3. Die Einrichtung nach einem der Beispiele 1 und 2, wobei die erste Adresse eine Vielzahl von Bits umfasst, wobei sich jede der ersten Trap-Adressen von der ersten Adresse durch ein einzelnes jeweiliges Bit unterscheidet.
-
Beispiel 4: Die Einrichtung nach einem der Beispiele 1 bis 3, wobei die Unterabschnitte einschließen: einen zweiten Unterabschnitt an einem zweiten Ort innerhalb der Datenspeichervorrichtung, der durch eine zweite Adresse angegeben wird, wobei die zweite Adresse ein Einerkomplement der ersten Adresse ist, wobei der erste Unterabschnitt den Verarbeitungskern anweisen soll, ein erstes Unterprogramm auszuführen, um zur zweiten Adresse zu springen; und zweite Trap-Unterabschnitte an zweiten Trap-Orten innerhalb der Datenspeichervorrichtung, wobei die zweiten Trap-Orte durch zweite Trap-Adressen angegeben werden, wobei sich die zweiten Trap-Adressen von der zweiten Adresse nur durch ein Einzelbit unterscheiden, wobei die zweiten Trap-Unterabschnitte den Verarbeitungskern anweisen, zweite Trap-Unterprogramme auszuführen, um zur zweiten Adresse oder zu sich selbst zu springen.
-
Beispiel 5: Die Einrichtung von Beispiel 4, wobei eine der ersten Adresse und der zweiten Adresse eine aufeinanderfolgende Reihe von Nullen ist und die andere der ersten Adresse und der zweiten Adresse eine aufeinanderfolgende Reihe von Einsen ist.
-
Beispiel 6: Die Einrichtung nach einem der Beispiele 1 bis 5, wobei die Unterabschnitte einschließen: einen zweiten Unterabschnitt an einem zweiten Ort innerhalb der Datenspeichervorrichtung, der durch eine zweite Adresse angegeben wird, wobei die zweite Adresse ein Einerkomplement der ersten Adresse ist, wobei der erste Unterabschnitt den Verarbeitungskern anweisen soll, ein erstes Unterprogramm auszuführen, um zur zweiten Adresse zu springen; und zweite Trap-Unterabschnitte an zweiten Trap-Orten innerhalb der Datenspeichervorrichtung, wobei die zweiten Trap-Orte durch zweite Trap-Adressen angegeben werden, wobei sich die zweiten Trap-Adressen von der zweiten Adresse nur durch ein Einzelbit unterscheiden, wobei die zweiten Trap-Unterabschnitte den Verarbeitungskern anweisen sollen, zweite Trap-Unterprogramme auszuführen, um zur zweiten Adresse, zu sich selbst oder zur ersten Adresse zu springen.
-
Beispiel 7: Die Einrichtung von Beispiel 6, umfassend einen Adressbus, der den Programmzähler elektrisch mit der Datenspeichervorrichtung verbindet, wobei die zweiten Trap-Unterabschnitte einen Sprung zu einer unbekannten Adresse im Falle eines einzelnen Stuck-at-Low-Bitfehlers an einem oder mehreren von dem Adressbus oder dem Programmzähler verhindern.
-
Beispiel 8: Die Einrichtung nach einem der Beispiele 1 bis 7, umfassend einen Watchdog-Timer zum Erfassen eines Fehlers des Programmzählers oder eines Adressbusses, der den Programmzähler während der Laufzeit elektrisch mit der Datenspeichervorrichtung verbindet, wobei der Watchdog-Timer als Reaktion auf das Erfassen des Fehlers des Programmzählers während der Laufzeit einen Rücksetzvorgang einleitet.
-
Beispiel 9: Die Einrichtung von Beispiel 8, wobei der Watchdog-Timer unabhängig von den Unterprogrammen implementiert ist.
-
Beispiel 10: Die Einrichtung nach einem der Beispiele 8 und 9, wobei der Watchdog-Timer den Rücksetzvorgang unabhängig vom Verarbeitungskern einleitet.
-
Beispiel 11: Die Einrichtung nach einem der Beispiele 8 bis 10, wobei der Watchdog-Timer in einer vom Verarbeitungskern getrennten Hardware implementiert ist.
-
Beispiel 12: Die Einrichtung nach einem der Beispiele 1 bis 11, umfassend einen Adressbus, der den Programmzähler elektrisch mit der Datenspeichervorrichtung verbindet, wobei die ersten Trap-Unterabschnitte einen Sprung zu einer unbekannten Adresse im Falle eines einzelnen Stuck-at-High-Bitfehler bei einem oder mehreren von dem Adressbus oder dem Programmzähler verhindern.
-
Beispiel 13: Ein System, umfassend: eine sicherheitskritische Vorrichtung und eine Verarbeitungsschaltung zum Steuern der sicherheitskritischen Vorrichtung, wobei die Verarbeitungsschaltung umfasst: einen Verarbeitungskern, der einen Programmzähler zum Durchlaufen von Adressen einschließt; eine Datenspeichervorrichtung mit darauf gespeicherten computerlesbaren Anweisungen, wobei die computerlesbaren Anweisungen Unterabschnitte der computerlesbaren Anweisungen einschließen, wobei die Unterabschnitte den Verarbeitungskern anweisen, Unterprogramme auszuführen, wobei die Unterabschnitte einschließen: einen ersten Unterabschnitt an einem ersten Ort innerhalb der Datenspeichervorrichtung, die durch eine erste Adresse der Adressen angegeben wird; erste Trap-Unterabschnitte an ersten Trap-Orten innerhalb der Datenspeichervorrichtung, wobei die ersten Trap-Orte durch jeweilige erste Trap-Adressen der Adressen angegeben werden, wobei sich die ersten Trap-Adressen von der ersten Adresse nur durch ein einzelnes jeweiliges Bit unterscheiden, wobei die ersten Trap-Unterabschnitte den Verarbeitungskern anweisen, erste Trap-Unterprogramme auszuführen, um zur ersten Adresse oder zurück zu sich selbst zu springen; einen zweiten Unterabschnitt an einem zweiten Ort innerhalb der Datenspeichervorrichtung, die durch eine zweite Adresse der Adressen angegeben wird, wobei die zweite Adresse ein Einerkomplement der ersten Adresse ist, wobei der erste Unterabschnitt den Verarbeitungskern anweisen soll, ein erstes Unterprogramm auszuführen, um zur zweiten Adresse zu springen; und zweite Trap-Unterabschnitte an zweiten Trap-Orten innerhalb der Datenspeichervorrichtung, wobei die zweiten Trap-Orte durch jeweilige zweite Trap-Adressen der Adressen angegeben werden, wobei sich die zweiten Trap-Adressen von der zweiten Adresse nur durch ein einzelnes jeweiliges Bit unterscheiden, wobei die zweiten Trap-Unterabschnitte den Verarbeitungskern anweisen sollen, zweite Trap-Unterprogramme auszuführen, um zur zweiten Adresse, zu sich selbst oder zur ersten Adresse zu springen.
-
Beispiel 14: Das System von Beispiel 13, wobei Anzahlen der ersten Trap-Unterabschnitte und der zweiten Trap-Unterabschnitte jeweils gleich einer Anzahl von Bits der Adressen sind.
-
Beispiel 15: Ein Verfahren zum Betreiben einer Verarbeitungsschaltung, wobei das Verfahren umfasst: Einleiten des Durchlaufens von Adressen in einem Programmzähler mit einer ersten Adresse, die einem ersten Unterabschnitt von computerlesbaren Anweisungen entspricht, die von einer Datenspeichervorrichtung an einem ersten Ort gespeichert werden; Ausführen, als Reaktion auf die erste Adresse im Programmzähler und einen ersten Typ eines Stuck-at-Fehlers des Programmzählers oder eines Adressbusses, eines ersten Trap-Unterprogramms, das einem ersten Trap-Unterabschnitt der computerlesbaren Anweisungen entspricht, um zur ersten Adresse oder zu sich selbst zu springen; Ausführen, als Reaktion darauf, dass die erste Adresse im Programmzähler und Adressbus den ersten Typ von Stuck-at-Fehler nicht enthält, eines ersten Unterprogramms, das dem ersten Unterabschnitt der computerlesbaren Anweisungen entspricht, um zu einer zweiten Adresse zu springen, die einem zweiten Unterabschnitt der computerlesbaren Anweisungen an einem zweiten Ort der Datenspeichervorrichtung entspricht; und Ausführen, als Reaktion auf die zweite Adresse im Programmzähler und einen zweiten Typ eines Stuck-at-Fehlers des Programmzählers oder des Adressbusses, eines zweiten Trap-Unterprogramms, das einem zweiten Trap-Unterabschnitt der computerlesbaren Anweisungen entspricht, um zur zweiten Adresse, zur ersten Adresse oder zu sich selbst zu springen.
-
Beispiel 16: Das Verfahren von Beispiel 15, umfassend das Ausführen, als Reaktion darauf, dass die zweite Adresse im Programmzähler oder Adressbus den zweiten Typ von Stuck-at-Fehler nicht enthält, eines zweiten Unterprogramms, das einem zweiten Unterabschnitt der computerlesbaren Anweisungen entspricht, um zu einer Anwendungsstartadresse zu springen, die einem Anwendungsunterabschnitt der computerlesbaren Anweisungen und einem Anwendungsunterprogramm entspricht.
-
Beispiel 17: Das Verfahren nach einem der Beispiele 15 und 16, umfassend: Erfassen eines Fehlers im Betrieb der Verarbeitungsschaltung während einer Laufzeit der Verarbeitungsschaltung und Zurücksetzen des Betriebs der Verarbeitungsschaltung als Reaktion auf den erfassten Fehler.
-
Beispiel 18: Das Verfahren nach Beispiel 17, wobei das Erfassen des Fehlers das Erfassen eines Stuck-at-Fehlers des Programmzählers oder des Adressbusses durch einen Watchdog-Timer und einen Diagnosetest umfasst.
-
Beispiel 19: Das Verfahren nach einem der Beispiele 15 bis 18, wobei der erste Typ eines Stuck-at-Fehlers ein Stuck-at-High-Fehler und der zweite Typ eines Stuck-at-Fehlers ein Stuck-at-Low-Fehler ist.
-
Beispiel 20: Das Verfahren nach einem der Beispiele 15 bis 19, wobei das Einleiten des Durchlaufens der Adressen im Programmzähler mit der ersten Adresse das Einleiten des Durchlaufens der Adressen im Programmzähler mit der ersten Adresse, die eine aufeinanderfolgende Reihe von ausschließlich Nullen einschließt, umfasst.
-
Beispiel 21: Eine Verarbeitungsschaltung, umfassend: einen Verarbeitungskern, der einen Programmzähler einschließt, der zum Durchlaufen von Adressen konfiguriert ist; und eine Datenspeichervorrichtung mit darauf gespeicherten computerlesbaren Anweisungen, wobei die computerlesbaren Anweisungen Unterabschnitte der computerlesbaren Anweisungen einschließen, wobei die Unterabschnitte der computerlesbaren Anweisungen konfiguriert sind, um den Verarbeitungskern anzuweisen, Unterprogramme auszuführen, wobei jeder Unterabschnitt der computerlesbaren Anweisungen einem der Unterprogramme entspricht, wobei Orte der Unterabschnitte der computerlesbaren Anweisungen innerhalb der Datenspeichervorrichtung den Adressen zugeordnet sind, wobei die Unterabschnitte einschließen: einen ersten Unterabschnitt an einem ersten Ort innerhalb der Datenspeichervorrichtung, der durch eine erste Adresse angegeben wird; und erste Trap-Unterabschnitte an ersten Trap-Orten innerhalb der Datenspeichervorrichtung, wobei die ersten Trap-Orte durch erste Trap-Adressen angegeben werden, wobei sich die ersten Trap-Adressen von der ersten Adresse nur durch ein Einzelbit unterscheiden, wobei die ersten Trap-Unterabschnitte konfiguriert sind, um den Verarbeitungskern anzuweisen, erste Trap-Unterprogramme auszuführen, um zur ersten Adresse oder zu einer der ersten Trap-Adressen zu springen.
-
Beispiel 22: Die Verarbeitungsschaltung von Beispiel 21, wobei die erste Adresse eine aufeinanderfolgende Reihe von Nullen ist.
-
Beispiel 23: Die Verarbeitungsschaltung nach einem der Beispiele 21 und 22, wobei die Unterabschnitte ferner einschließen: einen zweiten Unterabschnitt an einem zweiten Ort innerhalb der Datenspeichervorrichtung, die durch eine zweite Adresse angegeben wird, wobei die zweite Adresse ein Einerkomplement der ersten Adresse ist, wobei der erste Unterabschnitt konfiguriert ist, um den Verarbeitungskern anzuweisen, ein erstes Unterprogramm auszuführen, um zur zweiten Adresse zu springen; und zweite Trap-Unterabschnitte an zweiten Trap-Orten innerhalb der Datenspeichervorrichtung, wobei die zweiten Trap-Orte durch zweite Trap-Adressen angegeben werden, wobei sich die zweiten Trap-Adressen von der zweiten Adresse nur durch ein Einzelbit unterscheiden, wobei die zweiten Trap-Unterabschnitte konfiguriert sind, um den Verarbeitungskern anzuweisen, zweite Trap-Unterprogramme auszuführen, um zur zweiten Adresse oder zurück zu den zweiten Trap-Adressen zu springen.
-
Beispiel 24: Die Verarbeitungsschaltung von Beispiel 23, wobei eine der ersten Adresse und der zweiten Adresse eine aufeinanderfolgende Reihe von Nullen ist und die andere der ersten Adresse und der zweiten Adresse eine aufeinanderfolgende Reihe von Einsen ist.
-
Beispiel 25: Die Verarbeitungsschaltung nach einem der Beispiele 21 bis 24, ferner umfassend einen Watchdog-Timer, der konfiguriert ist, um Stuck-at-Fehler des Programmzählers während der Laufzeit zu erfassen, wobei der Watchdog-Timer konfiguriert ist, um als Reaktion auf das Erfassen eines Stuck-at-Fehlers einen Rücksetzvorgang einzuleiten.
-
Beispiel 26: Die Verarbeitungsschaltung nach Beispiel 25, wobei der Watchdog-Timer unabhängig von den Unterprogrammen implementiert ist, um zu verhindern, dass die Stuck-at-Fehler den Betrieb des Watchdog-Timers beeinträchtigen.
-
Beispiel 27: Die Verarbeitungsschaltung nach einem der Beispiele 25 und 26, wobei der Watchdog-Timer konfiguriert ist, um den Rücksetzvorgang unabhängig vom Verarbeitungskern einzuleiten.
-
Beispiel 28: Die Verarbeitungsschaltung nach einem der Beispiele 25 bis 27, wobei der Watchdog-Timer in einer vom Verarbeitungskern getrennten Hardware implementiert ist.
-
Beispiel 29: Ein sicherheitskritisches System, umfassend: eine sicherheitskritische Vorrichtung und eine Verarbeitungsschaltung, die konfiguriert ist, um die sicherheitskritische Vorrichtung zu steuern, wobei die Verarbeitungsschaltung umfasst:
- einen Verarbeitungskern, der einen Programmzähler einschließt, der konfiguriert ist, um Adressen zu durchlaufen; eine Datenspeichervorrichtung mit darauf gespeicherten computerlesbaren Anweisungen, wobei die computerlesbaren Anweisungen Unterabschnitte der computerlesbaren Anweisungen einschließen, wobei die Unterabschnitte konfiguriert sind, um den Verarbeitungskern anzuweisen, Unterprogramme auszuführen, wobei die Unterabschnitte einschließen: einen ersten Unterabschnitt an einem ersten Ort innerhalb der Datenspeichervorrichtung, der durch eine erste Adresse der Adressen angegeben wird; erste Trap-Unterabschnitte an ersten Trap-Orten innerhalb der Datenspeichervorrichtung, wobei die ersten Trap-Orte durch erste Trap-Adressen der Adressen angegeben werden, wobei sich die ersten Trap-Adressen von der ersten Adresse nur durch ein Einzelbit unterscheiden, wobei die ersten Trap-Unterabschnitte konfiguriert sind, um den Verarbeitungskern anzuweisen, erste Trap-Unterprogramme auszuführen, um zur ersten Adresse oder zurück zu den ersten Trap-Adressen zu springen; einen zweiten Unterabschnitt an einem zweiten Ort innerhalb der Datenspeichervorrichtung, der durch eine zweite Adresse der Adressen angegeben wird, wobei die zweite Adresse ein Einerkomplement der ersten Adresse ist, wobei der erste Unterabschnitt konfiguriert ist, um den Verarbeitungskern anzuweisen, ein erstes Unterprogramm auszuführen, um zur zweiten Adresse zu springen; und zweite Trap-Unterabschnitte an zweiten Trap-Orten innerhalb der Datenspeichervorrichtung, wobei die zweiten Trap-Orte durch zweite Trap-Adressen der Adressen angegeben werden, wobei sich die zweiten Trap-Adressen von der zweiten Adresse nur durch ein Einzelbit unterscheiden, wobei die zweiten Trap-Unterabschnitte konfiguriert sind, um den Verarbeitungskern anzuweisen, zweite Trap-Unterprogramme auszuführen, um zur zweiten Adresse oder zurück zu den zweiten Trap-Adressen zu springen.
-
Beispiel 30: Das sicherheitskritische System von Beispiel 29, wobei die Anzahlen der ersten Trap-Unterabschnitte und der zweiten Trap-Unterabschnitte jeweils gleich einer Anzahl von Bits der Adressen sind.
-
Beispiel 31: Ein Verfahren zum Betreiben einer Verarbeitungsschaltung, wobei das Verfahren umfasst: Einleiten des Durchlaufens von Adressen in einem Programmzähler mit einer ersten Adresse, die einem ersten Unterabschnitt von computerlesbaren Anweisungen entspricht, die von einer Datenspeichervorrichtung an einem ersten Ort gespeichert werden; Ausführen, als Reaktion auf die erste Adresse im Programmzähler und einen ersten Typ eines Stuck-at-Fehlers des Programmzählers, eines ersten Trap-Unterprogramms, das einem ersten Trap-Unterabschnitt der computerlesbaren Anweisungen entspricht, um zur ersten Adresse zu springen; Ausführen, als Reaktion darauf, dass die erste Adresse im Programmzähler den ersten Typ von Stuck-at-Fehler nicht enthält, eines ersten Unterprogramms, das dem ersten Unterabschnitt der computerlesbaren Anweisungen entspricht, um zu einer zweiten Adresse zu springen, die einem zweiten Unterabschnitt der computerlesbaren Anweisungen an einem zweiten Ort der Datenspeichervorrichtung entspricht; und Ausführen, als Reaktion auf die zweite Adresse im Programmzähler und einen zweiten Typ eines Stuck-at-Fehlers des Programmzählers, eines zweiten Trap-Unterprogramms, das einem zweiten Trap-Unterabschnitt der computerlesbaren Anweisungen entspricht, um zur zweiten Adresse zu springen.
-
Beispiel 32: Das Verfahren von Beispiel 31, ferner umfassend das Ausführen eines zweiten Unterprogramms, das einem zweiten Unterabschnitt der computerlesbaren Anweisungen entspricht, als Reaktion darauf, dass die zweite Adresse im Programmzähler den zweiten Typ eines Stuck-at-Fehlers nicht enthält, um zu einer Bootend-Adresse zu springen, die einem Bootend-Unterabschnitt der computerlesbaren Anweisungen und einem Bootend-Unterprogramm entspricht.
-
Beispiel 33: Das Verfahren nach einem der Beispiele 31 und 32, ferner umfassend: Erfassen eines Fehlers im Betrieb der Verarbeitungsschaltung während einer Laufzeit der Verarbeitungsschaltung und Zurücksetzen des Betriebs der Verarbeitungsschaltung als Reaktion auf den erfassten Fehler.
-
Beispiel 34: Das Verfahren von Beispiel 33, wobei das Erfassen des Fehlers das Erfassen eines Stuck-at-Fehlers des Programmzählers durch eines von einem Watchdog-Timer und einem Diagnosetest umfasst.
-
Beispiel 35: Das Verfahren nach einem der Beispiele 31 bis 34, wobei der erste Typ eines Stuck-at-Fehlers ein Stuck-at-Low-Fehler ist und der zweite Typ eines Stuck-at-Fehlers ein Stuck-at-High-Fehler ist.
-
Beispiel 36: Das Verfahren nach einem der Beispiele 31 bis 35, wobei das Einleiten des Durchlaufens der Adressen im Programmzähler mit der ersten Adresse das Einleiten des Durchlaufens der Adressen im Programmzähler mit der ersten Adresse, die eine aufeinanderfolgende Reihe von ausschließlich Nullen einschließt, umfasst.
-
Abschließende Erklärung
-
Wie in der vorliegenden Offenbarung verwendet, können die Begriffe „Modul“ oder „Komponente“ auf spezifische Hardware-Implementierungen Bezug nehmen, um die Aktionen des Moduls oder der Komponente und/oder Softwareobjekte oder Softwareroutinen durchzuführen, die auf Universalhardware (z. B. computerlesbaren Medien, Verarbeitungsvorrichtungen usw.) des Rechensystems gespeichert und/oder von dieser ausgeführt werden können. In einigen Beispielen können die verschiedenen Komponenten, Module, Engines und Dienste, die in der vorliegenden Offenbarung beschrieben sind, als Objekte oder Prozesse implementiert werden, die auf dem Rechensystem ausgeführt werden (z. B. als separate Threads). Obwohl einige der in der vorliegenden Offenbarung beschriebenen Systeme und Verfahren allgemein als in Software implementiert (gespeichert auf und/oder ausgeführt durch Universalhardware) beschrieben sind, sind spezifische Hardware-Implementierungen oder eine Kombination von Software und spezifischen Hardware-Implementierungen ebenfalls möglich und werden in Betracht gezogen.
-
Wie in der vorliegenden Offenbarung verwendet, kann der Begriff „Kombination“ in Bezug auf eine Vielzahl von Elementen eine Kombination aller Elemente oder eine beliebige von verschiedenen unterschiedlichen Unterkombinationen einiger der Elemente einschließen. Zum Beispiel kann die Phrase „A, B, C, D oder Kombinationen davon“ Bezug nehmen auf eines von A, B, C oder D; die Kombination von jedem von A, B, C und D; und jede Unterkombination von A, B, C oder D, wie A, B und C; A, B und D; A, C und D; B, C und D; A und B; A und C; A und D; B und C; B und D; oder C und D.
-
Begriffe, die in der vorliegenden Offenbarung und insbesondere in den beiliegenden Ansprüchen verwendet werden (z. B. Inhalte der beiliegenden Ansprüche), sind im Allgemeinen als „offene“ Begriffe gedacht (z. B. sollte der Begriff „einschließlich“ als „einschließlich, jedoch nicht beschränkt auf” interpretiert werden, der Begriff „aufweisend“ sollte als „mindestens aufweisend“ interpretiert werden, der Begriff „schließt ein“ sollte als „schließt ein, ist jedoch nicht beschränkt auf” interpretiert werden usw.).
-
Darüber hinaus wird, wenn eine bestimmte Anzahl von einer eingeführten Anspruchsangabe beabsichtigt ist, diese Absicht ausdrücklich im Anspruch angegeben, und in Ermangelung dieser Nennung liegt keine solche Absicht vor. Als Verständnishilfe können zum Beispiel die folgenden beiliegenden Ansprüche die Verwendung der einleitenden Phrasen „mindestens einer“ und „einer oder mehrere“ zur Einführung von Anspruchsaufzählungen enthalten. Die Verwendung solcher Formulierungen sollte jedoch nicht dahingehend ausgelegt werden, um zu implizieren, dass die Einführung einer Anspruchsangabe durch die unbestimmten Artikel „ein“ oder „eine“ einen bestimmten Anspruch, der eine solche eingeführte Anspruchsangabe enthält, auf Beispiele beschränkt, die nur eine solche Angabe enthalten, selbst wenn derselbe Anspruch die einleitenden Phrasen „eine/r/s oder mehrere“ oder „zumindest eine/r/s“ und unbestimmte Artikel wie „ein“ und/oder „eine“ einschließt (z. B. soll „ein“ und/oder „eine“ so interpretiert werden, dass es „zumindest ein/e“ oder „ein/e oder mehrere“ bedeutet); gleiches gilt für die Verwendung von bestimmten Artikeln, die zur Einführung von Anspruchsangaben verwendet werden.
-
Auch wenn eine bestimmte Anzahl einer eingeführten Anspruchsaufzählung explizit angegeben ist, wird der Fachmann erkennen, dass eine solche Aufzählung so interpretiert werden sollte, dass sie mindestens die angegebene Anzahl bedeutet (z. B. die bloße Aufzählung von „zwei Aufzählungen“ ohne andere Modifikatoren bedeutet mindestens zwei Aufzählungen oder zwei oder mehr Aufzählungen). Des Weiteren ist in den Fällen, in denen eine Konvention analog zu „mindestens eines von A, B und C usw.“ oder „eines oder mehrere von A, B und C usw.“ verwendet wird, eine solche Konstruktion allgemein A allein, B allein, C allein, A und B zusammen, A und C zusammen, B und C zusammen oder A, B und C zusammen usw. einschließen soll.
-
Ferner sollte jedes disjunktive Wort oder jede disjunktive Formulierung, das bzw. die zwei oder mehr alternative Begriffe darstellt, sei es in der Beschreibung, den Ansprüchen oder den Zeichnungen, dahingehend verstanden werden, dass die Möglichkeit des Einschließens eines der Begriffe, des einen oder des anderen Begriffs oder beider Begriffe in Betracht gezogen wird. Zum Beispiel sollte die Formulierung „A oder B“ so verstanden werden, dass sie die Möglichkeiten „A“ oder „B“ oder „A und B“ einschließt.
-
Obwohl die vorliegende Offenbarung hierin in Bezug auf bestimmte veranschaulichte Beispiele beschrieben wurde, wird der Durchschnittsfachmann auf dem Gebiet erkennen und verstehen, dass die vorliegende Erfindung nicht darauf beschränkt ist. Vielmehr können viele Ergänzungen, Weglassungen und Modifikationen an den veranschaulichten und beschriebenen Beispielen vorgenommen werden, ohne von dem Schutzumfang der Erfindung, wie er nachfolgend zusammen mit ihren rechtlichen Äquivalenten beansprucht wird, abzuweichen. Darüber hinaus können Merkmale eines Beispiels mit Merkmalen eines anderen Beispiels kombiniert werden, aber dennoch noch innerhalb des Schutzumfangs der Erfindung enthalten sein, der durch den Erfinder in Betracht gezogen wird.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-