DE102015202049B3 - System und Verfahren zur Fehlerdetektion von ausgeführtem Programmcode unter Verwendung komprimierter Anweisungssignaturen - Google Patents

System und Verfahren zur Fehlerdetektion von ausgeführtem Programmcode unter Verwendung komprimierter Anweisungssignaturen Download PDF

Info

Publication number
DE102015202049B3
DE102015202049B3 DE102015202049.5A DE102015202049A DE102015202049B3 DE 102015202049 B3 DE102015202049 B3 DE 102015202049B3 DE 102015202049 A DE102015202049 A DE 102015202049A DE 102015202049 B3 DE102015202049 B3 DE 102015202049B3
Authority
DE
Germany
Prior art keywords
opcode
processor
current
signature
instruction block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102015202049.5A
Other languages
English (en)
Inventor
Andreas Wenzel
Steffen Marc Sonnekalb
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE102015202049.5A priority Critical patent/DE102015202049B3/de
Priority to US15/014,251 priority patent/US10114685B2/en
Application granted granted Critical
Publication of DE102015202049B3 publication Critical patent/DE102015202049B3/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Detection And Correction Of Errors (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)

Abstract

Es wird ein System bereitgestellt, das einen ersten Prozessor (110) und einen zweiten Prozessor (120) umfasst. Der erste Prozessor (110) ist ausgelegt zum Laden eines Anweisungsblocks aus einem ersten Speicher (105), wobei der Anweisungsblock mehrere Opcodes und einen gespeicherten Fehlercode umfasst. Für jeden Opcode der mehreren Opcodes des Anweisungsblocks ist der erste Prozessor (110) ausgelegt zum Bestimmen einer ersten bestimmten Signatur abhängig von dem Opcode. Der erste Prozessor (110) ist ausgelegt zum Bestimmen eines bestimmten Fehlercodes für den Anweisungsblock abhängig von jedem Opcode und abhängig von der ersten bestimmten Signatur jedes Opcodes der mehreren Opcodes des Anweisungsblocks. Außerdem ist der erste Prozessor (110) ausgelegt zum Bestimmen, dass ein erster Fehler aufgetreten ist, wenn der bestimmte Fehlercode von dem gespeicherten Fehlercode verschieden ist. Der zweite Prozessor (120) ist ausgelegt zum Bestimmen einer zweiten bestimmten Signatur für den aktuellen Opcode der mehreren Opcodes des Anweisungsblocks abhängig von dem aktuellen Opcode. Außerdem ist der zweite Prozessor (120) ausgelegt zum Bestimmen, dass ein zweiter Fehler aufgetreten ist, wenn die zweite bestimmte Signatur für den aktuellen Opcode von der ersten bestimmten Signatur für den aktuellen Opcode verschieden ist.

