DE102006062703A1 - Fehlererkennungsvorrichtung und Verfahren zur Fehlererkennung für einen Befehlsdecoder - Google Patents

Fehlererkennungsvorrichtung und Verfahren zur Fehlererkennung für einen Befehlsdecoder Download PDF

Info

Publication number
DE102006062703A1
DE102006062703A1 DE102006062703A DE102006062703A DE102006062703A1 DE 102006062703 A1 DE102006062703 A1 DE 102006062703A1 DE 102006062703 A DE102006062703 A DE 102006062703A DE 102006062703 A DE102006062703 A DE 102006062703A DE 102006062703 A1 DE102006062703 A1 DE 102006062703A1
Authority
DE
Germany
Prior art keywords
control signal
sequence
signature
instruction
words
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.)
Ceased
Application number
DE102006062703A
Other languages
English (en)
Inventor
Steffen Marc Sonnekalb
Franz Klug
Michael Prof. Dr. Gössel
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE200610005818 priority Critical patent/DE102006005818B4/de
Priority claimed from DE200610005818 external-priority patent/DE102006005818B4/de
Publication of DE102006062703A1 publication Critical patent/DE102006062703A1/de
Ceased legal-status Critical Current

Links

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Detection And Correction Of Errors (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Es wird eine Fehlererkennungsvorrichtung für einen Befehlsdecoder beschrieben, der, basierend auf einem Eingangswort, eine zugeordnete Folge von Steuersignalwörtern aus einem Befehlsspeicher ausliest, wobei die Folge von Steuersignalwörtern mindestens ein Steuersignalwort aufweist, mit folgenden Merkmalen: einer Steuereinrichtung (20), die ausgebildet ist, um das Eingangswort (22) zu einem ersten Zeitpunkt und das Eingangswort (24) zu einem zweiten Zeitpunkt zum Auslesen des Befehlsspeichers (40) bereitzustellen, wobei der zweite Zeitpunkt bezüglich des ersten Zeitpunkts verzögert ist, um ein Auslesen der Folge (26) von Steuersignalwörtern zu einem ersten Zeitpunkt und ein Auslesen der Folge (28) von Steuersignalwörtern zu einem zweiten Zeitpunkt zu bewirken; und einer Vergleichseinrichtung (30), die ausgebildet ist, die zu einem ersten und zweiten Zeitpunkt ausgelesenen zugeordneten Folgen (26, 28) von Steuersignalwörtern zu empfangen und zu vergleichen, und um ein Signal (32) auszugeben, das einen Fehler anzeigt, wenn die zu dem ersten und zweiten Zeitpunkt ausgelesenen zugeordneten Folgen (26, 28) von Steuersignalwörtern unterschiedlich sind.

Description

  • Ein Instruktions-Decoder codiert Instruktionen in Steuersignale und Parameter für einen Datenpfad. Die Codierung ist abhängig von den Statussignalen. Die Statussignale hängen vom Zustand des Rechners, insbesondere von Registerinhalten, von Speicherinhalten und von der jeweilig ausgeführten Instruktion ab.
  • Allgemein hat eine Instruktion die Form "op, [Adresse 1], ..., [Adresse k], [Parameter]". Die in eckigen Klammern [] eingeschlossenen Ausdrücke können dabei auftreten oder nicht auftreten, d.h., sie sind optional. Im folgenden Beispiel gilt k = 2. "op" bezeichnet die auszuführende Operation. Beispiele sind "add", "XOR", "jump". Die Adressen [Adresse 1], ..., [Adresse 1] sind Registeradressen des Registerfiles, das auch als Registerfeld bezeichnet wird.
  • In der Instruktion "add, Adresse 1, Adresse 2, Adresse 3" werden die in den Registern unter den Adressen "Adresse 1" und "Adresse 2" gespeicherten Daten addiert und in das Register mit der Adresse "Adresse 3" geschrieben. Ein Parameter tritt in dieser Instruktion nicht auf.
  • Der Instruktions-Decoder hat die Aufgabe, die Instruktion in eine Folge von Steuerwörtern zu transformieren. In einer Folge von Steuerwörtern, die einer Instruktion durch den Decoder zugeordnet ist, sind eine Folge von Steuersignalen für den Datenpfad und entsprechende Parameter so bestimmt, dass die am Instruktions-Decoder, der im Englischen auch als Instruction-Decoder bezeichnet wird, anliegende Instruktion im Rechner ausgeführt wird.
  • Allgemein hängt die Folge von Steuerwörtern, die einer Instruktion zugeordnet sind, nicht nur von der Instruktion ab, sondern, wie gesagt, auch vom Zustand des Rechners ab und in bestimmten, seltenen Fällen auch von den Parametern der Instruktion ab. Der Zustand des Rechners wirkt sich auf die Folge von Steuersignalen durch die Statussignale des Rechners aus.
  • Genauer formuliert, sind einer Instruktion verschiedene Folgen von Steuersignalen zugeordnet, wobei die konkret zu verwendende Folge von Steuersignalen durch die Statussignale und auch durch die Werte der Parameter ausgewählt wird. Sind die Parameter beispielsweise eine Adresse im externen Speicher, so kann der Wert eines bestimmten Bits dieser Adresse beispielsweise entscheiden, in welchem externen Speicher zugegriffen wird. Für eine Instruktion ist die Anzahl der Steuerwörter in den verschiedenen Folgen von Steuerwörtern allgemein unterschiedlich.
  • Um dies näher zu erläutern, wird im Folgenden davon ausgegangen, dass in dem betrachteten Prozessor einer Instruktion eine Folge von Steuerwörtern, zwei verschiedenen Folgen von Steuerwörtern oder drei verschiedene Folgen von Steuerwörtern zugeordnet sind.
  • Eine Verallgemeinerung auf mehr als drei verschiedene Folgen von Steuerwörtern ist möglich.
  • Sind einer Instruktion zwei verschiedene Folgen von Steuerwörtern zugeordnet, dann beginnen sie mit einigen gemeinsamen Steuersignalwörtern und verzweigen in Abhängigkeit von den Werten bestimmter Statussymbole oder bestimmter Parameterwerte.
  • Als Beispiel sei die Instruktion "if Reg(Adresse 1) ≤ i goto Adresse 2" (entspricht einem JLE Adresse 1, i, Adresse 2) betrachtet. Die Instruktion enthält die Adresse "Adresse 1" und den Parameter "i, Adresse 2", der hier durch einen Integer-Wert i und eine Adresse "Adresse 2", gegeben ist. Der Operations-Code, der auch als Opcode abgekürzt wird, ist "if Reg() ≤ () goto()".
  • Zunächst wird der Inhalt des Registers mit der Adresse "Adresse 1" mit dem Wert i verglichen. Dazu wird der Inhalt des Registers mit der Adresse „Adresse 1" im Registerfeld gelesen, der gelesene Wert wird von dem beispielsweise vorzeichenerweiterten, auch als sign-extended bezeichnet, Parameter i in der arithmetisch-logischen Einheit, die im Englischen als Arithmetic-Logic-Unit oder abgekürzt als ALU bezeichnet wird, subtrahiert. Nach der Subtraktion verzweigt die Instruktion. Je nach Wert, 0 oder 1, des Vorzeichen-Bits, das auch als Sign-Bit bezeichnet wird, der ALU wird nun mit der nächsten Instruktion oder der Instruktion mit der relativen Adresse "Adresse 2" fortgesetzt.
  • Der betrachteten Instruktion sind damit zwei unterschiedliche Steuerfolgen zugeordnet, die nach einer gemeinsamen Anfangsfolge verzweigen. Das Statussignal, das aus den zwei möglichen Steuerfolgen am Verzweigungspunkt eine Steuerfolge auswählt bzw. bestimmt, ist hier das Vorzeichen-Bit der ALU.
  • In dem Befehl "addi Reg (Adresse 1), Reg (Adresse 2), K" sind "Adresse 1" und "Adresse 2" Adressen von Registern des Registerfeldes und der Parameter "K" eine Integer-Zahl bzw. ganze natürliche Zahl, die zum Wert, der im Register 1 gespeichert ist, addiert wird. Die Summe wird im Register des Registerfeldes mit der Adresse "Adresse 2" gespeichert. Diesem Befehl ist nur eine Steuerfolge zugeordnet.
  • Sind einer Instruktion drei verschiedene Folgen von Steuerwörtern zugeordnet, dann beginnen diese drei Folgen mit einigen gemeinsamen Steuerwörtern, sie verzweigen in Abhängigkeit von den Werten bestimmter Statussymbole bzw. Statussignale oder bestimmter Parameterwörter in zwei Zweige, und einer der beiden Zweige verzweigt dann ein zweites Mal in Abhängigkeit von weiteren Statussignalen oder Parameterwerten.
  • Die Gliederung des Instruktions-Decoders kann wie folgt beschrieben werden bzw. dem Instruktions-Decoder können folgende drei Aufgaben zugeordnet werden: 1. Bestimmung von Folgen von Steuersignalwörtern für den Datenpfad; 2. Bestimmung von Folgen von Steuersignalwörtern für eine Steuerlogik zum Anlegen der Parameter der Instruktionen zur Modifikation an die ALU oder eine spezielle Vorzeichen-Erweiterungseinheit, die auch als Sign-Extension Einheit bezeichnet wird. Solche Operationen sind z.B. Vorzeichenerweiterungen (Sign-Extension), Invertierung aller Bits, Invertierung ausgewählter Bits der Parameter der Instruktionen. Diese Operationen können meistens in der ALU und, falls vorhanden, teilweise in einer speziellen Vorzeichenerweiterungseinheit (Sign-Extension Einheit) durchgeführt werden; 3. Bestimmung von 1-aus-n-Steuersignalen für das Registerfeld aus den binären Adressen für die entsprechenden Register.
  • Die ersten beiden Aufgaben werden im Folgenden zu einer Aufgabe "Bestimmung von Folgen von Steuersignalen für Datenpfad und Steuerlogik" zusammengefasst. Entsprechend lässt sich der Instruktions-Decoder strukturell aus den zwei folgenden Einheiten aufbauen: 1. Modul zur Bestimmung von Steuersignalfolgen für den Datenpfad und für die Steuerlogik; 2. Adressdecoder für das Registerfeld.
  • Im Folgenden wird das Modul zur Bestimmung der Folgen von Steuersignalen näher beschrieben. Dazu wird zunächst der Fall betrachtet, dass einer Instruktion 2 Folgen von Steuerwörtern zugeordnet sind, wobei die aktuelle Folge von Steuerwörtern durch eine Funktion der Statussignale oder Parameter ausgewählt wird. Ein Steuerwort Wi besteht aus einem Steuersignalwort Si = s i / 1, ..., s i / ni und einem Parameterwort Pi = p i / 1, ..., p i / mi.
  • Die Komponenten s i / 1, ..., s i / ni des Steuersignalwortes Si hängen nicht von den Parametern der Instruktion, sondern nur vom Operations-Code (Opcode) und von den Statussignalen oder den Parameterwerten der Instruktion über die Auswahl der Folge von Steuersignalwörtern ab. Die Komponenten p i / 1, ..., p i / mi des Parameterwortes Pi sind durch die Parameter der Instruktion bestimmt. Sie hängen auch von den Statussignalen ab.
  • Das Modul zur Bestimmung der Steuerfolgen bestimmt für eine betrachtete Instruktion in Abhängigkeit von den Statussignalen oder den Parameterwerten die zugehörige Folge von Steuersignalwörtern.
  • Im Folgenden wird nun beispielhaft eine Instruktion "instruction", der die beiden Folgen von Steuersignalwörtern
    • 1. S1, S2, ..., Si; Si+1, ..., Sn
    • 2. S1, S2, ..., Si; Si+1', ..., Sn'
    zugeordnet sind, betrachtet. Als konkretes Beispiel werden im Folgenden die beiden Folgen
    • 1. S1, S2; S3, S4
    • 2. S1, S2; S3', S4', S5'
    betrachtet, die der Instruktion "instruction" zugeordnet sind.
  • Die ersten i, im Beispiel i = 2, Steuersignalwörter S1, S2 stimmen in beiden Folgen überein. In Abhängigkeit von den Werten bestimmter Statussignale wird die erste oder zweite Folge ausgewählt. Eine derartige Zuordnung kann mit einem Nur-Lese-Speicher, der auch als Read-only-Memory oder abge kürzt ROM bezeichnet wird, und einem Zähler realisiert werden.
  • Unter den fortlaufenden Adressen A + 1, A + 2, ..., A + i bzw. A1, A2, ..., Ai werden die Steuersignalwörter S1, S2, ..., Si abgelegt, unter der Adresse A + i + 1 bzw. Ai+1 wird etwa eine Maske der auszuwertenden Statussignale, unter der Adresse A + i + 2 bzw. Ai+2 ein Vektor von Statussignalen σ1, ...,σk abgelegt, so dass die Statussignale, die die Verzweigung bedingen, den für die Verzweigung erforderlichen Wert annehmen. Unter der Adresse A + i + 4 bzw. Ai+4 ist das Steuersignalwort Si+1, im Beispiel S3, abgelegt ist. Unter der Adresse A + i + 3 bzw. Ai+3 wird die Sprungadresse bzw. Adresse A(Si+1') für das Steuersignalwort Si+1', im Beispiel S3', und unter den folgenden Adressen werden die Steuersignalwörter Si+1', ..., Sn' abgelegt.
  • Unter den Adressen A(Si+1), A(Si+1)+ 1..., A(Si+1)+ n – 1 werden die Steuersignalwörter Si+1, S1+2, ...,Sn gespeichert. Ergibt der Vergleich der tatsächlich vorliegenden Statussymbole mit den abgespeicherten Statussymbolen eine Übereinstimmung, so wird der Zähler entsprechend auf den Wert A + i + 4 bzw. Ai+4 inkrementiert.
  • Ergibt der Vergleich der tatsächlich vorliegenden Statussymbole mit den abgespeicherten Statussymbolen eine Nichtübereinstimmung, so wird die unter der Adresse A + i + 3 bzw. Ai+3 gespeicherte Adresse A(Si+1) in den Zähler geladen, der nun fortlaufend die Folge der Steuersignalwörter Si, Si+1, ..., Sn ausgibt. Die beschriebene Implementierung dient nur als Beispiel, es sind auch andere Möglichkeiten zur Implementierung möglich.
  • Für das betrachtete Beispiel mit i = 2, n = 4 und n' = 5 ergibt sich im ROM
    • A1 – S1
    • A2 – S2
    • A3 – Maske Statussymbole = 1,0,1,1,0
    • A4 – Werte Statussymbole = 1,–,0,1,–
    • A5 – Sprungadresse A8
    • A6 – S3
    • A7 – S4
    • A8 – S3'
    • A9 – S4'
    • A10 – S5'
  • Unter den Adressen A1, A2 sind die Steuersignalwörter S1 und S2 abgespeichert. Sie sind beiden Folgen gemeinsam. Unter der Adresse A3 ist die Maske der für die zur Entscheidung relevanten Statussymbole angegeben. Die Maske ist in diesem Beispiel willkürlich zu 1,0,1,1,0 angenommen. Aufgrund dieser Maske wird dann anhand des ersten, dritten und vierten Statussymbols entschieden, welche der beiden Steuersignalfolgen generiert werden soll. Die Maske an der ersten, dritten und vierten Position trägt deshalb den Wert 1. Die Positionen mit dem Maskenwert 0, hier die Positionen 2 und 5, werden bei der Auswahl nicht berücksichtigt.
  • Unter der folgenden Adresse A4 sind die konkreten Werte der Statussymbole angegeben, deren Übereinstimmung mit den aktuellen Statussymbolen über die Fortsetzung der Instruktionen entscheidet.
  • Für das betrachtete Beispiel sind hier wieder willkürlich an der ersten, dritten und vierten Stelle 1, 0 und 1 eingetragen worden.
  • Für die aktuellen Statussymbole der ALU soll in diesem Beispiel gelten: Nimmt das erste Statussymbol den Wert 1, das dritte den Wert 0 und das vierte Statussymbol den Wert 1 an, dann wird die Adresse A4 um zwei auf A6 inkrementiert, und die Steuersignalfolge wird mit S3, S4, fortgesetzt, die unter den Adressen A6, A7, abgelegt sind.
  • Gilt nicht, dass das erste Statussymbol gleich 1 und das dritte Statussymbol gleich 0 und das vierte Statussymbol gleich 1 ist, wird die Adresse A4 um 1 auf A5 inkrementiert. Unter dieser Adresse steht die Sprungadresse A(S3') = A8.
  • Unter den Adressen A8, A9, A10 sind dann die Steuersignalfolgen S3', S4' und S5' gespeichert, und die Steuersignalfolge wird mit S3', S4', S5'fortgesetzt.
  • Ist eine weitere Aufspaltung einer Steuersignalfolge in Abhängigkeit von Statussymbolen erforderlich, so können in ganz analoger Weise drei weitere Adressen mit einer Maske der relevanten Statussymbole, mit den konkreten Werten der relevanten Statussymbole, und einer Sprungadresse im ROM vorgesehen werden.
  • Hängt die Fortsetzung einer Steuersignalfolge von Parameterwerten ab, so können anstelle der Maske für Statussymbole eine Maske für die Parameterwerte und anstelle der Werte der Statussymbole die Werte der Parameter verwendet werden.
  • Ein Bit in der Maske kann eventuell entscheiden, welcher Typ von Maske, d.h. Maske für Statussymbole oder Maske für Parameter vorliegt.
  • Durch die Verwendung der beschriebenen Masken und Vergleichsbits können die Statusvariablen und die Parameter als Input-Variablen des ROM vermieden werden und das ROM mit einer kleinen Adressbreite bleibt relativ klein.
  • Die Zeit für die Abarbeitung einer Instruktion nimmt hingegen bei jeder Verzweigung im Mittel um zweieinhalb Zyklen zu.
  • Im Folgenden wird kurz auf die Aufgabe des Adressdecoders für das Registerfeld eingegangen. Treten Adressen für Register des Registerfeldes in einem Steuerwort auf, so sind sie durch einen Adressdecoder in ein 1-aus-n-Bit-Codewort zu codieren. Die zugehörige Hardware ist ein normaler 1-aus-n-Codierer.
  • Die Parameter einer Instruktion werden in einem Steuerwort häufig unmodifiziert, vorzeichenerweitert (sign-extended), negiert oder in speziellen Bits negiert verwendet. Diese Modifikationen erfolgen in Abhängigkeit von der jeweiligen Instruktion, vom konkreten Parameter der Instruktion und von Statussignalen. Die meisten dieser Operationen können in der ALU erfolgen, für die der Instruktions-Decoder die Steuersignale bereitstellt. Die Operationen "Vorzeichenerweiterung (sign-extension)" und „Auffüllen mit Nullen" werden in Abhängigkeit vom konkreten Prozessor in der ALU oder in einer speziellen kombinatorischen Schaltung, z.B. in einer Vorzeichenerweiterungseinheit (Sign-Extension Einheit) durchgeführt. Bei der Modifikation der Parameter besteht die Aufgabe des Instruktions-Decoders darin, die Parameter der Instruktionen im richtigen Zeitpunkt an die ALU oder an die Vorzeichenerweiterungseinheit anzulegen, die Steuersignale und gegebenenfalls Masken für die ALU oder die Vorzeichenerweiterungseinheit bereitzustellen und die Steuersignale und Adressen für die Abspeicherung des Resultates im Registerfeld zu liefern.
  • Bei der Decodierung der Befehle bzw. bei der Bestimmung von Steuersignalfolgen für den Datenpfad und für die Steuerlogik besteht die Gefahr, dass durch flüchtige Bitfehler falsche Steuersignalwörter oder Folgen von Steuersignalwörtern ausgelesen oder durchgeführt werden. Diese Bitfehler können beispielsweise beim Auslesen der einzelnen Steuersignalwörter aus dem ROM auftreten, bei Operationen wie einer Vorzeichenerweiterung, Invertierung aller Bits, Invertierung ausgewählter Bits der Parameter der Instruktionen oder beim Auslesen oder Speichern von Statusbits.
  • Die Aufgabe der vorliegenden Erfindung besteht darin, eine Vorrichtung und ein Verfahren für eine Verbesserung der Zuverlässigkeit von Befehlsdecodern zu schaffen.
  • Diese Aufgabe wird durch eine Fehlererkennungsvorrichtung für einen Befehlsdecoder gemäß Anspruch 1 und 6 und durch ein Verfahren zur Fehlererkennung für einen Befehlsdecoder gemäß Anspruch 9 und 10 gelöst.
  • Ferner schafft die vorliegende Erfindung ein Computerprogramm, das gemäß den vorliegenden Verfahren arbeitet.
  • Allgemein existieren zur Fehlererkennung von Fehlern im Instruktions-Decoder drei verschiedene Möglichkeiten: 1. Schutz der einzelnen Module: a) für das Modul zur Bestimmung der Steuersignalfolgen durch Two-Port-ROM oder auch durch Signatur, und b) für das Modul Adressdecoder für das Registerfeld durch 1-aus-n-Code-Prüfung und Regeneration der Eingangsadresse bzw. Inputs, 2. Schutz des gesamten Instruktions-Decoders durch Signaturbildung und 3. Schutz des gesamten Instruktions-Decoders wesentlich nur durch lichtempfindliche Elemente und einfache Codes.
  • Die vorliegende Erfindung betrifft die Möglichkeit 1.a) und die Möglichkeit 2.. Die Möglichkeit 1.b) wird in der parallelen Anmeldung „Fehlererkennungsvorrichtung und Verfahren zur Fehlererkennung für einen Adressdecoder", die zusammen mit der vorliegenden Anmeldung eingereicht wurde, beschrieben.
  • Erfindungsgemäß wird eine Fehlererkennungsvorrichtung für einen Befehlsdecoder geschaffen, der basierend auf einem Eingangswort eine zugeordnete Folge von Steuersignalwörtern aus einem Befehlsspeicher ausliest, wobei die Folge von Steuersignalwörtern mindestens ein Steuersignalwort aufweist, mit folgenden Merkmalen: einer Steuereinrichtung, die ausgebildet ist, um das Eingangswort zu einem ersten Zeitpunkt und das Eingangswort zu einem zweiten Zeitpunkt zum Auslesen des Befehlsspeichers bereitzustellen, wobei der zweite Zeitpunkt bezüglich des ersten Zeitpunkts verzögert ist, um ein Auslesen der zugeordneten Folge von Steuersignalwörtern zu einem ersten Zeitpunkt und ein Auslesen der zugeordneten Folge von Steuersignalwörtern zu einem zweiten Zeitpunkt zu bewirken; und einer Vergleichseinrichtung, die ausgebildet ist, die zu einem ersten Zeitpunkt und zu einem zweiten Zeitpunkt ausgelesenen zugeordneten Folgen von Steuersignalwörtern zu empfangen und zu vergleichen und ein Signal auszugeben, das einen Fehler anzeigt, wenn die zu dem ersten Zeitpunkt und zu dem zweiten Zeitpunkt ausgelesenen zugeordneten Folgen von Steuersignalwörtern unterschiedlich sind.
  • Des Weiteren wird erfindungsgemäß eine Fehlererkennungsvorrichtung für einen Befehlsdecoder geschaffen, der basierend auf einem Eingangswort eine zugeordnete Folge von Steuersignalwörtern aus einem Befehlsspeicher ausliest, wobei die Folge von Steuersignalwörtern mindestens ein Steuersignalwort aufweist und wobei der Folge von Steuersignalwörtern eine vorbestimmte Signatur zugeordnet ist, mit folgenden Merkmalen: einer Steuervorrichtung, die ausgebildet ist, um das Eingangswort zum Auslesen des Befehlsspeichers bereitzustellen, und ein Auslesen der zugeordneten Folge von Steuersignalwörtern zu bewirken; einer Akkumulationsvorrichtung, die ausgebildet ist, um basierend auf der ausgelesenen Folge von Steuersignalwörtern eine Signatur zu erzeugen; einem Signaturspeicher, der ausgebildet ist, die vorbestimmte Signatur zu speichern; und einer Vergleichseinrichtung, die ausgebildet ist, die Signatur der ausgelesenen Folge von Steuersignalwörtern und die vorbestimmte Signatur zu vergleichen, und ein Signal auszugeben, das einen Fehler anzeigt, wenn die Signatur der ausgelesenen Folge von Steuersignalwörtern und die vorbestimmte Signatur unterschiedlich sind.
  • Erfindungsgemäß wird ein Verfahren zur Fehlererkennung für einen Befehlsdecoder geschaffen, der basierend auf einem Eingangswort eine zugeordnete Folge von Steuersignalwörtern aus einem Befehlsspeicher ausliest, wobei die Folge von Steuersignalwörtern mindestens ein Steuersignalwort aufweist, mit folgenden Schritten: Bereitstellen des Eingangsworts zu einem ersten Zeitpunkt und Bereitstellen des Eingangsworts zu einem zweiten Zeitpunkt zum Auslesen des Befehlsspeichers, wobei der zweite Zeitpunkt bezüglich des ersten Zeitpunkts verzögert ist, um ein Auslesen der zugeordneten Folge von Steuersignalwörtern zu einem ersten und zweiten Zeitpunkt zu bewirken; und Empfangen und Vergleichen der zu einem ersten und zweiten Zeitpunkt ausgelesenen zugeordneten Folgen von Steuersignalwörtern, um ein Signal auszugeben, das einen Fehler anzeigt, wenn die zu dem ersten und zweiten Zeitpunkt ausgelesenen Folgen von Steuersignalwörtern unterschiedlich sind.
  • Des Weiteren wird erfindungsgemäß ein Verfahren zur Fehlererkennung für einen Befehlsdecoder geschaffen, der basierend auf einem Eingangswort eine zugeordnete Folge von Steuersignalwörtern aus einem Befehlsspeicher ausliest, wobei die Folge von Steuersignalwörtern mindestens ein Steuersignalwort aufweist, mit folgenden Schritten: Bereitstellen des Eingangsworts zum Auslesen des Befehlsspeichers; Auslesen der zugeordneten Folge von Steuersignalwörtern aus dem Befehlsspeicher; Erzeugen einer Signatur basierend auf der ausgelesenen Folge von Steuersignalwörtern; Speichern einer Signatur der zugeordneten Folge von Steuersignalwörtern; und Empfangen und Vergleichen der Signatur der ausgelesenen Folge von Steuersignalwörtern und der Signatur der zugeordneten Folge von Steuersignalwörtern, um ein Signal auszugeben, das einen Fehler anzeigt, wenn die Signatur der ausgelesenen Folge von Steuersignalwörtern und die Signatur der zugeordneten Folge von Steuersignalwörtern unterschiedlich sind.
  • Der wesentliche Vorteil der Erfindung besteht darin, dass Fehler in einer Folge von Steuersignalwörtern erkannt werden können, so dass dann beispielsweise durch eine Wiederholung der Instruktionen oder eines Teils einer Instruktion die korrekte Ausführung der Instruktion gewährleistet werden kann.
  • Ausführungsbeispiele der Erfindung können derart implementiert werden, dass sie nicht nur die Fehlererkennung bei pa rameter-unabhängigen oder statussignal-unabhängigen Steuersignalwortfolgen, sondern auch die Fehlererkennung bei parameter- oder statussignal-abhängigen Steuersignalwortfolgen ermöglichen.
  • Wird ein Fehler erkannt, so kann beispielsweise die als fehlerhaft decodierte Instruktion wiederholt werden.
  • Gemäß einem bevorzugten Ausführungsbeispiel wird eine Signalverarbeitungseinheit, z.B. die arithmetisch-logische Einheit, im Englischen auch als Arithmetic Logic Unit (ALU) bezeichnet, gedoppelt. Wird eine ALU verwendet, so kann an die Stelle des Vergleichs der beiden zeitversetzten Steuersignalfolgen ein Vergleich der ALU-Ergebnisse treten. Der Vorteil dieser Vorgehensweise besteht darin, dass mögliche Fehler, die beim Auslesen der für die Operation erforderlichen Daten auftreten können, über dann unterschiedliche ALU-Ergebnisse erfasst werden können. Ein Vergleich der Steuersignalfolgen zeigt zwar an, ob der Befehlsdecoder die richtigen Steuerwörter für eine Operation liefert, jedoch bleiben Fehler beim Auslesen der für die Operationen erforderlichen Daten unentdeckt. Vergleicht man jedoch die ALU-Ergebnisse werden auch solche transiente Fehler im Rechenpfad erkannt und ein erweiterter Schutz, der auch das Rechenwerk abdeckt wird. implementiert.
  • Gemäß einem besonders bevorzugten Ausführungsbeispiel wird neben der ALU auch noch die Vorzeichenerweiterungseinheit, die im Englischen auch als Sign-Extension Unit bezeichnet wird, gedoppelt.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen detaillierter erläutert. Es zeigen:
  • 1A ein Ausführungsbeispiel einer Fehlererkennungsvorrichtung für einen Befehlsdecoder, bei der die zu einem ers ten und zu einem zweiten Zeitpunkt ausgelesenen Folgen von Steuersignalwörtern verglichen werden; und
  • 1B zeigt ein Ausführungsbeispiel für eine Fehlererkennungsvorrichtung für einen Befehlsdecoder, bei der eine Signatur einer ausgelesenen Folge von Steuersignalwörtern mit einer gespeicherten Signatur verglichen wird.
  • Das Modul zur Bestimmung der Steuersignalwortfolgen im Datenpfad, das z.B. durch ein ROM und einen Zähler realisiert wird, ist in den 1A und 1B nur als ROM dargestellt, um eine bessere Lesbarkeit zu gewährleisten.
  • 1A zeigt ein Ausführungsbeispiel einer Fehlererkennungsvorrichtung für einen Befehlsdecoder mit einer Steuereinrichtung 20 und einer Vergleichseinrichtung 30. Die Steuervorrichtung 20 ist ausgebildet, ein Eingangswort oder eine Instruktion 22 zu einem ersten Zeitpunkt zum Auslesen einer der Instruktion zugeordneten Folgen von Steuersignalwörtern bereitzustellen. Die Folge von Steuersignalwörtern, eventuell auch mehrere unterschiedliche Folgen von Steuersignalwörtern, wenn die der Instruktion zugeordnete Folge abhängig von Statussignalen oder Parametern ist, ist im Befehlsspeicher, z.B. einem ROM gespeichert, wie dies zuvor erläutert wurde.
  • Die Steuereinrichtung 20 ist ferner ausgebildet, das selbe Eingangswort 24 bzw. die selbe Instruktion zu einem zweiten Zeitpunkt zum Auslesen der Folge von Steuersignalwörtern, die dem Eingangswort zugeordnet ist, bereitzustellen, wobei der zweite Zeitpunkt bezüglich des ersten Zeitpunkts verzögert ist. Die Vergleichseinrichtung 30 ist ausgebildet, die zu einem ersten Zeitpunkt ausgelesene zugeordnete Folge 26 von Steuersignalwörtern und die zu einem zweiten Zeitpunkt ausgelesene Folge 28 von Steuersignalwörtern zu empfangen, zu vergleichen und ein Signal 32 auszugeben, das einen Fehler anzeigt, wenn die zu dem ersten Zeitpunkt ausgelesene zugeordnete Folge 26 und die zu dem zweiten Zeitpunkt ausgelesene zugeordnete Folge 28 von Steuersignalwörtern unterschiedlich sind.
  • Dabei kann der Befehlsspeicher ein Single-Port-Befehlsspeicher (Single-Port = Ein-Tor) sein, dann wird die Folge von Steuersignalwörtern, die der Instruktion zum zweiten Zeitpunkt zugeordnet ist, beispielsweise nach Abschluss der Steuersignalwortfolge, die der Instruktion zum ersten Zeitpunkt zugeordnet ist, abgearbeitet und anschließend mit der ersten Steuersignalwortfolge verglichen.
  • Gemäß einem bevorzugten Ausführungsbeispiel ist der Befehlsspeicher als Dual-Port-Befehlsspeicher (Dual-Port = Zwei-Tor) ausgeführt, so dass die Folge 28 von Steuersignalwörtern, die dem Eingangswort 24 zum zweiten Zeitpunkt zugeordnet ist, zeitversetzt parallel zu der Steuersignalwortfolge 26, die dem Eingangswort 22 zu dem ersten Zeitpunkt zugeordnet ist, abgearbeitet werden kann. Der Prozess mit Fehlererkennung kann dadurch gegenüber einem Single-Port-Befehlsspeicher beschleunigt werden.
  • In einem weiteren Ausführungsbeispiel der Fehlererkennungsvorrichtung umfasst die Vergleichseinrichtung 30 eine erste Signalverarbeitungseinheit und eine zweite Signalverarbeitungseinheit, wobei die erste Signalverarbeitungseinheit die Folge 26 von Steuersignalwörtern empfängt, die durch Anlegen des Eingangsworts 22 zu dem ersten Zeitpunkt ausgelesen wurde, und ein erstes Signalverarbeitungsergebnis liefert, wobei die zweite Signalverarbeitungseinheit die Folge 28 von Steuersignalwörtern empfängt, die durch Anlegen des Eingangswortes 24 zu dem zweiten Zeitpunkt ausgelesen wurde, und ein zweites Signalverarbeitungsergebnis liefert, und wobei die Vergleichseinrichtung 30 das erste Signalverarbeitungsergebnis und das zweite Signalverarbeitungsergebnis vergleicht. Dabei kann die Signalverarbeitungseinheit beispielsweise eine ALU oder eine Vorzeichenerweiterungseinheit bzw. Signal-Extension-Einheit sein.
  • Der Befehlsspeicher 40 kann als Nur-Lese-Speicher (ROM), als Schreib-Lese-Speicher (RAM = Random Access Memory) oder als nicht-flüchtiger Speicher (NVM = Non-Volatile-Memory) ausgeführt sein, typischerweise werden jedoch ROM verwendet.
  • Im Folgenden wird detailliert auf die Fehlererkennung für das Modul zur Bestimmung der Steuerwortfolgen im Datenpfad eingegangen. Der Befehlspeicher 40, der gemeinsam mit einem Zähler den Modul zur Bestimmung der Steuerfolgen im Datenpfad realisiert, wird beispielsweise als Dual-Port-ROM realisiert. Der Zähler mit der entsprechenden Umgebungslogik wird verdoppelt. Die zu decodierende Instruktion wird an den ersten Eingang und verzögert an den zweiten Eingang des ROMs angelegt, die erzeugten Steuerwortfolgen werden taktrichtig verglichen oder über die verdoppelten ALUs ausgewertet. Die Statussymbole der ersten ALU werden zur Erzeugung der Steuersignalfolgen auf dem ersten Ausgang und die Statussymbole der zweiten ALU werden für die Erzeugung der Steuersignalfolgen auf dem zweiten Ausgang des Dual-Port-ROMs verwendet.
  • Wird die Verzögerung entsprechend gewählt, werden alle transienten Fehler im Decoder auf diese Weise erkannt. Permanente Fehler des Decoders werden nicht erkannt. Die Inputs des Instruktions-Decoders lassen sich dadurch sichern, dass die Inputs für den ersten Input des Dual-Port-ROMs vor der Prüfung für das Cache und die Inputs für den zweiten Input des ROMs nach der Prüfung für das Cache abgegriffen werden.
  • Die Parameter der Instruktionen werden unverzögert für die erste ALU und ggf. erste Vorzeichenerweiterungseinheit und verzögert für die verdoppelte ALU und ggf. für die verdoppelte Vorzeichenerweiterungseinheit bereitgestellt.
  • Wird die Vorzeichenerweiterungseinheit nur einmal bereitgestellt, so werden die Ergebnisse der Vorzeichenerweiterungseinheit direkt an der ersten ALU und verzögert an der zweiten ALU bereitgestellt. Es kann dann eine zusätzliche Fehlererkennungsschaltung für die Vorzeichenerweiterungseinheit und für eventuelle Erweiterungen dieser nicht verdoppelten Einheit implementiert werden. Insbesondere wird dann vorzugsweise auch die Steuerlogik zum Anlegen der Parameter an die Vorzeichenerweiterungseinheit entsprechend angepasst.
  • Im Folgenden wird die Fehlererkennung für die kombinatorische Schaltung zur Modifikation der Parameter der Instruktionen betrachtet. Werden die Vorzeichenerweiterungseinheit und die kombinatorische Schaltung zum Hinzufügen von Nullen mit der ALU verdoppelt, so ist keine spezielle Fehlererkennungsschaltung für diese Einheit erforderlich.
  • In einem bevorzugten Ausführungsbeispiel ist die ALU verdoppelt. Wird eine etwaige Vorzeichenerweiterungseinheit bzw. Sign-Extension-Einheit ebenfalls verdoppelt, so können die dann verdoppelten Vorzeichenerweiterungseinheiten den jeweiligen ALUs formal mit zugerechnet werden. Wird diese Einheit nur einmal realisiert, so ist eine spezielle Fehlererkennungsschaltung für die Sign-Extension-Einheit erforderlich.
  • In anderen Worten, werden sie nicht verdoppelt und als eine kombinatorische Schaltung realisiert, so werden sie vorzugsweise durch einen linearen Code geschützt. Die Eingaben bzw. Inputs der kombinatorischen Schaltung lassen sich dadurch sichern, dass z.B. die Eingaben der Schaltung vor der Prüfung für das Cache und die Eingaben zur Erzeugung der Code-Bits am Ausgang der Schaltung zum Vergleich mit den aus den Ausgangssignalen erzeugten Code-Bits nach der Prüfung für das Cache abgegriffen werden. Wegen der relativ geringen Wortbreite können zusätzlich lichtempfindliche Speicherzellen eingesetzt werden. Zur Verdoppelung der Signalverarbeitungseinheit oder ALU sei noch folgende Anmerkung gemacht. Werden die Steuersignalfolgen der Instruktionen im Instruktions-Decoder, der als Dual-Port-ROM, das auch als Two-Port-ROM oder Zwei-Tor-ROM bezeichnet wird, realisiert ist, zeitversetzt verdoppelt erzeugt, dann können die zeitversetzt verdoppelten Steuersignalfolgen für die beiden nun zeitversetzt arbeitenden verdoppelten ALUs verwendet werden.
  • Dadurch entfällt der Vergleich der beiden zeitversetzten Steuersignalfolgen, da sie durch die ALU-Ergebnisse verglichen werden können. Der Vorteil dieser Vorgehensweise besteht darin, dass nun mögliche Fehler, die beim Auslesen der für die Operation erforderlichen Daten auftreten können, über dann unterschiedliche ALU-Ergebnisse erfasst werden können. Ein Vergleich der Steuersignalfolgen zeigt zwar an, ob der Befehlsdecoder die richtigen Steuerwörter für eine Operation liefert, jedoch bleiben Fehler beim Auslesen der für die Operationen erforderlichen Daten unentdeckt. Vergleicht man jedoch die ALU-Ergebnisse werden auch solche transiente Fehler im Rechenpfad erkannt und ein erweiterter Schutz, der auch das Rechenwerk abdeckt, wird implementiert.
  • Ist das Registerfeld nicht verdoppelt, dann wird das Registerfeld für beide ALUs verwendet, direkt und verzögert. Die Fehlererkennung erfolgt dann mit der gleichen Wahrscheinlichkeit, mit der Fehler in der ALU erkannt werden. Das ist bei Verdopplung und Vergleich einer 16-Bit ALU eine Fehlererkennungswahrscheinlichkeit von (1 – 2–16). Wird die Fehlererkennungswahrscheinlichkeit verbessert, dann verbessert sich automatisch die Fehlererkennungswahrscheinlichkeit für den Instruktions-Decoder.
  • Eine alternative Fehlererkennung für den Modul zur Bestimmung der Folgen von Steuersignalwörtern besteht darin, die Steuersignalwörter für jede Instruktion oder Abschnitte der Instruktion zu akkumulieren und mit einem parallel dazu bestimmten akkumulierten Wert zu vergleichen.
  • 1B zeigt ein Ausführungsbeispiel einer solchen Fehlererkennungsvorrichtung 50 mit einer Steuervorrichtung 60, einer Akkumulationsvorrichtung 70, einem Signaturspeicher 80 und einer Vergleichseinrichtung 90. Die Steuervorrichtung 60 ist ausgebildet, um das Eingangswort 62 bzw. die Instruktion 62 zum Auslesen des Befehlsspeichers 40 bereitzustellen, und ein Auslesen der zugeordneten Folge 42 von Steuersignalwörtern zu bewirken. Die Akkumulationsvorrichtung 70 ist ausgebildet, um basierend auf der ausgelesenen Folge 42 von Steuersignalwörtern eine Signatur 72 zu erzeugen. Der Signaturspeicher 80 ist ausgebildet, eine Signatur 82 der zugeordneten Folge zu speichern. Die Vergleichseinrichtung 90 ist ausgebildet, die Signatur 72 der ausgelesenen Folge von Steuersignalwörtern und die Signatur 82 der zugeordneten Folge zu vergleichen und ein Signal 92 auszugeben, das einen Fehler anzeigt, wenn die Signatur 72 der ausgelesenen Folge von Steuersignalwörtern und die Signatur 82 der zugeordneten Folge von Steuersignalwörtern unterschiedlich sind.
  • Die Steuersignalwortfolgen einer Instruktion können in einen vorgegebenen, vorzugsweise nicht-linearen Automaten bzw. Akkumulationsvorrichtung 70 eingegeben und zu einer Signatur 72 akkumuliert werden. Für jede neue Instruktion 62 ist der nicht-lineare Automat 70 neu zu initialisieren.
  • Hängt die Steuersignalwortfolge, sowohl die zugeordnete Steuersignalwortfolge als auch die tatsächlich ausgelesene Steuersignalwortfolge 42, von Statussignalen und Parameterwerten ab, dann ergeben sich in Abhängigkeit von den Statussignalen zwei oder drei oder mehr mögliche Signaturen 82, die dann im Signaturspeicher 80 in Abhängigkeit der Parameter oder der Statussignale abgespeichert werden. Hängt die Folge von Steuersignalworten nicht von Statussignalen ab, dann ergibt sich nur eine zu speichernde Signatur 82.
  • Diese, den jeweiligen Instruktionen und den Statussignalen zugeordneten Signaturen werden als zusätzliche kombinatorische Schaltung realisiert. Eingaben bzw. Inputs dieser Schaltung sind der Operationscode der Instruktion, die Statussignale und die Parameterwerte. Ausgaben bzw. Outputs dieser Schaltung sind die Signaturen. Die Ausgaben dieser kombinatorischen Schaltung werden mit den in dem beispielsweise nichtlinearen Automaten 70 akkumulierten Steuerworten 42 am Ende jeder Instruktion 62 bzw. Ende der Folge 42 von Steuersignalworten verglichen. Verwendet man als akkumulierenden Automaten ein linear rückgekoppeltes Schieberegister, so kompensieren sich in M aufeinanderfolgenden Takten um genau M Bit verschobene Fehler. Beim Entwurf eines geeigneten nicht-linearen Automaten können die entsprechenden Statussymbole und Parameterwerte wie für den Entwurf des Moduls zur Erzeugung der Steuersignalwortfolgen behandelt werden. Dadurch ist es möglich, die Statussymbole und Parameterwerte der jeweiligen Instruktionen bzw. des jeweiligen Eingabeworts mit entsprechenden Masken im ROM zu speichern. Eine wesentliche Erweiterung des Adress-ROMs, der für den Operationscode sonst erforderlich wäre, ist dann nicht erforderlich und die Eingabewortbreite des ROMs kann relativ klein gehalten werden.
  • Dabei kann die Erfindung sowohl für die Fehlererkennung bzw. zum Schutz des Moduls zur Bestimmung der Steuersignalfolgen oder für die Fehlererkennung bzw. zum Schutz des gesamten Instruktions-Decoders eingesetzt werden. Entsprechend ist der Befehlsdecoder in einem Ausführungsbeispiel das Modul zur Bestimmung der Steuersignalfolgen und in einem anderen Ausführungsbeispiel der Instruktions-Decoder.
  • Exemplarisch sei hier die Erfindung anhand einer Mov-Instruction bzw. Schiebeinstruktion aus dem Intel 80251-Befehlssatz betrachtet. Die Steuerung des Prozessorkerns, der auch als Core bezeichnet wird, erfolgt mittels ROM-basiertem Decoder, diese Schaltung kann prinzipiell jedoch auch als synthetisierbare Logik realisiert werden.
  • MOV Ri, @DRk transferiert 1 Byte, welches über die Adresse, die in dem Doppelwortregister DRk steht, gelesen wird, in das Register Ri. Die Source oder Quelle dieser Operation kann dabei ein SFR Register (SFR = Special Function Regis ter = Spezialfunktionsregister) oder ein Byte aus dem Memory sein. Die Unterscheidung bzgl. der beiden Source-Klassen wird durch das höchstwertige Bit bzw. Most Significant Bit (MSB) des Doppelwortregisters DRk durchgeführt. Dieser Befehl wird von einem Decoder in der Gestalt ausgeführt, dass anfangs eine gemeinsame Steuersignalsequenz S1 generiert wird. Diese erzeugt eine Adresse und sorgt für die Auswertung des MSB des Doppelwortregisters DRk. Diese Sequenz ist für beide Zugriffsmöglichkeiten identisch. Abhängig vom Ergebnis der Auswertung des höchstwertigen Bits MSB(DRk) des Doppelwortregisters werden dann jedoch 2 unterschiedliche Sequenzen S2 und S2' erzeugt. Das erste Steuersignalwort ist also für beide Fälle identisch. Abhängig vom Statussignal MSB(DRk) werden danach unterschiedliche Steuersignalworte erzeugt. Diese Aufteilung kann dann mittels der zuvor beschriebenen Methode geschützt werden. Das heißt, dass einmal eine Maske der Statussymbole (Zeile A3) so abgespeichert wird, dass es zur Auswertung des generierten Kontrollsignals MSB(DRk) kommt. Der nachfolgende Vergleich entscheidet dann zwischen den beiden Sequenzen. Dazu wird nun der so entstandene Statusvektor mit einem in der ROM Maske gespeicherten Erwartungswert der Statussymbole verglichen (Zeile A4). Bestätigt sich bei diesem Vergleich die Vermutung, dass der Inhalt der ALU mit dem Erwartungswert übereinstimmt, dann wird eine Inkrementierung des Zeilencounters bzw. Zeilenzählers im ROM um 2 durchgeführt und die Sequenz ab der übernächsten Zeile ausgeführt. Anderenfalls wird der Sprung der in (A5) angegeben ist, durchgeführt und die Steuersequenzen ab (A8) werden ausgeführt. Diese Umsetzung ermöglicht nun die Verwendung eines Dual Port ROM, das dann z.B. mittels zeitlichem Versatz auf zwei parallelen Rechenwerken oder Signalverarbeitungseinrichtungen die Operation ausführt und damit nach Abarbeitung eines jeden Befehls einen Vergleich der Ergebnisse zulässt. Diese Überprüfung dient dann zur Entscheidung, ob ein Angriff oder Fehler stattfand oder nicht.
  • Ein weiteres Ausführungsbeispiel für die Trennung von befehlen durch ein Statussignal stellen bedingte Sprünge dar, z.B. „JNZ rel" („Jump if not zero" = Sprung zu relativer Adresse rel, wenn ungleich null): Hier wird in Abhängigkeit vom Statussignal Z aus dem Programmstatuswort PSW (PSW = Program Status Word) eine Sprunginstruktion ausgeführt oder nicht. Dabei wird eine Statusinformation aus dem Programmstatuswort PSW ausgenutzt, um einen Split bzw. eine Trennung der durch den Decoder erzeugten Steuersignalsequenz durchzuführen. Im ersten Schritt wird in einem Lesevorgang die Programmstatuswort-Information gelesen. Abhängig von diesem Wert werden 2 Steuersequenzen der Gestalt erzeugt, dass einmal ein vollständiger Sprung inklusive einer access Information erzeugt wird. Im Falle eines ungültigen Wertes von Z wird dagegen keine access Information bzw. Zugangsinformation erzeugt. Auch diese Vorgehensweise erlaubt einen Schutz der Steuersignalsequenzen mittels der zuvor beschriebenen Methode.
  • Im Folgenden wird der Ansatz zur Fehlererkennung des gesamten Instruktions-Decoders durch Signaturbildung näher erläutert.
  • Abstrakt ordnet der Instruktions-Decoder jeder an seinem Eingang anliegenden Instruktionen „Instruction(op)", die aus Operations-Code, [Adressen]=[Adr] und [Parametern]=[Par] besteht, in Abhängigkeit von den aktuellen Statussymbolen oder Parameterwerten σ genau eine Folge von Steuerwörtern W1, W2,..., Wn(op,σ) zu.
  • Ein Steuerwort Wi besteht aus Steuersignalen für die ALU und für die Ansteuerung der Register des Registerfelds und weiterhin aus evtl. modifizierten [Parametern].
  • Man kann den Instruktions-Decoder in dieser abstrakten Sicht als Funktion F{Instruction (op,[Adr],[Par]), Statussymbole σ} = W1, W2, ..., Wn(op,σ) auffassen.
  • Man bildet eine beliebige Signatur auf der Folge der Steuerwörtern Φ[W1, W2, ..., Wn(op,σ)] = Φ(Instruction(op),[Adr],[Par], Statussymbole σ)
  • Eine mögliche Signatur ist die komponentenweise XOR-Summe der (nicht-linear) transformierten Steuerwörter, die einer Instruktion, d.h. dem Operations-Code, den [Adressen], den [Parametern] und den entsprechenden Statussymbolen zugeordnet sind.
  • Aus einer VDHL-Beschreibung (VDHL = Very High Description Language) des Instruktions-Decoders ist die Beschreibung der Signatur Φ(Instruction(op),[Adr],[Par] , Statussymbole σ) unmittelbar ableitbar, indem man die an den Ausgängen des Instruktions-Decoders W1, W2, ..., Wn(op,σ) ausgegebenen Signale in den erwähnten nicht-linearen Automaten 70 zur Akkumulation führt und die so erhaltenen Schaltung optimiert.
  • Die Fehlererkennung kann so erfolgen, dass für jede Instruktion die Signatur Φ(Instruction (op),[Adr],[Par],Statussymbole σ) mit der entsprechenden Verknüpfung (komponentenweise XOR-Summe nicht-linear transformierter Steuerwörter) W1, W2, ..., Wn(op,σ), die von dem Instruktions-Decoder ausgegeben werden, verglichen wird.
  • Prinzipiell ist die Schaltung zur Realisierung von Φ(Instruction(op),[Adr],[Par], Statussymbole σ) einfacher als der Instruktions-Decoder.
  • Die Schaltung, die die Signatur realisiert, erzeugt beispielsweise nur einen Outputvektor pro Instruktion und keine Folge von Steuerwörtern. Das reduziert den Stromverbrauch in diesem Schaltungsteil.
  • Die taktweise Verknüpfung der von dem Instruktions-Decoder ausgegebenen Steuerwörter 42 durch den erwähnten nichtlinearen Automaten 70 ist erforderlich, um aus den von dem Instruktions-Decoder ausgegebenen Steuerwörtern die Signatur 72 abzuleiten. Erfolgt keine Akkumulation der Steuerwörter an eine Instruktion am Ausgang des Instruktions-Decoders 40, so führt das Verfahren auf Verdoppelung und Vergleich.
  • Zusammenfassend kann gesagt werden, dass drei Varianten für die Fehlererkennung im Instruktions-Decoder möglich sind. Die erste Variante beinhaltet die Fehlererkennung für die einzelnen Module des Instruktions-Decoders unter Verwendung eines Dual-Port-ROMs und die Regeneration von Eingangssignalen des Adressdecoders. In der zweiten Variante werden zu Signaturen akkumulierte Steuerworte für jede Instruktion verglichen. Die dritte Variante benutzt wesentlich lichtempfindliche Speicherzellen und einfache Codes, auf diese Alternative wird hier nicht weiter eingegangen.
  • Wird der Instruktions-Decoder wie zuvor beschrieben für seine Teile einzeln geschützt, dann besteht für das ROM für transiente Fehler und für den Adressdecoder ein sehr hoher Schutz. Gleiches gilt für den gesamten Instruktions-Decoder bei Fehlerschutz mittels Signaturbildung.
  • Der Vergleich der zeitversetzten Ausgänge des 2-Port ROMs kann unterbleiben, wenn die beiden zeitversetzten Steuersignalfolgen in den beiden verdoppelten ALUs zeitversetzt verarbeitet und die Resultate der Alu-Operation verglichen werden.
  • Abhängig von den Gegebenheiten kann das erfindungsgemäße Verfahren in Hardware oder in Software implementiert werden. Die Implementierung kann auf einem digitalen Speichermedium, insbesondere einer Diskette oder CD mit elektronisch auslesbaren Steuersignalen erfolgen, die so mit einem programmierbaren Computersystem zusammenwirken können, dass das Verfahren ausgeführt wird. Allgemein besteht die Erfindung somit auch in einem Computer-Programm-Produkt mit einem auf einem maschinenlesbaren Träger gespeicherten Programmcode zur Durchführung des erfindungsgemäßen Verfahrens, wenn das Computer- Programm-Produkt auf einem Rechner abläuft. In anderen Worten ausgedrückt, kann die Erfindung somit als ein Computer-Programm mit einem Programmcode zur Durchführung des Verfahrens realisiert werden, wenn das Computer-Programm auf einem Computer abläuft.

