DE102009037630A1 - Elektronische Vorrichtung und Verfahren zur Überprüfung der korrekten Prgrammausführung - Google Patents

Elektronische Vorrichtung und Verfahren zur Überprüfung der korrekten Prgrammausführung Download PDF

Info

Publication number
DE102009037630A1
DE102009037630A1 DE102009037630A DE102009037630A DE102009037630A1 DE 102009037630 A1 DE102009037630 A1 DE 102009037630A1 DE 102009037630 A DE102009037630 A DE 102009037630A DE 102009037630 A DE102009037630 A DE 102009037630A DE 102009037630 A1 DE102009037630 A1 DE 102009037630A1
Authority
DE
Germany
Prior art keywords
code
cpv
hardware
stage
edc
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.)
Granted
Application number
DE102009037630A
Other languages
English (en)
Other versions
DE102009037630B4 (de
Inventor
Arni Ingimundarson
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.)
Texas Instruments Deutschland GmbH
Original Assignee
Texas Instruments Deutschland GmbH
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 Texas Instruments Deutschland GmbH filed Critical Texas Instruments Deutschland GmbH
Priority to DE102009037630.5A priority Critical patent/DE102009037630B4/de
Priority to US12/852,229 priority patent/US8892943B2/en
Publication of DE102009037630A1 publication Critical patent/DE102009037630A1/de
Application granted granted Critical
Publication of DE102009037630B4 publication Critical patent/DE102009037630B4/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/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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature

Landscapes

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

Abstract

Es wird eine elektronische Vorrichtung bereitgestellt, die einen Mikroprozessor zur Ausführung eines Programmcodes und eine an den Mikroprozessor gekoppelte erste Hardware-Codepfadüberprüfungsstufe (CPV-Stufe) aufweist. Die Hardware-CPV-Stufe weist einen ersten Fehlerdetektionscodegenerator (EDC-Generator) auf, der so ausgeführt ist, dass er kontinuierlich einen Fehlerdetektionscode an einer kontinuierlichen Codesequenz, die sich auf einen tatsächlich ausgeführten Abschnitt des Programmcodes bezieht, bestimmt und den aktuellen Fehlerdetektionscode mit einem vorbestimmten Fehlercode vergleicht, um die korrekte Ausführung des Programmcodes zu überprüfen und einen Fehler anzugeben.