Description

  • Technisches Gebiet
  • Die vorliegende Erfindung betrifft ein System und ein Verfahren zur Fehlerdetektion und insbesondere ein System und ein Verfahren zur Fehlerdetektion ausgeführter Programmcodeanweisungen unter Verwendung komprimierter Anweisungssignaturen.
  • Stand der Technik
  • Beim Ausführen einer Opcode-Sequenz eines Softwareprogramms können Fehler auftreten, die, wenn sie undetektiert bleiben, unerwünschte Fehlfunktionen verursachen können.
  • Gemäß dem Stand der Technik wird zusammen mit Fehlerkorrektur Fehlerdetektion durchgeführt, um unerwünschte Fehlfunktionen zu vermeiden. Fehlerdetektion kann durch Verwendung von Softwareprüfungen, durch Verwendung von Hardwareredundanz (mehrere CPUs) und durch Verwendung von fehlerdetektierenden Codes durchgeführt werden. Bezüglich Codes kann man zwischen reinen fehlerdetektierenden Codes, die Teil eines Speicherblocks sind, und einer Signatur, die in die Opcode-Sequenz integriert ist, unterscheiden.
  • Diese Implementierungen haben den Nachteil, dass sie oft ein sehr hohes Overhead hinsichtlich der Hardwareimplementierung aufweisen oder dass sie sehr viel Speicher erfordern und/oder einen beträchtlichen Einfluss auf das Programm haben, das geschützt werden soll. Außerdem funktionieren Fehlerdetektionsmechanismen nur an dem Punkt, an dem eine Signaturlösung existiert, aber kein kontinuierlicher Fehlerdetektionsmechanismus hergestellt werden kann. Da die Signaturlösungen, die in den Code integriert werden, an die Opcode-Größen angepasst werden müssen, ist kein adaptiv skalierbarer Schutz möglich.
  • US 5 974 529 A zeigt einen Befehlsflussüberwachungsmechanismus, der Steuerfluss-Fehlererkennung in einem RISC-Computer-Prozessor (RISC = Rechner mit reduziertem Befehlssatz) unter Verwendung von Signatur-Überwachung durchführt. Die Signatur-Überwachung ist in den RISC-Prozessor integriert, so dass der Befehlssatz des RISC-Prozessors verbessert wird, um Signaturprüfung unter allen Ausführungsbedingungen durchführen zu können. Ein Signaturüberwachungsbefehl veranlasst, dass der Befehlsfluss auf Fehler geprüft wird, indem eine vorberechnete Referenzsignatur mit einer aktuellen Signatur verglichen wird, wobei eine Fehlerzustand ausgelöst wird, wenn die beiden Signaturen ungleich sind. Der Befehl initialisiert auch die aktuelle Signatur.
  • DE 10 2005 050 767 A1 zeigt ein Verfahren und eine Vorrichtung zum Implementieren und Ausführen einer hardwaremäßig ausgeführten Steuerflussprüfungs-Fehlererkennung im Arbeitsspeicher bzw. Instruktionsspeicher einer Mikroprozessorumgebung, wobei die Programmanweisungen eines Programmabschnitts zwischen zwei Sprunganweisungen parallel zur CPU in eine Elektronik eingelesen werden, wo über die Anweisungen eine Signatur erstellt und diese mit einer zuvor in einem Signaturspeicher abgelegten Referenzsignatur auf Übereinstimmung verglichen wird, und hierdurch keine Rechenleistung von der CPU abverlangt sowie keine zusätzlichen Programmzyklen ausgeführt werden müssen.
  • Kurzfassung der Erfindung
  • Die Aufgabe der vorliegenden Erfindung ist die Bereitstellung verbesserter Konzepte zur Fehlerdetektion bei der Ausführung von Programmcodeanweisungen. Die Aufgabe der vorliegenden Erfindung wird durch ein System nach Anspruch 1, durch ein Verfahren nach Anspruch 14 und durch ein Computerprogramm nach Anspruch 15 gelöst.
  • Es wird ein System bereitgestellt, das einen ersten Prozessor und einen zweiten Prozessor umfasst. Der erste Prozessor ist ausgelegt zum Laden eines Anweisungsblocks aus einem ersten Speicher, wobei der Anweisungsblock mehrere Opcodes und einen gespeicherten Fehlercode umfasst. Für jeden Opcode der mehreren Opcodes des Anweisungsblocks ist der erste Prozessor ausgelegt zum Bestimmen einer ersten bestimmten Signatur abhängig von dem Opcode. Der erste Prozessor ist ausgelegt zum Bestimmen eines bestimmten Fehlercodes für den Anweisungsblock abhängig von jedem Opcode und abhängig von der ersten bestimmten Signatur jedes Opcodes der mehreren Opcodes des Anweisungsblocks. Außerdem ist der erste Prozessor ausgelegt zum Bestimmen, dass ein erster Fehler aufgetreten ist, wenn der bestimmte Fehlercode von dem gespeicherten Fehlercode verschieden ist. Der zweite Prozessor ist ausgelegt zum Bestimmen einer zweiten bestimmten Signatur für einen aktuellen Opcode der mehreren Opcodes des Anweisungsblocks abhängig von dem aktuellen Opcode. Außerdem ist der zweite Prozessor ausgelegt zum Bestimmen, dass ein zweiter Fehler aufgetreten ist, wenn die zweite bestimmte Signatur für den aktuellen Opcode von der ersten bestimmten Signatur für den aktuellen Opcode verschieden ist.
  • Außerdem wird ein Verfahren bereitgestellt. Das Verfahren umfasst:
    • – Laden eines Anweisungsblocks von einem Speicher, wobei der Anweisungsblock mehrere Opcodes und einen gespeicherten Fehlercode umfasst.
    • – Bestimmen einer ersten bestimmten Signatur abhängig von dem Opcode für jeden Opcode der mehreren Opcodes des Anweisungsblocks.
    • – Bestimmen eines bestimmten Fehlercodes für den Anweisungsblock abhängig von jedem Opcode und abhängig von der ersten bestimmten Signatur jedes Opcodes der mehreren Opcodes des Anweisungsblocks.
    • – Bestimmen, dass ein erster Fehler aufgetreten ist, wenn der bestimmte Fehlercode von dem gespeicherten Fehlercode verschieden ist.
    • – Bestimmen einer zweiten bestimmten Signatur für einen aktuellen Opcode der mehreren Opcodes des Anweisungsblocks abhängig von dem aktuellen Opcode. Und:
    • – Bestimmen, dass ein zweiter Fehler aufgetreten ist, wenn die zweite bestimmte Signatur für den aktuellen Opcode von der ersten bestimmten Signatur für den aktuellen Opcode verschieden ist.
  • Ferner wird ein Computerprogramm zum Implementieren des oben beschriebenen Verfahrens, wenn es auf einem Computer oder Signalprozessor ausgeführt wird, bereitgestellt.
  • Im Folgenden werden Ausführungsformen der vorliegenden Erfindung ausführlicher unter Bezugnahme auf die Figuren beschrieben. Es zeigen:
  • Kurze Beschreibung der Zeichnungen
  • 1 ein System gemäß einer Ausführungsform,
  • 2 einen Schaltkreis mit vier Registern: drei Multiplexern, einem Addierer und einem Multiplizierer,
  • 3 den ersten Prozessor des Systems von 1 gemäß einer Ausführungsform,
  • 4 ein System gemäß einer anderen Ausführungsform, wobei das System einen zweiten Speicher umfasst,
  • 5 den zweiten Prozessor des Systems von 1 gemäß einer Ausführungsform,
  • 6 den zweiten Prozessor des Systems von 1 gemäß einer anderen Ausführungsform,
  • 7 den zweiten Prozessor des Systems von 1 gemäß einer weiteren Ausführungsform,
  • 8 ein System gemäß einer weiteren Ausführungsform, wobei das System den zweiten Speicher umfasst und wobei der zweite Prozessor 2 arithmetisch-logische Einheiten umfasst,
  • 9a eine Anweisungscache-Repräsentation gemäß einer Ausführungsform,
  • 9b eine Nicht-Flüchtiger-Speicher-Repräsentation gemäß einer Ausführungsform und
  • 9c eine Anweisungscache-Repräsentation gemäß einer weiteren Ausführungsform.
  • Ausführliche Beschreibung von Ausführungsformen
  • 1 zeigt ein System 100 mit einem ersten Prozessor 110 und einem zweiten Prozessor 120.
  • Der erste Prozessor 110 ist ausgelegt zum Laden eines Anweisungsblocks von einem ersten Speicher 105, wobei der Anweisungsblock mehrere Opcodes und einen gespeicherten Fehlercode umfasst.
  • Für jeden Opcode der mehreren Opcodes des Anweisungsblocks ist der erste Prozessor 110 ausgelegt zum Bestimmen einer ersten bestimmten Signatur abhängig von dem Opcode. Der erste Prozessor 110 ist ausgelegt zum Bestimmen eines bestimmten Fehlercodes für den Anweisungsblock abhängig von jedem Opcode und abhängig von der ersten bestimmten Signatur jedes Opcodes der mehreren Opcodes des Anweisungsblocks. Außerdem ist der Prozessor 110 ausgelegt zum Bestimmen, dass ein erster Fehler aufgetreten ist, wenn der bestimmte Fehlercode von dem gespeicherten Fehlercode verschieden ist.
  • Der zweite Prozessor 120 ist ausgelegt zum Bestimmen einer zweiten bestimmten Signatur für einen aktuellen Opcode der mehreren Opcodes des Anweisungsblocks abhängig von dem aktuellen Opcode. Außerdem ist der zweite Prozessor 120 ausgelegt zum Bestimmen, dass ein zweiter Fehler aufgetreten ist, wenn die zweite bestimmte Signatur für den aktuellen Opcode von der ersten bestimmten Signatur für den aktuellen Opcode verschieden ist.
  • Bei einer konkreten Ausführungsform kann der zweite Prozessor zum Beispiel ausgelegt sein zum Ausführen des aktuellen Opcodes oder eines Steuersignals, das von dem aktuellen Opcode abhängt, wenn die zweite bestimmte Signatur für den aktuellen Opcode nicht von der ersten bestimmten Signatur für den aktuellen Opcode verschieden ist.
  • Bei einer anderen konkreten Ausführungsform kann zum Beispiel ein falscher Opcode ausgeführt und danach zum Beispiel ein Alarm ausgelöst werden.
  • Im Prinzip kann ein Opcode in ein Steuersignal transformiert werden, um den Computer oder Schaltkreis zu steuern.
  • Zum Beispiel können viele Gatter in einem Schaltkreis verfügbar sein. Beispielsweise zeigt 2 einen Schaltkreis mit vier Registern: Register a, Register b, Register c und Register d, zwei Multiplexern 210, 220, einem Addierer 230 und einem Multiplizierer 240 und einem weiteren Multiplexer 250.
  • Zur Realisierung in einem Pseudo-Assemblercode „ADD register a, register c” (der Pseudo-Assemblercode kann selbst zum Beispiel als ein Opcode codiert sein und der hexadezimal repräsentierte Opcode „b9” kann einen solchen Pseudo-Assemblercode codieren) müssen viele Gatter jeweils korrekt geschaltet werden.
  • Z. B. umfasst in dem einfachen Beispiel von 2 das Steuersignal zum Beispiel 5 Bit. In dem Beispiel von 2 wird angenommen, dass das Register a durch „00”, das Register b durch „01”, das Register c durch „10” und das Register d durch „11” repräsentiert wird. Außerdem wird angenommen, dass der Addierer 230 durch „0” und der Multiplizierer 240 durch „1” repräsentiert wird.
  • Die ersten zwei Bit des Steuersignals steuern den Multiplexer 210. „00” gibt an, dass der Multiplexer die Eingabe von Register a als seine Ausgabe auswählt, die als erste Eingabe in den Addierer 230 und den Multiplizierer 240 geleitet wird. Die nachfolgenden zwei Bit steuern den Multiplexer 220. „10” gibt an, dass der Multiplexer die Eingabe vom Register c als seine Ausgabe auswählt, die als zweite Eingabe in den Addierer 230 und den Multiplizierer 240 geleitet wird. Das fünfte Bit steuert den Multiplexer 250. „0” gibt an, dass die Eingabe von dem Addierer 250 die Ausgabe des Multiplexers 250 und somit die Ausgabe des Schaltkreises von 2 ist.
  • In einem anderen Beispiel wäre zur Realisierung des Pseudo-Assemblercodes „MULT register a, register d” das entsprechende Steuersignal zum Beispiel „00111”, wobei die ersten zwei Bit den Multiplexer 210 zur Auswahl von Register a steuern, wobei die nachfolgenden zwei Bit den Multiplexer d zur Auswahl des Registers d steuern und wobei das fünfte Bit den Multiplexer 250 zur Auswahl der Eingabe von dem Multiplizierer 240 als seine Ausgabe steuert.
  • Steuersignale komplizierterer Schaltkreise als der von 2 können zum Beispiel 16 Bit, 32 Bit, 64 Bit oder 96 Bit zur Realisierung eines Opcodes verwenden.
  • Wenn Befehle eines Programms durch eine Signatur geschützt werden sollen, gibt es im Prinzip zwei Möglichkeiten. Gemäß einer Ausführungsform wird eine Signatur für einen Opcode an dem Opcode selbst berechnet. Wenn zum Beispiel der Opcode für den obigen Pseudo-Assemblercode „ADD register a, register c” „b7” (hexadezimale Repräsentation) wäre, würde eine Signatur an dem Opcode selbst zum Beispiel an seiner binären Repräsentation „1011 0111” berechnet. Die Signatur kann z. B. eine Prüfsumme sein. Indem zum Beispiel die Bit der binären Repräsentation addiert werden und indem nur die letzten zwei Bit betrachtet werden, würde die Prüfsumme das Ergebnis „10” liefern.
  • Gemäß einer anderen zweiten Ausführungsform wird der Opcode in das entsprechende Steuersignal transformiert und die Signatur an dem Steuersignal berechnet. Da das Steuersignal vom Opcode abhängt, hängt bei dieser Ausführungsform auch die Signatur auch vom Opcode ab und kann deshalb auch als Signatur für den Opcode betrachtet werden.
  • Zum Beispiel wäre in der obigen Ausführungsform von 2 das Steuersignal „00100”, und eine entsprechend berechnete Prüfsumme als Signatur würde zu „01” führen. Es sollte beachtet werden, dass in komplizierten Schaltkreisen das Steuersignal im Allgemeinen durch viel mehr Bit als der Opcode repräsentiert wird (im Gegensatz zu dem Beispiel von 2, das für Erläuterungszwecke einfach gehalten wurde).
  • Das Bestimmen einer Signatur für einen Opcode deckt also den Fall ab, dass eine Signatur an dem Opcode berechnet wird, und deckt außerdem den Fall ab, dass ein Steuersignal aus dem Opcode abgeleitet wird und dass die Signatur für den Opcode an dem Steuersignal, das aus dem Opcode abgeleitet wird, berechnet wird. Das Bestimmen einer Signatur für einen Opcode deckt weiterhin auch den Fall ab, dass ein Steuersignal von dem Opcode abhängt und dass die Signatur für den Opcode an dem Steuersignal berechnet wird, das von dem Opcode abhängt.
  • In allen diesen Fällen wird, weil die Signatur direkt oder indirekt von dem Opcode abhängt, die Signatur als eine Signatur für den Opcode bezeichnet, selbst wenn die Signatur an dem Steuersignal berechnet wird, das von dem Opcode abhängt.
  • Der erste Prozessor 110 ist ausgelegt zum Bestimmen eines bestimmten Fehlercodes für den Anweisungsblock abhängig von jedem Opcode und abhängig von der ersten bestimmten Signatur jedes Opcodes der mehreren Opcodes des Anweisungsblocks. Bei einer bevorzugten Ausführungsform ist der erste Prozessor 110 ausgelegt zum Bestimmen des bestimmten Fehlercodes abhängig von, z. B. unter Verwendung von, der ersten bestimmten Signatur für jeden der Opcodes des Anweisungsblocks.
  • Wenn zum Beispiel der erste Anweisungsblock acht Opcodes umfasst und wenn der erste Prozessor 110 bestimmt, dass die Signaturen für die acht Opcodes 01, 11, 11, 01, 10, 00, 01, 11 sind, kann der Fehlercode berechnet werden durch Addieren der binären Werte der Prüfsummen und indem nur die letzten drei Bit der Prüfsumme betrachtet werden. Somit kann (0 + 1) + (1 + 1) + (1 + 1) + (0 + 1) + (0 + 0) + (0 + 1) + (1 + 1) = (1)001 = 001 in diesem Beispiel der bestimmte Fehlercode sein.
  • Der bestimmte Fehlercode wird dann mit dem (gespeicherten) Fehlercode des Anweisungsblocks, der im Speicher 105 gespeichert ist, verglichen. Wenn der bestimmte Fehlercode von dem gespeicherten Fehlercode verschieden ist, nimmt der erste Prozessor an, dass ein (erster) Fehler aufgetreten ist. Dieser erste Fehler kann angeben, dass Werte im Speicher modifiziert wurden (z. B. dass sie manipuliert oder unbeabsichtigt modifiziert wurden, z. B. aufgrund von Speicherausfällen), oder dass beim Laden der Werte aus dem Speicher ein Fehler aufgetreten ist.
  • Wenn der erste Fehler auftritt, kann der Prozessor z. B. die Programmausführung beenden oder kann z. B. den ersten Fehler durch eine (nicht gezeigte) Ausgabeschnittstelle einem menschlichen Bediener anzeigen oder kann z. B. den ersten Fehler einem weiteren Modul anzeigen, der mit Fehlerbehandlung umgeht.
  • Ein solcher Fehlercode erlaubt eine kompakte Repräsentation, und es sind wenige Bit erforderlich, um den gespeicherten Fehlercode im Speicher 105 zu speichern.
  • In dem obigen Beispiel sollte beachtet werden, dass die Signatur eines Opcodes z. B. direkt an dem Opcode selbst berechnet werden kann, oder es kann z. B. das Steuersignal des Opcodes erzeugt werden und die Signatur des Opcodes an dem Steuersignal des Opcodes berechnet werden.
  • Wie oben skizziert ist in 1 der zweite Prozessor 120 ausgelegt zum Bestimmen der zweiten bestimmten Signatur für einen aktuellen Opcode der mehreren Opcodes des Anweisungsblocks abhängig von dem aktuellen Opcode. Außerdem ist der zweite Prozessor 120 ausgelegt zum Bestimmen, dass ein zweiter Fehler aufgetreten ist, wenn die zweite bestimmte Signatur für den aktuellen Opcode von der ersten bestimmten Signatur für den aktuellen Opcode verschieden ist. Der zweite Prozessor kann zum Beispiel ausgelegt sein zum Ausführen des aktuellen Opcodes oder eines Steuersignals, das von dem aktuellen Opcode abhängt.
  • Das Obige beschreibt eine Situation, bei der die Ausführung eines Opcodes, des aktuellen Opcodes (oder des Steuersignals des aktuellen Opcodes) gerade bevorsteht. Der zweite Prozessor 120 bestimmt die Signatur für den aktuellen Opcode (als eine zweite bestimmte Signatur) und vergleicht sie mit der durch den ersten Prozessor 110 bestimmten Signatur (der ersten bestimmten Signatur des aktuellen Opcodes). Dies kann vor, parallel zu oder nach der Ausführung des aktuellen Opcodes oder seines Steuersignals durchgeführt werden. Dies erlaubt, zu prüfen, ob in der Zwischenzeit seit dem Laden des Opcodes aus dem ersten Speicher 105 der Opcode oder sein Steuersignal (z. B. durch einen Attackierer oder unbeabsichtigt) modifiziert wurde. Da die Signatur bereits unmittelbar nach dem Laden bestimmt wurde, existiert ein Referenzwert für die erste bestimmte Signatur zur Prüfung.
  • Bei einer konkreten Ausführungsform kann nur wenn beide bestimmten Signaturen identisch sind, der Opcode oder sein Steuersignal zum Beispiel wirklich ausgeführt werden. Oder bei einer anderen konkreten Ausführungsform kann ein falscher Opcode z. B. ausgeführt werden und danach zum Beispiel ein Alarm ausgelöst werden.
  • Wenn nicht beide bestimmten Signaturen identisch sind, gibt dies an, dass der zweite Fehler aufgetreten ist, z. B. ein Fehler, wobei zwischenzeitlich seit dem Laden des Opcodes aus dem ersten Speicher 105 der Opcode oder sein Steuersignal modifiziert wurde.
  • Wenn der durch den ersten Prozessor 110 bestimmte Fehlercode abhängig von den Signaturen des ersten Opcodes erzeugt wird, hat dies den zusätzlichen Vorteil, dass die bestimmten Signaturen auch durch den im Speicher 105 gespeicherten Fehlercode geschützt werden und somit die durch den ersten Prozessor 110 bestimmten Signaturen und nicht nur die Opcodes auf Korrektheit überprüft werden können.
  • Wenn außerdem der erste Prozessor 110 die ersten Signaturen zur Erzeugung des Fehlercodes verwendet, wird der weitere Vorteil zusätzlicher Effizienz bereitgestellt, da die ersten bestimmten Signaturen, die für die spätere Prüfung anhand der zweiten bestimmten Signaturen erzeugt wurden, auch zum effizienten Bestimmen des bestimmten Fehlercodes durch den ersten Prozessor 110 verwendet werden können.
  • Bei einer konkreten Ausführungsform wird ein System bereitgestellt, dass das oben beschriebene System 100 umfasst und ferner den oben beschriebenen ersten Speicher 105 umfasst, wobei das oben beschriebene System 100 ausgelegt ist zum Laden eines Anweisungsblocks aus dem ersten Speicher 105.
  • Gemäß einer Ausführungsform ist für jeden Opcode der mehreren Opcodes der erste Prozessor 110 ausgelegt zum Decodieren des Opcodes, um ein Steuersignal für den Opcode zu erhalten, wobei das Steuersignal eines von mehreren Steuersignalen ist, wobei die mehreren Steuersignale das Steuersignal umfassen, das von dem aktuellen Opcode abhängt. Für jeden Opcode der mehreren Opcodes kann der erste Prozessor 110 zum Beispiel ausgelegt sein, die erste bestimmte Signatur des Opcodes abhängig von dem Steuersignal des Opcodes zu bestimmen.
  • 3 zeigt einen ersten Prozessor 110 gemäß einer Ausführungsform. Der erste Prozessor umfasst einen ersten Anweisungsdecoder 310, einen Fehlercodegenerator 320 und einen ersten Komparator 330.
  • Für jeden Opcode der mehreren Opcodes ist der erste Anweisungsdecoder 310 ausgelegt zum Decodieren des Opcodes, um das Steuersignal für den Opcode zu erhalten.
  • Der Fehlercodegenerator 320 ist ausgelegt zum Bestimmen des bestimmten Fehlercodes für den Anweisungsblock unter Verwendung des Steuersignals jedes Opcodes der mehreren Opcodes des Anweisungsblocks.
  • Der erste Komparator 330 ist ausgelegt zum Bestimmen, dass der erste Fehler aufgetreten ist, wenn der bestimmte Fehlercode von dem gespeicherten Fehlercode verschieden ist.
  • Bei einer solchen Ausführungsform wird die Signatur für den Opcode an dem Steuersignal des Opcodes berechnet. Das Steuersignal wurde durch den ersten Anweisungsdecoder erzeugt.
  • Wenn die Signatur für den Opcode an dem Steuersignal des Opcodes erzeugt wird, statt sie an dem Opcode selbst zu erzeugen, hat dies den zusätzlichen Vorteil, dass das Steuersignal des Opcodes auch auf Korrektheit geprüft wird, und nicht nur der Opcode selbst.
  • Falls der erste Komparator detektiert, dass der bestimmte Fehlercode und der gespeicherte Fehlercode voneinander verschieden sind, kann er z. B. den ersten Fehler anzeigen.
  • 4 zeigt eine Ausführungsform, wobei das System 100 einen zweiten Speicher 115 umfasst.
  • Für jeden Opcode der mehreren Opcodes des Anweisungsblocks ist der erste Prozessor 110 ausgelegt zum Speichern des Opcodes oder des Steuersignals, das von dem Opcode abhängt, in dem zweiten Speicher 115 und ist ausgelegt zum Speichern der ersten bestimmten Signatur für den Opcode in dem zweiten Speicher 115.
  • Der zweite Prozessor 120 ist ausgelegt zum Laden des aktuellen Opcodes oder des Steuersignals, das von dem aktuellen Opcode abhängt, aus dem zweiten Speicher 115 und ist ausgelegt zum Laden der ersten bestimmten Signatur für den aktuellen Opcode aus dem zweiten Speicher 115.
  • Das Speichern der Opcodes oder der Steuersignale der Opcodes des Anweisungsblocks in einem zweiten Speicher 115 hat den Vorteil, dass der Anweisungsblock eine Vielzahl von Opcodes umfasst (z. B. acht Opcodes oder z. B. 16 Opcodes umfasst). Muss nur einmal geladen werden, aber die Opcodes des Anweisungsblocks oder ihre Steuersignale sind als ein aktueller Opcode oder als das Steuersignal des aktuellen Opcodes verfügbar, wenn sie benötigt werden. Außerdem ist das Speichern der ersten bestimmten Signaturen der Opcodes in dem zweiten Speicher 115 auch vorteilhaft, da es temporäres Speichern der Opcodes oder ihrer Steuersignale in dem zweiten Speicher 115 und auch Durchführen des späteren Vergleichs der früher bestimmten ersten bestimmten Signatur mit der später bestimmten zweiten bestimmten Signatur erlaubt.
  • Bei einer bevorzugten Ausführungsform kann der zweite Speicher 115 z. B. ein Cache sein. Dies erlaubt schnellen Zugriff auf die Opcodes oder ihre Steuersignale und auf die ersten bestimmten Signaturen.
  • 5 zeigt den zweiten Prozessor 120 einer konkreten Ausführungsform. Bei einer solchen Ausführungsform ist für jeden Opcode der mehreren Opcodes des Anweisungsblocks der erste Prozessor ausgelegt zum Speichern des Opcodes (und nicht des Steuersignals des Opcodes) in dem zweiten Speicher 115 (in 5 nicht gezeigt).
  • Der zweite Prozessor 120 der Ausführungsform von 5 umfasst einen zweiten Anweisungsdecoder 510, einen ersten Signaturbestimmer 520, einen zweiten Komparator 530 und eine erste arithmetisch-logische Einheit 540;
  • Der zweite Anweisungsdecoder 510 ist ausgelegt zum Laden des aktuellen Opcodes aus dem zweiten Speicher 115 und zum Decodieren des aktuellen Opcodes, um das Steuersignal des aktuellen Opcodes zu erhalten.
  • Der erste Signaturbestimmer 520 ist ausgelegt zum Bestimmen der zweiten bestimmten Signatur für den aktuellen Opcode unter Verwendung des Steuersignals des aktuellen Opcodes;
  • Der zweite Komparator 530 ist ausgelegt zum Laden der ersten bestimmten Signatur für den aktuellen Opcode aus dem zweiten Speicher 115. Außerdem ist der zweite Komparator 115 ausgelegt zum Bestimmen, dass der zweite Fehler aufgetreten ist, wenn die zweite bestimmte Signatur für den aktuellen Opcode von der ersten bestimmten Signatur für den aktuellen Opcode verschieden ist.
  • Die erste arithmetische Einheit 540 ist ausgelegt zum Ausführen des Steuersignals des aktuellen Opcodes.
  • 6 zeigt den zweiten Prozessor 120 gemäß einer alternativen Ausführungsform. Für jeden Opcode der mehreren Opcodes des Anweisungsblocks ist der erste Prozessor ausgelegt zum Speichern des Steuersignals für den Opcode (und nicht der Opcode selbst) in dem zweiten Speicher.
  • Der zweite Prozessor 120 der Ausführungsform von 6 umfasst einen ersten Signaturbestimmer 620, einen zweiten Komparator 630 und eine erste arithmetisch-logische Einheit 640.
  • Der erste Signaturbestimmer 620 ist ausgelegt zum Laden des Steuersignals des aktuellen Opcodes aus dem zweiten Speicher 115 (in 6 nicht gezeigt) und ist ausgelegt zum Bestimmen der zweiten bestimmten Signatur für den aktuellen Opcode unter Verwendung des Steuersignals des aktuellen Opcodes.
  • Der zweite Komparator 630 ist ausgelegt zum Laden der ersten bestimmten Signatur für den aktuellen Opcode aus dem zweiten Speicher 115. Außerdem ist der zweite Komparator 630 ausgelegt zum Bestimmen, dass der zweite Fehler aufgetreten ist, wenn die zweite bestimmte Signatur für den aktuellen Opcode von der ersten bestimmten Signatur für den aktuellen Opcode verschieden ist; und
  • Die erste arithmetische Einheit 640 ist ausgelegt zum Ausführen des Steuersignals des aktuellen Opcodes.
  • 7 zeigt eine weitere Ausführungsform, die die Ausführungsformen von 5 und 6 erweitert. Bei der Ausführungsform von 7 umfasst der zweite Prozessor 120 ferner einen zweiten Signaturbestimmer 750, einen dritten Komparator 760 und eine zweite arithmetisch-logische Einheit 770. Der erste Signaturbestimmer wird mit dem Bezugszeichen 720 bezeichnet, der zweite Komparator wird mit dem Bezugszeichen 730 bezeichnet und die erste arithmetisch-logische Einheit 740.
  • Der zweite Anweisungsdecoder, der mit dem Bezugszeichen 710 bezeichnet wird, ist optional, und seine Anwesenheit hängt davon ab, ob durch die weiteren Module von 7 die Ausführungsform von 5 erweitert wird (in 7 als Option 1 bezeichnet) oder die Ausführungsform von 6 erweitert wird (in 7 als Option 2 bezeichnet).
  • Bei der Ausführungsform von 7 ist der zweite Signaturbestimmer 750 ausgelegt zum Bestimmen einer dritten bestimmten Signatur für den aktuellen Opcode unter Verwendung des Steuersignals des aktuellen Opcodes.
  • Der dritte Komparator 760 ist ausgelegt zum Bestimmen, dass ein dritter Fehler aufgetreten ist, wenn die dritte bestimmte Signatur für den aktuellen Opcode von der ersten bestimmten Signatur für den aktuellen Opcode verschieden ist.
  • Die zweite arithmetische Einheit 770 ist ausgelegt zum Ausführen des Steuersignals des aktuellen Opcodes, wenn die dritte bestimmte Signatur für den aktuellen Opcode nicht von der ersten bestimmten Signatur für den aktuellen Opcode verschieden ist.
  • Die Ausführungsform von 7 stellt weitere Redundanz und somit weitere Sicherheit bereit, da zwei ALU, die erste arithmetisch-logische Einheit 740 und die zweite arithmetische Einheit 770 den aktuellen Opcode (oder das Steuersignal des aktuellen Opcodes) unabhängig voneinander ausführen.
  • Bei einer Ausführungsform kann z. B. ein (nicht gezeigter) Ausführungsabweichungsdetektor ausgelegt sein zum Detektieren von abweichenden Ergebnissen der Ausführung des aktuellen Opcodes oder der Ausführung des Steuersignals des aktuellen Opcodes durch die erste arithmetisch-logische Einheit 740 und durch die zweite arithmetisch-logische Einheit 770.
  • 8 zeigt ein System 100 gemäß einer anderen Ausführungsform, das den ersten Prozessor 110, den zweiten Speicher 115 und den zweiten Prozessor 120 umfasst. Das System 100, insbesondere der erste Prozessor 110, tritt mit dem ersten Speicher 105 in Interaktion.
  • Bei der Ausführungsform von 8 umfasst der erste Prozessor 110 den ersten Anweisungsdecoder 310, den Fehlercodegenerator 320 und den ersten Komparator 320.
  • Der zweite Speicher 115 wird als ein Anweisungscache implementiert.
  • Der zweite Prozessor 120 umfasst den zweiten Anweisungsdecoder 710, den ersten Signaturbestimmer von 7 (in 8 nicht gezeigt), den zweiten Komparator 730, die zweite arithmetisch-logische Einheit 740, den zweiten Signaturbestimmer von 7 (in 8 nicht gezeigt), den dritten Komparator 760 und die dritte arithmetisch-logische Einheit 770.
  • 8 zeigt ferner einen ersten Programmzähler 315, einen zweiten Programmzähler 745 und einen dritten Programmzähler 775.
  • Gemäß einer Ausführungsform ist für jeden Opcode der mehreren Opcodes des Anweisungsblocks der erste Prozessor 110 ausgelegt zum Bestimmen der ersten bestimmten Signatur abhängig von dem Opcode und abhängig von einem ersten Wert für den Opcode des ersten Programmzählers 315 (z. B. des Anweisungsdecoders 310). Der erste Prozessor 110 ist ausgelegt zum Bestimmen eines bestimmten Fehlercodes für den Anweisungsblock abhängig von jedem Opcode der mehreren Opcodes des Anweisungsblocks und abhängig von dem Wert des ersten Programmzählers 315 für jeden Opcode der mehreren Opcodes des Anweisungsblocks.
  • Der zweite Prozessor 120 ist ausgelegt zum Bestimmen einer zweiten bestimmten Signatur für einen aktuellen Opcode der mehreren Opcodes des Anweisungsblocks abhängig von dem aktuellen Opcode und abhängig von einem zweiten Wert für den Opcode des zweiten Programmzählers 745 (z. B. der ersten arithmetisch-logischen Einheit 740).
  • Auch einen Wert eines Programmzählers zum Bestimmen der Signaturen zu berücksichtigen, hat den Vorteil, dass nicht nur geprüft wird, ob ein gültiger Opcode ausgeführt wird, sondern auch geprüft wird, ob der gültige Opcode an der richtigen Position im Programmfluss ausgeführt wird.
  • In 8 ist der zweite Prozessor 120 außerdem ausgelegt zum Bestimmen einer dritten bestimmten Signatur für einen aktuellen Opcode der mehreren Opcodes des Anweisungsblocks abhängig von dem aktuellen Opcode und abhängig von einem dritten Wert für den Opcode des dritten Programmzählers 775 (z. B. der zweiten arithmetisch-logischen Einheit 770).
  • Im Folgenden werden konkrete Ausführungsformen und Vorteile dieser Ausführungsformen beschrieben.
  • Gemäß einigen Ausführungsformen werden die Vorteile einer Signaturlösung mit den Vorteilen, dass ein Fehlerdetektionscode Teil des Speichers ist, kombiniert. Es wird ein kontinuierlicher Fehlerdetektionsmechanismus hergestellt, der minimalen Einfluss auf das zu schützende Programm hat und der minimales Speicheroverhead aufweist. Die Größe des Schutzcodes ist frei skalierbar.
  • Bei einigen Ausführungsformen wird für jede Anweisung/jeden Opcode eine Signatur S(opcode) frei auswählbarer Größe berechnet. Diese Signatur hängt von dem Opcode ab oder einer Abbildung des Opcodes z. B. auf Steuersignale für eine ALU (arithmetisch-logische Einheit)/CPU (Steuerverarbeitungseinheit). Außerdem können weitere Attribute des Opcodes in der Signatur berücksichtigt werden. Dies wäre z. B. die Speicheradresse des Opcodes (Programmzähler) oder z. B. ein Privilegium, das Ausführen der Anweisungen erlaubt. Ein Fehlercode C(InstrBlock) wird nun zu einem Block von Anweisungen hinzugefügt. Der Fehlercode weist eine frei skalierbare Größe auf und ergibt sich aus einer Abbildungsfunktion der Signaturen S(Opcode) der Opcodes, die im Speicher gespeichert sind. Der Anweisungsblock mit dem Fehlercode C(InstrBlock) kann dann in einem Programmspeicher gespeichert werden. Die Erzeugung des Fehlercodes C(InstrBlock) kann zum Beispiel online auf der Hardware durchgeführt werden. Die Erzeugung des Fehlercodes kann jedoch zum Beispiel als Alternative oder zusätzlich offline unter Verwendung einer Toolchain durchgeführt werden.
  • Bei Ausführung eines wie oben beschrieben geschützten Programms wird für jeden Opcode jedes Programmblocks, der ausgeführt werden soll, die Signatur S(Opcode) für den Opcode berechnet und aus den Signaturen ein Fehlercode C(InstrBlock) berechnet. Der Fehlercode kann dann mit einem gespeicherten Fehlercode verglichen werden. Hierdurch kann die Korrektheit der Transformation des Fehlercodes eines Anweisungsblocks in Opcode-spezifische Signaturen sichergestellt werden. Die Anweisungen, die die Signaturen umfassen, werden dann zur Ausführung der CPU zugeführt. Unter Verwendung der erweiterten Attribute in der Signatur ist es auch möglich, zu prüfen, ob die Anweisung aus der korrekten Speicheradresse (Programmzähler) geladen wurde. Hierdurch wird eine effiziente Programmausführungssteuerung realisiert. Wenn die Anweisungssequenz nur in einer bestimmten Softwareebene erlaubt wird, ist es auch möglich, dies zu prüfen.
  • Wenn das System erlaubt, dass eine Prüfung auf mögliche Fehler erst durchgeführt wird, nachdem eine bestimmte Anzahl von Anweisungen ausgeführt wurde, können Anweisungen, für die Signaturen erzeugt wurden, bereits ausgeführt worden sein, bevor die Prüfung unter Verwendung des Fehlercodes C(InstrBlock) durchgeführt wurde.
  • Wenn die Signatur u. a. aus den Steuersignalen berechnet wird, die für den Opcode erzeugt werden, was zur Ausführung der jeweiligen Anweisung in die ALU geleitet werden muss, wird hierdurch ein effektiver Schutz der gesamten Opcode-Erzeugung möglich. Durch Berechnen von C(InstrBlock) auf der Basis der Signaturen ist kein Schutzmechanismus zur Erzeugung der Online-Signatur notwendig. Nur die Vergleiche der Fehlercodes, die online erzeugt werden, mit den Referenzwerten aus dem Speicher.
  • Gemäß einer möglichen Implementierung einer Ausführungsform wird ein Cache oder Puffer zur weiteren Optimierung zwischen dem Programmspeicher, in dem Opcodes blockweise durch einen Fehlercode C(InstrBlock) geschützt werden, und der CPU implementiert, die an Opcodes arbeitet, die durch Signaturen S(Opcode) geschützt werden. Zu diesem Zweck wird der Cache mit Anweisungen und mit den zugeordneten Signaturen S(Opcode) gefüllt. Beim Füllen des Cache oder Puffers findet die oben beschriebene Erzeugung und Prüfung der Signaturen anhand des Fehlercodes des Programmzählers statt. Dies optimiert insbesondere die Ausführung von Programmschleifen. Außerdem wird der Nachteil überwunden, dass zur Ausführung einer einzelnen Anweisung der gesamte Anweisungsblock mit Bezug auf die Signaturen decodiert werden muss.
  • Wieder mit Bezug auf die dortige 8 ist Anweisungssignatur-Komprimierung gemäß einer Ausführungsform abgebildet.
  • Jede Anweisung wird durch einen Anweisungscode (InstrCode) geschützt, der die für die CPU-Ausführung zu erzeugenden Steuersignale und den PC ihres Speicherorts widerspiegelt.
  • Im ersten Speicher 105, z. B. nichtflüchtigem Speicher (NVM), wird pro Speicherblock der Anweisungscode zu einem Anweisungsfehlerdetektionscode EDC (InstrEDC) gehasht, der zusammen mit dem Datenteil gespeichert wird.
  • Beim Lesen eines nichtflüchtigen Speicherblocks werden die Anweisungscodes erzeugt und im zweiten Speicher 115, z. B. einem Cache, gespeichert. Bei einer Ausführungsform werden die Anweisungscodes gehasht und mit dem abgelieferten Anweisungsfehlerdetektionscode verglichen.
  • Bei der Ausführung werden die erzeugten Steuersignale und der Programmzähler (PC) zum Anweisungscode gehasht und mit dem gegebenen verglichen. Zusammen mit einer redundanten Programmzählererzeugung (eine für Abruf, eine für Hashen). Hierdurch wird ein Schutz des Anweisungsflusses weiter verbessert.
  • Bei einer alternativen Ausführungsform werden statt des Speicherns der Anweisungen im Cache 115 die decodierten Steuersignale im Cache 115 gespeichert. Hierdurch wird der zweite Anweisungsdecodierer 710, z. B. ein CPU-Decoder, überflüssig.
  • Bei einer weiteren alternativen Ausführungsform wird nur ein CheckWord pro Cache-Wort verwendet. In diesem Fall muss für Verzweigungen in eine „nicht wortausgerichtete” Adresse auch eine 16-Bit-Vorgängeanweisung gehasht werden. Es besteht eine Wahrscheinlichkeit von etwa 25%, dass dies geschieht.
  • Wenn ein Opcodesatz mit Opcodes verschiedener Größe verwendet wird (zum Beispiel 16 Bit und 32 Bit), entsteht das Problem, dass ein Anweisungsblock nicht unbedingt mit dem Anfang einer Anweisung startet. Es ist möglich, dass der Block mit der zweiten Hälfte einer 32-Bit-Anweisung (Halbwort-16-Bit-Orientierung angenommen) startet. Dasselbe Problem entsteht für das Ende eines Anweisungsblocks. Auch dabei kann sich nur die Hälfte einer 32-Bit-Anweisung im Anweisungsblock befinden. Zur Berechnung des Fehlercodes C wird entweder die nichtverfügbare Anweisungshälfte zusätzlich geladen, oder es wird nicht die gesamte Anweisung einschließlich ihrer Signatur betrachtet.
  • Eine Strategie, die einem normalen vorwärtsorientierten Programmfluss entspricht, besteht darin, den unvollständigen Opcode am Anfang eines Anweisungsblocks in dem Fehlercode C(InstrBlock) des Anweisungsblocks nicht zu berücksichtigen und den unvollständigen Opcode am Ende eines Anweisungsblocks zusätzlich mit der nichtverfügbaren Hälfte aus dem linear nachfolgenden Anweisungsblock und seiner Signatur zu berücksichtigen. Diese Strategie basiert auf der Annahme, dass ein Linearvoranschreiten des Programms auch den nachfolgenden Anweisungsblock benötigt. Wenn der verwendete Anweisungssatz diese Eigenschaft nicht aufweist, dass von einem beliebigen Anweisungssatz der Start des Opcode immer bestimmt werden kann, kann eine Markierung zusätzlich zu dem Fehlercode C(InstrBlock) im Programmspeicher gespeichert werden, die definiert, ob die erste vollständige Anweisung des Anweisungsblocks mit dem ersten oder dem zweiten Halbwort startet.
  • 9a zeigt eine (Anweisungs-)Cache-Repräsentation gemäß einer Ausführungsform. Es kann z. B. eine Markierung verwendet werden, die angibt, ob das erste Halbwort eines Worts eine 16-Bit-Anweisung ist. 9a zeigt eine Situation, wobei das letzte Element des oberen Anweisungsblocks und das erste Element des unteren Anweisungsblocks ein teilweiser Opcode ist.
  • Gemäß einer Ausführungsform ist der erste Prozessor 110 ausgelegt zum Bestimmen, ob der Anweisungsblock einen teilweisen Opcode umfasst, wobei der teilweise Opcode unvollständig ist. Wenn sich der teilweise Opcode an einem Ende des Anweisungsblocks befindet, ist der erste Prozessor 110 ausgelegt zum Laden eines ersten weiteren Anweisungsblocks (z. B. eines nachfolgenden Anweisungsblocks, der dem aktuellen Anweisungsblock unmittelbar nachfolgt), um einen fehlenden Teil zu erhalten, der in dem teilweisen Opcode fehlt, und um den Fehlercode abhängig von dem teilweisen Opcode und abhängig von dem fehlenden Teil zu bestimmen. Wenn sich der teilweise Opcode an einem Start eines Anweisungsblocks befindet, ist der erste Prozessor 110 ausgelegt zum Bestimmen des Fehlercodes nicht abhängig von dem teilweisen Opcode.
  • In 9b ist eine nichtflüchtige Speicherrepräsentation gemäß einer solchen Ausführungsform abgebildet. Der untere Anweisungsblock wird geladen, um den fehlenden Teil zu erhalten, der in dem teilweisen Opcode des oberen Anweisungsblocks fehlt. Als Alternative wird zum Beispiel nur das erste Anweisungswort aus dem unteren Anweisungsblock geladen und gelesen. Der Fehlercode für den oberen Anweisungsblock wird abhängig von allen Opcodes des oberen Anweisungsblocks, abhängig von dem teilweisen Opcode am Ende des oberen Anweisungsblocks und abhängig von dem teilweisen Opcode am Start des unteren Anweisungsblocks bestimmt.
  • Gemäß einer alternativen Ausführungsform ist der erste Prozessor 110 ausgelegt zum Bestimmen, ob der Anweisungsblock einen teilweisen Opcode umfasst, wobei der teilweise Opcode unvollständig ist. Wenn sich der teilweise Opcode am Start des Anweisungsblocks befindet, ist der erste Prozessor 110 ausgelegt zum Laden eines zweiten weiteren Anweisungsblocks (z. B. eines vorausgehenden Anweisungsblocks, der dem aktuellen Anweisungsblock unmittelbar vorausgeht), um einen fehlenden Teil zu erhalten, und um den Fehlercode abhängig von dem teilweisen Opcode und abhängig von dem fehlenden Teil zu bestimmen. Wenn sich der teilweise Opcode am Ende des Anweisungsblocks befindet, ist der erste Prozessor 110 ausgelegt zum Bestimmen des Fehlercodes nicht abhängig von dem teilweisen Opcode.
  • 9c zeigt eine (Anweisungs-)Cache-Repräsentation gemäß einer weiteren Ausführungsform.
  • Obwohl einige Aspekte im Kontext eines Systems beschrieben wurden, ist klar, dass diese Aspekte auch eine Beschreibung des entsprechenden Verfahrens repräsentieren, wobei ein Block oder eine Vorrichtung einem Verfahrensschritt oder einem Merkmal eines Verfahrensschritts entspricht. Analog repräsentieren im Kontext eines Verfahrensschritts beschriebene Aspekte auch eine Beschreibung eines entsprechenden Blocks oder Postens oder Merkmals eines entsprechenden Systems.
  • Das erfindungsgemäße zerlegte Signal kann auf einem digitalen Speichermedium gespeichert werden oder kann auf einem Übertragungsmedium, wie etwa einem drahtlosen Übertragungsmedium oder einem verdrahteten Übertragungsmedium, wie etwa dem Internet, übertragen werden.
  • Abhängig von bestimmten Implementierungsanforderungen können Ausführungsformen der Erfindung in Hardware oder in Software implementiert werden. Die Implementierung kann unter Verwendung eines digitalen Speichermediums durchgeführt werden, wie zum Beispiel einer Diskette, einer DVD, einer CD, eines ROM, eines PROM, eines EPROM, eines EEPROM oder eines FLASH-Speichers, worauf elektronisch lesbare Steuersignale gespeichert sind, die mit einem programmierbaren Computersystem zusammenwirken (oder zusammenwirken können), so dass das jeweilige Verfahren ausgeführt wird.
  • Einige Ausführungsformen gemäß der Erfindung umfassen einen nichttransitorischen Datenträger, der elektronisch lesbare Steuersignale aufweist, die mit einem programmierbaren Computersystem zusammenwirken können, so dass eines der hier beschriebenen Verfahren ausgeführt wird.
  • Im Allgemeinen können Ausführungsformen der vorliegenden Erfindung als ein Computerprogrammprodukt mit einem Programmcode implementiert werden, wobei der Programmcode wirkt, um eines der Verfahren auszuführen, wenn das Computerprogrammprodukt auf einem Computer läuft. Der Programmcode kann zum Beispiel auf einem maschinenlesbaren Träger gespeichert werden.
  • Andere Ausführungsformen umfassen das Computerprogramm zum Ausführen eines der hier beschriebenen Verfahren, das auf einem maschinenlesbaren Träger gespeichert ist.
  • Anders ausgedrückt, ist eine Ausführungsform des erfindungsgemäßen Verfahrens deshalb ein Computerprogramm, das einen Programmcode zum Ausführen eines der hier beschriebenen Verfahren aufweist, wenn das Computerprogramm auf einem Computer läuft.
  • Eine weitere Ausführungsform der erfindungsgemäßen Verfahren ist deshalb ein Datenträger (oder ein digitales Speichermedium oder ein computerlesbares Medium), das darauf aufgezeichnet das Computerprogramm zum Ausführen eines der hier beschriebenen Verfahren umfasst.
  • Eine weitere Ausführungsform des erfindungsgemäßen Verfahrens ist deshalb ein Datenstrom oder eine Sequenz von Signalen, wodurch das Computerprogramm zum Ausführen eines der hier beschriebenen Verfahren repräsentiert wird. Der Datenstrom oder die Sequenz von Signalen können zum Beispiel dafür ausgelegt sein, über eine Datenkommunikationsverbindung, zum Beispiel über das Internet, transferiert zu werden.
  • Eine weitere Ausführungsform umfasst ein Verarbeitungsmittel, zum Beispiel einen Computer oder eine programmierbare Logikvorrichtung, konfiguriert oder ausgelegt zum Ausführen eines der hier beschriebenen Verfahren.
  • Eine weitere Ausführungsform umfasst einen Computer, der darauf installiert das Computerprogramm zum Ausführen eines der hier beschriebenen Verfahren aufweist.
  • Bei einigen Ausführungsformen kann eine programmierbare Logikvorrichtung (zum Beispiel ein am Einsatzort programmierbares Gatearray) zur Ausführung einiger oder aller der Funktionalitäten der hier beschriebenen Verfahren verwendet werden. Bei einigen Ausführungsformen kann ein am Einsatzort programmierbares Gatearray mit einem Mikroprozessor zusammenwirken, um eines der hier beschriebenen Verfahren auszuführen. Im Allgemeinen werden die Verfahren vorzugsweise durch eine beliebige Hardwarevorrichtung ausgeführt.
  • Die oben beschriebenen Ausführungsformen veranschaulichen lediglich die Prinzipien der vorliegenden Erfindung. Es versteht sich, dass anderen Fachleuten Modifikationen und Abwandlungen der Anordnungen und der Details, die hier beschrieben werden, einfallen werden. Es wird deshalb beabsichtigt, nur durch den Schutzumfang der anhängigen Patentansprüche beschränkt zu werden und nicht durch die zur Beschreibung und Erläuterung der vorliegenden Ausführungsformen angegebenen spezifischen Einzelheiten.