Claims (5)

  1. Fehlererkennungsvorrichtung für einen Befehlsdecoder, der basierend auf einem Eingangswort eine zugeordnete Folge von Steuersignalwörtern aus einem Befehlsspeicher (40) ausliest, wobei die Folge von Steuersignalwörtern mindestens ein Steuersignalwort aufweist und wobei der Folge von Steuersignalwörtern eine vorbestimmte Signatur (82) zugeordnet ist, mit folgenden Merkmalen: einer Steuervorrichtung (60), die ausgebildet ist, um das Eingangswort (62) zum Auslesen des Befehlsspeichers (40) bereitzustellen, und ein Auslesen der zugeordneten Folge (42) von Steuersignalwörtern zu bewirken; einer Akkumulationsvorrichtung (70), die ausgebildet ist, um basierend auf der ausgelesenen Folge (42) von Steuersignalwörtern eine Signatur (72) zu erzeugen; einen Signaturspeicher (80), der ausgebildet ist, die vorbestimmte Signatur (82) zu speichern; und einer Vergleichseinrichtung (90), die ausgebildet ist, die Signatur (72) der ausgelesenen Folge (42) von Steuersignalwörtern und die vorbestimmte Signatur (82) zu vergleichen, und ein Signal (92) auszugeben, das einen Fehler anzeigt, wenn die Signatur (72) der ausgelesenen Folge von Steuersignalwörtern und die vorbestimmte Signatur (82) unterschiedlich sind.
  2. Fehlererkennungsvorrichtung gemäß Anspruch 1, bei dem die Akkumulatorvorrichtung (70) als nicht-linearer Automat ausgebildet ist.
  3. Fehlererkennungsvorrichtung nach Anspruch 1 oder 2, bei der eine aus dem Befehlsspeicher (40) ausgelesene Folge (42) von Steuersignalwörtern ferner von einem Statussignal abhängt, bei der der Signaturspeicher (80) für jedes einer Mehrzahl von Statussignalen jeweils eine vorbestimmte Signatur einer abhängig von dem Statussignal zugeordneten Folge von Steuersignalwörtern speichert, und bei der die Vergleichseinrichtung (90) das Statussignal empfängt und abhängig von dem Statussignal die vorbestimmte Signatur (82) aus dem Signaturspeicher (80) für den Vergleich ausliest.
  4. Verfahren zur Fehlererkennung für einen Befehlsdecoder, der basierend auf einem Eingangswort eine zugeordnete Folge von Steuersignalwörtern aus einem Befehlsspeicher ausliest, wobei die Folge von Steuersignalwörtern mindestens ein Steuersignalwort aufweist und wobei der Folge von Steuersignalwörtern eine vorbestimmte Signatur (82) zugeordnet ist, mit folgenden Schritten: Bereitstellen des Eingangsworts (62) zum Auslesen des Befehlsspeichers; Auslesen der zugeordneten Folge (42) von Steuersignalwörtern aus dem Befehlsspeicher; Erzeugen einer Signatur (72) basierend auf der ausgelesenen Folgen von Steuersignalwörtern; und Empfangen und Vergleichen der Signatur (72) der ausgelesenen Folge von Steuersignalwörtern und der vorbestimmten Signatur (82), um ein Signal (92) auszugeben, das einen Fehler anzeigt, wenn die Signatur (72) der ausgelesenen Folge von Steuersignalwörtern und die vorbestimmte Signatur (82) unterschiedlich sind.
  5. Computerprogramm mit einem Programmcode zum Ausführen eines Verfahrens gemäß Anspruch 4, wenn das Computerprogramm auf einem Computer abläuft.