Description

  • GEBIET DER ERFINDUNG
  • Die Erfindung bezieht sich auf eine elektronische Vorrichtung mit einem Mikroprozessor zur Ausführung eines Programmcodes, der so ausgeführt ist, dass er die korrekte Ausführung des Programmcodes überprüft, sowie auf ein entsprechendes Verfahren.
  • HINTERGRUND
  • Systeme auf Mikroprozessorbasis oder eingebettete Mikrocontrollersysteme, wie etwa passive oder aktive Eingabesysteme, RFID-Systeme, Smartcards und Sicherheitskarten, erfordern eine sichere und zuverlässige Programmausführung. Harte oder extreme Betriebsbedingungen sowie böswillige, Fehler verursachende Angriffe können zu einer Fehlfunktion und einem unsicheren Betrieb führen, der unter allen Umständen zu vermeiden ist.
  • Um Fehler und Abweichungen von der normalen Programmausführung zu detektieren, ist im Stand der Technik bekannt, Prüfpunkte in den Programmcode einzuführen. An diesen Prüfpunkten wird ein Wert an einer Speicherstelle mit einem erwarteten Wert verglichen. Wenn die Werte übereinstimmen, wird die normale Programmausführung fortgesetzt. Wenn der Wert im Speicher nicht dem erwarteten Wert entspricht, wird die Programmausführung abgebrochen.
  • Diese herkömmliche Lösung hat jedoch mehrere Nachteile. Die Granularität der Prüfpunkte entlang dem Programmcode hängt von der Anzahl der Prüfpunkte ab und muss zur Minimierung der Ausführungszeit niedrig gehalten werden. Das bedeutet, dass die Programmausführung zwischen den Prüfpunkten und über erhebliche Teile des Programms nicht überprüft wird. Darüber hinaus ist die allgemeine Zuverlässigkeit und Überprüfbarkeit begrenzt, da die bekannten Verfahren auf einer Selbstüberprüfung des Programms basieren.
  • KURZZUSAMMENFASSUNG
  • Eine Aufgabe der Erfindung besteht darin, eine elektronische Vorrichtung und ein Verfahren zur Überprüfung der korrekten Programmausführung bereitzustellen, die sicherer sind als diejenigen aus dem Stand der Technik.
  • Bei einem Aspekt der Erfindung wird eine elektronische Vorrichtung bereitgestellt, die einen Mikroprozessor zur Ausführung eines Programmcodes aufweist. Es gibt ferner eine erste Hardware-Codepfadüberprüfungsstufe (CPV-Stufe), die an den Mikroprozessor gekoppelt ist. Die erste Hardware-CPV-Stufe weist einen ersten Fehlerdetektionscodegenerator (EDC-Generator) auf. Der erste EDC-Generator ist so ausgeführt, dass er kontinuierlich einen Fehlerdetektionscode an einer kontinuierlichen Codesequenz bestimmt, die sich auf einen tatsächlich ausgeführten Abschnitt des Programmcodes bezieht. Die erste Hardware-CPV-Stufe ist so ausgeführt, dass sie den aktuellen Fehlerdetektionscode mit einem vorbestimmten Fehlercode vergleicht, um die korrekte Ausführung des Programmcodes zu überprüfen. Anhand des Vergleichsergebnisses kann die CPV-Stufe einen Fehler oder eine nicht normale Programmcodeausführung angeben. Bei diesem Aspekt der Erfindung kann die CPV-Stufe in Hardware und unabhängig und separat von dem Mikroprozessor implementiert sein. Darüber hinaus weist die CPV-Stufe einen EDC-Generator auf, der beispielsweise eine Stufe zur Ausführung einer zyklischen Redundanzprüfung (CRC) sein kann. Der EDC-Generator kann einen Code empfangen, der sich auf das Programm bezieht, das tatsächlich ausgeführt wird. Der Programmcode oder darauf bezogene Daten werden als kontinuierliche Datensequenz in den EDC-Generator eingespeist, der kontinuierlich Fehlerdetektionscodewerte anhand der empfangenen Daten berechnet. „Kontinuierlich” bedeutet, dass die Daten oder der Code zu der CPV-Stufe und/oder zum EDC-Generator weitergeleitet und im EDC-Generator verarbeitet werden, wenn sie während der Programmausführung und nicht nur an bestimmten Unterbrechungspunkten auftreten. Das Weiterleiten und Verarbeiten von Daten und/oder eines Codes zum EDC-Generator oder zur CPV-Stufe kann anhand eines Taktsignals und in Übereinstimmung mit den Schritten zur Ausführung des Programms durchgeführt werden. Der Vergleich der bestimmten Fehlerdetektionscodewerte kann jedoch nur an bestimmten Unterbrechungspunkten des Programms erfolgen. Das bedeutet, dass die CPV-Stufe höchste Granularität und somit höchste Sicherheitsstandards bietet. Darüber hinaus kann die CPV-Stufe keine zusätzliche Datenverarbeitungszeit des Mikroprozessors verbrauchen.
  • Es gibt viele mögliche Implementierungen für einen EDC-Generator. Üblicherweise übertragen die von dem EDC-Generator ausgegebenen Fehlerdetektionscodes mehr Bits als ursprünglich im empfangenen Code enthalten sind. Der vorbestimmte Fehlerdetektionscode kann dann eine feststehende Anzahl von Originalcodebits (hier auch als Datenbits bezeichnet) enthalten, gefolgt von einer feststehenden Anzahl von Prüfbits (in der Literatur üblicherweise als Redundanz bezeichnet). Die Prüfbits können mit einem deterministischen Algorithmus von den Datenbits abgeleitet werden. Der ursprüngliche Code kann zunächst durch den gleichen Algorithmus ausgeführt werden, und das Ergebnis kann als vorbestimmter erwarteter Fehlerdetektionscode gespeichert werden. Der EDC-Generator wendet den gleichen Algorithmus an den empfangenen Codebits an, und die CPV-Stufe vergleicht dessen Ausgabe mit dem vorbestimmten Fehlerdetektionscode. Wenn die Werte nicht übereinstimmen, ist während der Programmausführung an einer Stelle ein Fehler aufgetreten. Bei einer weiteren Ausführungsform kann ein nicht systematischer EDC-Generator verwendet werden, wie etwa einige Raptor-Codes. Die Codebits können dann in zumindest genauso viele Fehlerdetektionscodebits umgewandelt werden, und der gespeicherte vorbestimmte Fehlerdetektionscode kann nur diese Fehlerdetektionscodebits enthalten.
  • Der EDC-Generator kann in Übereinstimmung mit einem Schema implementiert werden, das Paritätsbits verwendet. Ein Paritätsbit ist jedoch ein Fehlerdetektionsmechanismus, das nur eine ungerade Anzahl von Fehlern detektieren kann. Der kontinuierliche Codefluss, der empfangen oder während der Programmausführung von dem Mikroprozessor abgeleitet wird, kann dann in Bitblocks unterteilt werden, und die Anzahl der '1'-Bits wird bestimmt. Ein Paritätsbit wird gesetzt (oder zurückgesetzt), wenn die Anzahl der Ein-Bits ungerade (oder gerade) ist.
  • Der EDC-Generator kann auch in Übereinstimmung mit einem Schema implementiert werden, das eine Prüfsumme verwendet. Der EDC-Generator kann dann eine arithmetische Summe von Codewörtern einer bestimmten Wortlänge, beispielsweise Bytewerte, und ihren Übertragwert bestimmen. Die Summe kann dann negiert und als vorbestimmter Fehlerdetektionscode gespeichert werden. Die CPV-Stufe kann dann so ausgeführt sein, dass sie für den empfangenen Code während der Programmausführung eine neue Prüfsumme berechnet, die mit der Prüfsumme erweitert ist. Wenn die neue Prüfsumme nicht 0 ist, wird ein Fehler detektiert. Der EDC-Generator für die Prüfsummenschemen kann Paritätsbits, Prüfziffern und eine Längsredundanzprüfung umfassen.
  • Der EDC-Generator kann auch in Übereinstimmung mit einer zyklischen Redundanzprüfung implementiert werden. Bei einer zyklischen Redundanzprüfung wird ein Datenblock als Koeffizienten eines Polynoms betrachtet, das dann durch ein feststehendes, vorbestimmtes Polynom geteilt wird. Die Koeffizienten des Ergebnisses der Division werden dann als redundante Datenbits, den zyklischen Redundanzcode (CRC), verwendet. Der CRC kann dann gespeichert werden. Während der Programmausführung kann die CPV-Stufe (oder vielmehr der EDC-Generator in der CPV-Stufe) den CRC anhand der empfangenen Codebits (diese Codebits von dem Mikroprozessor können auch als Nutzinformation bezeichnet werden) neu berechnen und den gespeicherten CRC mit dem neuen CRC vergleichen. Eine fehlende Übereinstimmung gibt an, dass ein Fehler aufgetreten ist.
  • Bei weiteren Ausführungsformen kann eine Prüfung auf Basis einer Hamming-Distanz angewendet werden. Für Hamming-Distanz-Prüfungen kann ein EDC-Generator so implementiert sein, dass er jedes n-Bit-Wort des Codes in ein größeres n + d + 1-Bit-Wort abbildet, sodass die minimale Hamming-Distanz zwischen jeder gültigen Abbildung d + 1 beträgt. Bei weiteren Ausführungsformen können Hash-Funktionen, die horizontale und vertikale Redundanzprüfung, andere Arten der Redundanzprüfung wie die horizontale Redundanzprüfung, die vertikale Redundanzprüfung und die doppelte, duale oder diagonale Parität (in RAID-DP verwendet) angewendet werden.
  • Gemäß einem vorteilhaften Aspekt der Erfindung ist die kontinuierliche Codesequenz nicht auf den Programmcode beschränkt, sondern kann alternativ auch Daten, einen Adresscode und/oder deterministische Zustandsinformationen verwenden oder auch umfassen.
  • Bei einer vorteilhaften Ausführungsform kann die erste Hardware-CPV-Stufe an einen Datenbus und/oder einen Adressbus und/oder einen Befehlsbus und/oder einen internen Zustandswertbus (d. h. beispielsweise einen internen FSM einer CPU) des Mikroprozessors gekoppelt sein, um die kontinuierliche Codesequenz zu überwachen. Die CPV-Stufe kann dann unabhängig an bestehende Busstrukturen gekoppelt sein und ruft die Daten von dort ab, um den Fehlerdetektionscode zu bestimmen. Die CPV-Stufe kann dann Daten, Adressen und/oder Befehle überwachen, die durch die Busse geleitet werden, während der Mikroprozessor das Programm ausführt.
  • Die erste Hardware-CPV-Stufe kann so ausgeführt sein, dass sie den aktuellen Fehlerdetektionscode an einem vorbestimmten Prüfpunkt des Programmablaufs mit dem vorbestimmten Fehlercode vergleicht. Die CPV-Stufe kann dann eine Steuerstufe aufweisen. Die Steuerstufe kann so ausgeführt sein, dass sie Steuer- und/oder Konfigurationssignale von dem Mikroprozessor empfängt. Die Steuerstufe kann dann Freigabesignale zur Durchführung eines Vergleichs eines vorbestimmten Fehlercodes mit einem aktuellen Fehlercode in Reaktion auf ein Steuer- und/oder Konfigurationssignal von der CPU ausgeben. Die CPV-Stufe kann einen oder mehrere Komparatoren zur Durchführung der Vergleiche des vorbestimmten Fehlercodes mit dem aktuellen Fehlercode aufweisen.
  • Bei einem Aspekt der Erfindung kann die CPV-Stufe auch mehr als einen EDC-Generator aufweisen. Bei einer Ausführungsform kann die erste Hardware-CPV-Stufe einen zweiten EDC-Generator aufweisen. Der erste und der zweite EDC-Generator können dann so ausgeführt sein, dass sie unabhängig voneinander freigegeben oder gesperrt werden, um Fehlerdetektionscodes verschiedener Pfade des Programmcodes zu bestimmen. Die mehreren EDC-Generatoren können dann vorteilhaft so gekoppelt sein, dass sie einen Code empfangen, der sich auf verschiedene Ausführungspfade des ausgeführten Programms bezieht. Dieser Aspekt bezieht sich auf die Tatsache, dass die meisten Programme keinen festen oder auch vorhersehbaren Programmablauf haben. Es ist somit erforderlich, alle möglichen Varianten während der Programmausführung zu berücksichtigen. Dies kann mit mehreren EDC-Generatoren realisiert werden.
  • Bei einem weiteren Aspekt der Erfindung kann es auch mehr als eine CPV-Stufe geben. Bei einer Ausführungsform kann es eine zweite Hardware-CPV-Stufe geben, und die erste Hardware-CPV-Stufe und die zweite Hardware-CPV-Stufe können dann so ausgeführt sein, dass sie unabhängig voneinander freigegeben oder gesperrt werden. Ähnlich wie bei der Verwendung mehrerer EDC-Generatoren innerhalb einer CPV kann es nützlich sein, verschiedene CPV-Stufen und/oder EDC-Generatoren zu verwenden. Die CPV-Stufen und/oder EDC-Generatoren können dann vorteilhaft so ausgeführt sein, dass sie freigegeben oder gesperrt werden, wenn das Programm in Schleifen im Programmablauf eintritt oder diese verlässt. Dies kann eine sehr effiziente Weise der Codeüberprüfung sein, unabhängig von der Anzahl der Schleifen oder unabhängig davon, wie oft ein Programm durch eine Schleife läuft. Bei einer vorteilhaften Ausführungsform kann die elektronische Vorrichtung so ausgeführt sein, dass sie zwei Hardware-CPV-Stufen oder zwei EDC-Generatoren verwendet, um die Schleifen eines Programms zu bearbeiten. Eine erste Hardware-CPV-Stufe oder ein erster EDC-Generator kann dann bei Eintritt einer Schleife freigegeben werden, und eine zweite CPV-Stufe oder ein zweiter EDC-Generator kann gesperrt werden. Wenn die Schleife verlassen wird, kann die zweite CPV-Stufe oder der zweite EDC-Generator freigegeben werden, und die erste Hardware-CPV-Stufe oder der erste EDC-Generator kann dann gesperrt werden. Zwei oder mehr CPV-Stufen können vorteilhaft verwendet werden, wenn zwei oder mehr Busse oder andere Hardwarestrukturen oder Komponenten unabhängig voneinander zu überwachen sind.
  • Bei einer vorteilhaften Ausführungsform kann die elektronische Vorrichtung so ausgeführt sein, dass sie die EDC-Generatoren und/oder Hardware-CPV-Stufen anhand von Adressinformationen freigibt oder sperrt. Diese Ausführungsformen der Erfindung können Adressinformationen verwenden, die EDC-Generatoren oder CPV-Stufen freigeben oder sperren. Darüber hinaus können Adressinformationen in den Daten enthalten sein, die in dem EDC einer oder mehrerer CPVs verarbeitet werden, was mit Softwareimplementierungen aus dem Stand der Technik nicht möglich ist.
  • Die Erfindung stellt auch ein Verfahren zur Überprüfung der korrekten Programmausführung eines Mikroprozessors mit einer ersten Hardware-Codepfadüberprüfungsstufe (CPV-Stufe), die an den Mikroprozessor gekoppelt ist, bereit. Ein Programmcode wird auf dem Mikroprozessor ausgeführt. Die entsprechenden Datenwörter, die sich auf Operationscodes und/oder Daten und/oder Zustandsinformationen beziehen, werden kontinuierlich zur CPV-Stufe geleitet. Die Hardware-CPV-Stufe bestimmt kontinuierlich einen Fehlerdetektionscode an einer kontinuierlichen Codesequenz, die sich auf einen Abschnitt des Programmcodes bezieht, während der Programmcode ausgeführt wird. Die CPV-Stufe vergleicht auch den aktuellen Fehlerdetektionscode mit einem vorbestimmten Fehlercode, um die korrekte Ausführung des Programmcodes zu überprüfen und einen Fehler anzugeben.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Weitere Aspekte der Erfindung ergeben sich aus der nachfolgenden Beschreibung bevorzugter Ausführungsformen der Erfindung anhand der beigefügten Zeichnungen. Darin zeigen
  • 1 ein vereinfachtes Blockschaltbild einer elektronischen Vorrichtung in Übereinstimmung mit Aspekten der Erfindung;
  • 2 ein Zustandsdiagramm im Mealy-Format der Steuerlogik für einen EDC-Generator gemäß Aspekten der Erfindung;
  • 3 ein Schaubild zur Veranschaulichung eines möglichen Programmablaufs, der sich auf Aspekte der Erfindung bezieht;
  • 4 ein Schaubild zur Veranschaulichung eines möglichen Programmablaufs, der sich auf Aspekte der Erfindung bezieht;
  • 5 ein weiteres Schaubild zur Veranschaulichung eines Aspekts der Erfindung; und
  • 6 ein vereinfachtes Blockschaltbild einer Ausführungsform der Erfindung, die mehrere CPV-Stufen verwendet.
  • AUSFÜHRLICHE BESCHREIBUNG EINER BEISPIELHAFTEN AUSFÜHRUNGSFORM
  • 1 zeigt ein vereinfachtes Blockschaltbild einer elektronischen Vorrichtung 1 gemäß Aspekten der Erfindung. Die elektronische Vorrichtung 1 kann ein System sein, das in einem Mikroprozessor oder Mikrocontroller eingebettet ist. Die elektronische Vorrichtung 1 kann vollständig als integrierte Halbleitervorrichtung integriert sein, oder einige Komponenten, wie etwa der Mikroprozessor (oder Mikrocontroller) CPU 3, der Speicher 4 und die CPV-Stufe 2 können auf einem einzigen oder auf mehreren Halbleiterchips integriert sein. Gemäß Aspekten der Erfindung ist der Mikroprozessor CPU 3 mit einer CPV-Stufe 2 ergänzt. Die CPV-Stufe 2 kann (wie gezeigt) an einen Mikroprozessoreingang-/Mikroprozessorausgangsanschluss (I/O) angeschlossen sein, aber sie kann auch innerhalb des Mikroprozessors 3 angeordnet sein. Die CPV-Stufe kann so ausgeführt sein, dass sie alle Codes oder Daten, die sich auf die Programmausführung beziehen, überwacht, wie etwa den Programmcode, jegliche Adressdaten sowie interne, deterministische CPU-Zustandsdaten oder jegliche weitere Daten, die die CPU verarbeitet. Es können zwei oder mehr EDC-Generatoren in einer CPV-Stufe vorhanden sein, die akkumulierende EDC-Werte über den Code bilden (d. h. allgemeine Daten). Der Mikrocontroller 3 kann eine Schnittstelle haben, mit der es möglich ist, dass der Mikrocontroller jedes CPV-Modul freigibt, sperrt oder zurücksetzt und den akkumulativen EDC-Wert einer freigegebenen CPV überprüft.
  • Bei dieser Ausführungsform weist die CPV-Stufe 2 N EDC-Generatoren auf, die so ausgeführt sind, dass sie einen Fehlerdetektionscode an den Systemdaten, die über die Leitung 14 von dem Mikroprozessor CPU 3 empfangen werden, bestimmt. Der Code kann gemäß einem Systemtaktsignal weitergeleitet werden. Er kann über die Leitung 14 gemäß einem Programmzähler weitergeleitet werden, der angibt, dass ein darauffolgender Befehl im Programm ausgeführt wird. Der Code oder die Daten können bei jeder Änderung des Codes oder der Daten aufgrund der Programmausführung (neue Daten, neue Adresse, neuer Befehl oder neue Zustandsinformationen, wie etwa binäre Wörter (z. B. 8, 16, 32, 64 oder mehr Bits)) über die Leitung 14 zu einem EDC-Generator geleitet werden. Die Übertragung des Codes oder der Daten über die Leitung 14 kann dann beispielsweise dadurch ausgelöst werden, dass ein neuer Befehl (Operationscode) eines Programms ausgeführt wird oder Daten, eine Adresse, Zustandsinformationen und/oder jegliche weitere Daten oder Informationen über einen an den Mikrocontroller gekoppelten externen oder internen Bus weitergeleitet werden.
  • Es gibt viele mögliche Implementierungen für die EDC-Generatoren 6, 7, 8. Üblicherweise enthalten die Fehlerdetektionscodes EDCACCU1 bis EDCACCUN, die von dem EDC-Generator ausgegeben werden, mehr Bits als ursprünglich in dem Code enthalten sind, der sequenziell über die Zeit empfangen wird. Der Prüfwert (vorbestimmter Fehlerdetektionscode), der über die Leitung 15 empfangen wird, kann dann eine feststehende Anzahl von Originalcodebits (hier auch als Datenbits bezeichnet), gefolgt von einer feststehenden Anzahl von Prüfbits (in der Literatur gewöhnlich als Redundanz bezeichnet), enthalten. Die Prüfbits können mit einem deterministischen Algorithmus von den Datenbits abgeleitet werden. Dieser Algorithmus kann dann in den EDC-Generatoren 6, 7, 8 implementiert sein. Der Originalcode kann zunächst (vor der Programmausführung) durch den gleichen Algorithmus ausgeführt werden, und das Ergebnis kann als vorbestimmter erwarteter Fehlerdetektionscode gespeichert werden. Der EDC-Generator 6, 7, 8 wendet den gleichen Algorithmus an den empfangenen Codebits (über die Leitung 14) an, und die CPV-Stufe vergleicht dessen Ausgabe in den Komparatoren 9, 10, 11 mit dem vorbestimmten Fehlerdetektionscode. Wenn die Werte nicht übereinstimmen, ist an einem Punkt während der Programmausführung ein Fehler aufgetreten. Bei einer vorteilhaften Ausführungsform können die EDC-Generatoren 6, 7, 8 alle das gleiche Fehlerdetektionscodeverfahren anwenden. Die EDC-Generatoren 6, 7, 8 können dann so ausgeführt sein, dass sie einen akkumulativen Code an der empfangenen Codesequenz berechnen. Bei einer Ausführungsform kann ein nicht systematischer EDC-Generator, wie etwa einige Raptor-Codes, verwendet werden. Die über die Leitung 14 empfangenen Codebits können dann in mindestens genauso viele Fehlerdetektionsbits umgewandelt werden, und der (im Speicher MEM 4) gespeicherte vorbestimmte Fehlerdetektionscode kann nur diese Fehlerdetektionscodebits enthalten. Die vorbestimmten Prüfcodes müssen nicht zwangsläufig in einem Speicher gespeichert werden, sondern können mit dem Programmcode gespeichert und über die gleichen Leitungen wie die zu überwachenden Daten (beispielsweise Leitung 14) weitergeleitet werden. Bei einer weiteren Ausführungsform können die EDC-Generatoren 6, 7, 8 auch gemäß einem Schema implementiert sein, das Paritätsbits verwendet. Dies ist nützlich, wenn nur eine ungerade Anzahl von Fehlern zu detektieren ist. Mit der Paritätsbitfehlerdetektion kann dann der kontinuierliche Codestrom, der empfangen oder von dem Mikroprozessor 3 während der Programmausführung abgeleitet wird, in Bitblocks unterteilt werden, und die Anzahl der 1-Bits wird gezählt. Ein Paritätsbit wird gesetzt (oder zurückgesetzt), wenn die Anzahl der Ein-Bits ungerade (oder gerade) ist. Bei einer weiteren Ausführungsform können die EDC-Generatoren 6, 7, 8 auch gemäß einem Schema implementiert sein, das eine Prüfsumme verwendet. Die EDC-Generatoren können dann eine arithmetische Summe von Codewörtern mit einer bestimmten Wortlänge, beispielsweise Bytewerte, und ihren Übertragwert bestimmen. Die Summe kann dann negiert und als vorbestimmter Fehlerdetektionscode gespeichert werden. Die CPV-Stufe 2 kann dann so ausgeführt sein, dass sie für den empfangenen Code während der Programmausführung eine neue Prüfsumme berechnet, die mit der Prüfsumme erweitert ist. Wenn die neue Prüfsumme nicht 0 ist, wird ein Fehler detektiert. Die EDC-Generatoren 6, 7, 8 für die Prüfsummenschemen können Paritätsbits, Prüfziffern und eine Längsredundanzprüfung umfassen. Bei einer weiteren Ausführungsform können die EDC-Generatoren 6, 7, 8 gemäß einer zyklischen Redundanzprüfung implementiert sein. Bei einer zyklischen Redundanzprüfung wird ein Datenblock als Koeffizienten eines Polynoms betrachtet, das dann durch ein feststehendes vorbestimmtes Polynom geteilt wird. Die Koeffizienten des Ergebnisses der Teilung werden als redundante Datenbits, den zyklischen Redundanzcode (CRC), verwendet. Der CRC kann dann gespeichert werden. Während der Programmausführung kann die CPV-Stufe (oder vielmehr die EDC-Generatoren 6, 7, 8 in der CPV-Stufe 2) den CRC von den empfangenen Codebits (diese Codebits von dem Mikroprozessor können als Nutzinformationen bezeichnet werden) neu berechnen und den gespeicherten CRC mit dem neuen CRC vergleichen. Eine fehlende Übereinstimmung gibt an, dass ein Fehler aufgetreten ist. Weitere Ausführungsformen können eine Prüfung auf Basis einer Hamming-Distanz verwenden. Für Hamming-Distanz-Prüfungen kann ein EDC-Generator so implementiert sein, dass er jedes n-Bit-Wort des Codes in ein größeres n + d + 1-Bit-Wort abbildet, sodass die minimale Hamming-Distanz zwischen jeder gültigen Abbildung d + 1 beträgt. Weitere Ausführungsformen können Hash-Funktionen, eine horizontale und vertikale Redundanzprüfung, andere Arten von Redundanzprüfung umfassen, zu denen die horizontale Redundanzprüfung, die vertikale Redundanzprüfung und die doppelte, duale oder diagonale Parität (in RAID-DP verwendet) zählen.
  • Die über die Leitung 14 empfangene kontinuierliche Codesequenz ist nicht auf einen Programmcode beschränkt, sondern kann auch oder lediglich Daten, einen Adresscode und/oder deterministische Zustandsinformationen verwenden.
  • Es gibt eine Steuerstufe 5, die an den Mikrocontroller CPU 3 gekoppelt ist und über die Leitung 13 Steuer- und Konfigurationssignale von dem Mikroprozessor 3 empfängt. Die Steuerstufe ist so ausgeführt, dass sie Freigabesignale 19, 20 und 21 an die EDC-Generatoren 6, 7 und 8 ausgibt, um jeden EDC-Generator freizugeben oder zu sperren. Es gibt auch N Komparatoren 9, 10, 11 zum Vergleichen der von den EDC-Generatoren 6, 7, 8 ausgegebenen Fehlerdetektionscodes mit vorbestimmten Werten, die über die Leitungen 15 empfangen werden. Es kann einen Speicher MEM 4 zum Speichern der vorbestimmten Fehlerdetektionscodes geben, die mit den aktuellen Fehlerdetektionscodes zu vergleichen sind, die über die Leitungen 16, 17 und 18 von den EDC-Generatoren 6, 7 bzw. 8 ausgegeben werden. Der Speicher MEM 4 kann so ausgeführt sein, dass er Adressinformationen und Daten von der CPU 3 empfängt. Der Speicher MEM 4 kann dann in Reaktion auf Steuerdaten von der CPU 3 die erforderlichen vorbestimmten Fehlerdetektionscodes für die Leitung 15 bereitstellen. Die Steuerstufe 5 ist auch so ausgeführt, dass sie die Komparatoren 9, 10 und 11 durch individuelle Freigabeleitungen 22, 23 und 24 freigibt oder sperrt. Die Komparatoren 9, 10, 11 stellen Vergleichsergebnisse für den Ausnahmegenerator 12 bereit. Wenn der Vergleich eines aktuellen EDC-Generator-Ausgabesignals EDCACCU1, EDCACCU2 oder EDCACCUN angibt, dass der aktuelle Wert des entsprechenden EDC-Generators 6, 7, 8 nicht mit dem vorbestimmten Wert übereinstimmt, wird der Ausnahmegenerator 12 ausgelöst, um ein Ausnahmesignal über den Ausgang 25 auszugeben. Das Signal kann dann zum Auslösen einer Ausnahmeprozedur verwendet werden.
  • Die Steuerlogik 5 kann von dem System, dem Mikrocontroller oder der CPU 3 so konfiguriert werden, dass sie den gewünschten Betriebsmodus einstellt. Dies kann beispielsweise die Anzahl der freigegebenen EDC-Generatoren 6, 7, 8 sein, die Zeitpunkte, an denen die Daten in die EDC-Generatoren einzuspeisen sind, und die Teile des Systems oder des Mikroprozessors 3, von denen die Daten in die EDC-Generatoren einzuspeisen sind. Die Daten an der Leitung 14 können ein Adress- und/oder Datenbus, ein CPU-Mikrocode oder weitere deterministische Zustandsinformationen von dem System sein.
  • Die Steuerlogik überwacht auch, wenn ein Prüfpunkt erreicht ist, und gibt die entsprechenden Komparatoren 9, 10, 11 für alle freigegebenen EDC-Generatoren frei, die wiederum den Ausnahmegenerator 12 auslösen, wenn eine fehlende Übereinstimmung zwischen dem Ausgabewert des EDC-Generators und dem gegebenen Prüfwert vorliegt. Alle Leitungen 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 33 und 34 können Busse mit einer beliebigen geeigneten Busbreite sein.
  • 2 zeigt ein Zustandsdiagramm für einen möglichen Betrieb eines EDC-Generators. Jeder der in 1 gezeigten EDC-Generatoren kann in Übereinstimmung mit diesem Zustandsdiagramm konfiguriert sein. Der EDC kann im Allgemeinen in einem Ruhezustand S1 sein. In Reaktion auf ein Signal von der Steuerstufe 5, die ein entsprechendes Signal von dem Mikroprozessor 3 empfangen haben kann, kann der EDC diesen Ruhezustand S1 über den Pfad 26 verlassen. Der EDC-Generator kann in einen aktiven Zustand S2 übergehen. Der aktive Zustand hat drei Grundschleifen oder Übergänge 27, 28 und 29, ausgehend von denen er immer zum aktiven Zustand S2 zurückkehrt. Die erste Schleife 27 bezieht sich auf das Ereignis, dass der EDC-Generator neue Daten von dem Mikroprozessor 3 (oder dem System oder einer CPU) empfängt. Diese Daten werden dann im EDC-Generator verarbeitet. Das bedeutet, dass der neue Wert EDCACCU in dem EDC-Generator in Abhängigkeit von dem vorhergehenden Wert in den EDC und den neuen Daten von dem Mikroprozessor 3 bestimmt werden kann. Die zweite Schleife 28 wird begonnen, wenn ein Prüfpunkt während der Programmausführung in dem Mikroprozessor erreicht ist. Wenn ein Prüfpunkt erreicht ist, kann der Mikroprozessor 3 ein Steuersignal zur Steuerstufe 5 ausgeben, um einen Vergleich von aktuellen Fehlerdetektionswerten in den EDC-Generatoren mit gespeicherten vorbestimmten Werten auszulösen. Die Schleife 28 bezieht sich auf eine Situation, bei der das Vergleichsergebnis negativ ist. Das bedeutet, dass eine Ausnahme ausgelöst wird. Der Ausnahmegenerator 12 kann dann eine Ausnahmeprozedur auslösen oder einen Interrupt ausgeben, um die Ausnahme zu bearbeiten. Die Schleife 29 bezieht sich auf eine Situation, bei der das Vergleichsergebnis positiv ist. Das Programm hat einen Prüfpunkt erreicht, und es wird festgestellt, dass der Inhalt EDCACCU des EDC-Generators mit dem erwarteten Wert übereinstimmt. Das Programm kann dann die Ausführung des Programms ohne Änderung weiterführen. Wenn die Steuerstufe 5 ein entsprechendes Signal ausgibt, wird der EDC-Generator wie mit dem Übergangspfad 30 angegeben gesperrt, und der EDC-Generator kehrt in einen Ruhezustand zurück.
  • Da es häufig unvermeidbar ist, dass ein Programmausführungsablauf von den verarbeiteten Daten abhängig ist (zum Beispiel, wie häufig eine Schleife ausgeführt ist), ist der erwartete Wert des Fehlerdetektionscodes EDCACCU nicht feststehend, sondern hängt von verschiedenen unvorhersehbaren Faktoren ab. Gemäß einem Aspekt der Erfindung können die meisten möglichen Szenarien in nur zwei Hauptsituationen unterteilt werden. Ein Programmpfad wird in zwei oder mehr Pfade unterteilt (Sprungbefehl wird angenommen oder nicht), oder ein Programmpfad läuft von zwei oder mehr Pfaden in einen zusammen (zwei verschiedene Sprungbefehle springen zum gleichen Code).
  • 3 bezieht sich auf das zweite Szenario, bei dem ein Pfad P1 in mehrere Pfade P2, P3 und P4 unterteilt ist. Ein entsprechender Code kann der Folgende sein:
    Ein veranschaulichender Auszug eines Quellcodes einer Prozedur BEISPIEL1 kann die folgende Struktur und Befehle haben.
  • Figure 00130001
  • Figure 00140001
  • Wenn das Programm in die Prozedur BEISPIEL1 eintritt, wird der Speicherinhalt einer Speicherstelle, die mit dem Zeiger &MEM1 angegeben ist, zu einem Register REG4 verschoben. Der Inhalt des Registers REG4 wird dann mit einem konstanten Wert CNST verglichen. Wenn die beiden Werte unterschiedlich sind, erfolgt ein Sprung (Befehl jne) zur Prozedur FEHLER, und eine Konstante ERR wird zu einer Stelle im Speicher MEM2 verschoben. Wenn der Wert von CNST und der Inhalt im Register REG4 gleich sind, wird die Konstante OK zur Speicherstelle verschoben, die mit dem Zeiger &MEM2 angegeben ist, und die Prozedur FEHLER wird nicht erreicht.
  • Bei diesem Beispiel können die folgenden Schritte eingeführt werden, um eine Codeüberprüfung in Übereinstimmung mit Aspekten der Erfindung zu erhalten:
    Figure 00140002
  • 'Enable CPV' bedeutet, dass eine CPV-Stufe freigegeben oder aktiviert wird, um eine empfangene Codesequenz zu verarbeiten. Das bedeutet insbesondere, dass mindestens ein EDC-Generator in der CPV-Stufe aktiviert wird. Dies wird somit alternativ mit 'Enable EDC' bezeichnet. 'Disable CPV' oder 'Disable EDC' bedeutet, dass die entsprechende CPV-Stufe (oder EDC-Generator) gesperrt wird. 'Prüf CPV mit VAL1' gibt einen Prüfpunkt an und bedeutet, dass die CPV-Stufe oder EDC-Stufe einen Vergleich des aktuellen vorbestimmten oder berechneten Fehlerdetektionscodes mit dem angegebenen vorbestimmten Wert VAL1 durchführt. Für die obige Ausführungsform kann die CPV-Stufe (EDC-Generator in der CPV-Stufe) freigegeben werden, wenn die Prozedur BEISPIEL1 begonnen wird, wie mit 'Enable CPV' angegeben. Die verbleibenden Befehle sind dem Programmcode ohne CPV-Stufe ähnlich. Am Ende jeder Prozedur BEISPIEL1 oder Prozedur FEHLER wird jedoch eine Prüfung entweder mit dem vorbestimmten Wert VAL1 oder mit dem vorbestimmten Wert VAL2 durchgeführt. Der Wert VAL1 oder VAL2, der für den Vergleich verwendet wird, hängt von dem Pfad ab, über den der Prüfpunkt erreicht wird. Das bedeutet, dass die Aspekte der Erfindung wie die beiden unterschiedlichen Pfadprüfungen für zwei verschiedene erwartete Werte VAL1, VAL2 an ihren entsprechenden Prüfpunkten auf einfache Weise bei dem obigen Szenario angewendet werden können.
  • 4 zeigt ein Schaubild eines möglichen Programmablaufs, bei dem der Pfad zusammenläuft. Das Programm kann mehrere individuelle Pfade P1, P2 und P3 haben, die gemäß internen und/oder externen Befehlen oder Ereignissen verwendet werden.
  • Figure 00150001
  • Bei diesem Szenario wird entweder die Prozedur FALL1 oder die Prozedur FALL2 begonnen. In Abhängigkeit von dem Pfad (FALL1 oder FALL2) wird entweder die Konstante CNST1 oder die Konstante CNST2 zum Register REG4 bewegt (Befehl: mov). Jede Prozedur FALL1 oder FALL2 wird mit einem nicht bedingten Sprung (Befehl jmp) zur Prozedur FORTSETZEN verlassen, die den entsprechenden Registerinhalt des Registers REG4 zur gleichen Speicherstelle MEM bewegt (Zeiger &MEM zeigt auf die entsprechende Speicherstelle und gibt die Adresse an). Die folgende Änderung kann dann gemacht werden, um die Erfindung bei dem obigen Szenario anzuwenden:
    Figure 00160001
  • In der Prozedur FALL1 wird die zweite CPV-Stufe CPV2 oder der zweite EDC EDC2 gesperrt und die erste CPV-Stufe CPV1 oder der erste EDC EDC1 freigegeben. In der Prozedur FALL2 wird CPV1/EDC1 gesperrt und CPV2/EDC2 freigegeben. Das bedeutet, dass nur eine CPV- oder EDC-Stufe in jeder Prozedur aktiv ist. Die entsprechenden Werte VAL1 und VAL2 gehören zur entsprechenden CPV- oder EDC-Stufe und somit zur entsprechenden Prozedur. Der gleiche Prüfpunkt wird durch zwei (oder mehr) verschiedene Pfade in der Prozedur FORTSETZEN erreicht. Durch die Verwendung mehrerer CPV-Stufen und/oder EDC-Stufen (beispielsweise N CPV- oder EDC-Stufen) kann jedoch die gleiche Anzahl verschiedener Pfade auf demselben Code geschützt werden, indem nur eine der CPV-Stufen oder EDCs freigegeben wird, wenn die verschiedenen Pfade konvergieren, während alle anderen CPVs oder EDCs gesperrt werden. Die gesperrten CPV- oder EDC-Stufen ignorieren ihre entsprechenden Prüfpunkte.
  • 5 bezieht sich auf einen Programmablauf mit einer Schleife. Dieses Beispiel veranschaulicht, dass es möglich ist, unabhängig davon, wie oft das Programm in der Schleife bleibt, jegliche Schleife mit zwei CPV- oder EDC-Stufen zu bearbeiten. Die Verwendung von mindestens zwei CPV-Stufen oder EDCs ermöglicht eine nahtlose Übergabe, ohne eine Unterbrechung in der Codeüberprüfung zu verursachen.
  • Es gibt zwei Pfade P1, P2. Der Pfad P1 ist der ursprüngliche Pfad, und der Pfad P2 bezieht sich auf die Schleife. Der Eintrittspunkt SCHLEIFE in die Schleife wird an beiden Pfaden P1, P2 erreicht. Dies erfolgt entweder durch einen anfänglichen Eintritt in die Schleife über SCHLEIFENANFANG (Pfad P1) oder durch einen bedingten Sprung (jnz), solange REG4 nicht null ist (Pfad P2). REG4 wird mit einem Wert geladen ZAHLEN und jedes Mal, wenn die Schleife ausgeführt wird, verringert. Das bedeutet, dass die Schleife REG4-mal ausgeführt wird. Der Eintrittspfad wird durch die Verwendung der ersten CPV-Stufe CPV1 (oder einen ersten EDC) geschützt, die freigegeben wird, bevor die Schleife begonnen wird. Der erste Prüfpunkt B1 in der Schleife ist auf die zweite CPV-Stufe (oder einen zweiten EDC) CPV2 abgestimmt, die den vorbestimmten Wert VAL1 verwendet. Der Prüfpunkt B1 wird ignoriert, da das CPV-Modul CPV2 beim ersten Eintreten in die Schleife gesperrt ist. Nach dem ersten Prüfpunkt B1 wird die zweite CPV-Stufe (oder der zweite EDC) CPV2 freigegeben und zurückgesetzt. Ein Prüfpunkt A für die erste CPV-Stufe CPV1 (oder EDC) folgt unter Verwendung des Werts VAL2, der nun den Eintritt in die Schleife mit der korrekten Aktivierung der zweiten CPV-Stufe CPV2 überprüft. Die erste CPV-Stufe CPV1 wird dann gesperrt, und der Hauptcode der Schleife wird ausgeführt.
  • Figure 00170001
  • Figure 00180001
  • Am Ende der Schleife muss eine Entscheidung getroffen werden, ob die Schleife erneut ausgeführt oder aus der Schleife ausgetreten wird. Wenn die Schleife wiederholt wird, wird die Programmausführung am Beginn der Schleife fortgesetzt, an dem der Prüfpunkt B1 prüft, ob die Schleife korrekt ausgeführt wird (CPV2 oder ein EDC2 ist freigegeben). Der Prüfpunkt A wird ignoriert, da CPV1 oder EDC1 nun gesperrt ist. Wenn die Schleife verlassen wird, wird der Prüfpunkt B2 erreicht, und die zweite CPV- oder EDC-Stufe CPV2/EDC2 prüft mit dem Wert VAL3, ob die Ausführung der letzten Runde und das Austreten aus der Schleife korrekt durchgeführt wurden. Die Operationen zum Freigeben, Sperren oder Rücksetzen der CPV-Module oder EDCs können in einer einzigen Operation kombiniert werden, um einen Code-Overhead zu verringern. Wenn ein EDC-Generator eine fehlende Übereinstimmung an einem Prüfpunkt detektiert, kann der Mikroprozessor/die CPU beispielsweise unter Verwendung eines nicht maskierbaren Interrupts unterbrochen werden.
  • 6 zeigt ein vereinfachtes Blockschaltbild einer Ausführungsform der Erfindung. Es gibt eine elektronische Vorrichtung 1 mit einem Mikroprozessor CPU3, einem Speicher MEM4 und mindestens zwei CPV-Stufen CPV1 2 und CPV2 21. Die Grundkonfiguration ist derjenigen der in 1 gezeigten Ausführungsform ähnlich. Die Leitung 14 dient dazu, einen Code für die CPV-Stufen 2 und 21 bereitzustellen. Jede der CPV-Stufen 2 und 21 kann einen oder mehrere EDC-Generatoren in Übereinstimmung mit den Aspekten und Ausführungsformen der Erfindung aufweisen. Die Leitung 13 leitet Steuer- und Konfigurationssignale zu den CPV-Stufen 2, 21, und die Leitung 15 wird dazu verwendet, vorbestimmte Fehlerdetektionscodes zu den CPV-Stufen 2, 21 zu leiten. Die CPV-Stufen stellen Ausgangssignale EXOUT1 und EXOUT2 an den Leitungen 31, 32 bereit, die detektierte Fehlerwährend der Programmausführung angeben. Die CPV-Stufen 2, 21 können vorzugsweise wie in 1 für die CVP-Stufe 2 gezeigt implementiert sein. Darüber hinaus können zwei CPV-Stufen wie anhand von 5 erläutert konfiguriert und verwendet werden, um Schleifen in einem Programmablauf zu bearbeiten. Alle Leitungen können vorteilhaft Busse mit einer beliebigen geeigneten Busbreite sein.
  • Die Erfindung wurde im Vorhergehenden zwar anhand besonderer Ausführungsformen beschrieben, sie ist jedoch nicht auf diese Ausführungsformen beschränkt, und der Fachmann wird zweifellos weitere Alternativen finden, die im Umfang der Erfindung, wie sie beansprucht ist, liegen.

