-
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.