DE102006062703A 2006-02-08 2006-02-08 Fehlererkennungsvorrichtung und Verfahren zur Fehlererkennung für einen Befehlsdecoder Ceased DE102006062703A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE200610005818 DE102006005818B4 (de) 2006-02-08 2006-02-08 Fehlererkennungsvorrichtung und Verfahren zur Fehlererkennung für einen Befehlsdecoder

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE200610005818 DE102006005818B4 (de) 2006-02-08 2006-02-08 Fehlererkennungsvorrichtung und Verfahren zur Fehlererkennung für einen Befehlsdecoder

Publications (1)

Publication Number Publication Date
DE102006062703A1 true DE102006062703A1 (de) 2007-08-30

Family

ID=38320008

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102006062703A Ceased DE102006062703A1 (de) 2006-02-08 2006-02-08 Fehlererkennungsvorrichtung und Verfahren zur Fehlererkennung für einen Befehlsdecoder

Country Status (2)

Country Link
US (1) US7979783B2 (de)
DE (1) DE102006062703A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7813067B1 (en) 2007-02-14 2010-10-12 Marvell International Ltd. Accumulator for non-return to zero (NRZ) linear feedback shift register (LFSR) in controller for disk drive
US8712927B2 (en) * 2008-07-24 2014-04-29 University Of Massachusetts Systems and methods for parameter adaptation
US8732296B1 (en) * 2009-05-06 2014-05-20 Mcafee, Inc. System, method, and computer program product for redirecting IRC traffic identified utilizing a port-independent algorithm and controlling IRC based malware
US8639970B2 (en) * 2011-04-25 2014-01-28 Lsi Corporation Isolating and correcting VPD data mismatch and/or corruption
DE102015209123A1 (de) * 2015-05-19 2016-11-24 Robert Bosch Gmbh Recheneinrichtung und Betriebsverfahren hierfür
DE102016106814A1 (de) * 2016-04-13 2017-10-19 Infineon Technologies Ag Vorrichtung und Verfahren zum Überwachen eines Signalpfads und Signalverarbeitungssystem
RU2704325C1 (ru) * 2018-10-16 2019-10-29 Межрегиональное общественное учреждение "Институт инженерной физики" Отказоустойчивая эвм
RU188002U1 (ru) * 2018-10-31 2019-03-26 Межрегиональное общественное учреждение "Институт инженерной физики" Отказоустойчивая эвм

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4920538A (en) * 1985-06-28 1990-04-24 International Business Machines Corporation Method of checking the execution of microcode sequences
JPH0695685B2 (ja) * 1990-06-28 1994-11-24 登 山口 双方向通信方法
JP2500038B2 (ja) * 1992-03-04 1996-05-29 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチプロセッサ・コンピュ―タ・システム、フォ―ルト・トレラント処理方法及びデ―タ処理システム
US5784393A (en) * 1995-03-01 1998-07-21 Unisys Corporation Method and apparatus for providing fault detection to a bus within a computer system
KR100206887B1 (ko) * 1995-12-31 1999-07-01 구본준 프로그램 오동작 방지를 위한 씨피유
US6247118B1 (en) * 1998-06-05 2001-06-12 Mcdonnell Douglas Corporation Systems and methods for transient error recovery in reduced instruction set computer processors via instruction retry
US6543028B1 (en) * 2000-03-31 2003-04-01 Intel Corporation Silent data corruption prevention due to instruction corruption by soft errors
US20050108509A1 (en) * 2003-11-13 2005-05-19 Safford Kevin D. Error detection method and system for processors that employs lockstepped concurrent threads
DE10360196A1 (de) 2003-12-20 2005-07-21 Robert Bosch Gmbh Schaltungsanordnung und Verfahren zur Überwachung eines Adressdecoders
US7555703B2 (en) * 2004-06-17 2009-06-30 Intel Corporation Method and apparatus for reducing false error detection in a microprocessor