Claims (10)

  1. Elektronische Vorrichtung mit einem Mikroprozessor zur Ausführung eines Programmcodes und einer ersten Hardware-Codepfadüberprüfungsstufe (CPV-Stufe), die an den Mikroprozessor gekoppelt ist, wobei die Hardware-CPV-Stufe einen ersten Fehlerdetektionscodegenerator (EDC-Generator) aufweist, der so ausgeführt ist, dass er an einer kontinuierlichen Datensequenz, die sich auf einen im Mikroprozessor ausgeführten Programmcode bezieht, einen Fehlerdetektionscode bestimmt und den bestimmten Fehlerdetektionscode mit einem vorbestimmten Fehlercode vergleicht, um die korrekte Ausführung des Programmcodes zu überprüfen und einen Fehler anzugeben.
  2. Elektronische Vorrichtung nach Anspruch 1, bei der die kontinuierliche Datensequenz einen Programmcode, Daten, einen Adresscode und/oder deterministische Zustandsinformationen umfasst.
  3. Elektronische Vorrichtung nach Anspruch 1 oder 2, bei der die erste Hardware-CPV-Stufe an einen Datenbus und/oder einen Adressbus und/oder einen Befehlsbus des Mikroprozessors gekoppelt ist, um die kontinuierliche Codesequenz zu überwachen.
  4. Elektronische Vorrichtung nach einem der vorhergehenden Ansprüche, bei der die erste Hardware-CPV-Stufe so ausgeführt ist, dass sie an einem vorbestimmten Prüfpunkt des Programmablaufs den aktuellen Fehlerdetektionscode mit dem vorbestimmten Fehlercode vergleicht.
  5. Elektronische Vorrichtung nach einem der vorhergehenden Ansprüche, bei der die erste Hardware-CPV-Stufe einen zweiten EDC-Generator aufweist und der erste und der zweite EDC-Generator so ausgeführt sind, dass sie unabhängig voneinander freigegeben oder gesperrt werden, um Fehlerdetektionscodes verschiedener Pfade des Programmcodes zu bestimmen.
  6. Elektronische Vorrichtung nach Anspruch 5, mit einer zweiten Hardware-CPV-Stufe, wobei die erste Hardware-CPV-Stufe und die zweite Hardware-CPV-Stufe so ausgeführt sind, dass sie unabhängig voneinander freigegeben oder gesperrt werden.
  7. Elektronische Vorrichtung nach Anspruch 6, bei der die erste Hardware-CPV-Stufe und die zweite Hardware-CPV so ausgeführt sind, dass sie unabhängig voneinander freigegeben oder gesperrt werden.
  8. Elektronische Vorrichtung nach Anspruch 7, die ferner so ausgeführt ist, dass sie die EDC-Generatoren und/oder die Hardware-CPV-Stufen anhand von Adressinformationen freigibt oder sperrt.
  9. Elektronische Vorrichtung nach Anspruch 8, die so ausgeführt ist, dass sie die erste und/oder die zweite Hardware-CPV-Stufe zu Beginn und/oder am Ende einer Schleife des Programms freigibt und/oder sperrt.
  10. Verfahren zur Überprüfung der korrekten Programmausführung eines Mikroprozessors mit einer ersten Hardware-Codepfadüberprüfungsstufe (CPV-Stufe), die an den Mikroprozessor gekoppelt ist, wobei das Verfahren Folgendes umfasst: Ausführen eines Programmcodes auf dem Mikroprozessor und Bestimmen eines Fehlerdetektionscodes an einer kontinuierlichen Codesequenz, die sich auf den ausgeführten Programmcode bezieht, mit der Hardware-CPV-Stufe und Vergleichen des Fehlerdetektionscodes mit einem vorbestimmten Fehlercode, um die korrekte Ausführung des Programmcodes zu überprüfen und einen Fehler anzugeben.