Claims (14)

  1. System, umfassend: einen ersten Prozessor (110) zum Laden eines Anweisungsblocks aus einem ersten Speicher (105), wobei der Anweisungsblock mehrere Opcodes und einen gespeicherten Fehlercode umfasst; wobei für jeden Opcode der mehreren Opcodes des Anweisungsblocks der erste Prozessor (110) ausgelegt ist zum Bestimmen einer ersten bestimmten Signatur abhängig von dem Opcode; wobei der erste Prozessor (110) ausgelegt ist zum Bestimmen eines bestimmten Fehlercodes für den Anweisungsblock abhängig von jedem Opcode und abhängig von der ersten bestimmten Signatur jedes Opcodes der mehreren Opcodes des Anweisungsblocks; und wobei der erste Prozessor (110) ausgelegt ist zum Bestimmen, dass ein erster Fehler aufgetreten ist, wenn der bestimmte Fehlercode von dem gespeicherten Fehlercode verschieden ist; und einen zweiten Prozessor (120), wobei der zweite Prozessor (120) ausgelegt ist zum Bestimmen einer zweiten bestimmten Signatur für einen aktuellen Opcode der mehreren Opcodes des Anweisungsblocks abhängig von dem aktuellen Opcode; wobei der zweite Prozessor (120) ausgelegt ist zum Bestimmen, dass ein zweiter Fehler aufgetreten ist, wenn die zweite bestimmte Signatur für den aktuellen Opcode von der ersten bestimmten Signatur für den aktuellen Opcode verschieden ist, wobei der zweite Prozessor (120) zum Ausführen des aktuellen Opcodes oder eines Steuersignals ausgelegt ist, das von dem aktuellen Opcode abhängt, wenn die zweite bestimmte Signatur für den aktuellen Opcode nicht von der ersten bestimmten Signatur für den aktuellen Opcode verschieden ist.
  2. System nach Anspruch 1, wobei für jeden Opcode der mehreren Opcodes der erste Prozessor (110) ausgelegt ist zum Decodieren des Opcodes, um ein Steuersignal für den Opcode zu erhalten, wobei das Steuersignal eines von mehreren Steuersignalen ist, wobei die mehreren Steuersignale das Steuersignal umfassen, das von dem aktuellen Opcode abhängt; und wobei für jeden Opcode der mehreren Opcodes der erste Prozessor (110) ausgelegt ist zum Bestimmen der ersten bestimmten Signatur des Opcodes abhängig von dem Steuersignal des Opcodes.
  3. System nach Anspruch 2, wobei der erste Prozessor (110) einen ersten Anweisungsdecoder (310), einen Fehlercodegenerator (320) und einen ersten Komparator (330) umfasst; wobei für jeden Opcode der mehreren Opcodes der erste Anweisungsdecoder (310) ausgelegt ist zum Decodieren des Opcodes, um das Steuersignal für den Opcode zu erhalten, wobei der Fehlercodegenerator (320) ausgelegt ist zum Bestimmen des bestimmten Fehlercodes für den Anweisungsblock unter Verwendung des Steuersignals jedes Opcodes der mehreren Opcodes des Anweisungsblocks; und wobei der erste Komparator (330) ausgelegt ist zum Bestimmen, dass der erste Fehler aufgetreten ist, wenn der bestimmte Fehlercode von dem gespeicherten Fehlercode verschieden ist.
  4. System nach Anspruch 2 oder 3, wobei das System einen zweiten Speicher (115) umfasst; wobei für jeden Opcode der mehreren Opcodes des Anweisungsblocks der erste Prozessor (110) ausgelegt ist zum Speichern des Opcodes oder des Steuersignals, das von dem Opcode abhängt, in dem zweiten Speicher (115) und ausgelegt ist zum Speichern der ersten bestimmten Signatur für den Opcode in dem zweiten Speicher (115); und wobei der zweite Prozessor (120) ausgelegt ist zum Laden des aktuellen Opcodes oder des Steuersignals, das von dem aktuellen Opcode abhängt, aus dem zweiten Speicher (115) und ausgelegt ist zum Laden der ersten bestimmten Signatur für den aktuellen Opcode aus dem zweiten Speicher (115).
  5. System nach Anspruch 4, wobei der zweite Speicher (115) ein Cache ist.
  6. System nach Anspruch 4 oder 5, wobei für jeden Opcode der mehreren Opcodes des Anweisungsblocks der erste Prozessor (110) ausgelegt ist zum Speichern des Opcodes in dem zweiten Speicher (115); wobei der zweite Prozessor (120) einen zweiten Anweisungsdecoder (510; 710), einen ersten Signaturbestimmer (520; 620; 720), einen zweiten Komparator (530; 630; 730) und eine erste arithmetisch-logische Einheit (540; 640; 740) umfasst; wobei der zweite Anweisungsdecoder (510; 710) ausgelegt ist zum Laden des aktuellen Opcodes aus dem zweiten Speicher (115) und zum Decodieren des aktuellen Opcodes, um das Steuersignal des aktuellen Opcodes zu erhalten; wobei der erste Signaturbestimmer (520; 620; 720) ausgelegt ist zum Bestimmen der zweiten bestimmten Signatur für den aktuellen Opcode unter Verwendung des Steuersignals des aktuellen Opcodes; wobei der zweite Komparator (530; 630; 730) ausgelegt ist zum Laden der ersten bestimmten Signatur für den aktuellen Opcode aus dem zweiten Speicher (115); wobei der zweite Komparator (530; 630; 730) ausgelegt ist zum Bestimmen, dass der zweite Fehler aufgetreten ist, wenn die zweite bestimmte Signatur für den aktuellen Opcode von der ersten bestimmten Signatur für den aktuellen Opcode verschieden ist.
  7. System nach Anspruch 4 oder 5, wobei für jeden Opcode der mehreren Opcodes des Anweisungsblocks der erste Prozessor (110) ausgelegt ist zum Speichern des Steuersignals für den Opcode in dem zweiten Speicher (115); wobei der zweite Prozessor (120) einen ersten Signaturbestimmer (520; 620; 720), einen zweiten Komparator (530; 630; 730) und eine erste arithmetisch-logische Einheit (540; 640; 740) umfasst; wobei der erste Signaturbestimmer (520; 620; 720) ausgelegt ist zum Laden des Steuersignals des aktuellen Opcodes aus dem zweiten Speicher (115) und ausgelegt ist zum Bestimmen der zweiten bestimmten Signatur für den aktuellen Opcode unter Verwendung des Steuersignals für den aktuellen Opcode; wobei der zweite Komparator (530; 630; 730) ausgelegt ist zum Laden der ersten bestimmten Signatur für den aktuellen Opcode aus dem zweiten Speicher (115); wobei der zweite Komparator (530; 630; 730) ausgelegt ist zum Bestimmen, dass der zweite Fehler aufgetreten ist, wenn die zweite bestimmte Signatur für den aktuellen Opcode von der ersten bestimmten Signatur für den aktuellen Opcode verschieden ist.
  8. System nach Anspruch 6 oder 7, wobei der zweite Prozessor (120) ferner einen zweiten Signaturbestimmer (750), einen dritten Komparator (760) und eine zweite arithmetisch-logische Einheit (770) umfasst; wobei der zweite Signaturbestimmer (750) ausgelegt ist zum Bestimmen einer dritten bestimmten Signatur für den aktuellen Opcode unter Verwendung des Steuersignals des aktuellen Opcodes; wobei der dritte Komparator (760) ausgelegt ist zum Bestimmen, dass ein dritter Fehler aufgetreten ist, wenn die dritte bestimmte Signatur für den aktuellen Opcode von der ersten bestimmten Signatur für den aktuellen Opcode verschieden ist; und wobei die zweite arithmetische Einheit (770) ausgelegt ist zum Ausführen des Steuersignals des aktuellen Opcodes, wenn die dritte bestimmte Signatur für den aktuellen Opcode nicht von der ersten bestimmten Signatur für den aktuellen Opcode verschieden ist.
  9. System nach Anspruch 8, wobei ein Ausführungsabweichungsdetektor ausgelegt ist zum Detektieren von abweichenden Ergebnissen der Ausführung des aktuellen Opcodes oder der Ausführung des Steuersignals des aktuellen Opcodes durch die erste arithmetisch-logische Einheit (540; 640; 740) und durch die zweite arithmetisch-logische Einheit (770).
  10. System nach einem der vorhergehenden Ansprüche, wobei für jeden Opcode der mehreren Opcodes des Anweisungsblocks der erste Prozessor (110) ausgelegt ist zum Bestimmen der ersten bestimmten Signatur abhängig von dem Opcode und abhängig von einem ersten Wert für den Opcode eines ersten Programmzählers (315); wobei der erste Prozessor (110) ausgelegt ist zum Bestimmen eines bestimmten Fehlercodes für den Anweisungsblock abhängig von jedem Opcode der mehreren Opcodes des Anweisungsblocks und abhängig von dem Wert des ersten Programmzählers (315) für jeden Opcode der mehreren Opcodes des Anweisungsblocks; wobei der zweite Prozessor (120) ausgelegt ist zum Bestimmen einer zweiten bestimmten Signatur für einen aktuellen Opcode der mehreren Opcodes des Anweisungsblocks abhängig von dem aktuellen Opcode und abhängig von einem zweiten Wert für den Opcode eines zweiten Programmzählers (745).
  11. System nach einem der vorhergehenden Ansprüche, wobei der erste Prozessor (110) ausgelegt ist zum Bestimmen, ob der Anweisungsblock einen teilweisen Opcode umfasst, wobei der teilweise Opcode unvollständig ist; wobei, wenn sich der teilweise Opcode an einem Ende des Anweisungsblocks befindet, der erste Prozessor (110) ausgelegt ist zum Laden mindestens eines ersten Worts eines ersten weiteren Anweisungsblocks, um einen fehlenden Teil zu erhalten, der in dem teilweisen Opcode fehlt, und um den Fehlercode abhängig von dem teilweisen Opcode und abhängig von dem fehlenden Teil zu bestimmen; und wobei, wenn sich der teilweise Opcode an einem Start des Anweisungsblocks befindet, der erste Prozessor (110) ausgelegt ist zum Bestimmen des Fehlercodes nicht abhängig von dem teilweisen Opcode; oder wobei, wenn sich der teilweise Opcode an dem Start des Anweisungsblocks befindet, der erste Prozessor (110) ausgelegt ist zum Laden mindestens eines letzten Worts eines zweiten weiteren Anweisungsblocks, um den fehlenden Teil zu erhalten, der in dem teilweisen Opcode fehlt, und um den Fehlercode abhängig von dem teilweisen Opcode und dem fehlenden Teil zu bestimmen; und wobei, wenn sich der teilweise Opcode an dem Ende des Anweisungsblocks befindet, der erste Prozessor (110) ausgelegt ist zum Bestimmen des Fehlercodes nicht abhängig von dem teilweisen Opcode.
  12. System, umfassend: einen ersten Speicher (105) und ein System nach einem der vorhergehenden Ansprüche, wobei der erste Prozessor (110) des Systems nach einem der vorhergehenden Ansprüche ausgelegt ist zum Laden eines Anweisungsblocks aus dem ersten Speicher (105).
  13. Verfahren, umfassend: Laden eines Anweisungsblocks aus einem Speicher durch einen ersten Prozessor (110), wobei der Anweisungsblock mehrere Opcodes und einen gespeicherten Fehlercode umfasst; Bestimmen einer ersten bestimmten Signatur durch den ersten Prozessor (110) abhängig von dem Opcode für jeden Opcode der mehreren Opcodes des Anweisungsblocks; Bestimmen eines bestimmten Fehlercodes für den Anweisungsblock durch den ersten Prozessor (110) abhängig von jedem Opcode und abhängig von der ersten bestimmten Signatur jedes Opcodes der mehreren Opcodes des Anweisungsblocks; Bestimmen durch den ersten Prozessor (110), dass ein erster Fehler aufgetreten ist, wenn der bestimmte Fehlercode von dem gespeicherten Fehlercode verschieden ist; Bestimmen einer zweiten bestimmten Signatur für einen aktuellen Opcode der mehreren Opcodes des Anweisungsblocks durch einen zweiten Prozessor (120) abhängig von dem aktuellen Opcode; Bestimmen durch den zweiten Prozessor (120), dass ein zweiter Fehler aufgetreten ist, wenn die zweite bestimmte Signatur für den aktuellen Opcode von der ersten bestimmten Signatur für den aktuellen Opcode verschieden ist; und Ausführen des aktuellen Opcodes oder eines Steuersignals, das von dem aktuellen Opcode abhängt, durch den zweiten Prozessor (120), wenn die zweite bestimmte Signatur für den aktuellen Opcode nicht von der ersten bestimmten Signatur für den aktuellen Opcode verschieden ist.
  14. Computerprogramm zum Implementieren des Verfahrens nach Anspruch 13, wenn es auf einem Computer oder Signalprozessor ausgeführt wird.