Also Published As

Publication number Publication date
US20070192656A1 (en) 2007-08-16
US7979783B2 (en) 2011-07-12

Similar Documents

Publication Publication Date Title
DE102006062703A1 (de) Fehlererkennungsvorrichtung und Verfahren zur Fehlererkennung für einen Befehlsdecoder
DE102010037457B4 (de) Verfahren zur Datenverarbeitung zum Bereitstellen eines Wertes zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, Verfahren zur Datenverarbeitung zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, Verfahren zum Erzeugen von Programm-Code, Datenverarbeitungsanordnungen zum Bereitstellen eines Wertes zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, Datenverarbeitungsanordnungen zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, und Datenverarbeitungsanordnungen zum Erzeugen von Programm-Code
DE102006003146B4 (de) Vorrichtung und Verfahren zum Auslesen eines Datenwortes und Vorrichtung und Verfahren zum Speichern eines Datenblocks
DE102006005817B4 (de) Fehlererkennungsvorrichtung für einen Adressdecoder und Vorrichtung zur Fehlererkennung für einen Adressdecoder
DE3228405A1 (de) Emulator zur erzeugung einer folge von steuersignalen
DE4434529A1 (de) Verfahren zum Verarbeiten eines Befehls mit Einsatzbedingung und Vorrichtung dazu
EP1190319B1 (de) Sicherung eines rechnerkerns gegen äussere manipulationen
DE102008053122B4 (de) Rückkopplungsschieberegistersteuerung
DE3786853T2 (de) Gerät zur Erkennung und Klassifizierung von Steuerwortfehlern.
DE102004061312A1 (de) Vorrichtung und Verfahren zum Detektieren eines potentiellen Angriffs auf eine kryptographische Berechnung
DE102014115411A1 (de) Datenverarbeitungsanordnung und -verfahren zur sicherstellung der integrität der ausführung eines computerprogramms
EP1444700B1 (de) Speichertest
DE3750756T2 (de) Ausführung von Fehlererkennung unter Verwendung eines ungebrauchten Modulo-m-Kodes.
DE102006005818B4 (de) Fehlererkennungsvorrichtung und Verfahren zur Fehlererkennung für einen Befehlsdecoder
DE102007040721A1 (de) Datenverarbeitungsanordnung, Verfahren zur Datenverarbeitung, Computerprogrammelement und Überprüfungsanordnung für einen Speicher
DE102016116221A1 (de) Verfahren und Einrichtung zur Überwachung der Ausführung eines Programmcodes
DE3104256C2 (de)
WO2003093968A2 (de) Vorrichtung und verfahren zum umrechnen eines terms
DE10028064B4 (de) Computersystem mit ROM-Korrektureinheiten
WO2016050857A1 (de) Verfahren zur datenverarbeitung zum ermitteln, ob bei einer ausführung eines programms ein fehler aufgetreten ist und datenverarbeitungsanordnungen zum erzeugen von programm-code
DE102005006832B4 (de) Schaltungsanordnung und Verfahren zur gesicherten Datenverarbeitung und deren Verwendung
DE1449540B2 (de) Digitalrechner
EP1031081B1 (de) Programmgesteuerte einheit und verfahren
EP3876123B1 (de) Anordnung und betriebsverfahren für einen sicheren hochfahrablauf einer elektronischen einrichtung
DE102010031017A1 (de) Verfahren zur Überwachung des Programmablaufs eines Prozessors

Legal Events

Date Code Title Description
AC Divided out of

Ref document number: 102006005818

Country of ref document: DE

Kind code of ref document: P

OP8 Request for examination as to paragraph 44 patent law
8131 Rejection