DE102009037630.5A 2009-08-14 2009-08-14 Elektronische Vorrichtung und Verfahren zur Überprüfung der korrekten Programmausführung Active DE102009037630B4 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102009037630.5A DE102009037630B4 (de) 2009-08-14 2009-08-14 Elektronische Vorrichtung und Verfahren zur Überprüfung der korrekten Programmausführung
US12/852,229 US8892943B2 (en) 2009-08-14 2010-08-06 Electronic device and method for verifying correct program execution

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102009037630.5A DE102009037630B4 (de) 2009-08-14 2009-08-14 Elektronische Vorrichtung und Verfahren zur Überprüfung der korrekten Programmausführung

Publications (2)

Publication Number Publication Date
DE102009037630A1 true DE102009037630A1 (de) 2011-02-17
DE102009037630B4 DE102009037630B4 (de) 2017-12-07

Family

ID=43448341

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102009037630.5A Active DE102009037630B4 (de) 2009-08-14 2009-08-14 Elektronische Vorrichtung und Verfahren zur Überprüfung der korrekten Programmausführung

Country Status (2)

Country Link
US (1) US8892943B2 (de)
DE (1) DE102009037630B4 (de)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012032140A1 (de) 2010-09-10 2012-03-15 Technische Universität Dresden Verfahren zum bereitstellen eines wertes zum ermitteln, ob bei einer ausführung eines programms ein fehler aufgetreten ist
EP2631802A1 (de) * 2012-02-22 2013-08-28 Siemens Aktiengesellschaft Verfahren zur Speicherung und Propagation von Fehlerinforationen in Computer-Programmen
US10141955B2 (en) 2015-04-11 2018-11-27 International Business Machines Corporation Method and apparatus for selective and power-aware memory error protection and memory management

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9063673B2 (en) * 2011-08-30 2015-06-23 Uniquesoft, Llc System and method for implementing application code from application requirements
FR2984553B1 (fr) * 2011-12-15 2015-11-06 Proton World Int Nv Procede et dispositif de detection de fautes
US9118351B2 (en) 2012-02-15 2015-08-25 Infineon Technologies Ag System and method for signature-based redundancy comparison
US20170090929A1 (en) * 2015-09-25 2017-03-30 Mcafee, Inc. Hardware-assisted software verification and secure execution
US11238334B2 (en) 2017-04-04 2022-02-01 Hailo Technologies Ltd. System and method of input alignment for efficient vector operations in an artificial neural network
US11615297B2 (en) 2017-04-04 2023-03-28 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network compiler
US10387298B2 (en) 2017-04-04 2019-08-20 Hailo Technologies Ltd Artificial neural network incorporating emphasis and focus techniques
US11544545B2 (en) 2017-04-04 2023-01-03 Hailo Technologies Ltd. Structured activation based sparsity in an artificial neural network
US11551028B2 (en) 2017-04-04 2023-01-10 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network
US10831578B2 (en) * 2018-09-28 2020-11-10 Nxp Usa, Inc. Fault detection circuit with progress register and status register
US11263077B1 (en) 2020-09-29 2022-03-01 Hailo Technologies Ltd. Neural network intermediate results safety mechanism in an artificial neural network processor
US11237894B1 (en) * 2020-09-29 2022-02-01 Hailo Technologies Ltd. Layer control unit instruction addressing safety mechanism in an artificial neural network processor
US11811421B2 (en) 2020-09-29 2023-11-07 Hailo Technologies Ltd. Weights safety mechanism in an artificial neural network processor
US11221929B1 (en) 2020-09-29 2022-01-11 Hailo Technologies Ltd. Data stream fault detection mechanism in an artificial neural network processor
US11874900B2 (en) 2020-09-29 2024-01-16 Hailo Technologies Ltd. Cluster interlayer safety mechanism in an artificial neural network processor

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10131577A1 (de) * 2001-07-02 2003-01-16 Bosch Gmbh Robert Verfahren zum Schutz eines Mikrorechner-Systems gegen Manipulation seines Programms
DE10340411A1 (de) * 2003-09-02 2005-04-07 Infineon Technologies Ag Vorrichtung und Verfahren zur sicheren Ausführung eines Programms

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030182653A1 (en) * 2002-03-22 2003-09-25 Giuseppe Desoli Systems and methods for verifying correct execution of emulated code via dynamic state verification
US7334179B2 (en) * 2004-06-04 2008-02-19 Broadcom Corporation Method and system for detecting and correcting errors while accessing memory devices in microprocessor systems
US7664937B2 (en) * 2007-03-01 2010-02-16 Microsoft Corporation Self-checking code for tamper-resistance based on code overlapping
US8261130B2 (en) * 2007-03-02 2012-09-04 Infineon Technologies Ag Program code trace signature

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10131577A1 (de) * 2001-07-02 2003-01-16 Bosch Gmbh Robert Verfahren zum Schutz eines Mikrorechner-Systems gegen Manipulation seines Programms
DE10340411A1 (de) * 2003-09-02 2005-04-07 Infineon Technologies Ag Vorrichtung und Verfahren zur sicheren Ausführung eines Programms

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SIMSIC, L.: Accelerating algorithms in hardware. Design & Reuse. (recherchiert am 19.05.2010) *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012032140A1 (de) 2010-09-10 2012-03-15 Technische Universität Dresden Verfahren zum bereitstellen eines wertes zum ermitteln, ob bei einer ausführung eines programms ein fehler aufgetreten ist
DE102010037457A1 (de) * 2010-09-10 2012-03-15 Technische Universität Dresden 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
DE102010037457B4 (de) * 2010-09-10 2012-06-21 Technische Universität Dresden 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
US9304872B2 (en) 2010-09-10 2016-04-05 Andre Schmitt Method for providing a value for determining whether an error has occurred in the execution of a program
EP2631802A1 (de) * 2012-02-22 2013-08-28 Siemens Aktiengesellschaft Verfahren zur Speicherung und Propagation von Fehlerinforationen in Computer-Programmen
US9195534B2 (en) 2012-02-22 2015-11-24 Siemens Aktiengesellschaft Method for storing and propagating error information in computer programs
US10141955B2 (en) 2015-04-11 2018-11-27 International Business Machines Corporation Method and apparatus for selective and power-aware memory error protection and memory management