DE102015202049.5A 2015-02-05 2015-02-05 System und Verfahren zur Fehlerdetektion von ausgeführtem Programmcode unter Verwendung komprimierter Anweisungssignaturen Active DE102015202049B3 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102015202049.5A DE102015202049B3 (de) 2015-02-05 2015-02-05 System und Verfahren zur Fehlerdetektion von ausgeführtem Programmcode unter Verwendung komprimierter Anweisungssignaturen
US15/014,251 US10114685B2 (en) 2015-02-05 2016-02-03 System and method for error detection of executed program code employing compressed instruction signatures

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102015202049.5A DE102015202049B3 (de) 2015-02-05 2015-02-05 System und Verfahren zur Fehlerdetektion von ausgeführtem Programmcode unter Verwendung komprimierter Anweisungssignaturen

Publications (1)

Publication Number Publication Date
DE102015202049B3 true DE102015202049B3 (de) 2016-08-18

Family

ID=56552541

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015202049.5A Active DE102015202049B3 (de) 2015-02-05 2015-02-05 System und Verfahren zur Fehlerdetektion von ausgeführtem Programmcode unter Verwendung komprimierter Anweisungssignaturen

Country Status (2)

Country Link
US (1) US10114685B2 (de)
DE (1) DE102015202049B3 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102016116221A1 (de) * 2016-02-09 2017-08-10 STMicroelectronic (Rousset) SAS Verfahren und Einrichtung zur Überwachung der Ausführung eines Programmcodes

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230144611A (ko) * 2021-04-06 2023-10-16 구글 엘엘씨 보안 암호화 코프로세서

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974529A (en) * 1998-05-12 1999-10-26 Mcdonnell Douglas Corp. Systems and methods for control flow error detection in reduced instruction set computer processors
DE102005050767A1 (de) * 2005-10-24 2007-04-26 Robert Bosch Gmbh Instruktionsspeicherabsicherung durch Control Flow Checking

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5829031A (en) * 1996-02-23 1998-10-27 Advanced Micro Devices, Inc. Microprocessor configured to detect a group of instructions and to perform a specific function upon detection
US6357024B1 (en) * 1998-08-12 2002-03-12 Advanced Micro Devices, Inc. Electronic system and method for implementing functional redundancy checking by comparing signatures having relatively small numbers of signals
US6954886B2 (en) * 2001-12-31 2005-10-11 Intel Corporation Deterministic hardware reset for FRC machine
US7194671B2 (en) * 2001-12-31 2007-03-20 Intel Corporation Mechanism handling race conditions in FRC-enabled processors
US8271838B2 (en) * 2004-11-16 2012-09-18 Siemens Corporation System and method for detecting security intrusions and soft faults using performance signatures
US7506217B2 (en) * 2005-12-30 2009-03-17 Intel Corporation Apparatus and method for software-based control flow checking for soft error detection to improve microprocessor reliability
US7669100B2 (en) * 2007-03-08 2010-02-23 Freescale Semiconductor, Inc. System and method for testing and providing an integrated circuit having multiple modules or submodules
EP2895935A4 (de) * 2012-09-14 2016-05-11 Intel Corp Verfahren und vorrichtung zum schutz von speicherbereichen während niedrigleistungszuständen
US9323920B2 (en) * 2013-10-23 2016-04-26 Infineon Technologies Ag Data processing arrangement and method for ensuring the integrity of the execution of a computer program

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974529A (en) * 1998-05-12 1999-10-26 Mcdonnell Douglas Corp. Systems and methods for control flow error detection in reduced instruction set computer processors
DE102005050767A1 (de) * 2005-10-24 2007-04-26 Robert Bosch Gmbh Instruktionsspeicherabsicherung durch Control Flow Checking

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102016116221A1 (de) * 2016-02-09 2017-08-10 STMicroelectronic (Rousset) SAS Verfahren und Einrichtung zur Überwachung der Ausführung eines Programmcodes
US10162728B2 (en) 2016-02-09 2018-12-25 Stmicroelectronics (Rousset) Sas Method and device for monitoring the execution of a program code

