DE102009005449B4 - Prozessor, der zur Überwachung des Kontrollflusses Befehlen zugeordnete Eigen- und Folgekennungen auswertet - Google Patents

Prozessor, der zur Überwachung des Kontrollflusses Befehlen zugeordnete Eigen- und Folgekennungen auswertet Download PDF

Info

Publication number
DE102009005449B4
DE102009005449B4 DE200910005449 DE102009005449A DE102009005449B4 DE 102009005449 B4 DE102009005449 B4 DE 102009005449B4 DE 200910005449 DE200910005449 DE 200910005449 DE 102009005449 A DE102009005449 A DE 102009005449A DE 102009005449 B4 DE102009005449 B4 DE 102009005449B4
Authority
DE
Germany
Prior art keywords
processor
identifier
instruction
instructions
command
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.)
Expired - Fee Related
Application number
DE200910005449
Other languages
English (en)
Other versions
DE102009005449A1 (de
Inventor
Lars Gollub
Prof. Dr. Dr. Halang Wolfgang A.
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to DE200910005449 priority Critical patent/DE102009005449B4/de
Publication of DE102009005449A1 publication Critical patent/DE102009005449A1/de
Application granted granted Critical
Publication of DE102009005449B4 publication Critical patent/DE102009005449B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Durch Entwurfs- oder Laufzeitfehler kann die Abfolge der ausgeführten Befehle eines Programms vom geplanten Kontrollfluss abweichen. Diese Fehlfunktion kann auftreten und unbemerkt bleiben, da ein Prozessor nicht erkennen kann, ob auszuführende Bitmuster tatsächlich einer beim Entwurf vorgesehenen Sequenz voll Befehlen entsprechen. Der Prozessor muss annehmen, dass es sich um korrekte Befehle in der richtigen Reihenfolge handelt, und führt diese aus. Erkennung und geeignete Behandlung von Kontrollflussfehlern wird erfindungsgemäß durch einen Prozessor ermöglicht, der bei der Abarbeitung von Programmen Eigen- und Folgekennungen überwacht, die Befehlen in Programmen für diesen Prozessor zugeordnet sind. Mit Hilfe der Eigen- und Folgekennungen erfolgt eine Verkettung der Befehle, die den geplanten Kontrollfluss eines Programms so abbildet, dass er von einem erfindungsgemäßen Prozessor auf Einhaltung geprüft werden kann. Programmgesteuerte digitale Datenverarbeitung

Description

  • Gebiet der Erfindung
  • Die Erfindung betrifft das Gebiet der Prozessoren und bezieht sich insbesondere auf einen Prozessor, der den geplanten Kontrollfluss von Programmen überwacht, indem er den Befehlen zugeordnete Eigen- und Folgekennungen auswertet.
  • Stand der Technik
  • Prozessoren arbeiten Programme ab, indem sie Befehle aus einem Speicher lesen und ausführen. Sie verfügen dazu über ein besonderes Register, das Befehlszähler genannt wird. Im Befehlszähler wird festgehalten, an welcher Position sich ein Prozessor in der Abarbeitung einer Befehlsfolge befindet. Abhängig von der Implementierung wird diese Position als Adresse des derzeitigen oder des nächsten auszuführenden Befehls ausgedrückt. Handelt es sich bei einem Befehl nicht um einen Sprungbefehl, wird während seiner Ausführung die Adresse im Befehlszähler so verändert, dass sie auf den jeweils nächsten Befehl in der Befehlsfolge zeigt. Auf diese Weise werden Befehle sequenziell verarbeitet.
  • Mit Hilfe von Sprungbefehlen kann auf den Inhalt des Befehlszählers direkt Einfluss genommen werden, um die Programmausführung an einer anderen Stelle im Adressraum fortzusetzen. Es gibt unbedingte Sprünge, die immer ausgeführt werden, und bedingte Sprünge, deren Ausführung von Bedingungen abhängig ist. Für den Aufruf von Unterprogrammen existieren Sprungbefehle, die den aktuellen Inhalt des Befehlszählers als Rücksprungadresse speichern. Dadurch kann nach Beendigung eines Unterprogramms mit Hilfe eines Rücksprungbefehls mit der Programmausführung hinter dem Aufruf des Unterprogramms fortgefahren werden. Rücksprungadressen werden häufig auf einem Stapel gespeichert.
  • Die Methode zur Bildung der Adresse, an der die Programmausführung mit Hilfe eines Sprungbefehls fortgesetzt wird, ist abhängig von der Implementierung des Prozessors und des Sprungbefehls. In einer üblichen Variante wird die gesamte oder ein Teil der Adresse in einem Operanden des Sprungbefehls kodiert und ersetzt bei der Ausführung des Sprungbefehls ganz oder teilweise den Inhalt des Befehlszählers. In einer weiteren, häufig bei bedingten Sprungbefehlen angewendeten Variante wird in einem Operanden eine relative Adresse kodiert, die bei der Sprungausführung zum aktuellen Inhalt des Befehlszählers addiert wird. Im Allgemeinen unterstützen die Sprungbefehle im Befehlssatz vieler Prozessoren auch andere Quellen für die Adressenangabe als die Operanden der Befehle. Adressen können auch aus Registern und Speicherzellen stammen und daher zur Laufzeit eines Programms berechnet oder aus Tabellen gelesen werden. Rücksprungbefehle verwenden Adressen, die zuvor von Sprungbefehlen zum Aufruf von Unterprogrammen oder infolge von Unterbrechungen gespeichert wurden.
  • Die meisten Prozessoren bieten die Möglichkeit, beim Eintreten von Ereignissen die laufende Programmausführung zu unterbrechen und ereignisspezifische Behandlungsroutinen abzuarbeiten. Dazu wird der aktuelle Inhalt des Befehlszählers in besonderen Registern oder auf einem Stapel gespeichert und die Unterbrechungsvektor genannte Anfangsadresse der entsprechenden Behandlungsroutine in den Befehlszähler geladen. Nach Beendigung der Behandlungsroutine durch einen Rücksprungbefehl wird die unterbrochene Programmausführung fortgesetzt, indem der zuvor gespeicherte Inhalt des Befehlszählers wiederhergestellt wird. Der Umfang der Unterbrechungsfähigkeit eines Prozessors ist von der Implementierung seines Unterbrechungswerks abhängig. In der Regel kann zwischen einer ganzen Reihe verschiedener Ereignisse unterschieden und jedem Ereignis eine eigene Behandlungsroutine zugeordnet werden.
  • Viele Prozessoren sind mit einer Speicherverwaltungseinheit, einer Speicherschutzeinheit oder einer Kombination beider Einrichtungen ausgestattet. Mit Hilfe einer Speicherverwaltungseinheit können mehrere Programme auf einem einzigen Prozessor in eigenen virtuellen Adressräumen ausgeführt werden, indem die von den Programmen verwendeten virtuellen Adressen in physikalische Adressen übersetzt werden. Dies bietet neben der Möglichkeit der Verwendung einer für die Programme transparenten Hierarchie verschiedener Speicherarten den Vorteil, dass die Programme voneinander isoliert werden können. Ein Programm ist nicht in der Lage, auf die Daten eines anderen Programms zuzugreifen, und es ist nicht möglich, durch einen Sprungbefehl oder normales Voranschreiten des Befehlszählers in einem Programm Befehle zur Ausführung zu bringen, die zu einem anderen Programm gehören. Innerhalb eines virtuellen Adressraums kann die Programmausführung jedoch einen beliebigen Verlauf nehmen.
  • Mit einer Speicherschutzeinheit kann der physikalische oder virtuelle Adressraum, in dem ein Programm ausgeführt wird, in mehrere Abschnitte aufgeteilt werden. Die Abschnitte können mit unterschiedlichen Privilegien bezüglich des Zugriffs auf Daten und der Ausführung von Befehlen versehen werden. Beispielsweise kann ein Abschnitt definiert werden, in dem Daten nur gelesen werden dürfen, während in einem zweiten Abschnitt sowohl Lese- als auch Schreibzugriffe auf die Daten erlaubt sind und nur die Bitmuster in einem dritten Abschnitt als Befehle interpretiert und ausgeführt werden können. Anzahl und Größe der Abschnitte sowie die vergebbaren Privilegien hängen von der Implementierung der Speicherschutzeinheit ab.
  • Prozessorbefehle werden in Form von Bitmustern kodiert. Abhängig von der Implementierung eines Prozessors haben diese Bitmuster feste oder variable Längen. Sie enthalten den Operationscode und ggf. einen oder mehrere Operanden. Der Operationscode definiert eindeutig, um welchen Befehl des Befehlssatzes es sich handelt. Bei den meisten Prozessoren sind nicht allen möglichen Kombinationen der Bits des Operationscodes Befehle zugeordnet, sodass eine Anzahl illegaler Operationscodes existiert. Ältere Prozessoren führen Befehle mit illegalen Operationscodes entweder als Leerbefehle aus oder zeigen ein undokumentiertes Verhalten. Modernere Prozessoren bieten hingegen bei der Ausführung von Befehlen mit illegalen Operationscodes die Möglichkeit einer Fehlerbehandlung.
  • Es existieren verschiedene Verfahren zur Überwachung der ordnungsgemäßen Ausführung von Programmen, die darauf beruhen, dass die Programme einem Überwachungsschaltkreis in regelmäßigen Abständen ihre korrekte Funktion durch Meldungen anzeigen. Treffen diese Meldungen innerhalb festgelegter Zeitschranken ein, wird die korrekte Funktion des jeweiligen Programms angenommen. Bei der Überschreitung der Zeitschranken wird eine Fehlerbehandlung durchgeführt.
  • Ein einfacher Schutz gegen die Ausführung von Programmabschnitten in einer unvorhergesehenen Reihenfolge kann dadurch erreicht werden, dass Register oder Speicherzellen vereinbart und innerhalb der Programmabschnitte auf besondere Art und Weise beschrieben und ausgewertet werden. Das Beschreiben erfolgt dabei jeweils am Ende und die Auswertung am Anfang der Programmabschnitte. Bei der Auswertung erwartet ein betrachteter Programmabschnitt Werte, die nur von Programmabschnitten in die Register oder Speicherzellen geschrieben werden, deren Ausführung unmittelbar vor der des betrachteten Programmabschnitts vorgesehen ist. Enthalten die Register oder Speicherzellen Werte, die nicht den erwarteten entsprechen, müssen die Programmabschnitte in einer unvorhergesehenen Reihenfolge ausgeführt worden sein und es muss ein Fehler vorliegen. In einer bekannten Implementierung wird zu Beginn eines Unterprogramms überprüft, ob die Startadresse des Unterprogramms vom aufrufenden Programm auf dem Stapel abgelegt wurde. Nur wenn diese Überprüfung positiv ausfällt, kann angenommen werden, dass die Ausführung des Unterprogramms tatsächlich beabsichtigt ist.
  • Es sind Verfahren bekannt, bei denen aus Bitmustern von Befehlen bei Ausführung von Befehlsfolgen mit Hilfe von Prüfsummen- oder Streuwertfunktionen Signaturen der Befehlsfolgen gebildet werden. Nach Abschluss der Ausführung der Befehlsfolgen werden die Befehlsfolgensignaturen mit Referenzsignaturen verglichen. Übereinstimmende Signaturen deuten bei geeigneten Prüfsummen- oder Streuwertfunktionen darauf hin, dass die Befehle der Befehlsfolge korrekt und in der vorgesehenen Reihenfolge ausgeführt wurden. Bei einer Abweichung der Signaturen muss ein Fehler aufgetreten sein. Die Befehlsfolgensignaturen können durch einen Prozessor, der ein solches Verfahren implementiert, oder durch eine prozessorexterne Einrichtung gebildet und mit den Referenzsignaturen verglichen werden.
  • In einem weiteren Verfahren werden in die Pfade eines Programms Kontrollpunkte eingebracht und bei der Ausführung Reihenfolge und Zeitpunkte des Passierens dieser Kontrollpunkte überwacht. Aus dem geplanten Kontrollfluss eines Programms ergibt sich, in welchen Reihenfolgen die Kontrollpunkte durchlaufen werden können. Eine Laufzeitbetrachtung liefert die Zeitschranken, innerhalb derer die Kontrollpunkte passiert werden müssen. Wird bei der Ausführung festgestellt, dass ein Kontrollpunkt erreicht wurde, der gemäß dem geplanten Programmablauf nicht hätte durchlaufen werden können, muss ein Fehler vorliegen. Das Gleiche gilt, wenn ein Kontrollpunkt zwar korrekt gemäß den möglichen Reihenfolgen durchlaufen wird, dies jedoch außerhalb der dafür festgelegten Zeitschranken geschieht. Die Überwachung kann von einem besonderen Programmteil, mit einer dafür ausgelegten Funktionseinheit des verwendeten Prozessors oder durch eine prozessorexterne Einrichtung durchgeführt werden.
  • In der Schrift Majzik et al.: A High-speed Watchdog Processor for Multitasking Systems, μP-94, 8th Symp. Microcomputer and Microprocessor Applications, S. 65–74, 1994 ein Prozessor vorgestellt, der die Kontrollflüsse mehrerer anderer Prozessoren überwachen kann, die die eigentliche Nutzfunktion des jeweiligen Systems bereitstellen. Die Nutzprozessoren müssen dazu Datenpakete mit Kennungen an den Überwachungsprozessor senden.
  • Desweiteren gibt die Schrift A. Mahmood und E. J. McCluskey: Concurrent Error Detection Using Watchdog Processors – A Survey, IEEE Transactions an Computers, Vol. 37, Issue 2, S. 160–174, 1988 einen Überblick über zahlreiche zeitgenössische Verfahren mit Überwachungsprozessoren, die zur Erkennung von Fehlern auf Nutzprozessoren dienen.
  • Problem Die geplante Abfolge der auszuführenden Befehle eines Programms kann mit einem Kontrollflussgraphen beschrieben werden, in dem alle vorgesehenen Verzweigungen im Kontrollfluss festgehalten sind. In einem fehlerfreien Programm bewegt sich der Kontrollfluss entlang eines Pfads des Kontrollflussgraphen. Durch während des Entwurfs eines Programms gemachte oder zur Laufzeit auftretende Fehler kann sich der Kontrollfluss jedoch entlang eines neuen Pfads bewegen, der nicht vorgesehen und im Kontrollflussgraphen nicht enthalten ist. Dabei werden Befehle in einer unvorhergesehenen und falschen Reihenfolge ausgeführt. Ebenso können Daten, in denen keine Befehle kodiert sind, als Befehle interpretiert und ausgeführt werden. Auf Prozessoren, deren Befehle variable Länge haben oder nicht an festen Adressgrenzen ausgerichtet sein müssen, können korrekte Befehlsfolgen falsch interpretiert werden. Dies ist der Fall, wenn mit der Ausführung an einer Adresse begonnen wird, an der nicht das erste Speicherwort eines sich über mehrere Speicherworte erstreckenden Befehls gespeichert ist. Durch diese Nichtbeachtung der Befehlsgrenzen können aufeinanderfolgende Speicherworte zu falschen Befehlen zusammengefasst werden.
  • Die beschriebenen Fehlfunktionen können auftreten und unbemerkt bleiben, da ein Prozessor nicht erkennen kann, ob auszuführende Bitmuster tatsächlich einer beim Entwurf vorgesehenen Sequenz von Befehlen entsprechen. Der Prozessor muss annehmen, dass es sich bei den Bitmustern um korrekte Befehle in der richtigen Reihenfolge handelt, und führt diese aus. Bei einer Abweichung vom geplanten Kontrollfluss durch die Ausführung von Bitmustern, aus denen sich eine nicht vorgesehene Sequenz von Befehlen ergibt, kann daher keine geeignete Fehlerbehandlung durchgeführt werden.
  • Allen oben im Stand der Technik beschriebenen Verfahren zur Überwachung der Ausführung von Programmen ist gemein, dass ein Abweichen vom geplanten Kontrollfluss eines Programms für gewöhnlich erst nach einiger Zeit fehlerhafter Programmausführung erkannt wird. Nur in Ausnahmefällen bzw. unter besonderen Voraussetzungen ist die Erkennung einer der beschriebenen Fehlfunktionen sofort möglich. Falls durch einen Fehler in einen Abschnitt des Adressraums gesprungen wird, in dem die Speicherschutzeinrichtung eines Prozessors keine Programmausführung zulässt, kann eine Fehlfunktion unmittelbar festgestellt werden. Das Gleiche gilt für normales Voranschreiten des Befehlszählers an eine Adresse, die innerhalb eines solchen Speicherabschnitts liegt. Enthält ein fälschlicherweise erreichter oder gebildeter Befehl einen illegalen Operationscode und unterstützt der betrachtete Prozessor die Erkennung von Befehlen mit illegalen Operationscodes, wird eine Fehlfunktion bei Ausführung des Befehls bemerkt. In Programmen, in denen das Verfahren zur Kontrollflussüberwachung angewendet wird, bei dem vereinbarte Register oder Speicherzellen innerhalb der Programmabschnitte auf besondere Art und Weise beschrieben und ausgewertet werden, kann ein Fehler sofort erkannt werden, wenn der fehlerhafte Kontrollfluss direkt vor einen Auswertungsabschnitt verzweigt. Eine ähnliche Situation ergibt sich bei der Anwendung der Verfahren mit Befehlsfolgensignaturen und Kontrollpunkten. Das Vorliegen einer Abweichung vom geplanten Kontrollfluss kann dabei nur dann sofort erkannt werden, wenn der fehlerhafte Kontrollfluss unmittelbar an einen Vergleich mit einer Referenzsignatur bzw. an einen Kontrollpunkt gelangt. Beim Einsatz eines Überwachungsschaltkreises, dem ein Programm in regelmäßigen. Abständen seine korrekte Funktion durch Meldungen anzeigen muss, wird ein Abweichen vom geplanten Kontrollfluss nur dann vor der Ausführung falscher Befehle bemerkt, wenn das Absenden einer Meldung zur Einhaltung der festgelegten Zeitschranken unmittelbar erforderlich war und durch den Fehler unterbleibt oder der Fehler das sofortige Absenden einer Meldung verursacht, deren Eintreffen als zu früh erkannt wird.
  • Abgesehen von diesen im Regelfall sehr unwahrscheinlichen Ausnahmen bleiben Abweichungen vom geplanten Kontrollfluss eines Programms zunächst unerkannt und es werden zahlreiche unvorhergesehene Befehle zur Ausführung gebracht. In sicherheitskritischen Anwendungen kann jedoch bereits die Ausführung eines einzigen falschen Befehls nicht tolerierbare Konsequenzen haben. Es muss daher möglich sein, das Abweichen vom geplanten Kontrollfluss bereits zu erkennen, bevor der erste unvorhergesehene Befehl wirksam werden kann. Nur so kann dem aufgetretenen Problem mit einer geeigneten Fehlerbehandlung begegnet werden, ohne dass zuvor schädliche Befehle ausgeführt worden sind.
  • Lösung
  • Das geschilderte Problem wird erfindungsgemäß durch einen Prozessor gelöst, der bei der Abarbeitung von Programmen deren Kontrollfluss durch die Auswertung von Eigen- und Folgekennungen überwacht, die Befehlen in Programmen für diesen Prozessor zugeordnet sind. Die Eigenkennungen von Befehlen werden beim Programmentwurf festgelegt während die Folgekennungen befehlsabhängig entweder ebenfalls zur Entwurfszeit bestimmt oder zur Laufzeit gebildet werden. In einem fehlerfreien Programm muss der erste Befehl, der nach dem Zurücksetzen des Prozessors ausgeführt wird, mit einer besonderen Eigenkennung gekennzeichnet sein. Die Eigenkennung jedes verbleibenden Befehls eines fehlerfreien Programms muss mit der Folgekennung des jeweils zuvor auszuführenden Befehls übereinstimmen. Die Paare aus übereinstimmenden Eigen- und Folgekennungen aufeinanderfolgender Befehle sollten sich untereinander möglichst unterscheiden. Diese Verkettung der Befehle bildet den geplanten Kontrollfluss eines Programms auf eine Weise ab, die von einem erfindungsgemäßen Prozessor auf Einhaltung geprüft werden kann. Der Prozessor vergleicht dazu bei der Ausführung eines Befehls dessen Eigenkennung mit der in einem fehlerfreien Programm erwarteten. Bei Übereinstimmung wird angenommen, dass sich der Kontrollfluss entlang eines vorgesehenen Pfads bewegt. Weichen jedoch die verglichenen Kennungen voneinander ab, wird das Vorliegen eines Fehlers erkannt. In diesem Fall wird der Prozessor in einen Fehlerzustand versetzt und die Ausführung des Befehls wird abgebrochen, bevor er wirksam wird. Verfügt der Prozessor über ein Unterbrechungswerk, kann für Unterbrechungsbehandlungsroutinen nach dem gleichen Prinzip verfahren werden wie für den normalen Programmablauf. In einem fehlerfreien Programm muss der erste Befehl einer Unterbrechungsbehandlungsroutine mit einer besonderen Eigenkennung gekennzeichnet sein. Die verbleibenden Befehle der Behandlungsroutine werden wie beschrieben mit Hilfe ihrer Eigen- und Folgekennungen gemäß dem geplanten Kontrollfluss miteinander verkettet. Als geeignete Fehlerbehandlung können die Fehlerzustände, die durch die Ausführung von Befehlen verursacht werden, deren Eigenkennungen nicht den Anforderungen an fehlerfreie Programme entsprechen, den Prozessor zurücksetzen oder anhalten. Ist der Prozessor mit einem Unterbrechungswerk ausgestattet, können als Reaktion auf diese Fehlerzustände Unterbrechungen ausgelöst werden.
  • Ausführungsbeispiele
  • Bei der Implementierung eines erfindungsgemäßen Prozessors muss die Breite der Eigen- und Folgekennungen festgelegt werden. Da bei der Ausführung von Befehlen Eigen- und Folgekennungen miteinander verglichen werden, müssen diese gleich breit sein. Bei einer Kennungsbreite von n Bit sind 2n verschiedene Kennungen möglich. Bei einem Programm aus m Befehlen kann mit einem n, für das 2n ≥ m gilt, für jeden Befehl dieses Programms eine eindeutige Eigenkennung vergeben werden. Ist die maximale Größe eines von dem Prozessor verarbeitbaren Programms auf l Befehle begrenzt, können in jedem möglichen Programm den Befehlen eindeutige Eigenkennungen zugeordnet werden, wenn 2n ≥ l für das gewählte n gilt. Sollen eindeutige Kennungen verwendet und zusätzlich bestimmte Bitmuster vermieden werden können, da sie beispielsweise aufgrund der praktischen Realisierung des Systems zufällig entstehen können, muss n entsprechend groß gewählt werden, sodass in diesen Systemen 2n > m bzw. 2n > l gilt. Die gleiche Situation ergibt sich, wenn Eigenkennungen mit besonderen Bedeutungen definiert werden. Beispiele dafür sind Eigenkennungen, die grundsätzlich nie oder immer den Anforderungen an fehlerfreie Programme entsprechen oder die zur Kennzeichnung besonderer Befehle reserviert sind. Ein besonderer Befehl kann in diesem Zusammenhang der erste nach Zurücksetzen des Prozessors auszuführende Befehl oder der erste Befehl einer Unterbrechungsbehandlungsroutine sein. Für Systeme mit 2n < m bzw. 2n < l hingegen können die Befehle in einem Programm bzw. in allen möglichen Programmen nicht eindeutig gekennzeichnet werden, da Eigenkennungen mehrfach vergeben werden müssen. Die Erkennung eines Kontrollflussfehlers kann in einem solchen System nicht garantiert werden. Gewöhnlich steigt die Wahrscheinlichkeit, beim Abweichen vom geplanten Kontrollfluss auf einen falschen Befehl zu treffen, dessen Eigenkennung mit der des korrekten Befehls übereinstimmt, mit abnehmender Kennungsbreite an. Zur Bestimmung des genauen Zusammenhangs zwischen der Wahrscheinlichkeit eines unerkannten Kontrollflussfehlers und der Kennungsbreite muss jedoch das Gesamtsystem detailliert betrachtet werden.
  • Es liegt nahe, für die Aufnahme der beim Programmentwurf festgelegten Kennungen Felder in den Befehlen vorzusehen. Solche Befehle würden aus einem Operationscode, einer Eigenkennung und ggf. einer Folgekennung und einem oder mehreren Operanden bestehen. Die Felder können in beliebiger Reihenfolge innerhalb der Befehle angeordnet werden und ihre Bits müssen nicht zusammenhängend angelegt sein. Da die Befehle durch die enthaltenen Kennungen jedoch recht umfangreich sein können, werden sie in einer naheliegenden Implementierung des Prozessors durch mehrere konsekutive Zugriffe aus dem Speicher gelesen. In einem solchen Fall ist es sinnvoll, das Feld mit der Eigenkennung am Anfang der Befehle anzuordnen, damit es bei der Verarbeitung eines Befehls früh eingelesen wird und ausgewertet werden kann. Entspricht die Eigenkennung nicht den Anforderungen an fehlerfreie Programme, kann die Verarbeitung des Befehls sofort abgebrochen werden und es müssen keine weiteren Teile des Befehls eingelesen werden. Analog dazu kann ein ggf. vorhandenes Feld mit der Folgekennung am Ende der Befehle angeordnet werden, da die darin enthaltene Information erst bei der Verarbeitung des nachfolgenden Befehls benötigt wird und daher spät eingelesen werden kann.
  • Statt die Eigenkennung eines Befehls in einem Feld zu kodieren, kann alternativ ein Teil oder die gesamte Adresse, an der der Befehl gespeichert ist, zur Bildung seiner Eigenkennung herangezogen werden. Auf diese Weise kann Speicherplatz gespart werden und es ist eine schnellere Verarbeitung möglich, da zur Ausführung eines Befehls weniger Daten gelesen werden müssen. Wird diese Methode jedoch von allen Befehlen des Prozessors verwendet, können die Eigenkennungen der Befehle eines Programms nicht mehr frei gewählt werden. Insbesondere ist es nicht ohne weiteres möglich, nachteilige Bitmuster zu vermeiden oder Eigenkennungen mit besonderen Bedeutungen zu verwenden. Ebenso können Eigenkennungen nicht mehrfach vergeben werden, was bei Verzweigungen des Kontrollflusses erforderlich sein kann.
  • Auch für die Bildung der Folgekennung von Befehlen sind neben der statischen Kodierung in einem einzigen Feld weitere Verfahren denkbar, die besonders bei verschiedenen Arten von Sprungbefehlen sinnvoll angewendet werden können. Dazu zählen bedingte Sprungbefehle, mit denen der Kontrollfluss abhängig von einer Bedingung zu einem von zwei verschiedenen Befehlen verzweigt wird. Sieht die Implementierung des Prozessors für einem bedingten Sprungbefehl nur ein einziges Feld für die Folgekennung vor, muss zur Formulierung eines fehlerfreien Programms den beiden Befehlen, die auf den Sprungbefehl folgen können, die gleiche Eigenkennung zugeordnet werden. Dies erhöht die Wahrscheinlichkeit, dass ein Abweichen vom geplanten Kontrollfluss unerkannt bleibt. Zur Lösung des Problems könnten bedingte Sprungbefehle mit zwei Feldern zur Aufnahme von Folgekennungen ausgestattet werden, von denen bei der Befehlsausführung abhängig von der Bedingung ein Feld ausgewählt wird. Nur die im ausgewählten Feld enthaltene Folgekennung wird für den Vergleich mit der Eigenkennung des nächsten auszuführenden Befehls herangezogen. Auf diese Weise können den beiden Befehlen, zu denen der bedingte Sprungbefehl verzweigen kann, unterschiedliche Eigenkennungen zugeordnet werden.
  • Die Befehlssätze vieler Prozessoren enthalten Sprungbefehle, die bei der Ausführung ihre Zieladressen aus den Inhalten von Registern oder Speicherzellen bilden und damit den Kontrollfluss zu einer Reihe von Zielbefehlen verzweigen können. Die Zieladresse wird dazu vor der Ausführung des Sprungbefehls berechnet oder aus einer Tabelle gelesen. Bei der Implementierung eines solchen Sprungbefehls in einem erfindungsgemäßen Prozessor könnte auch die Bildung der Folgekennung aus den Inhalten von Registern oder Speicherzellen vorgesehen werden, die auf diese Weise ebenfalls zur Laufzeit berechnet oder einer Tabelle entnommen werden kann. Der Vorteil dieser Methode ist, dass den Zielbefehlen unterschiedliche Eigenkennungen zugeordnet werden können. Bei einer statisch im Sprungbefehl kodierten Folgekennung wäre es ansonsten zur Formulierung eines fehlerfreien Programms erforderlich, alle Zielbefehle mit der gleichen Eigenkennung zu versehen. Dabei könnte eine Abweichung vom geplanten Kontrollfluss nicht erkannt werden, wenn ein falscher Befehl angesprungen wird, bei dem es sich jedoch um einen der Zielbefehle handelt, der deshalb eine scheinbar korrekte Eigenkennung trägt.
  • Weitere Befehle, bei denen die Wahrscheinlichkeit der Fehlererkennung durch die Anpassung des Verfahrens zur Bildung der Folgeadresse erhöht werden kann, sind Sprungbefehle für den Aufruf von Unterprogrammen und die zugehörigen Rücksprungbefehle. Sind bei diesen Befehlen jeweils ein Feld für eine Eigenkennung und ein weiteres für eine Folgekennung vorgesehen, muss in einem fehlerfreien Programm allen Befehlen, die im Speicher auf den Sprungbefehl zu einem bestimmten Unterprogramm folgen, die gleiche Eigenkennung zugeordnet sein. Der Grund dafür ist der Rücksprungbefehl des Unterprogramms, dessen Folgekennung mit den Eigenkennungen der Befehle übereinstimmen muss, zu denen ein Rücksprung durchgeführt wird. Um unterschiedliche Eigenkennungen zu erlauben, könnten die Sprungbefehle zum Aufruf von Unterprogrammen mit zwei Feldern für die Aufnahme zweier Folgekennungen ausgestattet werden. Die erste Folgekennung dient dazu, den Sprungbefehl mit dem ersten Befehl des Unterprogramms zu verknüpfen, und muss deshalb mit dessen Eigenkennung übereinstimmen. Die zweite Folgekennung muss der Eigenkennung des Befehls entsprechen, der im Speicher auf den Sprungbefehl folgt und bildet die Fortsetzung des Kontrollflusses bei diesem Befehl nach Ausführung des Unterprogramms ab. Während die erste Folgekennung wie gewöhnlich verarbeitet wird, legt der Sprungbefehl die zweite Folgekennung zusammen mit der Rücksprungadresse in einem Speicher ab. Die Abarbeitung des Unterprogramms wird mit der Ausführung des Rücksprungbefehls abgeschlossen, der die abgelegte Folgekennung und die Rücksprungadresse aus dem Speicher liest und verwendet. Da Rücksprungbefehle bei diesem Verfahren ihre Folgekennung von dem zugehörigen Sprungbefehl zum Aufruf des Unterprogramms erhalten, benötigen sie kein eigenes Feld zur Aufnahme einer statischen Folgekennung.
  • Die Einheit eines erfindungsgemäßen Prozessors, die Eigenkennungen auszuführender Befehle auf die Einhaltung der Anforderungen an fehlerfreie Programme untersucht, kann mit einem Register und einem Vergleicher implementiert werden. Die Breite der beiden im Folgenden Kennungsregister und Kennungsvergleicher genannten Komponenten muss der für die Kennungen gewählten Breite entsprechen. Beim Zurücksetzen des Prozessors wird das Kennungsregister mit der Eigenkennung geladen, die für die Kennzeichnung des ersten auszuführenden Befehls verwendet werden muss. Sobald die Eigenkennung eines auszuführenden Befehls bekannt ist, wird sie mit Hilfe des Kennungsvergleichers auf Übereinstimmung mit dem Inhalt des Kennungsregisters untersucht. Bei Ungleichheit wird die Ausführung des Befehls abgebrochen, da ein Fehler aufgetreten sein muss. Bei Gleichheit wird angenommen, dass kein Fehler vorliegt, und der Befehl wird ausgeführt. Dazu gehört auch, dass die Folgekennung des aktuellen Befehls in das Kennungsregister eingetragen wird.
  • Sollen Unterbrechungen möglich sein, muss dies bei der Verarbeitung der Kennungen berücksichtigt werden. Bevor eine Unterbrechungsbehandlungsroutine aufgrund einer vorliegenden Unterbrechung ausgeführt werden kann, muss wie bei einem nicht erfindungsgemäßen Prozessor der Inhalt des Befehlszählers und ggf. weiterer Register mit Statusinformationen gesichert und die Adresse der Behandlungsroutine in den Befehlszähler geladen werden. Bei einem erfindungsgemäßen Prozessor muss zusätzlich der Inhalt des Kennungsregisters gesichert werden, in das dann die Kennung zur Kennzeichnung des ersten Befehls einer Unterbrechungsbehandlungsroutine eingetragen wird. Anschließend können die Befehle der Behandlungsroutine auf die gleiche Weise wie im normalen Programmablauf abgearbeitet werden. Der Rücksprungbefehl am Ende der Behandlungsroutine stellt die Inhalte der zuvor gesicherten Register wieder her. Dazu gehört auch das Kennungsregister, weshalb Rücksprungbefehle zur Beendigung von Unterbrechungsbehandlungsroutinen kein Feld für eine Folgekennung benötigen.
  • Die Befehle eines erfindungsgemäßen Prozessors können sich in der Anzahl der für Ihre Kodierung erforderlichen Bits stark unterscheiden. Um Speicherplatz zu sparen, könnten daher unterschiedlich lange Befehle zugelassen werden, die an beliebigen Adressen beginnen dürfen und sich über die Anzahl der benötigten Speicherworte erstrecken. Dieses Vorgehen wäre jedoch mit dem Nachteil verbunden, dass Teile von Befehlen, in denen keine Eigen- oder Folgekennungen kodiert sind, trotzdem als solche Kennungen interpretiert werden können. Ein derartiger Fehler ist möglich, wenn eine Adresse angesprungen wird, an der nicht das erste Speicherwort eines mehrere Speicherworte langen Befehls abgelegt ist. Die Eigen- und Folgekennungen der durch die Nichtbeachtung der Befehlsgrenzen gebildeten falschen Befehle könnten den Anforderungen an fehlerfreie Programme entsprechen. Bei einer Implementierung des Prozessors mit unterschiedlich langen Befehlen, die an beliebigen Adressen beginnen dürfen, kann daher selbst bei einer Kennungsbreite von n mit 2n > l und Kennzeichnung der Befehle eines Programms mit eindeutigen Eigenkennungen ein Abweichen vom geplanten Kontrollfluss unerkannt bleiben. Um die Erkennung von Kontrollflussfehlern garantieren zu können, ist der Prozessor so auszulegen, dass alle Befehle aus der gleichen Anzahl an Speicherworten bestehen und nur an Adressen beginnen dürfen, die Vielfache dieser Anzahl sind. Auf diese Weise ist es ausgeschlossen, dass aufeinanderfolgende Speicherworte zu falschen Befehlen zusammengefasst werden können. Dabei muss eine schlechte Ausnutzung des Programmspeichers in Kauf genommen werden, da sich die Anzahl der für die Befehlskodierung verwendeten Bits nach den umfangreichsten Befehlen richtet, die meisten Befehle aber mit weniger Bits kodiert werden können.
  • Ein Problem, das dem im letzten Abschnitt beschriebenen ähnelt, ergibt sich bei Verwendung einer von Neumann-Architektur für einen erfindungsgemäßen Prozessor. Da in einem solchen System Befehle und Daten in einem gemeinsamen Speicher enthalten sind, können zur Laufzeit eines Programms beliebige Bitfolgen entstehen, die durch Fehler als Befehle interpretiert und ausgeführt werden können. Auch hier könnten die Eigen- und Folgekennungen der durch die Ausführung von Daten gebildeten falschen Befehle wieder den Anforderungen an fehlerfreie Programme entsprechen und Kontrollflussfehler selbst bei korrekt genutzter Kennungsbreite von n mit 2n > l unerkannt bleiben. Für höchste Sicherheit ist es daher notwendig, die Ausführung von Daten zu verhindern. Dies kann durch Einsatz einer Harvard-Architektur mit getrennten Befehls- und Datenspeichern oder mit Hilfe anderer schaltungstechnischer Maßnahmen erreicht werden.
  • Durch die Erfindung erreichte Vorteile
  • Mit der vorliegenden Erfindung können Abweichungen vom geplanten Kontrollfluss eines Programms bereits erkannt und behandelt werden, bevor der erste unvorhergesehene Befehl wirksam werden kann. Die Erkennung von Kontrollflussfehlern kann dabei garantiert werden. Wenn diese Garantie nicht erforderlich ist, kann ein Kompromiss zwischen der Wahrscheinlichkeit der Erkennung von Kontrollflussfehlern, dem Speicherbedarf von Programmen für einen erfindungsgemäßen Prozessor und der Komplexität seiner Implementierung in weiten Grenzen gewählt werden. Im Gegensatz dazu können mit dem Stand der Technik entsprechenden Mitteln Kontrollflussfehler nur in Ausnahmefällen bzw. nur unter besonderen Voraussetzungen und häufig erst nach einiger Zeit fehlerhafter Programmausführung erkannt werden.

Claims (11)

  1. Prozessor, dadurch gekennzeichnet, a) dass Befehlen in Programmen für diesen Prozessor jeweils eine Eigenkennung und eine Folgekennung zugeordnet sind, b) dass in einem fehlerfreien Programm der erste nach dem Zurücksetzen des Prozessors ausgeführte Befehl mit einer dazu definierten Eigenkennung gekennzeichnet sein muss und die Eigenkennungen aller übrigen Befehle in einem fehlerfreien Programm mit den Folgekennungen der jeweils zuvor auszuführenden Befehle übereinstimmen muss, c) dass sein Befehlsformat für einen oder mehrere Befehle im Befehlssatz ein Feld zur Aufnahme der Eigenkennung vorsieht, d) dass sein Befehlsformat für einen oder mehrere Befehle im Befehlssatz ein Feld zur Aufnahme der Folgekennung vorsieht, e) dass er über ein im Folgenden als Kennungsregister bezeichnetes Register zur Aufnahme einer Kennung verfügt, f) dass er über einen im Folgenden als Kennungsvergleicher bezeichneten Vergleicher verfügt, mit dessen Hilfe die Eigenkennung eines auszuführenden Befehls auf Übereinstimmung mit dem Inhalt des Kennungsregisters untersucht wird, g) dass das Kennungsregister beim Zurücksetzen des Prozessors mit der Eigenkennung geladen wird, die für die Kennzeichnung des ersten auszuführenden Befehls verwendet werden muss, h) dass bei der Ausführung eines Befehls dessen Eigenkennung durch das Kennungsregister und den Kennungsvergleicher mit der in einem fehlerfreien Programm erwarteten verglichen wird, i) dass die Ausführung eines Befehls, dessen Eigenkennung nicht mit der in einem fehlerfreien Programm erwarteten übereinstimmt, zu einem Fehlerzustand des Prozessors führt und abgebrochen wird, bevor der Befehl wirksam wird, und j) dass bei der Ausführung eines Befehls dessen Folgekennung in das Kennungsregister eingetragen wird.
  2. Prozessor nach Anspruch 1 mit einem Unterbrechungswerk, dadurch gekennzeichnet, a) dass in einem fehlerfreien Programm der erste Befehl einer Unterbrechungsbehandlungsroutine mit einer dazu definierten Eigenkennung gekennzeichnet sein muss, b) dass, bevor eine Unterbrechungsbehandlungsroutine aufgrund einer vorliegenden Unterbrechung ausgeführt wird, der Inhalt des Kennungsregisters gesichert wird, in das dann die Kennung zur Kennzeichnung des ersten Befehls einer Unterbrechungsbehandlungsroutine eingetragen wird, und c) dass der Rücksprungbefehl am Ende einer Unterbrechungsbehandlungsroutine den zuvor gesicherten Inhalt des Kennungsregisters wiederherstellt.
  3. Prozessor nach einem der Ansprüche 1 oder 2, dadurch gekennzeichnet, a) dass sein Befehlsformat für einen oder mehrere bedingte Sprungbefehle im Befehlssatz zwei Felder zur Aufnahme von Folgekennungen vorsieht und b) dass bei der Ausführung eines solchen Befehls eines dieser Felder abhängig von der Bedingung ausgewählt und die im ausgewählten Feld enthaltene Folgekennung dem Befehl zugeordnet wird.
  4. Prozessor nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass sein Befehlssatz einen oder mehrere Sprungbefehle enthält, die bei der Ausführung sowohl ihre Zieladresse als auch die ihnen zugeordnete Folgekennung aus dem Inhalt eines oder mehrerer Register bilden.
  5. Prozessor nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, dass sein Befehlssatz einen oder mehrere Sprungbefehle enthält, die bei der Ausführung sowohl ihre Zieladresse als auch die ihnen zugeordnete Folgekennung aus dem Inhalt einer oder mehrerer Speicherzellen bilden.
  6. Prozessor nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, a) dass sein Befehlssatz einen oder mehrere Sprungbefehle für den Aufruf von Unterprogrammen enthält, deren Befehlsformat zwei Felder zur Aufnahme von Folgekennungen vorsieht und bei deren Ausführung eine der Folgekennungen dem jeweiligen Sprungbefehl zugeordnet und die andere Folgekennung im Speicher abgelegt wird, und b) dass sein Befehlssatz einen oder mehrere Befehle für den Rücksprung aus Unterprogrammen enthält, bei deren Ausführung die von einem Sprungbefehl für den Aufruf von Unterprogrammen abgelegte Folgekennung aus dem Speicher gelesen und vom Rücksprungbefehl verwendet wird.
  7. Prozessor nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, dass die Fehlerzustände, die durch die Ausführung von Befehlen verursacht werden, deren Eigenkennungen nicht den Anforderungen an fehlerfreie Programme entsprechen, den Prozessor zurücksetzen.
  8. Prozessor nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, dass die Fehlerzustände, die durch die Ausführung von Befehlen verursacht werden, deren Eigenkennungen nicht den Anforderungen an fehlerfreie Programme entsprechen, den Prozessor anhalten.
  9. Prozessor nach einem der Ansprüche 1 bis 8 mit einem Unterbrechungswerk, dadurch gekennzeichnet, dass die Fehlerzustände, die durch die Ausführung von Befehlen verursacht werden, deren Eigenkennungen nicht den Anforderungen an fehlerfreie Programme entsprechen, Unterbrechungen auslösen.
  10. Prozessor nach einem der Ansprüche 1 bis 9, dadurch gekennzeichnet, a) dass eine oder mehrere Eigenkennungen vorgesehen sind, die nie den Anforderungen an fehlerfreie Programme entsprechen, und b) dass die Ausführung eines Befehls, dem eine solche Eigenkennung zugeordnet ist, immer zu einem Fehlerzustand des Prozessors führt und abgebrochen wird, bevor der Befehl wirksam wird.
  11. Prozessor nach einem der Ansprüche 1 bis 10, dadurch gekennzeichnet, a) dass eine oder mehrere Eigenkennungen vorgesehen sind, die immer den Anforderungen an fehlerfreie Programme entsprechen, und b) dass die Ausführung eines Befehls, dem eine solche Eigenkennung zugeordnet ist, zu keinem Fehlerzustand des Prozessors führt, auch wenn die Eigenkennung nicht mit der ansonsten in einem fehlerfreien Programm erwarteten übereinstimmt.