Also Published As

Publication number Publication date
US8892943B2 (en) 2014-11-18
DE102009037630B4 (de) 2017-12-07
US20110041013A1 (en) 2011-02-17

Similar Documents

Publication Publication Date Title
DE102009037630B4 (de) Elektronische Vorrichtung und Verfahren zur Überprüfung der korrekten Programmausführung
WO2012032140A1 (de) Verfahren zum bereitstellen eines wertes zum ermitteln, ob bei einer ausführung eines programms ein fehler aufgetreten ist
DE102006005817B4 (de) Fehlererkennungsvorrichtung für einen Adressdecoder und Vorrichtung zur Fehlererkennung für einen Adressdecoder
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
EP1810139B1 (de) Verfahren, betriebssystem und rechengerät zum abarbeiten eines computerprogramms
DE102011011333B4 (de) Lesen in Peripheriegeräte und schreiben aus Peripheriegeräten mit zeitlich getrennter, redundanter Prozessorausführung
EP1955164A1 (de) Programmgesteuerte einheit und verfahren zum betreiben derselbigen
DE102008024193A1 (de) System mit konfigurierbaren Funktionseinheiten und Verfahren
DE3786853T2 (de) Gerät zur Erkennung und Klassifizierung von Steuerwortfehlern.
DE102006036386A1 (de) Mikroprozessorsystem zur Steuerung bzw. Regelung von zumindest zum Teil sicherheitskritischen Prozessen
WO2004092972A2 (de) Programmgesteuerte einheit und verfahren
DE102013021231A1 (de) Verfahren zum Betrieb eines Assistenzsystems eines Fahrzeugs und Fahrzeugsteuergerät
EP1915686B1 (de) Verfahren und vorrichtung zur festlegung eines startzustandes bei einem rechnersystem mit wenigstens zwei ausführungseinheiten durch markieren von registern
DE102019118703A1 (de) System und Verfahren zum kontinuierlichen Verifizieren der Bauelementzustandsintegrität
DE102015202049B3 (de) System und Verfahren zur Fehlerdetektion von ausgeführtem Programmcode unter Verwendung komprimierter Anweisungssignaturen
DE102006036384A1 (de) Mikroprozessorsystem zur Steuerung bzw. Regelung von zumindest zum Teil sicherheitskritischen Prozessen
WO2006089943A1 (de) Verfahren zur datensicherung und gerät zu dessen ausführung
WO2016206847A1 (de) Verfahren und vorrichtung zum absichern einer programmzählerstruktur eines prozessorsystems und zum überwachen der behandlung einer unterbrechungsanfrage
DE102005037236A1 (de) Vorrichtung und Verfahren zur Konfiguration einer Halbleiterschaltung
DE19801992C2 (de) Verfahren zur Verbesserung der Systemverfügbarkeit nach dem Ausfall von Prozessoren einer Prozessorplattform
EP1031081B1 (de) Programmgesteuerte einheit und verfahren
DE102005037259A1 (de) Verfahren und Vorrichtung zur Festlegung eines Startzustandes bei einem Rechnersystem mit wenigstens zwei Ausführungseinheiten durch Umschalten von Registersätzen
WO2007017359A1 (de) Vorrichtung und verfahren zur steuerung eines rechnersystems
DE102010031017A1 (de) Verfahren zur Überwachung des Programmablaufs eines Prozessors
DE102005037258A1 (de) Verfahren und Vorrichtung zur Festlegung eines Startzustandes bei einem Rechnersystem mit wenigstens zwei Ausführungseinheiten durch Übernehmen des Startzustandes

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
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
R082 Change of representative

Representative=s name: ZELLER, ANDREAS, DE