Also Published As

Publication number Publication date
US20160232050A1 (en) 2016-08-11
US10114685B2 (en) 2018-10-30

Similar Documents

Publication Publication Date Title
DE102009037630B4 (de) Elektronische Vorrichtung und Verfahren zur Überprüfung der korrekten Programmausführung
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
DE102011086530A1 (de) Mikroprozessorsystem mit fehlertoleranter Architektur
EP2447843B1 (de) Verfahren zur Verifizierung eines Anwendungsprogramms einer fehlersicheren Speicherprogrammierbaren Steuerung, und Speicherprogrammierbare Steuerung zur Ausführung des Verfahrens
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
DE112016004678T5 (de) Verfahren zum Ausführen von Programmen in einem elektronischen System für Anwendungen mit funktionaler Sicherheit umfassend mehrere Prozessoren, entsprechendes System und Computerprogrammprodukt
EP1794680A1 (de) Verfahren zur abarbeitung eines computerprogramms auf einem computersystem
DE102012015272A1 (de) Verfahren zur effizienten Absicherung sicherheitskritischer Funktionen eines Steuergeräts und Steuergerät
DE102015202049B3 (de) System und Verfahren zur Fehlerdetektion von ausgeführtem Programmcode unter Verwendung komprimierter Anweisungssignaturen
DE102004011450A1 (de) Anvisierte Fehlertoleranz durch spezielle CPU-Befehle
DE102006062703A1 (de) Fehlererkennungsvorrichtung und Verfahren zur Fehlererkennung für einen Befehlsdecoder
DE102016223341A1 (de) Integrierte Schaltung mit Hardwareprüfeinheit zum Überprüfen von ausgewählten Speicherzugriffen
DE102014115411A1 (de) Datenverarbeitungsanordnung und -verfahren zur sicherstellung der integrität der ausführung eines computerprogramms
DE102011011333A1 (de) Lesen in Peripheriegeräte und schreiben aus Peripheriegeräten mit zeitlich getrennter, redundanter Prozessorausführung
EP1680737A1 (de) Verfahren und vorrichtung zur operandenverarbeitung in einer prozessoreinheit
DE102013021231A1 (de) Verfahren zum Betrieb eines Assistenzsystems eines Fahrzeugs und Fahrzeugsteuergerät
DE102014114157B4 (de) Verfahren zur Datenverarbeitung zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist und Datenverarbeitungsanordnungen zum Erzeugen von Programm-Code
DE102016200413A1 (de) Mikrocomputer
DE102014003665A1 (de) Instruktion zum durchführen einer überlastprüfung
EP1777622A2 (de) Instruktionsspeicherabsicherung durch Control Flow Checking
DE102019127856A1 (de) Verfahren zum sicheren Booten eines Steuergeräts und Steuergerät
EP3822775A1 (de) Verfahren zum sicheren starten einer gerätesoftware, insbesondere eines betriebssystems, eines elektronischen gerätes
DE102022128183B3 (de) Verfahren zum Starten einer Datenverarbeitungseinrichtung, Datenverarbeitungseinrichtung und Kraftfahrzeug
EP3876123B1 (de) Anordnung und betriebsverfahren für einen sicheren hochfahrablauf einer elektronischen einrichtung
DE102022208087A1 (de) Verfahren zum Überprüfen einer Verarbeitung von Nutzdaten

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R082 Change of representative