DE200910005449 2009-01-21 2009-01-21 Prozessor, der zur Überwachung des Kontrollflusses Befehlen zugeordnete Eigen- und Folgekennungen auswertet Expired - Fee Related DE102009005449B4 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE200910005449 DE102009005449B4 (de) 2009-01-21 2009-01-21 Prozessor, der zur Überwachung des Kontrollflusses Befehlen zugeordnete Eigen- und Folgekennungen auswertet

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE200910005449 DE102009005449B4 (de) 2009-01-21 2009-01-21 Prozessor, der zur Überwachung des Kontrollflusses Befehlen zugeordnete Eigen- und Folgekennungen auswertet

Publications (2)

Publication Number Publication Date
DE102009005449A1 DE102009005449A1 (de) 2010-09-16
DE102009005449B4 true DE102009005449B4 (de) 2013-06-13

Family

ID=42557641

Family Applications (1)

Application Number Title Priority Date Filing Date
DE200910005449 Expired - Fee Related DE102009005449B4 (de) 2009-01-21 2009-01-21 Prozessor, der zur Überwachung des Kontrollflusses Befehlen zugeordnete Eigen- und Folgekennungen auswertet

Country Status (1)

Country Link
DE (1) DE102009005449B4 (de)

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MAHMOOD,A., McCluskey,E.J.: Concurrent Error Detection Using Watchdog Processors - A Survey. In: IEEE Transactions on Computers, Vol.37, Februar 1988, Issue 2, S.160-174, - ISSN 0018-9340 *
MAJZIK,I. [et.al.]: A High-speed Watchdog Processor for Multitasking Systems, uP-94, the 8th Symposium on Microcomputer and Microprocessor Applications, October 12-14, 1994, S.65-74, URL: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.23.31 [recherchiert am 08.07.2010] *

