DE102010003153B4 - Verarbeitungseinheit, Vorrichtung, die zwei Verarbeitungseinheiten aufweist, Verfahren zum Testen einer Verarbeitungseinheit und einer Vorrichtung, die zwei Verarbeitungseinheiten aufweist - Google Patents

Verarbeitungseinheit, Vorrichtung, die zwei Verarbeitungseinheiten aufweist, Verfahren zum Testen einer Verarbeitungseinheit und einer Vorrichtung, die zwei Verarbeitungseinheiten aufweist Download PDF

Info

Publication number
DE102010003153B4
DE102010003153B4 DE102010003153.4A DE102010003153A DE102010003153B4 DE 102010003153 B4 DE102010003153 B4 DE 102010003153B4 DE 102010003153 A DE102010003153 A DE 102010003153A DE 102010003153 B4 DE102010003153 B4 DE 102010003153B4
Authority
DE
Germany
Prior art keywords
processing unit
test
sequence
value
test instructions
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
DE102010003153.4A
Other languages
English (en)
Other versions
DE102010003153A1 (de
Inventor
Franz Klug
Andreas Wenzel
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of DE102010003153A1 publication Critical patent/DE102010003153A1/de
Application granted granted Critical
Publication of DE102010003153B4 publication Critical patent/DE102010003153B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2284Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing by power-on test, e.g. power-on self test [POST]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Microcomputers (AREA)

Abstract

Verarbeitungseinheit, bei der zwischen einer Sprungoperation zu einem ersten in einem Hauptspeicher der Verarbeitungseinheit gespeicherten Befehl und der Ausführung des Operationscodes dieses ersten Befehls eine Anzahl von n Taktzyklen verstreicht, wobei die Verarbeitungseinheit folgendes Merkmal aufweist: eine Steuereinheit (110), die dahin gehend angepasst ist, nach einer Rücksetzphase die n Taktzyklen zu verwenden, um eine Sequenz von Testbefehlen auszuführen, um eine Manipulation der Verarbeitungseinheit zu erfassen, bevor die Steuereinheit den ersten Befehl für einen Normalbetrieb decodiert.

Description

  • Ausführungsbeispiele der vorliegenden Erfindung beziehen sich auf Verarbeitungseinheiten, beispielsweise Mikrosteuerungen.
  • Sicherheitssteuerungen sind durch eine Vielzahl von Angriffsszenarien bedroht. Eine mögliche Art von Angriff ist die dauerhafte Modifizierung einer Schaltung, beispielsweise anhand eines fokussierten Ionenstrahls (FIB – focused ion beam). Unter Verwendung von FIBs ist es möglich, beispielsweise Signalpfade der Sicherheitssteuerung oder einer anderen Mikrosteuerung oder Verarbeitungseinheit dauerhaft mit einer hohen oder niedrigen Spannung, mit anderen Signalpfaden zu verbinden, oder die Signalpfade zu trennen, um das Funktionsverhalten der Verarbeitungseinheit zu verändern. Diese Art dauerhafter Modifikation oder Manipulation der Funktionalität von Verarbeitungseinheiten kann beispielsweise für einen Betrug im Zusammenhang mit Zahlkarten, Sicherheits- oder Authentifizierungskarten oder für einen sonstigen falschen Gebrauch verwendet werden, bei dem sich Dritte auf das ordnungsgemäße Funktionieren der Verarbeitungseinheit oder der Vorrichtung verlassen, z. B. an einem Benzinzähler in einer Tankstelle, bei einer Wiegemaschine usw.
  • Ein bekanntes Verfahren zum Erfassen derartiger dauerhafter Manipulationen ist die „Benutzermodussicherheitslebenskontrolle” (UmSLC – user mode security life control). Hier wird das System in regelmäßigen oder unregelmäßigen Abständen angehalten, und Teile der Schaltungsanordnung werden unter Verwendung von Muster (patterns) überprüft, die spezifisch zu der Schaltungsanordnung hinzugefügt werden, die durch das System geführt werden und die ausgelesen und überprüft werden. Derartige Lösungen erfordern eine zusätzliche Hardware, z. B. zur Speicherung der Ergebnisse. Außerdem ist ein beträchtliches Maß an Stillstandszeit zum Testen der Knoten erforderlich, und manchmal ist es sogar unmöglich, derartige Lösungen zu integrieren.
  • Die US 5 157 781 A offenbart ein Datenverarbeitungssystem, bei dem ein Testmodus durchgeführt wird, wenn ein Testaktivierungsbit gesetzt ist. Auf das Testaktivierungsbit kann nur nach einem Rücksetzten zugegriffen werden.
  • Die US 6 715 062 B1 offenbart einen Prozessor und ein Verfahren zum Durchführen eines Hardware-Tests während Befehle in einem normalen Modus ausgeführt werden.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden unter Bezugnahme auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
  • 1 eine schematische Zeichnung eines Ausführungsbeispiels einer Mikrosteuerung;
  • 2 ein Ausführungsbeispiel einer 16-Bit-Arithmetik-Logik-Einheit (ALU – arithmetic logic unit) mit einem gesetzten Übertragsflag (carry flag);
  • 3 ein Ausführungsbeispiel einer Vorrichtung mit zwei Verarbeitungseinheiten und einem Komparator.
  • Gleiche oder äquivalente Elemente sind in der folgenden Beschreibung der Figuren mit gleichen oder äquivalenten Bezugszeichen benannt.
  • 1 zeigt eine schematische Zeichnung eines Ausführungsbeispiels einer Mikrosteuerung 100, die mit einem Hauptspeicher 150 verbunden ist, wobei die Mikrosteuerung 100 eine Steuereinheit 110, Register, nämlich Befehlsregister (IR – instruction registers) 120, einen Programmzähler (PC – program counter) 122 und einen Akkumulator oder ein Akkumulatorregister (ACCU – accumulator or accumulator register) 124, eine Arithmetik-Logik-Einheit (ALU) 130 und einen Multiplexer (MPX) 140 aufweist. Der Hauptspeicher kann ein Nur-Lese-Speicher (ROM – read only memory), eine beliebige Art eines programmierbaren ROM (PROM – programmable ROM), ein Direktzugriffsspeicher (RAM – random access memory) oder eine Kombination eines ROM und eines RAM sein.
  • Zum besseren Verständnis der Ausführungsbeispiele der Erfindung wird im Folgenden der Normalbetrieb der beispielhaften Mikrosteuerung beschrieben, wobei sich der Begriff „Normalbetrieb” auf die Ausführung eines Mikrosteuerungsprogramms bezieht, das z. B. in dem Hauptspeicher 150 gespeichert ist.
  • Die Mikrosteuerung 100 ist dahin gehend angepasst, 16-Bit-Befehle oder -Daten zu verarbeiten, wobei ein 16-Bit-Befehl ein 12-Bit-Adressfeld und einen 4-Bit-Operationscode umfasst, wie aus dem Befehlsregister (IR) 120 ersichtlich ist. Der Operationscode legt die auszuführende Operation fest, beispielsweise ein Hinzufügen von zwei Zahlen, ein Verzweigen, ein Speichern von Daten in dem Hauptspeicher 150 usw. Das Adressfeld wird dazu verwendet, Daten in dem Hauptspeicher zu adressieren. Der Hauptspeicher 150 ist in der Lage, 16-Bit-Daten oder -Befehle zu speichern, der Datenbus 152, 154 weist eine Länge oder Breite von 16 Bits auf, und der Adressbus 152, 154 weist eine Länge oder Breite von 12 Bits auf. Das erste Tor 132 der Arithmetik-Logik-Einheit 130 und das Befehlsregister 120 sind über einen ersten Teil des 16-Bit-Datenbusses 152 mit dem Hauptspeicher verbunden, das zweite Tor 134 der Arithmetik-Logik-Einheit 130 ist über einen anderen 16-Bit-Busteil 154 mit dem Akkumulator 124 verbunden, und das Ausgangstor 136 der Arithmetik-Logik-Einheit 130 ist über einen zweiten Teil des 16-Bit-Datenbusses 152 mit dem Hauptspeicher 150 verbunden. Der Adressteil des Befehlsregisters 120 ist über einen ersten 12-Bit-Adressbus 158 mit dem Programmzähler 122 und dem Multiplexer 140 verbunden, und der Multiplexer 140 ist über einen zweiten 12-Bit-Adressbus 160 mit dem Hauptspeicher 150 verbunden. Der Operationscode-Teil des Befehlsregisters 120 ist mit der Steuereinheit 110 verbunden. Die Steuereinheit 110 umfasst ferner ein Eingangstor für ein Taktsignal 112 oder ein Systemtaktsignal 112 und ein Eingangstor für ein Rücksetzsignal 114.
  • Die Arithmetik-Logik-Einheit 130 ist beispielsweise dahin gehend angepasst, Arithmetik- und Logikoperationen an Operanden durchzuführen, die über das erste Eingangstor 132 und das zweite Eingangstor 134 bereitgestellt werden, und das Ergebnis der Arithmetik- oder Logikoperation über das Ausgangstor 136 auszugeben. Arithmetikoperationen umfassen beispielsweise Addition, Subtraktion, und können auch Multiplikation und Division umfassen. Bitweise Logikoperationen umfassen beispielsweise UND, NICHT, ODER und exklusives ODER. Die Arithmetik-Logik-Einheit ist ferner dahin gehend angepasst, auch Bitverschiebungsoperationen durchzuführen, beispielsweise ein Verschieben oder Drehen des in der Arithmetik-Logik-Einheit 130 gespeicherten 16-Bit-Wortes um eine festgelegte Anzahl von Bits nach links oder rechts, mit oder ohne Übertrag und mit oder ohne Vorzeichenerweiterung. Diese Verschiebungen können auch als Multiplikationen mit zwei und als Divisionen durch zwei interpretiert werden.
  • Der Akkumulator 124 dient als Lese- oder Schreibregister der Arithmetik-Logik-Einheit 130. Der Akkumulator enthält auch den zweiten Operanden für eine Arithmetik- oder Logikoperation in der Arithmetik-Logik-Einheit. Das Ergebnis der Operation kann entweder in den Akkumulator 124 oder in den Hauptspeicher 150 zurückgeschrieben werden, falls der Hauptspeicher einen Direktzugriffsspeicher (RAM) umfasst.
  • Das Befehlsregister 120 wird dazu verwendet, den Befehl, der derzeit ausgeführt wird, zu speichern, bis die Ausführung abgeschlossen ist. Der Programmzähler 122 wird dazu verwendet, den nächsten Befehl eines in dem Hauptspeicher gespeicherten Programms zu adressieren. Der Programmspeicher wird während der Ausführung eines Befehls um eins inkrementiert und zeigt auf den nächsten Befehl eines sequentiellen Programms, oder er kann im Fall von Verzweigungsbefehlen mit einer neuen Adresse geladen werden. Ausführungsbeispiele der Mikrosteuerung umfassen ferner ein Statusregister (in 1 nicht gezeigt), das auch als Flagregister oder Steuerregister bezeichnet wird. Das Statusregister ist eine Sammlung von Status- oder Flagbits einer Mikrosteuerung, die Informationen über den aktuellen Status der Mikrosteuerung bezüglich der Ausführung eines Programms und/oder Steuer- und Statusinformationen für die Arithmetik-Logik-Einheit enthält. Ausführungsbeispiele der Mikrosteuerung 100 können Statusregister mit einem „Null-Flag” umfassen, das angibt, dass das Ergebnis einer mathematischen oder logischen Operation 0 ist, und/oder ein „Übertragsflag”, das angibt, dass eine Operation ein Ergebnis erzeugte, das höher ist als die Anzahl von verfügbaren Bits in der Arithmetik-Logik-Einheit, wobei das „Übertragsflag” auch vor einer mathematischen oder logischen oder Verschiebungsoperation als zusätzlicher Operand gesetzt werden kann. Die Register und der Akkumulator können unter Verwendung von 16 Puffern (Latches) oder Flip-Flops implementiert werden, wobei jeder Zwischenspeicher oder jedes Flip-Flop 1 Bit der jeweiligen Daten speichert. Die Arithmetik-Logik-Einheit 130 umfasst ferner 16 Speicherungselemente, beispielsweise Zwischenspeicher oder Flip-Flops, um die in die Arithmetik-Logik-Einheit geladenen Daten vorübergehend zu speichern oder um das Ergebnis einer Arithmetik- oder Logik- oder Verschiebungsoperation zu speichern.
  • Ein „Speicherungselement” ist ein beliebiges Speicherungselement, beispielsweise ein beliebiges flüchtiges Speicherungselement wie ein Zwischenspeicher oder ein Flip-Flop zum Speichern eines Bitwerts. Derartige Speicherungselemente können als einzelne oder alleinstehende Speicherungselemente oder in Verbindung mit anderen als Register implementiert sein, beispielsweise das Befehlsregister 120, das Programmzähler 122, das Akkumulator 124, ein Mehrzweckregister oder ein Spezialregister, z. B. ein Statusregister, und werden beispielsweise bei der Arithmetik-Logik-Einheit verwendet. Bei weiteren Ausführungsbeispielen können Direktzugriffsspeicher (RAM) und/oder nicht-flüchtige Speicher (NVM – nonvolatile memories) als „Speicherungselemente” verwendet werden.
  • Der Multiplexer 140 wird dazu verwendet, entweder den Programmzähler 122 oder das Adressfeld des in dem Befehlsregister 120 gespeicherten Befehls mit dem Adressbus 160 zu verbinden, um somit eine Speicheradresse in dem Hauptspeicher 150, z. B. einen nächsten Befehl oder ein Datenelement, auszuwählen.
  • 1 zeigt symbolisch die verschiedenen Steuersignale 116 eines Steuerbusses. Die Steuersignale werden durch die Steuereinheit 110 erzeugt, um den Betrieb der Mikrosteuerung 100 zu steuern, indem Steuersignale an die verschiedenen Elemente der Mikrosteuerung gesendet werden, z. B. an den Akkumulator 124, die Arithmetik-Logik-Einheit 130, das Befehlsregister 120, den Programmzähler 122 und den Multiplexer 140. Steuersignale werden z. B. zum Auslesen von Daten aus den und zum Schreiben von Daten in die Register wie z. B. das Befehlsregister 120, den Programmzähler 122 und den Akkumulator 124 und zum Steuern der spezifischen Operationen, die durch die Arithmetik-Logik-Einheit 130 durchgeführt werden, verwendet. Die Steuereinheit 110 steuert ferner das Auslesen von Daten aus dem und das Schreiben von Daten in den Hauptspeicher 150 über die Steuersignale 116. Der 4-Bit-Operationscode ermöglicht das Codieren von 16 verschiedenen Befehlen oder Operationscodes, wobei für jeden Operationscode eine andere Sequenz von Steuersignalen für die verschiedenen zuvor erwähnten Elemente erzeugt wird.
  • Die Steuereinheit 110 umfasst ferner ein Taktsignal 112, das das Setzen und/oder Zurücksetzen der Flip-Flops bewirkt, wobei sich ein Setzen eines Flip-Flops auf ein Speichern des logischen Wertes „1” bezieht und wobei sich ein Rücksetzen auf ein Speichern des logischen Wertes „0” in dem Flip-Flop bezieht. Der Wechsel zwischen diesen zwei Werten oder Zuständen wird auch als Zustandsübergang oder kurz als „Übergang” bezeichnet. Auf der Basis des Taktsignals werden die Befehle beispielsweise in zwei Zyklen, einem Befehlszyklus und einem Ausführungszyklus, ausgeführt. Während des Befehlszyklus (I-Zyklus, I = instruction, Befehl) passiert der Adressteil des Befehlsregisters (IR) 120 oder passieren die in dem Programmzähler 122 gespeicherten Adressdaten den Multiplexer, und das an der jeweiligen Adresse gespeicherte 16-Bit-Wort wird aus dem Hauptspeicher 150 ausgelesen und in dem Befehlsregister 120 gespeichert. Während des Ausführungszyklus (E-Zyklus, E = execution, Ausführung) decodiert die Steuereinheit den in dem Befehlsregister 120 gespeicherten tatsächlichen Operationscode, um die Sequenz von Steuersignalen zu erzeugen, die dem 4-Bit-Operationscode zugeordnet ist.
  • Die Steuereinheit 110 decodiert jeden der Operationscodes, um die operationscodespezifischen Sequenzen von Steuersignalen 116 zu erzeugen. Die Ausführung der Sequenz von Steuersignalen wird durch das Taktsignal 112 getaktet. Die Steuereinheit erzeugt verschiedene Steuersignale für die verschiedenen Funktionselemente, z. B. 130, 140, 120 usw. Ausführungsbeispiele der Steuereinheit 110 können dahin gehend angepasst sein, den Operationscode auf fest verdrahtete Weise, beispielsweise durch Verwendung von Logikgattern, oder unter Verwendung von Mikroprogrammen zu übersetzen oder zu decodieren. Für Letzteres wird eine interne Mikroprogrammspeicherung verwendet. Die Mikroprogrammspeicherung wird auch als Steuerspeicher bezeichnet und ist statt der Logikgatter in der Steuereinheit 110 integriert. Die Ausgangstore der Mikroprogrammspeicherung oder des Mikroprogrammspeichers (z. B. ROM, PROM) bilden direkt die Steuersignale 116 für die Mikrosteuerung. Mit anderen Worten umfasst jeder Mikroprogrammspeichereintrag die jeweiligen Bitkombinationen für die einzelnen Taktzyklen und die Ausführung der Operationscodes. Im Gegensatz zu dem Hauptspeicher, der bezüglich der Steuereinheit auch als externer Speicher bezeichnet werden kann, kann die Steuereinheit direkt auf den Mikroprogrammspeicher zugreifen, ohne die Daten und/oder den Adressbus zu verwenden, ohne den Programmzähler PC zu verwenden, um die richtigen Daten oder den richtigen Befehl aus dem Speicher herunterzuladen, und ohne den Operationscodeteil des in dem Befehlsregister IR gespeicherten Befehls zu decodieren. Ferner ist die Größe des Mikroprogrammspeichers viel kleiner als die des Hauptspeichers. Trotzdem erfordern Ausführungsbeispiele, die die fest verdrahtete Decodierung der Operationscodes verwenden, weniger Raum als diejenigen, die auf Mikroprogrammen basieren.
  • Wichtig für die korrekte Ausführung der in dem Hauptspeicher 150 gespeicherten Programme ist die ordnungsgemäße Initialisierung aller Funktionselemente und insbesondere der Speicherungselemente beim Starten der Mikrosteuerung, beispielsweise nach dem Einschalten. Diese Initialisierungsphase, die auch als Rücksetzphase bezeichnet wird, wird dazu verwendet, den Mikroprozessor in einen vordefinierten Startzustand zu versetzen. Die Rücksetzphase wird ansprechend auf das Rücksetzsignal 114 gestartet, beispielsweise durch Aktivieren des Rücksetzsignals. Während der Rücksetzphase werden z. B. alle Speicherungselemente einschließlich derjenigen der Arithmetik-Logik-Einheit, der zuvor erwähnten Register 120, 122, 124 und weiterer Steuerregister, z. B. des Statusregisters, auf einen vordefinierten Initialisierungs- oder Rücksetzwert zurückgesetzt. Je nach der Funktion oder Verwendung des Speicherungselements kann dieser Initialisierungswert z. B. „0” oder „1” sein. Ferner wird der Programmzähler 122 mit der Startadresse der in dem Hauptspeicher gespeicherten Mikrosteuerung geladen. Der Befehl an der Startadresse umfasst, dass der erste Befehl des Mikrosteuerungsprogramms von dem Hauptspeicher 150 in das Befehlsregister 120 geladen wird. Während der Rücksetzphase werden die Speicherungselemente für jegliche andere Operation gesperrt, mit anderen Worten wird nur das Zurücksetzen auf die einzelnen Rücksetzwerte durchgeführt. Die Rücksetzphase endet, wenn das Rücksetzsignal wieder deaktiviert wird.
  • Nach der Rücksetzphase wird die in dem Programmzähler PC gespeicherte Speicheradresse dazu verwendet, die entsprechende Adresse des ersten Befehls des in dem Hauptspeicher 150 gespeicherten Mikrosteuerungsprogramms auszuwählen und den ersten Befehl in das Befehlsregister IR herunterzuladen. Nachdem der erste Befehl in das Befehlsregister geladen wurde, wird das Decodieren des Operationscodeteils des ersten Befehls gestartet, und so weiter. Mit anderen Worten startet nach der Rücksetzphase der Normal betrieb der Verarbeitungseinheit durch ein Auswählen, Herunterladen und Ausführen eines ersten Befehls einer Sequenz von Befehlen, die in dem Hauptspeicher 150 gespeichert sind.
  • Ausführungsbeispiele von Mikrosteuerungen 100 nutzen den Umstand, dass die Mikrosteuerung 100 nach einem Rücksetzsignal 114 während der ersten Zyklen des Rücksetzsignals keinerlei Daten oder Programmcode von dem Hauptspeicher 150 empfängt. Diese Taktzyklen werden bei bekannten Mikrosteuerungen nicht genutzt. Jedoch verwenden Ausführungsbeispiele der Mikrosteuerung 100 diese ersten Taktzyklen, um einen oder mehrere Testbefehle auszuführen, um zu überprüfen, ob die Mikrosteuerung dauerhaft manipuliert wurde, indem Signalpfade oder Verbindungen von Signalpfaden der Mikrosteuerung 100 modifiziert wurden. In diesem Zusammenhang bezieht sich der Begriff Signalpfad auf jeglichen Signalpfad und umfasst somit beispielsweise Steuersignalpfade für die Steuersignale 116, Datensignalpfade 152, 154, Adresssignalpfade 158, 160 und weitere Signalpfade, beispielsweise in der Arithmetik-Logik-Einheit 130.
  • Die erste Sprungoperation, d. h. die Auswahl selbst der Adresse des ersten in dem Hauptspeicher gespeicherten Befehls für den Normalbetrieb über den Programmzähler PC und den Multiplexer MPX, bildet einen ersten Teilzyklus eines ersten Befehlszyklus (I-Zyklus), während das Lesen oder Laden selbst des ersten Befehls aus der ausgewählten Adresse des Hauptspeichers 150 in das Befehlsregister IR über den Bus 152 einen zweiten Teilzyklus dieses ersten Befehlszyklus bildet.
  • Je nach der Anwendung, für die die Verarbeitungseinheit verwendet wird, verstreicht eine Anzahl n von Taktzyklen zwischen der Sprungoperation zu dem ersten Befehl und der Ausführung des Operationscodes dieses ersten Befehls, nachdem er in dem Befehlsregister gespeichert wurde. Mit anderen Worten verstreichen n Zyklen für die Leseoperation selbst.
  • Insbesondere für Chipkarten mit hohen Sicherheitsanforderungen erhöht die Entschlüsselung von verschlüsselten Daten oder Befehlen, die z. B. in dem Hauptspeicher gespeichert sind, die Anzahl von Zyklen, die zwischen einem Auswählen eines Befehls und einem Decodieren des Befehls zum Zweck seiner Ausführung verstreichen.
  • Ausführungsbeispiele der vorliegenden Erfindung verwenden diese Taktzyklen, um einen Selbsttest bezüglich einer Manipulation der Verarbeitungseinheit oder von Elementen der Verarbeitungseinheit durchzuführen.
  • Ausführungsbeispiele der Mikrosteuerung 100 umfassen ein Speicherungselement, beispielsweise ein alleinstehendes Flip-Flop, ein Flip-Flop des Statusregisters, der Arithmetik-Logik-Einheit, oder eines beliebigen anderen Registers des Akkumulators, eine Rücksetzlogik 111, die dahin gehend angepasst ist, während der Rücksetzphase einen Testwert in dem Speicherungselement zu speichern, und eine Steuereinheit 110, um den Testbefehl oder eine Sequenz von Testbefehlen unter Verwendung des Testwerts nach der Rücksetzphase auszuführen. Die Rücksetzlogik kann ein Teil der Steuereinheit 110 sein, wie in 1 gezeigt ist, kann jedoch auch eine separate Logikeinheit sein. Die Steuereinheit 110 ist ferner dahin gehend angepasst, ein Signal auf einem Signalpfad zu überwachen und zu erfassen, dass die Mikrosteuerung, und insbesondere die Schaltungsanordnung oder Signalpfade der Mikrosteuerung, dauerhaft manipuliert wurden, falls das zuvor erwähnte überwachte Signal der Mikrosteuerung 100 aufgrund der Ausführung der Sequenz von Testbefehlen einen Wert beibehält oder annimmt, der sich von einem erwarteten Wert unterscheidet, d. h. der aufgrund des Testwerts und der Ausführung der Sequenz von Testbefehlen erwartet wird. Mit anderen Worten wird das Signal auf einem Signalpfad überwacht, der irgendwie mit dem Speicherungselement verbunden ist und/oder von dem in dem Speicherungselement gespeicherten Testwert und von einem Testbefehl abhängt, falls die Mikrosteuerung 110 nicht manipuliert wurde. Ein einzelner Testbefehl kann ein einzelnes Teststeuersignal oder eine Sequenz von Teststeuersignalen für eines oder mehrere der Funktionselemente und für Register des Mikroprozessors 110 umfassen.
  • Das Rücksetzsignal 114 wird beispielsweise während eines Einschaltens der Mikrosteuerung erzeugt und startet die Rücksetzphase oder die Einschaltphase. Im Fall von Chipkarten wird das Rücksetzen jedes Mal durchgeführt, wenn die Chipkarte z. B. in eine kontaktbasierte Kartenlesevorrichtung eingeführt wird oder über eine Hochfrequenzschnittstelle von einer kontaktlosen Kartenlesevorrichtung aktiviert wird. Das Rücksetzen wird jedes Mal durchgeführt, bevor die beliebige andere Lese- oder Schreiboperation an der Chipkarte durchgeführt werden kann.
  • Im Gegensatz zu der Ausführung eines in dem Hauptspeicher 150 gespeicherten Programms während eines Normalbetriebs ist die Steuereinheit von Ausführungsbeispielen der Erfindung dahin gehend angepasst, den Testbefehl oder die Sequenz von Testbefehlen unabhängig oder, mit anderen Worten, ohne die Verwendung des Programmzählers 122 auszuführen. Mit anderen Worten führt die Steuereinheit 110 nach der Rücksetzphase den Testbefehl oder die Sequenz von Testbefehlen intern aus. Weitere Ausführungsbeispiele können die Sequenz von Testbefehlen unabhängig von dem Befehlsregister ausführen, während andere Ausführungsbeispiele dahin gehend implementiert sein können, ein oder mehrere der Speicherungselemente des Operationscodeteils des Befehlsregisters dahin gehend zu setzen, die Verarbeitungseinheit auf die Ausführung der Testsequenz vorzubereiten. Noch weitere Ausführungsbeispiele können dahin gehend angepasst sein, alle Speicherungselemente des Operationscodeteils des Befehlsregisters gemäß einem gültigen Operationscode zu setzen, d. h. gemäß einem Operationscode, wie er zur Ausführung von in dem Hauptspeicher gespeicherten Programmen verwendet wird, und können dahin gehend angepasst sein, den Operationscode zu decodieren, um die Sequenz von Testbefehlen oder Teststeuersignalen zu erhalten.
  • Ausführungsbeispiele können dahin gehend angepasst sein, eine Zustandsmaschine direkt nach der Rücksetzphase zu betreiben, z. B. eine einfache Zustandsmaschine in Form eines Zykluszähler, der Flip-Flops und Logikgatter umfasst, um die Ausführung der Sequenz von Testbefehlen zu steuern.
  • Ausführungsbeispiele der Steuereinheit 110 können dahin gehend angepasst sein, den Testbefehl oder die Sequenz von Testbefehlen auf fest verdrahtete oder fest codierte Weise auszuführen. Steuereinheiten 110 derartiger Ausführungsbeispiele können beispielsweise ein Logikgatter umfassen, das das Taktsignal 112 derart mit der fest verdrahteten Steuereinheit oder Zustandsmaschine verbindet, dass bei jedem Taktsignal ein Steuersignal 116 der Sequenz von Teststeuersignalen oder Testbefehlen erzeugt wird. Mit anderen Worten wird die Ausführung der Sequenz von Testbefehlen durch das Taktsignal 112 getaktet.
  • Andere Ausführungsbeispiele der Steuereinheit 110 können dahin gehend angepasst sein, den Testbefehl oder die Sequenz von Testbefehlen auf mikrocodierte Weise auszuführen, beispielsweise durch Verwendung der Zustandsmaschine, um bei jedem Taktsignal 112 nach der Rücksetzphase einen spezifischen Eintrag in dem Mikrocodespeicher auszuwählen.
  • Ausführungsbeispiele der Steuereinheit können dahin gehend angepasst sein, eine Sequenz von Testbefehlen derart auszuführen, dass bei jedem Testbefehl der Sequenz von Testbefehlen ein anderes Speicherungselement und ein anderer zugeordneter Signalpfad getestet werden, und die Steuereinheit ist dahin gehend angepasst, die Manipulation zu erfassen, falls ein erwarteter Wert während der Ausführung der Testbefehle nicht zumindest einmal an jedem der zugeordneten Signalpfade erscheint.
  • Ausführungsbeispiele der Steuereinheit 110 können dahin gehend angepasst sein, denselben Testbefehl mehrmals auszuführen, beispielsweise indem sie einen fest verdrahteten oder mikroprogrammierten Befehl über ein Logikgatter auswählen, wobei der Testbefehl ausgeführt wird, wenn das Rücksetzsignal und das Taktsignal an das Logikgatter angelegt werden.
  • Weitere Ausführungsbeispiele der Steuereinheit 110 können dahin gehend angepasst sein, eine Sequenz verschiedener Testbefehle auszuführen, indem sie beispielsweise Zustandsmaschinen, Logikgatter und/oder Flip-Flops dazu verwenden, einen ersten Testbefehl bei einem ersten Taktsignal und einen zweiten Testbefehl bei einem zweiten, beispielsweise nachfolgenden Taktsignal auszuwählen, wenn das Rücksetzsignal 114 an die Steuereinheit 110 angelegt wird.
  • Ferner ist bei Ausführungsbeispielen der Mikrosteuerung 100 zumindest ein Speicherungselement dahin gehend angepasst, einen Testwert zu speichern, wenn die Mikrosteuerung 100 ein Rücksetzsignal 114 empfängt. Ähnlich dem bekannten „Rücksetzen” im Sinne eines Speicherns des logischen Werts „0” bei den Speicherungselementen, wenn das Rücksetzsignal 114 empfangen wird, kann ein Rücksetzsignal 114 direkt mit einem Setzeingang (set input port) des Speicherungselements bzw. Flip-Flops verbunden sein (statt der direkten Verbindung mit dem Rücksetzeingang (reset input port) des Flip-Flops). Bei anderen Ausführungsbeispielen kann die Steuereinheit 114 dahin gehend angepasst sein, ein Steuersignal 116 zu erzeugen, das das Speichern des Testwerts in dem Speicherungselement bewirkt.
  • Das direkte Setzen oder, mit anderen Worten, Speichern des Testwerts in dem Speicherungselement vermeidet die Notwendigkeit, einen derartigen Satz von Befehlen durch die Steuereinheit 110 zu implementieren und/oder auszuführen.
  • Bei weiteren Ausführungsbeispielen ist die Steuereinheit 110 dahin gehend angepasst, eine Sequenz von Testbefehlen derart durchzuführen, dass nach Abschluss der Sequenz alle Speicherungselemente vordefinierte Werte speichern, die für eine nachfolgende Ausführung eines Mikrosteuerungsprogramms unter Verwendung des Programmzählers und/oder des Befehlsregisters notwendig sind. Derartige Ausführungsbeispiele können auch als „selbst-reparierend” bezeichnet werden, da sie den gesetzten Zustand des Speicherungselements während der Ausführung der Testbefehle reparieren, indem sie das Speicherungselement so „zurücksetzen”, wie es für den nachfolgenden Normalbetrieb der Mikrosteuerung erforderlich ist.
  • 2 zeigt eine 16-Bit-Arithmetik-Logik-Einheit 130 mit einem Übertragsspeicherungselement C, das auch als Übertragsflag C bezeichnet wird. Die Speicherungselemente R0 bis R15 der Arithmetik-Logik stellen jeweils eine spezifische Bitposition dar. Zu Veranschaulichungszwecken zeigt 2 lediglich das erste oder niedrigstwertige Bit R0, das zweite Bit R1 und das sechzehnte Bit R15, das auch als höchstwertiges Bit (MSB – most significant bit) der Arithmetik-Logik-Einheit bezeichnet werden kann. Jedes der 16 Speicherungselemente R0 bis R15 umfasst ein Ausgangstor, mit dem eine Signalleitung oder ein Signalpfad S0 bis S15 verbunden ist. Bei dem Ausführungsbeispiel gemäß der Darstellung in 2 ist das Übertragsspeicherungselement C gesetzt. Mit anderen Worten speichert es den binären Testwert „1”. Die Speicherungselemente R0 bis R15 sind zurückgesetzt, oder mit anderen Worten speichern sie den binären Rücksetzwert „0”, wie dies beispielsweise für den Normalbetrieb erforderlich ist. Das Übertragsspeicherungselement C wurde auf einen Empfang des Rücksetzsignals 114 hin gesetzt, wie zuvor erörtert wurde. Die Steuereinheit 110 führt 17 mal die „Linksverschiebung”-Operation aus, so dass sich der Wert „1” beispielsweise bei einem ersten Taktzyklus von dem Übertragsspeicherungselement C zu dem ersten Speicherungselement R0 verschiebt, in einem zweiten Taktzyklus von dem ersten Speicherungselement R0 zu dem zweiten Speicherungselement R1 verschiebt und so weiter, bis der binäre Wert „1” bei dem 16. Taktzyklus zu dem 16. Speicherungselement R15 verschoben wird und bei dem 17. Taktzyklus wieder aus dem Speicherungselement R15 heraus verschoben wird. Somit speichert bei jedem Taktzyklus ein anderes Speicherungselement R0 bis R15 den Testwert „1”. Somit ist der erwartete Signalwert bei dem ersten Signalpfad S0, der mit dem ersten Speicherungselement R0 verbunden ist, bei dem ersten Taktzyklus „1”, der erwartete Wert bei dem zweiten Signalpfad S1, der mit dem zweiten Speicherungselement R1 verbunden ist, ist bei dem zweiten Taktzyklus „1” (für die anderen Speicherungselemente ist er „0”), und so weiter. Falls beispielsweise der Signalpfad S1 dauerhaft mit einer niedrigen Spannung verbunden ist, beispielsweise dem logischen Wert „0”, würde sich der tatsächliche Signalwert „0” bei dem zweiten Taktzyklus von dem erwarteten Signalwert „1” unterscheiden. Somit kann die Steuereinheit 110 durch Auswerten des tatsächlichen Signals, beispielsweise durch Vergleichen des tatsächlichen Signals mit einem erwarteten Signal, die dauerhafte Manipulation des zweiten Signalpfades S1 erfassen.
  • Bei weiteren Ausführungsbeispielen kann die Arithmetik-Logik-Einheit 130 dahin gehend implementiert sein, „0” en einzufügen, wenn die „1” von rechts nach links verschoben wird, so dass das Übertragsspeicherungselement und die Registerspeicherungselemente R0 bis R15 nach der siebzehnten Verschiebung wieder in einem Rücksetzzustand sind und somit korrekt initialisiert sind und für einen anschließenden Normalbetrieb der Mikrosteuerung bereit sind. Weitere Ausführungsbeispiele können verschiedene Verschiebungsoperationen ausführen, beispielsweise Verschieben mit Drehen, Verschieben von links nach rechts usw. Ein weiteres Ausführungsbeispiel kann dahin gehend angepasst sein, beispielsweise das erste Speicherungselement R0 auf einen Empfang des Rücksetzsignals 114 hin zu setzen, ohne das Übertragsspeicherungselement zu verwenden, und den logischen Wert „1” von rechts nach links zu verschieben, wie zuvor beschrieben wurde, um die Signalpfade zwischen den einzelnen Speicherungselementen R0 bis R15 des Registers und die Signalpfade S0 bis S15 zu testen.
  • Bei einem anderen Ausführungsbeispiel umfasst die Arithmetik-Logik-Einheit 130 einen Nulldetektor, der ein Nullflag auf den Wert „1” setzt, falls alle Speicherungselemente R0 bis R15 den Wert „0” enthalten. Falls zumindest eines der Speicherungselemente eine „1” speichert, wird das Nullflag auf den Wert „0” zurückgesetzt. Die tatsächlich gespeicherten Werte des Registers R0 bis R15 werden z. B. über die entsprechenden Signalpfade S0 bis S15 gemessen. Somit erfasst der Nulldetektor – im Fall einer nicht vorliegenden Manipulation – bei einem Ausführungsbeispiel, bei dem bei jedem Taktzyklus lediglich eines der Speicherungselemente R0 bis R15 einen logischen Wert „1” enthält, während alle anderen Speicherungselemente den logischen Wert „0” enthalten, und bei dem der binäre Testwert „1” durch die Arithmetik-Logik-Einheit verschoben wird, bei keinem der Taktzyklen, dass alle Speicherungselemente R0 bis R15 0 sind (Nullflag = 0). Falls der Nulldetektor in einem Taktzyklus den Wert „1” annimmt, wird eine dauerhafte Manipulation zumindest eines der Signalpfade S0 bis S15 und/oder der Signalpfade zwischen den Speicherungselementen R0 bis R15, die zum Verschieben verwendet werden, erfasst.
  • Allgemeiner ausgedrückt kann die Steuereinheit 110 dahin gehend angepasst sein, die Sequenz von Testbefehlen derart auszuführen, dass bei jedem Testbefehl der Sequenz von Testbefehlen ein anderes Speicherungselement und ein anderer zugeordneter Signalpfad getestet wird, und die Steuereinheit ist dahin gehend angepasst, die Manipulation zu erfassen, falls der erwartete Wert während der Ausführung der Testbefehle nicht zumindest einmal an jedem der zugeordneten Signalpfade erscheint. Bei weiteren Ausführungsbeispielen wird bei jedem Testbefehl der Sequenz von Testbefehlen ein anderes Speicherungselement auf den Testwert gesetzt. Die Steuereinheit 110 kann dahin gehend angepasst sein, denselben Testbefehl, z. B. einen Verschiebungsbefehl dahin gehend, den Testwert von einem Speicherungselement zu einem nächsten Speicherungselement zu verschieben, eine vordefinierte Anzahl von Malen auszuführen und dabei jedes Mal ein anderes Speicherungselement der Verarbeitungseinheit zu verwenden. Bei einem weiteren Ausführungsbeispiel ist der Testbefehl einen Mit-Übertrag-Verschieben-Befehl (shift-with-carry instruction), wobei das Speicherungselement das Übertragsflag ist.
  • Die Steuereinheit kann ferner dahin gehend angepasst sein, die Sequenz von Testbefehlen derart auszuführen, dass das Speicherungselement nach einem erfolgreichen Abschluss der Sequenz von Testbefehlen einen Initialisierungswert speichert, der sich von dem Testwert unterscheidet, wobei der Initialisierungswert der Wert ist, auf den das Speicherungselement zum Zweck einer korrekten Ausführung eines Programms, das auf dem Programmzähler beruht, z. B. eines Programms, das in einem Hauptspeicher 150 gespeichert ist, zurückgesetzt werden muss.
  • Die Steuereinheit kann dahin gehend angepasst sein, die Sequenz von Testbefehlen anzuhalten, falls die Steuereinheit eine Manipulation erfasst hat, und sich selbst bzw. die Verarbeitungseinheit zu deaktivieren. Somit kann z. B. eine Chipkarte, die eine manipulierte Mikrosteuerung aufweist, nicht mehr verwendet werden. Betrug wird verhindert. Aus demselben Grund kann die Steuereinheit dahin gehend angepasst sein, sich selbst bzw. die Verarbeitungseinheit lediglich ansprechend auf das Rücksetzsignal zu aktivieren. Mit anderen Worten können Ausführungsbeispiele der Steuereinheit dahin gehend angepasst sein, einen Befehl von einem externen Hauptspeicher nur in dem Fall in ein Befehlsregister der Verarbeitungseinheit auf der Basis des Programmzählers zu laden, dass die Steuereinheit während der Ausführung der Sequenz von Testbefehlen keine Manipulation erfasste. Nachdem die Steuereinheit eine Manipulation erfasst hat, deaktiviert sie somit die Chipkarte, und sobald ein Versuch gestartet wird, die Chipkarte erneut zu aktivieren, führt die Steuereinheit zuerst die Sequenz von Testbefehlen erneut durch, erfasst erneut die Manipulation und deaktiviert sofort wieder die Chipkarte. Deshalb umfassen weitere Ausführungsbeispiele der Chipkarte keinerlei Einrichtung oder externe Schnittstelle zum Umgehen dieser internen Testprozedur.
  • 3 zeigt eine Vorrichtung 300, beispielsweise eine Chipkarte oder eine Smartcard, die eine erste Mikrosteuerung 100 und eine zweite Mikrosteuerung 100' umfasst, wobei die zweite Mikrosteuerung 100' im Wesentlichen dieselben Merkmale zeigt wie die erste Mikrosteuerung 100. Die Vorrichtung 300 kann z. B. einen einzigen gemeinsamen Hauptspeicher umfassen, der von beiden Mikrosteuerungen gemeinsam genutzt wird.
  • In einem Normalbetrieb führen beide Mikrosteuerungen 100, 100' denselben Programmcode aus, der beispielsweise durch den gemeinsamen Hauptspeicher 150 bereitgestellt wird. Dies ermöglicht den Vergleich der Ergebnisse der zwei Mikrosteuerungen 100, 100'. Da beide Mikrosteuerungen 100, 100' das Programm unabhängig voneinander ausführen, können flüchtige Fehler bei der Ausführung der Programme erfasst werden, und somit kann eine Fehlfunktion verhindert werden. Ausführungsbeispiele der Vorrichtung 300 können beispielsweise dahin gehend implementiert werden, das Programm als Ganzes oder zumindest teilweise zu wiederholen, falls ein derartiger Unterschied durch den Komparator 370 erfasst wird.
  • Ausführungsbeispiele 300 sind dahin gehend angepasst, den Komparator 370 auch zum Testen auf eine dauerhafte Manipulation der Vorrichtung 300 zu verwenden. Zu diesem Zweck können die Mikrosteuerungen der ersten und der zweiten Verarbeitungseinheit dahin gehend angepasst sein, eine Sequenz von Befehlen parallel auszuführen, um einen problemlosen Vergleich der Ausgaben zu ermöglichen, die durch jede der zwei Mikrosteuerungen bzw. Verarbeitungseinheiten erzeugt werden.
  • Bei einem Ausführungsbeispiel führen beide Mikrosteuerungen 100, 100' dieselbe interne Sequenz von Testbefehlen aus und überprüfen, ob der Komparator 370 einen Unterschied zwischen den Ergebnissen der zwei Mikrosteuerungen 100, 100' erfasst. Bei einem anderen Ausführungsbeispiel führt die erste Mikrosteuerung 100 eine Verschiebungsoperation mit Übertrag durch, wie auf der Basis der 2 beschrieben ist, wohingegen die zweite Mikrosteuerung 100' eine Verschiebung ohne Übertrag durchführt. Somit sollte sich das durch die Arithmetik-Logik-Einheit 130 der ersten Mikrosteuerung 100 ausgegebene Ergebnis bei jedem Zyklus von dem durch die Arithmetik-Logik-Einheit 130' der zweiten Mikrosteuerung 100' ausgegebenen Ergebnis unterscheiden. Somit erwartet bzw. erwarten die Steuereinheit 100 und/oder die Steuereinheit 100', dass der Komparator 370 einen „Fehler” angibt, oder, mit anderen Worten, einen Unterschied zwischen den Ausgaben der zwei Mikrosteuerungen, und sie erfasst bzw. erfassen eine dauerhafte Manipulation, falls der Komparator 370 keinen Fehler anzeigt.
  • Bei weiteren Ausführungsbeispielen der Vorrichtung 300 kann die zweite Verarbeitungseinheit ein Duplikat der ersten Verarbeitungseinheit sein, und der erste und der zweite Testwert können gleich sein, und die erste und die zweite Sequenz von Befehlen können ebenfalls gleich sein. Bei derartigen Ausführungsbeispielen ist die erste Steuereinheit dahin gehend angepasst, die Manipulation zu erfassen, wenn das Vergleichssignal anzeigt, dass sich die Ausgabe der ersten Verarbeitungseinheit von der Ausgabe der zweiten Verarbeitungseinheit unterscheidet.
  • Bei anderen Ausführungsbeispielen der Vorrichtung 300 unterscheiden sich der erste und der zweite Testwert voneinander, und die erste und die zweite Sequenz von Befehlen sind gleich. Bei derartigen Ausführungsbeispielen ist die erste Steuereinheit 110 dahin gehend angepasst, die Manipulation zu erfassen, wenn das Vergleichssignal anzeigt, dass die Ausgabe der ersten Verarbeitungseinheit gleich der Ausgabe der zweiten Verarbeitungseinheit ist. Bei einem spezifischen Ausführungsbeispiel können die Speicherungselemente der ersten und der zweiten Verarbeitungseinheit beispielsweise Übertragsflags sein, und die erste Steuereinheit ist dahin gehend angepasst, als erste Sequenz von Testbefehlen eine Verschiebung mit Übertrag auszuführen, wohingegen die zweite Steuereinheit dahin gehend angepasst ist, als zweite Sequenz von Testbefehlen eine Verschiebung ohne Übertrag auszuführen.
  • Bei weiteren Ausführungsbeispielen können der erste und der zweite Testwert gleich sein, und die erste und die zweite Sequenz von Befehlen können unterschiedlich sein, und die erste Steuereinheit kann dahin gehend angepasst sein, die Manipulation zu erfassen, falls das Vergleichssignal anzeigt, dass die Ausgabe der ersten Verarbeitungseinheit gleich der Ausgabe der zweiten Verarbeitungseinheit ist.
  • Die Ausgabe der ersten Verarbeitungseinheit kann beispielsweise eine Ausgabe einer Arithmetik-Logik-Einheit der ersten Verarbeitungseinheit sein, und die Ausgabe der zweiten Verarbeitungseinheit eine Ausgabe einer Arithmetik-Logik-Einheit der zweiten Verarbeitungseinheit.
  • Bei wieder anderen Ausführungsbeispielen kann die Steuereinheit 110 der ersten Verarbeitungseinheit dahin gehend angepasst sein, ein Sequenzabschlusssignal zu erzeugen, nachdem die erste und die zweite Testsequenz erfolgreich abgeschlossen wurden, d. h. die Steuereinheit der ersten Verarbeitungseinheit keine Manipulation erfasste. Bei derartigen Ausführungsbeispielen kann die Rücksetzlogik der ersten Verarbeitungseinheit dahin gehend angepasst sein, ansprechend auf das Sequenzabschlusssignal während der Rücksetzphase das Speicherungselement auf den korrekten Initialisierungswert zu setzen, und die Steuereinheit der ersten Verarbeitungseinheit kann dahin gehend angepasst sein, ansprechend auf das Sequenzabschlusssignal dieselbe Sequenz von Testbefehlen erneut unabhängig von dem Programmzähler der ersten Verarbeitungseinheit auszuführen, wobei die Steuereinheit der ersten Verarbeitungseinheit dahin gehend angepasst ist, die Sequenz von Testbefehlen unter Verwendung des korrekten Initialisierungswerts und ansprechend auf das Sequenzabschlusssignal auszuführen. Andererseits kann bei derartigen Ausführungsbeispielen die Rücksetzlogik der zweiten Verarbeitungseinheit dahin gehend angepasst sein, das Speicherungselement der zweiten Verarbeitungseinheit ansprechend auf das Sequenzabschlusssignal auf den Testwert zu setzen, und die Steuereinheit der zweiten Verarbeitungseinheit kann dahin gehend angepasst sein, dieselbe Sequenz von Testbefehlen erneut unabhängig von dem Programmzähler der zweiten Verarbeitungseinheit auszufahren, wobei die Steuereinheit der zweiten Verarbeitungseinheit dahin gehend angepasst ist, die Sequenz von Testbefehlen unter Verwendung des Testwerts und ansprechend auf das Sequenzabschlusssignal auszuführen. Derartige interne Testprozeduren, die die zwei Verarbeitungseinheiten 100 und 100' in zwei Stufen, d. h. unter Verwendung zweier aufeinanderfolgender Testsequenzen, testen, ermöglichen ein Erfassen von Manipulationen, die durch ein einfaches Durchführen einer einzelnen Sequenz von Testbefehlen nicht erfasst werden können, wie unter Bezugnahme auf 1 beschrieben wurde. Andere Ausführungsbeispiele können andere Kombinationen von Testwerten, einschließlich der Initialisierungswerte, und Sequenzen von Testbefehlen für die erste und die zweite Verarbeitungseinheit in der ersten Testphase und in der zweiten Testphase umfassen.
  • Die Erläuterungen bezüglich des Betrugsschutzes, z. B. der Deaktivierung der Verarbeitungseinheit oder der Vorrichtung, falls eine Manipulation erfasst wurde, sowie weitere Erläuterungen, die bezüglich der Verarbeitungseinheit 100 gemäß 1 dargelegt sind, gelten auch für die oben erwähnten zwei oder mehr Verarbeitungseinheit-Ausführungsbeispiele.
  • Um das zuvor Erwähnte zusammenzufassen, liefern Ausführungsbeispiele der vorliegenden Erfindung eine problemlose Erweiterung des internen Schutzes von Mikrosteuerungen und insbesondere von Sicherheitssteuerungen. Ausführungsbeispiele nutzen den Umstand, dass mehrere Systemtaktzyklen, beispielsweise sechzehn Taktzyklen für die Familie Infineon SLE 78, nach dem Zurücksetzen zur Verfügung stehen, bis die Mikrosteuerung erste externe Daten oder einen ersten externen Code empfängt, die bzw. den sie ausführen kann. Diese Taktzyklen verstreichen bei üblichen Systemen ungenutzt und werden durch Ausführungsbeispiele der Erfindung genutzt.
  • Zu diesem Zweck wird die Mikrosteuerung oder die Zentralverarbeitungseinheit (CPU – central processing unit) wissentlich durch das Zurücksetzen in einen illegalen Zustand versetzt, und sie verwendet die Taktzyklen, um sich selbst zu überprüfen und sich selbst zu „reparieren”. Dieser „illegale Zustand” wird als solcher bezeichnet, da er sich von dem „korrekten initialisierten Zustand”, der zum Starten des „Normalbetriebs”, d. h. zum Starten der Ausführung des indem Hauptspeicher 150 gespeicherten Programms, bekannt und erforderlich ist, unterscheidet. Die Testwerte oder Testinitialisierungswerte, die sich von den korrekten Initialisierungswerten unterscheiden, sind Beispiele derartiger „illegaler” oder „fehlerhafter” Werte oder Zustände.
  • Ausführungsbeispiele der Zentralverarbeitungseinheit können beispielsweise dahin gehend angepasst sein, zu überprüfen, ob eine ihrer sechzehn Bussignalleitungen dauerhaft manipuliert wurde, indem eine Sequenz von Scheinbefehlen oder Testbefehlen durch die Arithmetik-Logik-Einheit gesendet wird, anhand derer auf jeder Signalleitung zumindest einmal eine „1” erzeugt wird, und indem gleichzeitig überprüft wird, ob dieser Wert tatsächlich durch die Arithmetik-Logik-Einheit bereitgestellt wird. Diese Überprüfung kann beispielsweise durch eine zweite Zentralverarbeitungseinheit durchgeführt werden. Die zweite Verarbeitungseinheit kann dahin gehend angepasst sein, auf fehlerfreie Weise mit einer korrekten Initialisierung eine Berechnung durchzuführen, wobei der Prozessor lediglich startet, falls während der Initialisierungstaktzyklen dauerhaft Fehler gemeldet werden. Falls für einen der Taktzyklen kein Fehler gemeldet wird, wird jegliche weitere Ausführung angehalten.
  • Mit wieder anderen Worten umfassen Ausführungsbeispiele eine Sicherheitsprüfung, die in Hardware verwirklicht ist und zu einem Zeitpunkt durchgeführt wird, zu dem das System nicht aktiv ist. Um eine Manipulation auszuschließen, wird das System wissentlich in einem fehlerhaften Zustand initialisiert. Nur wenn die Prüfungssequenz während der Initialisierung erfolgreich durchgeführt wird, wird eine korrekte Initialisierung erzielt, und ein System startet mit ersten Daten- oder Codesequenzen. Somit liefern Ausführungsbeispiele eine zeitgebungsneutrale Überprüfung, die zusätzlich die Schaltung und die Fehlererfassungsschaltung, beispielsweise den Komparator, testet. Ferner wird die Systemprüfung durchgeführt, bevor irgendeine Manipulation in dem System erfolgt ist. Somit ist gewährleistet, dass dauerhafte Fehler für den getesteten Bereich zum derzeit frühestmöglichen Zeitpunkt zuverlässig erfasst werden.
  • Ein Ausführungsbeispiel ist ein System mit zwei Zentralverarbeitungseinheiten 110, 110', wobei die Programmstatuswörter in beiden Zentralverarbeitungseinheiten unterschiedlich initialisiert werden. Das Programmstatuswort (PSW – program status word) ist ein Hardwareregister, das Informationen über den Programmzustand enthält und einen Zeiger oder eine Adresse auf den nächsten auszuführenden Befehl umfassen kann, beispielsweise ähnlich dem Programmzähler, und Statusinformationen, wie sie z. B. in dem Statusregister gespeichert sind, enthält. Die zweite CPU 110' empfängt den korrekten Rücksetz- oder Initialisierungswert, die erste CPU 110 startet mit einem fehlerhaften Wert, der sich von dem korrekten Initialisierungswert unterscheidet. Hier wird der Übertrag während des Rücksetzens gesetzt. Anschließend wird eine Sequenz mit „Verschiebung-mit-Übertrag” ausgeführt. Der fehlerhafte Wert oder Testwert wird dadurch sequentiell über die verschiedenen Signalleitungen des Busses verschoben. Das Ergebnis wird mit dem Ergebnis der zweiten CPU 110' verglichen. Bei jedem Taktzyklus muss ein Fehler angegeben werden. Der Decodierer verarbeitet die Sequenzen nur in dem Fall, dass dieser Fehler auftritt. Durch die Verschiebungsoperation mit Übertrag „repariert” sich das Programmstatuswort selbst und weist am Ende der Sequenz den korrekten Initialisierungswert in seinen Registern auf. Die Ausführung der Codes startet somit mit einem korrekt initialisierten System und funktioniert nur, falls an der Fehlererfassungsschaltung keine Fehler auftreten. Anhand dieser Sequenz wird jeder dauerhafte Fehler auf dieser Signalleitung oder Schaltung erfasst.
  • Bei einem alternativen Ausführungsbeispiel wird eine zweite CPU 110' auch dadurch getestet, dass auch für diese CPU das Programmstatuswort-Übertragsflag mit einem falschen Wert initialisiert wird. In diesem Fall führt die zweite CPU 110' in einer ersten Sequenz lediglich Verschiebungsbefehle ohne Berücksichtigung des Übertragsflags durch. Nachdem die Überprüfung der ersten CPU 110 beendet wurde, wird die zweite Sequenz an dem System ausgeführt, während derer die zweite CPU 110' die Verschiebung-mit-Übertrag-Sequenz durchführt, wohingegen die erste CPU 110 eine Verschiebung-ohne-Übertrag-Sequenz durchführt. Somit können dauerhafte Fehler auf den Bussignalleitungen der Arithmetik-Logik-Einheiten in beiden CPUs ausgeschlossen werden. Derartige Ausführungsbeispiele ermöglichen das Testen der vollständigen Fehlererfassungsschaltung des Busses, einschließlich der Komprimierung für lediglich ein Signal. Die Bemühung, einen ähnlich hohen Abdeckungsbereich für die Fehlererfassungsschaltung zu erzielen, ist für die Benutzermodus-Sicherheitslebenskontrolle beträchtlich höher.
  • Falls während der Überprüfung ein dauerhafter Fehler erfasst wird, wird das komplette System bereits vor einem Ausführen des ersten Befehls deaktiviert. Ausführungsbeispiele erfordern kein Ändern des Systemzustands. Um den deaktivierten Zustand zu verlassen, kann die Karte lediglich in eine Zurücksetzung gebracht werden, von der aus die Initialisierung sofort erneut startet. Dies führt zu einer klassischen Blockierung im Fall von dauerhaften Fehlern. Der Angreifer kann die Karte nicht mehr verwenden. Ausführungsbeispiele können somit auch so angesehen werden, dass sie eine „Sicherheitsüberprüfung von Mikrosteuerungen während der Startphase des Systems” implementieren.
  • Wenn man die vorherigen Erläuterungen zusammenfasst, umfassen bestimmte Ausführungsbeispiele der Verarbeitungseinheit eine Steuereinheit, die dahin gehend angepasst ist, nach einer Rücksetzphase eine Sequenz von Testbefehlen unabhängig von einem Programmzähler und/oder einem Befehlsregister der Verarbeitungseinheit, mit anderen Worten intern, auszuführen, um eine Manipulation der Verarbeitungseinheit zu erfassen, bevor die Steuereinheit einen ersten Befehl für einen Normalbetrieb decodiert, wobei der erste Befehl ein erster Befehl einer Sequenz von Befehlen ist, die z. B. aus einem externen Speicher oder einer sonstigen externen Quelle ausgewählt sind und unter Verwendung eines Programmzählers oder Adressfeldes des Befehlsregisters der Verarbeitungseinheit in das Befehlsregister gelesen werden.
  • Anders ausgedrückt umfassen bestimmte Ausführungsbeispiele der Verarbeitungseinheit eine Steuereinheit, die dahin gehend angepasst ist, nach einer Rücksetzphase und vor einem Normalbetrieb die Sequenz von Testbefehlen unabhängig von einem Programmzähler und/oder einem Befehlsregister der Verarbeitungseinheit, mit anderen Worten intern, auszuführen, um eine Manipulation der Verarbeitungseinheit zu erfassen, bevor die Steuereinheit einen ersten Befehl für den Normalbetrieb decodiert, wobei der erste Befehl ein erster Befehl einer Sequenz von Befehlen ist, die z. B. aus einem externen Speicher oder einer sonstigen externen Quelle ausgewählt sind und unter Verwendung eines Programmzählers oder Adressfeldes des Befehlsregisters der Verarbeitungseinheit in das Befehlsregister gelesen werden.
  • In diesem Zusammenhang bezieht sich der Begriff „Normalbetrieb” auf jegliche softwarebasierte Operation oder Ausführung eines beliebigen softwarebasierten Programms, einschließlich der Ausführung eines softwarebasierten Testprogramms vor einer Ausführung anderer Softwareprogramme. Das softwarebasierte Testprogramm und/oder die anderen Programme können beispielsweise in dem Hauptspeicher 150 oder einer beliebigen anderen externen Quelle gespeichert sein. Im Gegensatz dazu wird die Ausführung der Sequenz von Testbefehlen zur Erfassung der Manipulation gemäß bestimmten Ausführungsbeispielen der Erfindung hardwarebasiert, z. B. durch Zustandsmaschinen, oder, mit anderen Worten, ohne Verwendung von softwarebasierten Programmen, durchgeführt.
  • In Betracht des Obigen umfassen bestimmte Ausführungsbeispiele der Verarbeitungseinheit eine Steuereinheit, die dahin gehend angepasst ist, nach einer Rücksetzphase eine Sequenz von Testbefehlen unabhängig von einem Programmzähler und/oder einem Befehlsregister der Verarbeitungseinheit, mit anderen Worten intern, auszuführen, um eine Manipulation der Verarbeitungseinheit zu erfassen, bevor die Steuereinheit einen ersten Befehl decodiert, wobei der erste Befehl ein erster Befehl einer Sequenz von Befehlen ist, die z. B. aus einem externen Speicher oder einer sonstigen externen Quelle ausgewählt sind und unter Verwendung eines Programmzählers oder Adressfeldes des Befehlsregisters der Verarbeitungseinheit in das Befehlsregister gelesen werden. Obwohl Ausführungsbeispiele der Verarbeitungseinheit auf der Basis einer Mikrosteuerung gemäß 1 und Vorrichtungen 300 gemäß 3 beschrieben wurden, können andere Ausführungsbeispiele andere Arten von Verarbeitungseinheiten, Mikrosteuerungen oder Sicherheitssteuerungen mit unterschiedlichen Steuerungs-, Bus- und Speicherarchitekturen oder unterschiedlichen Adress- und Datenbusbreiten umfassen. Weitere Ausführungsbeispiele können den binären Wert „1” als Rücksetz- oder Initialisierungswert und „0” als Testwert verwenden, wobei sich der Testwert des Speicherungselements von einem Initialisierungs- oder Rücksetzwert des Speicherungselements unterscheidet. Andere Ausführungsbeispiele der Mikrosteuerung sind dahin gehend angepasst, nicht nur einen Befehlszyklus und einen Ausführungszyklus zur Ausführung des gesamten Befehls zu unterscheiden, sondern die Zyklen eines Befehlsabrufs (IF – instruction fetching), einer Befehlsdecodierung (ID – instruction decoding), einer Ausführung (Ex – execution), eines Speicherzugriffs (MEM – memory access) und eines Zurückschreibens (WB – write back) durchzuführen.
  • Die Rücksetzlogik 111 kann unter Verwendung z. B. von Logikgattern und/oder Puffer innerhalb der oder außerhalb der Steuereinheit implementiert werden, obwohl die Rücksetzlogik in 1 symbolisch als Bestandteil der Mikrosteuerung 110 gezeigt ist.
  • Im Gegensatz zu bekannten Lösungen zum Testen von Verarbeitungseinheiten bezüglich einer dauerhaften Manipulation erfordern Ausführungsbeispiele keine oder fast keine zusätzlichen Signalpfade und Hardware. Ausführungsbeispiele, die lediglich ein und denselben Testbefehl mehrmals verwenden, z. B. eine vordefinierte Anzahl von Malen lediglich einen Verschiebungsbefehl, ermöglichen es, die Komplexität der Testverwirklichung auf einem Minimum zu halten. Ferner kann die Komplexität des Erfassungsteils der Testverwirklichung durch die Verwendung von existierenden Logikeinrichtungen, z. B. des Nulldetektors oder des Komparators im Fall von dualen Mikrosteuerungsvorrichtungen, ebenfalls auf einem Minimum gehalten werden.
  • Der Initialisierungswert ist der Wert, auf den das Speicherungselement zum Zweck einer korrekten Ausführung eines Programms auf der Basis des Programmzählers, d. h. eines in einem Hauptspeicher gespeicherten Programms, zurückgesetzt werden muss. Ausführungsbeispiele des internen Testens können dahin gehend angepasst sein, ein oder mehrere Speicherungselemente auf einen Testwert zu setzen, wobei sich der Testwert von dem Initialisierungswert des jeweiligen einen oder der jeweiligen mehreren Speicherungselemente unterscheidet.
  • Derartige externe Programme, die z. B. in dem Hauptspeicher gespeichert sind, werden nach einem erfolgreichen Selbsttest auf der Basis einer oder mehrerer Sequenzen von Testbefehlen ausführt, wie beschrieben wurde. Zur Verhinderung von Betrug kann die Steuereinheit ferner dahin gehend angepasst sein, lediglich einen Befehl aus dem externen Hauptspeicher 150 auf der Basis des Programmzähler 120 in das Befehlsregister 122 zu laden, falls die Steuereinheit 110 während der Ausführung der Sequenz von Testbefehlen keine Manipulation erfasste.
  • Je nach bestimmten Implementierungsanforderungen des erfindungsgemäßen Verfahrens können die erfindungsgemäßen Verfahren in Hardware oder in Software implementiert sein. Die Implementierung kann unter Verwendung eines digitalen Speichermediums, insbesondere einer Disk, CD oder einer DVD durchgeführt werden, auf dem bzw. auf der ein elektronisch lesbares Steuersignal gespeichert ist, das mit einem programmierbaren Computersystem derart zusammenwirkt, dass ein Ausführungsbeispiel des erfindungsgemäßen Verfahrens durchgeführt wird.
  • Allgemein ist ein Ausführungsbeispiel der vorliegenden Erfindung somit ein Computerprogrammprodukt mit einem auf einem maschinenlesbaren Träger gespeicherten Programmcode, wobei der Programmcode dahin gehend wirksam ist, die erfindungsgemäßen Verfahren durchzuführen, wenn das Computerprogrammprodukt auf einem Computer abläuft. Mit anderen Worten sind Ausführungsbeispiele der erfindungsgemäßen Verfahren somit ein Computerprogramm, das einen Programmcode zum Durchführen zumindest eines der erfindungsgemäßen Verfahren aufweist, wenn das Computerprogramm auf einem Computer abläuft.
  • Obwohl das Vorstehende insbesondere unter Bezugnahme auf bestimmte Ausführungsbeispiele desselben gezeigt und beschrieben wurde, wird Fachleuten einleuchten, dass verschiedene andere Änderungen in Bezug auf die Form und Einzelheiten vorgenommen werden können, ohne von der Wesensart und dem Schutzumfang derselben abzuweichen. Deshalb versteht es sich, dass verschiedenen Änderungen bei einer Anpassung an verschiedene Ausführungsbeispiele vorgenommen werden können, ohne von dem breiteren Konzept abzuweichen, das hierin offenbart ist und in den folgenden Patentansprüchen enthalten ist.

Claims (21)

  1. Verarbeitungseinheit, bei der zwischen einer Sprungoperation zu einem ersten in einem Hauptspeicher der Verarbeitungseinheit gespeicherten Befehl und der Ausführung des Operationscodes dieses ersten Befehls eine Anzahl von n Taktzyklen verstreicht, wobei die Verarbeitungseinheit folgendes Merkmal aufweist: eine Steuereinheit (110), die dahin gehend angepasst ist, nach einer Rücksetzphase die n Taktzyklen zu verwenden, um eine Sequenz von Testbefehlen auszuführen, um eine Manipulation der Verarbeitungseinheit zu erfassen, bevor die Steuereinheit den ersten Befehl für einen Normalbetrieb decodiert.
  2. Verarbeitungseinheit gemäß Anspruch 1, bei der die Steuereinheit (110) dahin gehend angepasst ist, die Sequenz von Testbefehlen nach der Rücksetzphase unabhängig von einem Programmzähler (122) der Verarbeitungseinheit auszuführen und zu erfassen, dass die Verarbeitungseinheit manipuliert wurde, falls ein Signal der Verarbeitungseinheit einen Wert beibehält oder annimmt, der sich von einem erwarteten Wert unterscheidet, wobei der erwartete Wert ein Wert ist, der aufgrund der Ausführung der Sequenz von Testbefehlen erwartet wird.
  3. Verarbeitungseinheit gemäß Anspruch 1, die folgende Merkmale aufweist: eine Rücksetzlogik, die dahin gehend angepasst ist, ein Speicherungselement während der Rücksetzphase auf einen Testwert zu setzen; wobei die Steuereinheit (110) dahin gehend angepasst ist, die Sequenz von Testbefehlen nach der Rücksetzphase unabhängig von einem Programmzähler (122) der Verarbeitungseinheit auszuführen, die Sequenz von Testbefehlen unter Verwendung des Testwerts auszuführen und zu erfassen, dass die Verarbeitungseinheit manipuliert wurde, falls ein Signal der Verarbeitungseinheit einen Wert beibehält oder annimmt, der sich von einem erwarteten Wert unterscheidet, wobei der erwartete Wert ein Wert ist, der aufgrund des Testwerts und der Ausführung der Sequenz von Testbefehlen erwartet wird.
  4. Verarbeitungseinheit gemäß Anspruch 3, bei der bei jedem Testbefehl der Sequenz von Testbefehlen ein anderes Speicherungselement auf den Testwert gesetzt wird.
  5. Verarbeitungseinheit gemäß Anspruch 3 oder 4, bei der die Sequenz von Testbefehlen ein Ausführen desselben Testbefehls eine vordefinierte Anzahl von Malen umfasst, wobei jedes Mal ein anderes Speicherungselement der Verarbeitungseinheit verwendet wird.
  6. Verarbeitungseinheit gemäß Anspruch 5, bei der derselbe Testbefehl ein Verschiebebefehl ist, der den Testwert von einem Speicherungselement zu einem nächsten Speicherungselement verschiebt.
  7. Verarbeitungseinheit gemäß einem der Ansprüche 3 bis 6, bei der die Steuereinheit (110) dahin gehend angepasst ist, einen Verschiebung-mit-Übertrag-Befehl auszuführen, und bei der das Speicherungselement das Übertragsflag ist.
  8. Verarbeitungseinheit gemäß einem der Ansprüche 1 bis 7, wobei die Verarbeitungseinheit eine Logik zum Erfassen umfasst, ob alle Speicherungselemente eines vordefinierten Satzes von Speicherungselementen der Verarbeitungseinheit einen ersten Wert speichern, und wobei die Steuereinheit (110) dahin gehend angepasst ist, eine Manipulation zu erfassen, falls die Logik zumindest einmal während der Ausführung der Sequenz von Testbefehlen erfasst, dass nicht alle Speicherungselemente der Mehrzahl von Speicherungselementen den ersten Wert speichern.
  9. Verarbeitungseinheit gemäß einem der Ansprüche 3 bis 8, bei der die Steuereinheit (110) dahin gehend angepasst ist, die Sequenz von Testbefehlen derart auszuführen, dass das Speicherungselement nach einem erfolgreichen Abschluss der Sequenz von Testbefehlen einen Initialisierungswert speichert, der sich von dem Testwert unterscheidet, wobei der Initialisierungswert der Wert ist, auf den das Speicherungselement zum Zweck einer korrekten Ausführung eines Programms auf der Basis des Programmzählers zurückgesetzt werden muss.
  10. Verfahren zum Testen einer Verarbeitungseinheit, bei der zwischen einer Sprungoperation zu einem ersten in einem Hauptspeicher der Verarbeitungseinheit gespeicherten Befehl und der Ausführung des Operationscodes dieses ersten Befehls eine Anzahl von n Taktzyklen verstreicht, das folgenden Schritt umfasst: Ausführen, nach einer Rücksetzphase unter Verwendung der n Taktzyklen und vor einem Decodieren des ersten Befehls für einen Normalbetrieb, einer Sequenz von Testbefehlen durch eine Steuereinheit (110) der Verarbeitungseinheit, um eine Manipulation der Verarbeitungseinheit zu erfassen.
  11. Verfahren gemäß Anspruch 10, bei dem der Schritt des Ausführens der Sequenz von Testbefehlen nach der Rücksetzphase unabhängig von einem Programmzähler (122) der Verarbeitungseinheit durchgeführt wird; wobei das Verfahren ferner folgenden Schritt umfasst: Erfassen, dass die Verarbeitungseinheit manipuliert wurde, falls ein Signal der Verarbeitungseinheit einen Wert beibehält oder annimmt, der sich von einem erwarteten Wert unterscheidet, wobei der erwartete Wert ein Wert ist, der aufgrund der Ausführung der Sequenz von Testbefehlen erwartet wird.
  12. Verfahren gemäß Anspruch 10 oder 11, das folgende Schritte umfasst: Setzen eines Speicherungselements auf einen Testwert während der Rücksetzphase; Ausführen der Sequenz von Testbefehlen nach der Rücksetzphase unabhängig von einem Programmzähler der Verarbeitungseinheit, wobei der Schritt des Ausführens der Sequenz von Testbefehlen unter Verwendung des Testwerts durchgeführt wird; und Erfassen, dass die Verarbeitungseinheit manipuliert wurde, falls ein Signal der Verarbeitungseinheit einen Wert beibehält oder annimmt, der sich von einem erwarteten Wert unterscheidet, wobei der erwartete Wert ein Wert ist, der aufgrund des Testwerts und der Ausführung der Sequenz von Testbefehlen erwartet wird.
  13. Vorrichtung (300), die folgende Merkmale aufweist: eine erste und eine zweite Verarbeitungseinheit, bei denen zwischen einer Sprungoperation zu einem ersten in einem Hauptspeicher der jeweiligen Verarbeitungseinheit gespeicherten Befehl und der Ausführung des Operationscodes dieses ersten Befehls eine Anzahl von n Taktzyklen verstreicht, eine erste Verarbeitungseinheit, wobei die erste Verarbeitungseinheit eine Steuereinheit (110) umfasst, die dahin gehend angepasst ist nach einer Rücksetzphase unter Verwendung der n Taktzyklen eine erste Sequenz von Testbefehlen auszuführen, um eine Ausgabe zu erzeugen; eine zweite Verarbeitungseinheit, wobei die zweite Verarbeitungseinheit eine Steuereinheit (110) umfasst, die dahin gehend angepasst ist, nach der Rücksetzphase unter Verwendung der n Taktzyklen eine zweite Sequenz von Testbefehlen auszuführen, um eine Ausgabe zu erzeugen; und einen Komparator (370), der dahin gehend angepasst ist, die Ausgabe der ersten Verarbeitungseinheit und die Ausgabe der zweiten Verarbeitungseinheit miteinander zu vergleichen und ein Vergleichssignal zu erzeugen, das angibt, ob sich die Ausgabe der ersten Verarbeitungseinheit von der Ausgabe der zweiten Verarbeitungseinheit unterscheidet; wobei die Steuereinheit (110) der ersten Verarbeitungseinheit dahin gehend angepasst ist, eine Manipulation der ersten oder zweiten Verarbeitungseinheit zu erfassen, bevor die Steuereinheit der ersten und/oder zweiten Verarbeitungseinheit den ersten Befehl für einen Normalbetrieb decodiert, falls das Vergleichssignal des Komparators während der Ausführung der ersten und der zweiten Sequenz von Testbefehlen einen Wert beibehält oder annimmt, der sich von einem erwarteten Wert unterscheidet, wobei der erwartete Wert ein Wert ist, der aufgrund der Ausführung der ersten und der zweiten Sequenz von Testbefehlen erwartet wird.
  14. Vorrichtung gemäß Anspruch 13, wobei die erste Verarbeitungseinheit eine Rücksetzlogik, die dahin gehend angepasst ist, ein Speicherungselement während der Rücksetzphase auf einen ersten Testwert zu setzen, und eine Steuereinheit (110) umfasst, die dahin gehend angepasst ist, nach der Rücksetzphase die erste Sequenz von Testbefehlen unabhängig von einem Programmzähler (122) der ersten Verarbeitungseinheit auszuführen, und wobei die Steuereinheit der ersten Verarbeitungseinheit dahin gehend angepasst ist, die erste Sequenz von Testbefehlen unter Verwendung des ersten Testwerts auszuführen; eine zweite Verarbeitungseinheit, wobei die zweite Verarbeitungseinheit eine Rücksetzlogik, die dahin gehend angepasst ist, ein Speicherungselement während der Rücksetzphase auf einen zweiten Testwert zu setzen, und eine Steuereinheit (110) umfasst, die dahin gehend angepasst ist, nach der Rücksetzphase eine zweite Sequenz von Testbefehlen unabhängig von einem Programmzähler (122) der zweiten Verarbeitungseinheit auszuführen, und wobei die Steuereinheit der zweiten Verarbeitungseinheit dahin gehend angepasst ist, die zweite Sequenz von Testbefehlen unter Verwendung des zweiten Testwerts auszuführen; und einen Komparator (370), der dahin gehend angepasst ist, eine Ausgabe der ersten Verarbeitungseinheit und eine Ausgabe der zweiten Verarbeitungseinheit miteinander zu vergleichen und ein Vergleichssignal zu erzeugen, das angibt, ob sich die Ausgabe der ersten Verarbeitungseinheit von der Ausgabe der zweiten Verarbeitungseinheit unterscheidet; wobei die Steuereinheit (110) der ersten Verarbeitungseinheit dahin gehend angepasst ist, zu erfassen, dass die erste oder die zweite Verarbeitungseinheit manipuliert wurde, falls das Vergleichssignal des Komparators während der Ausführung der ersten und der zweiten Sequenz von Testbefehlen einen Wert beibehält oder annimmt, der sich von einem erwarteten Wert unterscheidet, wobei der erwartete Wert ein Wert ist, der aufgrund des ersten und des zweiten Testwerts und der Ausführung der ersten und der zweiten Sequenz von Testbefehlen erwartet wird.
  15. Vorrichtung gemäß Anspruch 14, bei der der erste und der zweite Testwert gleich sind und die erste und die zweite Sequenz von Befehlen gleich sind, und bei der die erste Steuereinheit (110) dahin gehend angepasst ist, die Manipulation zu erfassen, falls das Vergleichssignal angibt, dass sich die Ausgabe der ersten Verarbeitungseinheit von der Ausgabe der zweiten Verarbeitungseinheit unterscheidet.
  16. Vorrichtung gemäß Anspruch 14, bei der der erste und der zweite Testwert unterschiedlich sind und die erste und die zweite Sequenz von Befehlen gleich sind, und bei der die erste Steuereinheit (110) dahin gehend angepasst ist, die Manipulation zu erfassen, falls das Vergleichssignal angibt, dass die Ausgabe der ersten Verarbeitungseinheit gleich der Ausgabe der zweiten Verarbeitungseinheit ist.
  17. Vorrichtung gemäß einem der Ansprüche 14 bis 16, bei der die Speicherungselemente der ersten und der zweiten Verarbeitungseinheit Übertragsflags sind, wobei die erste Steuereinheit eine Verschiebung mit Übertrag als erste Sequenz von Testbefehlen ausführt und die zweite Steuereinheit eine Verschiebung ohne Übertrag als zweite Sequenz von Testbefehlen ausführt.
  18. Vorrichtung gemäß einem der Ansprüche 14 bis 17, bei der die Steuereinheit der ersten Verarbeitungseinheit dahin gehend angepasst ist, ein Sequenzabschlusssignal zu erzeugen, nachdem die erste und die zweite Testsequenz abgeschlossen sind und die Steuereinheit der ersten Verarbeitungseinheit keine Manipulation erfasste, und wobei die Rücksetzlogik der ersten Verarbeitungseinheit dahin gehend angepasst ist, ansprechend auf das Sequenzabschlusssignal ein Speicherungselement auf den zweiten Testwert zu setzen, und die Steuereinheit der ersten Verarbeitungseinheit dahin gehend angepasst ist, ansprechend auf das Sequenzabschlusssignal und vor dem Decodieren des ersten Befehls für den Normalbetrieb die zweite Sequenz von Testbefehlen unabhängig von dem Programmzähler der ersten Verarbeitungseinheit auszuführen, wobei die Steuereinheit der ersten Verarbeitungseinheit dahin gehend angepasst ist, die zweite Sequenz von Testbefehlen unter Verwendung des zweiten Testwerts auszuführen; und wobei die Rücksetzlogik der zweiten Verarbeitungseinheit dahin gehend angepasst ist, das Speicherungselement der zweiten Verarbeitungseinheit ansprechend auf das Sequenzabschlusssignal auf den ersten Testwert zu setzen, und die Steuereinheit der zweiten Verarbeitungseinheit dahin gehend angepasst ist, ansprechend auf das Sequenzabschlusssignal und vor dem Decodieren des ersten Befehls für den Normalbetrieb die erste Sequenz von Testbefehlen unabhängig von dem Programmzähler der zweiten Verarbeitungseinheit auszuführen, wobei die Steuereinheit der zweiten Verarbeitungseinheit dahin gehend angepasst ist, die erste Sequenz von Testbefehlen unter Verwendung des ersten Rücksetzwerts auszuführen.
  19. Vorrichtung gemäß Anspruch 18, bei der die Speicherungselemente der ersten und der zweiten Verarbeitungseinheit Übertragsflags sind, wobei die erste Sequenz von Testbefehlen eine Verschiebung mit Übertrag ist und die zweite Sequenz von Testbefehlen eine Verschiebung ohne Übertrag ist.
  20. Verfahren zum Testen einer Vorrichtung (300), die eine erste Verarbeitungseinrichtung und eine zweite Verarbeitungseinrichtung aufweist, bei denen zwischen einer Sprungoperation zu einem ersten in einem Hauptspeicher der jeweiligen Verarbeitungseinheit gespeicherten Befehl und der Ausführung des Operationscodes dieses ersten Befehls eine Anzahl von n Taktzyklen verstreicht, das folgende Schritte umfasst: Ausführen, seitens einer Steuereinheit einer ersten Verarbeitungseinheit der Vorrichtung, einer ersten Sequenz von Testbefehlen, um eine Ausgabe zu erzeugen, nach einer Rücksetzphase unter Verwendung der n Taktzyklen und vor einem Decodieren des ersten Befehls für einen Normalbetrieb; Ausführen, seitens einer Steuereinheit einer zweiten Verarbeitungseinheit der Vorrichtung, einer zweiten Sequenz von Testbefehlen, um eine Ausgabe zu erzeugen, nach der Rücksetzphase unter Verwendung der n Taktzyklen und vor einem Decodieren des ersten Befehls für einen Normalbetrieb; Miteinandervergleichen der Ausgabe der ersten Verarbeitungseinheit und der Ausgabe der zweiten Verarbeitungseinheit und Erzeugen eines Vergleichssignals, das angibt, ob sich die Ausgabe der ersten Verarbeitungseinheit von der Ausgabe der zweiten Verarbeitungseinheit unterscheidet; und Erfassen, nach der Rücksetzphase und bevor die Verarbeitungseinheiten den ersten Befehl für den Normalbetrieb decodieren, dass die erste oder die zweite Verarbeitungseinheit manipuliert wurden, falls das Vergleichssignal während der Ausführung der ersten und zweiten Sequenz von Testbefehlen einen Wert beibehält oder annimmt, der sich von einem erwarteten Wert unterscheidet, wobei der erwartete Wert ein Wert ist, der aufgrund der Ausführung der ersten und der zweiten Sequenz von Testbefehlen erwartet wird.
  21. Verfahren gemäß Anspruch 20, das folgende Schritte umfasst: Setzen eines Speicherungselements der ersten Verarbeitungseinheit auf einen ersten Testwert während der Rücksetzphase; Ausführen der ersten Sequenz von Testbefehlen nach der Rücksetzphase unabhängig von einem Programmzähler der ersten Verarbeitungseinheit, wobei der Schritt des Ausführens der ersten Sequenz von Testbefehlen unter Verwendung des ersten Testwerts durchgeführt wird; Setzen eines Speicherungselements der zweiten Verarbeitungseinheit auf einen zweiten Testwert während der Rücksetzphase; Ausführen der zweiten Sequenz von Testbefehlen nach der Rücksetzphase unabhängig von einem Programmzähler der zweiten Verarbeitungseinheit, wobei de Schritt des Ausführens der zweiten Sequenz von Testbefehlen unter Verwendung des zweiten Testwerts durchgeführt wird; Vergleichen der Ausgabe der ersten Verarbeitungseinheit und der Ausgabe der zweiten Verarbeitungseinheit und Erzeugen eines Vergleichssignals, das angibt, ob sich die Ausgabe der ersten Verarbeitungseinheit von der Ausgabe der zweiten Verarbeitungseinheit unterscheidet; und Erfassen, dass die erste oder die zweite Verarbeitungseinheit manipuliert wurde, falls das Vergleichssignal des Komparators während der Ausführung der ersten und der zweiten Sequenz von Testbefehlen einen Wert beibehält oder annimmt, der sich von einem erwarteten Wert unterscheidet, wobei der erwartete Wert ein Wert ist, der aufgrund des ersten und des zweiten Testwerts und der Ausführung der ersten und der zweiten Sequenz von Testbefehlen erwartet wird.
DE102010003153.4A 2009-04-02 2010-03-23 Verarbeitungseinheit, Vorrichtung, die zwei Verarbeitungseinheiten aufweist, Verfahren zum Testen einer Verarbeitungseinheit und einer Vorrichtung, die zwei Verarbeitungseinheiten aufweist Active DE102010003153B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/417,172 2009-04-02
US12/417,172 US8914621B2 (en) 2009-04-02 2009-04-02 Processing unit that detects manipulations thereof, device comprising two processing units, method for testing a processing unit and a device comprising two processing units

Publications (2)

Publication Number Publication Date
DE102010003153A1 DE102010003153A1 (de) 2010-12-30
DE102010003153B4 true DE102010003153B4 (de) 2017-12-21

Family

ID=42827130

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102010003153.4A Active DE102010003153B4 (de) 2009-04-02 2010-03-23 Verarbeitungseinheit, Vorrichtung, die zwei Verarbeitungseinheiten aufweist, Verfahren zum Testen einer Verarbeitungseinheit und einer Vorrichtung, die zwei Verarbeitungseinheiten aufweist

Country Status (2)

Country Link
US (1) US8914621B2 (de)
DE (1) DE102010003153B4 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8504807B2 (en) * 2009-12-26 2013-08-06 Intel Corporation Rotate instructions that complete execution without reading carry flag
EP2656785B9 (de) 2012-04-26 2019-08-28 Fresenius Medical Care Deutschland GmbH Elektroden für eine Bioimpedanzmessvorrichtung, und während der Dialyse verwendete Vorrichtungen
WO2014096117A1 (en) 2012-12-21 2014-06-26 Koninklijke Philips N.V. Computing device configured with a table network
US9747184B2 (en) * 2013-12-16 2017-08-29 Artesyn Embedded Computing, Inc. Operation of I/O in a safe system
CN104360950A (zh) * 2014-12-03 2015-02-18 东信和平科技股份有限公司 智能卡调试方法、系统及装置
US10482989B1 (en) * 2018-02-23 2019-11-19 Cadence Design Systems, Inc. Dynamic diagnostics analysis for memory built-in self-test

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5157781A (en) * 1990-01-02 1992-10-20 Motorola, Inc. Data processor test architecture
US6715062B1 (en) * 2000-07-26 2004-03-30 International Business Machines Corporation Processor and method for performing a hardware test during instruction execution in a normal mode

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100337149B1 (ko) * 2000-07-05 2002-05-18 권 기 홍 프로그램 테스트 및 디버깅이 용이한 중앙처리장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5157781A (en) * 1990-01-02 1992-10-20 Motorola, Inc. Data processor test architecture
US6715062B1 (en) * 2000-07-26 2004-03-30 International Business Machines Corporation Processor and method for performing a hardware test during instruction execution in a normal mode

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
AGRAWAL, V.D.; KIME, C.R.; SALUJA, K.K.: A tutorial on built-in self-test. 2. Applications. In: Design Test of Computers, IEEE, 10, 1993, 2, S. 69-77. - ISSN 0740-7475. http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=211530 [abgerufen am 09.10.2012] *
AGRAWAL, V.D.; KIME, C.R.; SALUJA, K.K.: A tutorial on built-in self-test. I. Principles. In: Design Test of Computers, IEEE, 10, 1993, 1, S. 73-82. - ISSN 0740-7475. http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=199807 [abgerufen am 09.10.2012] *
DO-178B. In: Wikipedia, the free encyclopedia. Bearbeitungsstand: 29.03.2009. URL: http://en.wikipedia.org/w/index.php?title=DO-178B&oldid=280323160 [abgerufen am 05.10.2012] *
IEC 61508. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 30.03.2009. URL: http://de.wikipedia.org/w/index.php?title=IEC_61508&oldid=58477696 [abgeru-fen am [10.10.2012] *
RATIU, I. M.; BALOGLU, H. B.: Pseudorandom built-in self-test methodology and implementation for the IBM RISC System/6000 processor. In: IBM Journal of Research and Development, 34, 1990, 1, S. 78-84. - ISSN 0018-8646. http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=5389861 [abgerufen am 05.10.2012] *

Also Published As

Publication number Publication date
US8914621B2 (en) 2014-12-16
US20100257343A1 (en) 2010-10-07
DE102010003153A1 (de) 2010-12-30

Similar Documents

Publication Publication Date Title
DE102010003153B4 (de) Verarbeitungseinheit, Vorrichtung, die zwei Verarbeitungseinheiten aufweist, Verfahren zum Testen einer Verarbeitungseinheit und einer Vorrichtung, die zwei Verarbeitungseinheiten aufweist
DE102006001873B4 (de) Vorrichtung und Verfahren zum Überprüfen einer Fehlererkennungsfunktionalität einer Speicherschaltung
DE102013211077A1 (de) Verfahren zum Testen eines Speichers und Speichersystem
EP2188755A1 (de) Verfahren und vorrichtung zur sicherung eines programms gegen eine kontrollflussmanipulation und gegen einen fehlerhaften programmablauf
DE102014003705A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation
DE102014002473A1 (de) System und verfahren zur erhöhung der lockstep-kern-verfügbarkeit
EP0104635A2 (de) Verfahren und Anordnung zum Prüfen eines digitalen Rechners
DE112016001972T5 (de) Sicherer Zugriff in einem Mikrokontrollersystem
DE10159901A1 (de) Mikrocomputer mit eingebautem programmierbarem, nichtflüchtigem Speicher
DE102009041176A1 (de) Compiler-System und Verfahren zum Kompilieren eines Quellencodes zu einem verschlüsselten Maschinensprachcode
DE102015210651A1 (de) Schaltung und Verfahren zum Testen einer Fehlerkorrektur-Fähigkeit
DE102014214792A1 (de) Vorrichtung und Verfahren zum Zugreifen auf einen verschlüsselten Speicherabschnitt
EP1955164A1 (de) Programmgesteuerte einheit und verfahren zum betreiben derselbigen
DE102018105090A1 (de) Sichere Rücksetztechniken für Mikrocontrollersysteme in sicherheitsbezogenen Anwendungen
DE102006062703A1 (de) Fehlererkennungsvorrichtung und Verfahren zur Fehlererkennung für einen Befehlsdecoder
DE102011119585A1 (de) Verbesserte skalierbare CPU für die codierte Ausführung von Software in hochabhängigen sicherheitsrelevanten Anwendungen
DE102011011333A1 (de) Lesen in Peripheriegeräte und schreiben aus Peripheriegeräten mit zeitlich getrennter, redundanter Prozessorausführung
EP1664978B1 (de) Vorrichtung und verfahren zur sicheren ausführung eines programmes
DE102013200795A1 (de) Initialisierung von GPU unter Benutzung einer ROM-basierten Initialisierungs-Einheit und programmierbarer Mikro-Steuerung
DE102014115411A1 (de) Datenverarbeitungsanordnung und -verfahren zur sicherstellung der integrität der ausführung eines computerprogramms
DE19940611B4 (de) Verfahren zum Erzeugen von Testergebnissen während einer Selbstprüfung, Verfahren zum Signalisieren einer erfolgreichen Beendigung der Selbstprüfung und Verarbeitungssystem mit der Fähigkeit zur Selbstprüfung
EP1444700A2 (de) Speichertest
DE102019201096A1 (de) Integrierter Schaltkreis und eingebettetes System mit einem solchen integrierten Schaltkreis
DE102005060714B4 (de) Datenverarbeitungsvorrichtung, Speicherkarte, Verfahren zum Betreiben einer Datenverarbeitungsvorrichtung und Herstellungsverfahren für eine Datenverarbeitungsvorrichtung
DE102007053295B4 (de) Schaltungsanordnung und Verfahren zur Funktionsüberprüfung einer Logikschaltung in einer Schaltungsanordnung

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R006 Appeal filed
R008 Case pending at federal patent court
R019 Grant decision by federal patent court
R020 Patent grant now final
R082 Change of representative