Also Published As

Publication number Publication date
DE102009005449A1 (de) 2010-09-16

Similar Documents

Publication Publication Date Title
EP0011685B1 (de) Programmierbare Speicherschutzeinrichtung für Mikroprozessorsysteme und Schaltungsanordnung mit einer derartigen Einrichtung
DE102010037457B4 (de) Verfahren zur Datenverarbeitung zum Bereitstellen eines Wertes zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, Verfahren zur Datenverarbeitung zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, Verfahren zum Erzeugen von Programm-Code, Datenverarbeitungsanordnungen zum Bereitstellen eines Wertes zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, Datenverarbeitungsanordnungen zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, und Datenverarbeitungsanordnungen zum Erzeugen von Programm-Code
EP2466466B1 (de) Verfahren zur Fehlererkennung bei der Ausführung eines Echtzeit-Betriebssystems
EP2188755A1 (de) Verfahren und vorrichtung zur sicherung eines programms gegen eine kontrollflussmanipulation und gegen einen fehlerhaften programmablauf
EP1794680A1 (de) Verfahren zur abarbeitung eines computerprogramms auf einem computersystem
DE102006039747A1 (de) Verfahren für Kontextzustandsmanagement
DE102014117971B4 (de) Verfahren zur Datenverarbeitung zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, und Datenverarbeitungsanordnungen zum Erzeugen von Programm-Code
WO2006032585A1 (de) Verfahren zur abarbeitung eines computerprogramms auf einem computersystem
DE102007056218A1 (de) Verfahren zur Behandlung von transienten Fehlern in Echtzeitsystemen, insbesondere in Steuergeräten von Kraftfahrzeugen
DE102009005449B4 (de) Prozessor, der zur Überwachung des Kontrollflusses Befehlen zugeordnete Eigen- und Folgekennungen auswertet
DE102016116221A1 (de) Verfahren und Einrichtung zur Überwachung der Ausführung eines Programmcodes
DE102007040721A1 (de) Datenverarbeitungsanordnung, Verfahren zur Datenverarbeitung, Computerprogrammelement und Überprüfungsanordnung für einen Speicher
EP1892639B1 (de) Sichere Programmcodeausführung
WO2005069136A1 (de) Ausführung eines programms durch eine virtuelle maschine
DE102004051991A1 (de) Verfahren, Betriebssystem und Rechengerät zum Abarbeiten eines Computerprogramms
EP1543411B1 (de) Prozessor mit expliziter angabe über zu sichernde informationen bei unterprogrammsprüngen
DE102008029231B4 (de) Prozessor mit Ansprungbefehlen zur Überwachung des Kontrollflusses
WO2016050857A1 (de) Verfahren zur datenverarbeitung zum ermitteln, ob bei einer ausführung eines programms ein fehler aufgetreten ist und datenverarbeitungsanordnungen zum erzeugen von programm-code
DE102005060714A1 (de) Datenverarbeitungsvorrichtung, Speicherkarte, Verfahren zum Betreiben einer Datenverarbeitungsvorrichtung und Herstellungsverfahren für eine Datenverarbeitungsvorrichtung
DE102005050767A1 (de) Instruktionsspeicherabsicherung durch Control Flow Checking
DE10229817B4 (de) Verfahren und Vorrichtung zum Ablegen eines Computerprogramms in einen Programmspeicher eines Steuergeräts
EP1516245B1 (de) Vorrichtung und verfahren zum verarbeiten einer sequenz von sprungbefehlen
EP2544090A1 (de) Computer Sytem, computerimplementiertes Verfahren und Computerprogrammprodukt zum bestimmen eines pessimistischen Zeitverhaltens eines Fehlertoleranzmechanismus
DE10252347A1 (de) Überwachte Unterprogrammausführung
EP1461701B1 (de) Programmgesteuerte einheit mit überwachungseinrichtung

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8120 Willingness to grant licences paragraph 23
R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final

Effective date: 20130914

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

Effective date: 20140801