-
Die vorliegende Erfindung bezieht sich auf Instruktions-Decoder, wie sie z. B. in Mikroprozessoren zum Einsatz kommen.
-
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 ”instruktion” 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 abgekü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 S1', 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, Si+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') = A4.
-
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.
-
Betrachtet man ein typisches Beispiel eines Befehls eines Befehlssatzes, z. B. „Mov Rj, Rk” als Beispiel einer Mov-Instruktion aus dem Intel 80251 Befehlssatz, bei der der Inhalt des Registers Rj in das Register Rk verschoben (move) wird, so wird ersichtlich, dass in diesem Fall sehr häufig mit Adressen gearbeitet wird. Die in dem angeführten Beispiel generierten Adressen zeigen auf ein Registerfeld, welches typischerweise wenige 100 Byte groß ist. Die Adresse selbst ist also wenige Bit breit, z. B. 6 Bit für eine typische Implementierung eines Intel 80251 Prozessors. Diese Adressen können nun als „one-hot”-codierte Adressen bzw. 1-aus-n codierte Adressen an ein Speicherfeld, das auch als Memory-Feld bezeichnet wird, angelegt werden. Das Speicherfeld kann beispielsweise als Schreib-Lese-Speicher, der auch als Random Access Memory (RAM) bezeichnet wird, oder als Flip Flop basiertes Registerfeld, das auch als Latch-based Registerfile bezeichnet wird, implementiert werden. Die Möglichkeit durch Störung dieser Adressen ein fehlerhaftes Ergebnis zu erzeugen ist hoch, da schon durch ein einziges fehlerhaftes Bit in der Adresse beispielsweise ein falsches Register angesprochen wird. Dies kann dann beispielsweise dazu führen, dass für eine folgende Operation ein falscher Wert oder eine falsche Maske verwendet wird, oder dass beim Zurückschreiben eines Ergebnisses einer Operation das Ergebnis an eine falsche Adresse geschrieben wird, unter der auf das Ergebnis in einem späteren Verarbeitungsschritt nicht mehr zurückgegriffen werden kann.
-
Die
DE 103 60 196 A1 beschreibt eine Schaltungsanordnung zur Überwachung eines Adressdecoders, bei dem Eingangsadressen zu Ausgangsadressen decodiert werden, wobei der Adressdecoder Decoderausgänge aufweist, über welche Adressbits ausgebbar sind, wobei Paritybits zu den Ausgangsadressen bildbar sind, wobei die Decoderausgänge in geradzahlige Decoderausgänge und ungeradzahlige Decoderausgänge unterteilt werden, indem die geradzahligen Decoderausgänge mit ODER-Gattern zu einer ersten Gruppe (AG) verknüpft werden und die ungeradzahligen Decoderausgänge mit ODER-Gattern zu einer zweiten Gruppe (AU) verknüpft werden, so dass eine Überwachung des Adressdecoders bezüglich der über jeden Decoderausgang übertragenen Adressbits erfolgt, wobei die Decoderausgänge der ersten Gruppe und die Decoderausgänge der zweiten Gruppe einem ersten Double-Rail Checker zugeführt werden.
-
Die Aufgabe der vorliegenden Erfindung besteht darin, eine verbesserte eine Fehlererkennungsvorrichtung für einen Adressdecoder zu schaffen.
-
Diese Aufgabe wird durch eine Fehlererkennungsvorrichtung für einen Adressdecoder gemäß Anspruch 1, und durch einen Adressdecoder gemäß Anspruch 5 gelöst.
-
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.b). Die Möglichkeit 1.a) und die Möglichkeit 2. werden in der parallelen Anmeldung „Fehlererkennungsvorrichtung und Verfahren zur Fehlererkennung. für einen Befehlsdecoder”, die zusammen mit der vorliegenden Anmeldung eingereicht wurde, beschrieben.
-
Der Vorteil der erfindungsgemäßen Fehlererkennungsvorrichtung für einen Adressdecoder besteht darin, Fehler bei der Adressdecodierung eines 1-aus-n-Decodierers zu erkennen, und damit die Zuverlässigkeit der Adressdecodierung bzw. Instruktions-Decodierung zu erhöhen.
-
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen detaillierter erläutert. Es zeigen:
-
1 ein bevorzugtes Ausführungsbeispiel einer Fehlererkennungsvorrichtung mit einer Regenerationseinrichtung, einer Vergleichseinrichtung und einer Signalerzeugungseinrichtung;
-
2 zeigt ein Blockschaltbild eines Halbaddierers und eine Realisierung auf Gatterebene;
-
3 ein Ausführungsbeispiel einer Fehlererkennungsvorrichtung mit einer Regenerationseinrichtung, einer Vergleichseinrichtung und einer Signalerzeugungseinrichtung für einen Adressdecoder mit einer dreistelligen Eingangsadresse;
-
4 zeigt ein bevorzugtes Ausführungsbeispiel für eine Fehlererkennungsvorrichtung mit einer Regenerationseinrichtung, einer Vergleichseinrichtung und einer Signalerzeugungseinrichtung für einen Adressdecoder mit einer dreistelligen Eingangsadresse;
-
5 zeigt eine Tabelle der maximalen Anzahl von Ausgangsadressstellen eines 1-aus-n-Adressdecoders in Abhängigkeit der Anzahl der regenerierten Adressstellen der Fehlererkennungsvorrichtung bzw. in Abhängigkeit der Anzahl der Eingangsadressstellen des Adressdecoders.
-
1 zeigt eine Fehlererkennungsvorrichtung für einen 1-aus-n-Adressdecoder mit einer Regenerationseinrichtung 110, einer Vergleichseinrichtung 140 und einer Signalerzeugungseinrichtung 160. Die Regenerationseinrichtung 110 ist ausgebildet, die Ausgangsadresse Y zu empfangen, die von dem 1-aus-n-Decodierer basierend auf einer Eingangsadresse X erzeugt wird. Der 1-aus-n-Decodierer ist in 1 nicht gezeigt. Basierend auf der Ausgangsadresse Y erzeugt die Regenerationseinrichtung 110 eine regenerierte Adresse X', wobei die regenerierte Adresse X' gleich der Eingangsadresse X ist, wenn die Umwandlung der Eingangsadresse X in die zugeordnete Ausgangsadresse Y fehlerfrei erfolgt, und wobei die regenerierte Adresse X' ungleich der Eingangsadresse X ist, wenn die Umwandlung der Eingangsadresse X eine Ausgangsadresse Y aus der Menge gültiger Ausgangsadressen Y erzeugt, die ungleich der zugeordneten Ausgangsadresse Y ist.
-
Die Vergleichseinrichtung 140 ist ausgebildet, die Eingangsadresse X des 1-aus-n-Decodierers und die regenerierte Adresse X' der Regenerationseinrichtung 110 zu empfangen, und um basierend auf einem Vergleich der Eingangsadresse X und der regenerierten Adresse X' ein Signal 142 auszugeben, das einen Fehler bei der Umwandlung der Eingangsadresse X in die Ausgangsadresse Y anzeigt, wenn die Eingangsadresse X und die regenerierte Adresse X' nicht übereinstimmen, und dass eine fehlerfreie Umwandlung der Eingangsadresse X in die Ausgangsadresse Y anzeigt, wenn die Eingangsadresse X gleich der regenerierten Adresse X' ist.
-
In anderen Worten ausgedrückt, bilden die Regenerationseinrichtung 110 und die Vergleichseinrichtung 140 eine erste Fehlererkennungseinrichtung 190, die es ermöglicht, die Fehler zu erkennen, bei denen die Ausgangsadresse zwar eine gültige, jedoch eine falsche gültige Ausgangsadresse ist, d. h. eine gültige Ausgangsadresse ist, die nicht der Eingangsadresse X gemäß einer fehlerfreien 1-aus-n-Decodierung zugeordnet ist.
-
Die Signalerzeugungseinheit 160 ist ausgebildet, die Ausgangsadresse Y zu empfangen, und ein Signal 162 auszugeben, das einen Fehler bei der Umwandlung der Eingangsadresse X in die Ausgangsadresse Y anzeigt, wenn die Umwandlung der Eingangsadresse X eine Ausgangsadresse Y erzeugt, die nicht aus der Menge gültiger Ausgangsdressen Y stammt, und dass eine fehlerfreie Umwandlung der Eingangsadresse X in die Ausgangsadresse Y anzeigt, wenn die Umwandlung der Eingangsadresse eine Ausgangsadresse aus der Menge gültiger Adressen Y erzeugt. In anderen Worten, die Signalerzeugungseinrichtung 160 bildet eine zweite Fehlererkennungseinrichtung 160, die ausgebildet ist, die Fehler bei der 1-aus-n-Decodierung zu erkennen, bei denen die Ausgangsadresse Y keine gültige Ausgangsadresse ist.
-
Ein bevorzugtes Ausführungsbeispiel einer Fehlererkennungsvorrichtung 100 umfasst daher sowohl die erste Fehlererkennungseinrichtung 190 als auch die zweite Fehlererkennungseinrichtung 160, und erkennt daher alle Fehler.
-
Die erste Fehlererkennungseinrichtung 190 und die zweite Fehlererkennungseinrichtung 160 können jedoch auch einzeln eingesetzt werden und bieten auch einzeln einen Vorteil gegenüber dem Stand der Technik.
-
Die Fehlererkennungsvorrichtung für einen Adressdecoder kann daher sowohl allein die erste Fehlererkennungseinrichtung 190, allein die zweite Fehlererkennungseinrichtung 160, sowie eine Kombination der ersten Fehlererkennungseinrichtung 190 und der zweiten Fehlererkennungseinrichtung 160 umfassen, und entsprechend allein ein Fehlersignal 142, allein ein Fehlersignal 162, oder beide Fehlersignale 142, 162 oder ein aus den Fehlersignalen 142, 162 kombiniertes Signal erzeugen.
-
Wird durch die Fehlererkennungsvorrichtung 100 ein Fehler erkannt, so kann beispielsweise die Adressdecodierung wiederholt werden, oder gegebenenfalls, im Falle einer eindeutigen Fehlerlokalisierung, sogar eine Fehlerkorrektur erfolgen.
-
Allgemein gesagt, gibt es zur Fehlererkennung von Fehlern im Instruktions-Decoder verschiedene Möglichkeiten: 1. Schutz bzw. Fehlererkennung in den einzelnen Modulen, d. h. dem Modul zur Bestimmung von Steuersignalfolgen für den Datenpfad und für die Steuerlogik oder im Adressdecoder für das Registerfeld; oder 2. Schutz des gesamten Instruktions-Decoders.
-
Die zuvor und im Folgenden im Detail erläuterte Fehlererkennung erfolgt für die Einheiten des Instruktions-Decoders einzeln bzw. für den Adressdecoder und das Modul zur Bestimmung von Steuersignalfolgen für den Datenpfad und für die Steuerlogik einzeln. Die Fehlererkennung für den Adressdecoder kann dadurch gewährleistet werden, bzw. die Outputs bzw. Ausgangsadressen des Adressdecoders lassen sich dadurch sichern, dass die Adressen zur Eingabe in den Adressdecoder, d. h. die Eingangsadresse, vor der Prüfung für das Cache und die Adressen zum Vergleich mit den regenerierten Adressen nach der Prüfung für das Cache abgegriffen werden, falls das Interface zwischen dem Cache/Register-File und dem Instruktions-Decoder dies zulässt.
-
Der aus 1-aus-n-Decoder transformiert seine m-Bit breiten Adressen x = x1, ..., xm in 1-aus-n-Codewörter y = y0, y1, ..., yn Dabei ist n = 2m.
-
Dabei können folgende Fehler entstehen: 1. Anstelle eines 1-aus-n-Codewortes gibt der fehlerhafte Decoder ein Nicht-Codewort aus. Es enthält entweder nur Nullen, oder es enthält mindestens zwei Einsen; 2. Anstelle eines gewünschten 1-aus-n-Codewortes gibt der Decoder ein anderes, falsches 1-aus-n-Codewort aus; 3. Der Input des Decoders ist fehlerhaft.
-
Weitere Fehler des Decoders existieren nicht.
-
Im Folgenden wird nur die Erkennung von Fehlern des Adressdecoders selbst, d. h. von Nicht-Codewörtern und von falschen Codewörtern am Ausgang des Decoders betrachtet.
-
Ein bevorzugtes Ausführungsbeispiel für die Fehlererkennung für diese Fehler beruht auf zwei Fehlererkennungsschaltungen, die gemeinsam implementiert werden können. Die erste Fehlererkennungsschaltung umfasst die Regeneration der Inputsymbole bzw. Eingangsadressen des Decoders durch m-Parity-Bäume, die die Verknüpfungen einer (m, n)-H-Matrix eines Hamming-Codes realisieren. Diese erste Fehlererkennungsschaltung entspricht der Regenerationseinrichtung 110 der ersten Fehlererkennungseinrichtung aus 1. Die zweite Fehlererkennungsschaltung umfasst einen Baum aus Halbadderzellen, die auch als Halbaddiererzellen bezeichnet werden, wobei die Halbaddiererzellen zwei Eingänge a und b und zwei Ausgänge s und c aufweisen, wobei s = a ⊕ b und c = a ∧ b gilt. Sie werden beispielsweise durch ein XOR-Gatter und ein AND-Gatter Gatter realisiert. Das AND-Gatter lässt sich auch durch ein NAND-Gatter ersetzen.
-
An den Ausgängen der Parity-Bäume, die die H-Matrix eines Hamming-Codes realisieren, werden im fehlerfreien Fall die Inputsymbole bzw. Eingangsadressen des Decoders regeneriert. Sie können entweder direkt mit den anliegenden Inputs bzw. Eingangsadressen verglichen werden, oder, falls die Inputs bzw. Eingangsadressen des Decoders durch einen Code geschützt sind, durch einen Codechecker geprüft werden. Die Überprüfung der regenerierten Inputsymbole bzw. Eingangsadressen wird später betrachtet.
-
Durch die Regeneration der Inputsymbole bzw. Eingangsadressen werden genau die Fehler erkannt, die zu einem Fehlersyndrom ungleich Null des Hammingcodes führen, wobei das Fehlersyndrom dem Signal 142 in 1 entspricht. Das sind insbesondere auch die Fehler, die ein richtiges bzw. zulässiges Codewort des 1-aus-n-Codes in ein falsches bzw. falsches zulässiges Codewort des 1-aus-n-Codes verfälschen. Es handelt sich dabei um bidirektionale 2-Bit-Fehler, die ein richtiges, zur anliegenden Eingangsadresse gehörendes 1-aus-n-Codewort in ein fehlerhaftes 1-aus-n-Codewort verfälschen, das zu einer anderen, nicht anliegenden Eingangsadresse gehört. Die Ausgangsadresse Y aus 1 stellt ein Codewort eines 1-aus-n-Codes für eine Adresscodierung dar.
-
Mit Hilfe des Baums aus Halbaddiererzellen werden beispielsweise alle Nicht-Codewörter bzw. nicht zulässigen Ausgangsadressen des 1-aus-n-Codes als fehlerhaft erkannt. Dies entspricht der zweiten Fehlererkennungseinrichtung bzw. Signalerzeugungseinrichtung 160 in 1.
-
3 zeigt einen Ausschnitt eines bevorzugten Ausführungsbeispiels für eine Fehlererkennungsvorrichtung mit der Regenerationseinrichtung 110 der ersten Fehlererkennungseinrichtung und der Signalerzeugungseinrichtung 160 bzw. zweiten Fehlererkennungseinrichtung, und einen 1-aus-n-Adressdecoder 302. 3 zeigt ein Ausführungsbeispiel für eine dreistellige Eingangsadresse und eine achtstellige Ausgangsadresse des Adressdecoders 302, entsprechend liegt an dem Adressdecoder 302 der Input bzw. die Eingangsadresse X = x1, x2, x3 an, die der Adressdecoder 302 in einen Output bzw. eine Ausgangsadresse Y = y0, y1, ..., y7 umwandelt, d. h. es gilt m = 3 und n 23 = 8.
-
Die Regenerationseinrichtung 110 umfasst fünf XOR-Gatter 312, 314, 316, 318, 320 einer ersten Stufe und drei XOR-Gatter 322, 324, 326 einer zweiten Stufe, wobei jedes der Gatter der ersten Stufe zwei Ausgangsadressstellen empfängt, wobei die Kombination der zwei Ausgangsadressstellen pro XOR-Gatter der ersten Stufe verschieden sind, und wobei jedes der XOR-Gatter der zweiten Stufe zwei Eingänge aufweist, die mit den Ausgängen zweier XOR-Gatter der ersten Stufe verbunden sind, wobei die Kombination der Ausgänge der XOR-Gatter der ersten Stufe für jedes XOR-Gatter der zweiten Stufe verschieden ist. Den Ausgängen der XOR-Gatter der zweiten Stufe ist jeweils eine regenerierte Adressstelle zugeordnet. So liegen an dem XOR-Gatter 312 die Ausgangsadressstellen y1, y3 an, an dem XOR-Gatter 314 die Ausgangsadressstellen y2, y3 an, an dem XOR-Gatter 316 die Ausgangsadressstellen y4, y5 an, an dem XOR-Gatter 318 die Adressstellen y5, y6 und an dem XOR-Gatter 320 die Ausgangsadressstellen y6, y7 an. An dem XOR-Gatter 322 liegen die Ausgangssignale der XOR-Gatter 312 und 318 an, an dem XOR-Gatter 324 liegen die Ausgangssignale der XOR-Gatter 314 und 320 an und an dem XOR-Gatter 326 liegen die Ausgangssignale der XOR-Gatter 316 und 320 der ersten Stufe an. Das Ausgangssignal des XOR-Gatter 322 der zweiten Stufe ist der regenerierten Adressstelle x1' zugeordnet, der Ausgang des XOR-Gatters 324 ist der zweiten Stufe der regenerierten Adressstelle x2' zugeordnet und der Ausgang des XOR-Gatters 326 der zweiten Stufe ist der regenerierten Adressstelle x3' zugeordnet.
-
In anderen Worten ausgedrückt, bilden die XOR-Gatter 312, 318 und 322 einen Parity-Baum für die regenerierte Adressstelle x1', die XOR-Gatter 314, 320 und 324 einen Parity-Baum für die regenerierte Adressstelle x2' und die XOR-Gatter 316, 320 und 326 einen Parity-Baum für die regenerierte Adressstelle x3'.
-
Die Vergleichseinrichtung 140, die in 3 nicht eingezeichnet ist, kann beispielsweise durch eine stellenweise XOR-Verknüpfung von x1 mit x1', von x2 mit x2' und von x3 mit x3' realisiert werden. Dabei können dann beispielsweise die Ergebnisse der drei XOR-Verknüpfungen einzeln an das OR-Gatter 376 geführt werden, oder durch ein zusätzliches OR-Gatter zu dem Signal 142 aus 1 zusammengefasst werden und dann derart aggregiert an beispielsweise das OR-Gatter 376 geführt werden.
-
Die Signalverarbeitungseinrichtung 160 in 3 weist drei Halbaddierer 364, 366 und 368 einer ersten Stufe auf, zwei Halbaddierer 370 und 372 einer zweiten Stufe auf und einen Halbaddierer 374 einer dritten bzw. letzten Stufe auf. Dabei liegen an jedem Halbaddierer der ersten Stufe zwei Ausgangsadressstellen an, wobei die jeweils zwei Ausgangsadressstellen an keinem anderen Halbaddierer der ersten Stufe anliegen. An den Eingängen der Halbaddierer der zweiten Stufe liegen die XOR-Ausgänge, bzw. gemäß 2 die Ausgänge für Signal s, von zwei Halbaddierern der ersten Stufe an, wobei die jeweils zwei XOR-Ausgangssignale an keinem anderen Halbaddierer der zweiten Stufe zusammen anliegen. Dabei kann abhängig von der Anzahl der Ausgangsadressstellen an einem der Halbaddierer der zweiten Stufe eine Ausgangsadressstelle, z. B. die höchstwertige Adressstelle bzw. das Most Signifikant Bit (MSB), direkt anliegen, wie dies in 3 für Ausgangsadressstelle y7 und den Halbaddierer 372 der zweiten Stufe gezeigt ist.
-
An dem Halbaddierer 374 der dritten und letzten Stufe liegen die XOR-Ausgänge der Halbaddierer 370, 372 der zweiten Stufe an. So liegen an dem Halbaddierer 364 die Ausgangsadressstellen y1, y2 an, an dem Halbaddierer 366 die Ausgangsadressstellen y3, y4 an, an dem Halbaddierer 368 die Ausgangsadressstellen y5, y6 an. An dem Halbaddierer 370 liegen die XOR-Ausgangssignale des Halbaddierers 364 und 366 an und an dem Halbaddierer 372 liegt das XOR-Ausgangssignal des Halbaddierers 368 und die Ausgangsadressstelle y7 an.
-
Die AND-Ausgänge jedes Halbaddierers 364, 366, 368, 370, 372, 374 werden an ein ODER-Gatter 376 angelegt. über die UND-Ausgangssignale der Halbaddierer wird jede Ausgangsadresse Y als falsch erkannt, die mehr als beispielsweise eine Ziffer 1 bzw. mehr als eine Stelle mit einem ersten logischen Pegel 1 aufweist.
-
Das XOR-Ausgangssignal P des Halbaddierers 374 der dritten und letzten Stufe wird invertiert an das OR-Gatter geführt. Das XOR-Ausgangssignal des Halbaddierers 374 ist die Gesamtparität der Ausgangsadressstellen y1 bis y7, und ermöglicht zu erkennen, ob die Ausgangsadresse bzw. die Ausgangsadressstellen y1 bis y7 alle den Wert 0 bzw. den zweiten logischen Pegel 0 aufweisen. In diesem Fall ist P = 0 und durch die Invertierung ergibt sich am Ausgang des OR-Gatters das Signal 162, das einen Fehler anzeigt bzw. den Wert 1 hat, wenn die Gesamtparität P = 0 ist.
-
Zusätzlich wird die Ausgangsadressstelle y0, d. h. die niedrigstwertige Adressstelle bzw. das Least Significant Bit (LSB) direkt an das OR-Gatter 376 geführt und ein Fehler angezeigt, d. h. das Signal 162 weist den Wert 1 auf, wenn y0 = 1 ist.
-
Im Folgenden wird für den Begriff Ausgangsadressstelle y1, ..., y7 auch der Begriff Ausgang y1, ..., y7 oder Output y1, ..., y7 benutzt, bzw. für die Eingangsadressstelle x1, x2, x3 auch der Begriff Eingang x1, x2, x3 oder Input x1, x2, x3, benutzt.
-
Die m = 3 Bäume, die entsprechend der H-Matrix des Hamming-Codes an ihren Ausgängen x1', x2', x3' die Inputs x1, x2, x3 regenerieren, sind gemeinsam realisiert. Sie verwenden einige XOR-Gatter 318 und 320 gemeinsam.
-
Der Baum aus Halbaddiererzellen 364, 366, 368, 370, 372, 374 ist in 3 getrennt von den drei Parity-Bäumen der Regenerationseinrichtung 110 realisiert. Diese getrennte Realisierung in 3 erfolgt, um die Fehlererkennung besser verständlich erläutern zu können, und um die zwei voneinander unabhängigen Bestandteile bzw. Ausführungsbeispiele besser verständlich erläutern zu können.
-
Eine gemeinsame Realisierung der Parity-Bäume aus XOR-Gattern zur Regeneration der Eingangsadresse und des Parity-Baumes aus Halbaddierern ist in 4 gezeigt und wird später noch näher erläutert.
-
Die H-Matrix des betrachteten erweiterten Hamming-Codes ist hier
-
Die Spaltenvektoren der H-Matrix sind die binären Darstellungen der Zahlen 1, 2, 3, 4, 5, 6, 7, die um einen Wert 1 in der letzten Zeile erweitert sind. Um die Eingangsadresse einfach regenerieren zu können, ist die Ordnung der Spalten in der in (1) angegebenen Reihenfolge wichtig.
-
Entsprechend der ersten Zeile der H-Matrix sind die Ausgänge y1, y0, y5 und y7 zu x1' XOR-verknüpft.
-
Entsprechend der zweiten Zeile der H-Matrix sind die Ausgänge y2, y3, y6 und y7 zu x2' XOR-verknüpft.
-
Entsprechend der dritten Zeile der H-Matrix sind die Ausgänge y4, y5, y0 und y7 zu x3 XOR-verknüpft.
-
Die letzte Zeile der H-Matrix beschreibt die XOR-Verknüpfung aller Ausgänge y1, ..., y7 des Decoders und damit die Gesamtparität P.
-
Die H'-Matrix der Regenerationseinrichtung 110 entspricht der H-Matrix aus (1) ohne die letzte Zeile für die Gesamtparität P. Der Ausgang y0 ist in keinem der XOR-Bäume einbezogen. Das vereinfacht die Hardware für die Regeneration der Eingangsadresse. Die Hardware besteht dann einfach aus der Implementierung der H'-Matrix des Hamming-Codes mit der Spaltenzahl p = 2m – 1, hier mit m = 3 und p = 7.
-
Entsprechend kann die Regenerationseinrichtung 110 bzw. erste Fehlererkennungseinrichtung auch als Einrichtung zur Hamming-Codierung bezeichnet werden.
-
Die Halbaddiererzellen des Baumes der Halbaddierer bestehen aus einem Zwei-Eingangs-XOR-Gatter, das auch als Zwei-Input-XOR-Gatter bezeichnet wird und einem Zwei-Eingangs-AND-Gatter, das auch als Zwei-Input AND-Gatter bezeichnet wird, wie es in 2 dargestellt ist. Die beiden Eingänge des XOR-Gatters sind parallel in die beiden Eingänge des AND-Gatters geführt. Das AND-Gatter gibt eine 1 aus, wenn an seinen beiden Eingängen der Wert 1 anliegt.
-
Die XOR-Gatter der Halbaddierer-Zellen sind zu einem vollständigen Baum verknüpft, der an seinem Ausgang die Parität bzw. Gesamtparität P der Eingänge y1, y2, ..., y7 ausgibt. Die Ausgänge aller AND-Gatter sind in einem OR-Gatter 376 zusammengefasst, in das auch die negierte Gesamt-Parität P geführt werden kann. Außerdem ist der Ausgang y0 in das OR-Gatter 376 geführt.
-
Die Gesamtparität, wie zuvor dargelegt, erkennt hier insbesondere auch die fehlerhafte Ausgabe 0, 0, ..., 0. Damit erkennt der Baum aus Halbaddiererzellen alle Nicht-Codewörter des 1-aus-n-Codes als fehlerhaft.
-
Entsprechend kann die Signalverarbeitungseinheit 160 bzw. zweite Fehlererkennungseinrichtung 160 auch als 1-aus-n-Fehlererkennung bezeichnet werden.
-
Die Gesamtparität ist bei der Betrachtung der Gesamtschaltung nicht notwendig, da die fehlerhafte Ausgabe 0, 0, ..., 0 auch durch die Regeneration der Eingangsadresse erkannt werden kann.
-
Die beiden Fehlerkennungsschaltungen bzw. Fehlererkennungseinrichtungen erkennen gemeinsam alle Fehler am Ausgang des Adressdecoders.
-
Die Funktionsweise und insbesondere die Fehlererkennung der Schaltung wird im Folgenden an Beispielen erläutert werden.
-
Im Folgenden wird angenommen, dass der Input x1, x2, x3 = 0, 0, 0 in den Decoder nicht eingegeben wird. Diese Voraussetzung vereinfacht die Schaltung zur Regeneration der Input-Symbole bzw. Eingangsadressen erheblich.
-
Als Beispiel wird auch angenommen, dass x1, x2, x3 = 1, 1, 1 in den Decoder eingegeben wurde. Im fehlerfreien Fall gibt der Decoder 302 dann das Codewort (0, 0, 0, 0, 0, 0, 0, 1) aus, so dass y7 = 1, y6 = y5 = ... = y1 = y0 = 0 gilt. Durch die Parity-Bäume zur Realisierung der H-Matrix in 3 wird dieses Codewort in den regenerierten Input x1', x2', x3' = 1, 1, 1 transformiert.
-
x1', x2', x3' = 1, 1, 1 regeneriert x1, x2, x3 = 1, 1, 1 korrekt. Das Parity-Signal P ist gleich 1. An keinem der XOR-Gatter des Baumes aus Halbaddierer-Elementen sind die beiden Eingänge gleichzeitig gleich 1, so dass alle AND-Gatter der Halbaddierer den Wert 0 ausgeben. Das OR-Gatter gibt den Wert 0 aus.
-
Wird nun von dem Decoder 302 anstatt der richtigen Ausgabe 0, 0, 0, 0, 0, 0, 1 der Outputvektor bzw. die Ausgangsadresse 0, 0, 0, 0, 0, 1, 0 ausgegeben, so wird von den Parity-Bäumen zur Realisierung der H-Matrix der Vektor x1', x2', x3' = 0, 1, 1 regeneriert, so dass der Fehler durch Vergleich von x1, x2, x3 = 1, 1, 1 mit x1', x2', x3' = 0, 1, 1 erkannt wird. Der Parity-Ausgang P ist weiterhin gleich 1 und am Ausgang des OR-Gatters wird der Wert 0 ausgegeben. In analoger Weise werden alle Fehler erkannt, die ein 1-aus-n-Codewort in ein anderes 1-aus-n-Codewort verfälschen.
-
Alle Fehler, die zu mindestens zwei Einsen am Ausgang des Decoders führen, werden am Ausgangswert 1 des OR-Gatters erkannt. Zusätzlich werden sie in vielen Fällen, aber eben nicht in allen Fällen, durch die Regeneration der Inputsymbole erkannt.
-
Im Folgenden wir die Ausgabe des Nicht-Codewortes 1, 0, 1, 0, 0, 0, 0 betrachtet. In 3 erkennt man, dass die XOR-Gatter der Halbaddiererelemente 364 und 366 jeweils eine 1 ausgeben. Dadurch gibt das AND-Gatter des Halbaddierer-Elementes 370 den Wert 1 aus, der zu einer Ausgabe 1 des OR-Elementes 376 führt, die einen Fehler anzeigt. Eine Ausgabe des Decoders 302 mit einer geraden Anzahl von Einsen wird auch über den Paritätsausgang P erkannt. Im betrachteten Fall ergibt sich die Gesamtparität 0, die am Ausgang des OR-Gatters 376 auch zu einem Ausgang 1 führt. Im Folgenden wird angenommen, dass die korrekte Ausgabe 0, 0, 0, 0, 0, 01 in 1, 1, 0, 1, 0, 0, 0, 0 verfälscht wurde. Diese fehlerhafte Ausgabe wird ebenso wie die korrekte Ausgabe in x1', x2', x3' = x1, x2, x3 = 1, 1, 1 regeneriert. Auch der Paritätsausgang P zeigt den korrekten Wert P = 1 an. Am Eingang des Halbaddierer-Elementes 364 liegen aber zwei Einsen an, so dass das AND-Gatter dieses Elementes eine 1 ausgibt, die zu einem Wert 1 am Ausgang des OR-Gatters 376 führt, der einen Fehler anzeigt. Wird am Ausgang y0 der Wert 1 ausgegeben, so wird dieser Fehler am Ausgang des OR-Gatters 376 erkannt. Wird der Vektor 0, 0, 0, 0, 0, 0, 0 am Ausgang des Decoders 302 ausgegeben, so ist die Gesamtparität gleich 0 und das OR-Gatter 376 gibt den Wert 1 aus, der den Fehler anzeigt. Dieser Fehler wird auch durch Regeneration der Input-Symbole erkannt.
-
Wird der Input 0, 0, 0, obwohl er als Eingabe nicht zugelassen ist, in den Decoder eingegeben, so ist y0 = 1 und das OR-Gatter 376 gibt den Wert 1 aus, was einen Fehler anzeigt.
-
In 4 ist eine gemeinsame Implementierung der Paritäts-Bäume, die die H-Matrix bzw. H'-Matrix realisieren und des Baumes der Halbaddierer-Elemente gezeigt, bei dem einige XOR-Gatter beider Bäume gemeinsam genutzt werden. 4 zeigt wie 3 einen Adressdecoder 302, wobei im Gegensatz zu 3 hier jedoch die Regenerationseinrichtung der ersten Fehlererkennungseinrichtung und die Signalverarbeitungseinrichtung in eine Schaltung integriert sind und die XOR-Gatter der Halbaddierer 464, 466, 468, 470 und 472 auch für die Paritätsbäume zur Regeneration der Eingangsadresse bzw. zur Bildung der regenerierten Adressstellen x1', x2' und x3' eingesetzt werden. Die regenerierte Adresse X' wird an eine nicht dargestellte Vergleichseinrichtung weitergegeben.
-
Auch wenn die Erfindung zuvor anhand eines Beispiels mit m = 3 Eingangsadressstellen und p = 7 Ausgangsadressstellen näher erläutert wurde, so ist die Erfindung nicht auf diese Kombination limitiert, sondern auch mit anderen, insbesondere größeren Stellenzahlen möglich. 5 zeigt beispielhaft für m = 3 bis 8 Eingangsadressstellen bzw. regenerierten Adressstellen die maximale Anzahl p der Ausgangsadressstellen für eine erfindungsgemäße Fehlererkennung. Dabei berechnet sich p zu p = 2m – 1 bzw. mit n = 2m zu m = n – 1.
-
Die Parity-Bäume für die regenerierten Adressstellen x1', ..., xm' können wie zuvor dargestellt über die Hamming-Matrix H' abgeleitet werden, wobei die Hamming-Matrix H' in den Spalten die binären Darstellungen der Zahlen 1, ..., p aufweist.
-
Dabei kann die Regenerationseinrichtung ausgebildet sein, eine Ausgangsandressstelle für die Erzeugung von mindestens zwei verschiedenen regenerierten Adressstellen zu verwenden.
-
Dabei kann die Regenerationsschaltung ferner ausgebildet sein, eine Mehrzahl von Adressstellen der Ausgangsadresse zu empfangen und die regenerierte Adresse mit einer Mehrzahl von regenerierten Adressstellen zu erzeugen, wobei die Regenerationsschaltung eine Mehrzahl von XOR-Gattern umfasst, wobei jedes der XOR-Gatter eine Mehrzahl von Eingängen und einen Ausgang umfasst, wobei jeder Ausgang der XOR-Gatter der letzten Stufe einer regenerierten Adressstelle zugeordnet sein kann, und wobei die Eingänge der XOR-Gatter jeweils verschiedene Kombinationen der Ausgangsadressstellen empfangen.
-
Ferner kann die Regenerationseinrichtung ausgebildet sein, um die Kombinationen der Ausgangsadressstellen wie zuvor beschrieben gemäß einer vorbestimmten Matrix auszuwählen, wobei die Matrix p Spalten aufweist, wobei p gleich der Anzahl der Ausgangsadressstellen ist und wobei jede Spalte einer Ausgangsadressstelle zugeordnet ist, wobei in den Spalten der Matrix die Werte 1 bis p in binärer Form mit m Stellen abgelegt sind, wobei m gleich der Anzahl der regenerierten Adressstellen ist; wobei die Regenerationseinrichtung wirksam ist, um von der Matrix m Kombinationen auszuwählen, wobei jede Kombination einer Zeile der Matrix entspricht, wobei diejenigen Ausgangsadressstellen an die Eingänge eines XOR-Gatters angelegt werden, an deren Spaltenposition die Matrix einen Eintrag mit einem ersten logischen Pegel, beispielsweise 1, aufweist.
-
Bei weiteren Ausführungsbeispielen der Fehlererkennungsvorrichtung, bei der die Ausgangsadresse eine Mehrzahl von Adressstellen umfasst, wobei eine gültige Ausgangsadresse an einer Adressstelle einen ersten Wert mit einem ersten logischen Pegel und an allen anderen Adressstellen einen zweiten Wert mit einem zweiten logischen Pegel aufweist, ist die Signalerzeugungseinrichtung wirksam, um das fehleranzeigende Signal zu erzeugen, wenn mehr als eine Adressstelle der Ausgangsadresse den ersten Wert aufweist, oder keine Adressstelle der Ausgangsadresse den ersten Wert aufweist.
-
Weitere Ausführungsbeispiele der Fehlererkennungsvorrichtung haben eine Signalerzeugungseinrichtung mit einer Mehrzahl von Verknüpfungsgattern einer ersten Stufe, mit einer Mehrzahl von Verknüpfungsgattern einer zweiten Stufe, mit einem Verknüpfungsgatter einer dritten Stufe und mit einem Ausgangsgatter, wobei die Verknüpfungsgatter der ersten Stufe jeweils zwei Ausgangsadressstellen empfangen und jeweils ein erstes und ein zweites Ausgangssignal basierend auf verschiedenen Verknüpfungsoperationen erzeugen, wobei die Verknüpfungsgatter der zweiten Stufe erste Ausgangssignale der Verknüpfungsgatter der ersten Stufe empfangen und jeweils ein erstes und ein zweites Ausgangssignal basierend auf verschiedenen Verknüpfungsoperationen erzeugen, wobei das Verknüpfungsgatter der dritten Stufe erste Ausgangssignale der Verknüpfungsgatter der zweiten Stufe empfängt und ein erstes und ein zweites Ausgangssignal basierend auf verschieden Verknüpfungsoperationen erzeugt, und wobei das Ausgangsgatter die zweiten Ausgangssignale der Verknüpfungsgatter der ersten Stufe, die zweiten Ausgangssignale der Verknüpfungsgatter der zweiten Stufe und das erste Ausgangssignal und das zweite Ausgangssignal der Verknüpfungsgatter der dritten Stufe empfängt, und das Fehleranzeigesignal an dem Ausgang erzeugt. Dabei kann das Verknüpfungsgatter ein Halbaddierer sein, das Ausgangsgatter ein 4R-Gatter sein und das erste Ausgangssignal des Verknüpfungsgatters der dritten Stufe invertiert an einen Eingang des Ausgangsgatters angelegt werden.
-
Für Eingangsadressen mit mehr als drei Adressstellen weist die Signalverarbeitungseinrichtung m > 3 Stufen auf, wobei die prinzipielle Struktur und Signalverarbeitung der Signale an den Halbaddierern und an dem OR-Gatter dem Beispiel für m = 3 in den 3 und 4 entspricht.
-
Ein weiteres Ausführungsbeispiel der Fehlererkennungsvorrichtung weist eine Auswertungseinrichtung auf, die ausgebildet ist, um die Signale von der Signalerzeugungseinrichtung und der Vergleichseinrichtung zu empfangen und um ein Fehlersignal zu erzeugen und bereitzustellen, falls entweder die Signalerzeugungseinrichtung oder die Vergleichseinrichtung das Fehler erzeugende Signal erzeugen.
-
Im Folgenden werden weitere Betrachtungen zur Fehlererkennung angestellt. Die Paritätsbäume, die die H-Matrix H bzw. H' implementieren, implementieren die Syndromgleichungen eines Hamming-Codes mit m Kontrollbits und 2
m – 1 – m Informationsbits. Zu beliebig vorgegebenen 2
m – 1 – m Informationsbits gibt es jeweils genau ein Codewort des betrachteten Codes mit 2
m – 1 Bits. Alle Codewörter werden auf das Syndrom 0, siehe Signal
142 aus
3 und
4, abgebildet. Ein Fehler, der ein Codewort ist, kann damit durch die Regeneration der Inputs nicht erkannt werden. Von insgesamt
möglichen Fehlern sind
Fehler Codewörter, die nicht als fehlerhaft durch die Regeneration der Input-Symbole erkannt werden. Damit wird ein Anteil von 2
–m Fehlern nicht als fehlerhaft durch die Regeneration der Inputsymbole erkannt (m ≈ log
2(n)). Andererseits erkennt der Baum aus Halbaddierer-Elementen genau alle die Fehler nicht, die ein erwartetes 1-aus-n-Codewort in ein anderes 1-aus-n-Codewort verfälschen. Für jeden der n-möglichen 1-aus-n Outputs sind das gerade (n – 1) 2-Bit-Fehler. Diese Fehler führen gerade zu einem falschen, aber formal korrekten Befehl.
-
Die Kombination beider Fehlererkennungseinrichtungen erkennt alle Fehler. Da die beiden Fehlererkennungsschaltungen gemeinsam implementierbar sind, ist der Overhead bzw. zusätzliche Aufwand wesentlich durch die zusätzlichen Verknüpfungsgatter, d. h. die n – 2 AND-Gatter (oder NAND-Gatter) und das zusätzliche Ausgangsgatter bzw. OR-Element (NAND-Element) mit n Eingängen gegeben.
-
Der Aufwand für die Fehlererkennung für den Adressdecoder ist relativ hoch, er kann jedoch mit speziellen Zellen, z. B. Halbaddiererzellen, Mehr-Eingangs-XOR-Zellen, die auch als Mehr-Input-XOR-Zellen bezeichnet werden, reduziert werden.
-
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 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.
-
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.
-
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 bzw. Two-Port-ROMS und die Regeneration von Eingangssignalen des Adressdecoders, wie sie zuvor im Detail erläutert wurde. 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.
-
Die Schutzmöglichkeiten für die Adressdecodierung erfordern aufgrund der geringen Bitbreite unter der Einschränkung, nicht beliebig viel für Schutzmaßnahmen ausgeben zu können, ein Verfahren, das einen bestmöglichen Schutz der Adressen bei geringstmöglichen Aufwand ermöglicht. Dieser Schutz wird durch ein Verfahren gewährleistet, das eine Errechnung der ursprünglichen Eingangsadresse aus der „one-hot”-Adresse, d. h. aus der nach der 1-aus-n-Decodierung tatsächlich am Speicherfeld anliegenden Ausgangsadresse, generiert, bzw. auf der Basis der Ausgangsadresse des 1-aus-n-Adressdecodierers eine Eingangsadresse regeneriert. Diese Schaltung ist exemplarisch in den 1, 3 und 4 dargestellt. Dabei wird jeder induzierte 1-Bit-Fehler und alle Mehrbitfehler, die in den Adressdecoder eingestreut werden, erkannt. Dies erlaubt eine Sicherung der generierten Adressen.
-
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. Wird die Fehlererkennungsvorrichtung derart implementiert, dass sie sowohl die erste Fehlererkennungseinrichtung bestehend aus Regenerationseinrichtung und Vergleichseinrichtung als auch die zweite Fehlererkennungseinrichtung bestehend aus der Signalverarbeitungseinrichtung aufweist, so werden alle transienten Fehler erkannt.
-
Die Sicherung der Eingaben des Instruktions-Decoders hängt auch von der Implementierung des Cache und des Instruktions-Decoders ab. Zur besseren Sicherung der Registerinhalte können beispielsweise zusätzliche lichtempfindliche Elemente an wenigen lokalisierten Stellen eingesetzt werden, da teilweise (nur 8 Bit breite) einzelne Bytes eingegeben 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.
-
Bezugszeichenliste
-
- 100
- Fehlererkennungsvorrichtung
- 110
- Regenerationseinrichtung
- 140
- Vergleichseinrichtung
- 160
- Signalerzeugungseinrichtung
- X
- Eingangsadresse des Adressdecoders
- x1, x2, x3
- Eingangsdressstellen
- Y
- Ausgangsadresse des Adressdecoders
- y0, y7
- Ausgangsadressstellen
- X'
- Regenerierte Adresse
- x1', x2', x3'
- regenerierte Adressstellen
- 142
- Ausgangssignal der Vergleichseinrichtung
- 162
- Ausgangssignal der Signalerzeugungseinrichtung und zweite Fehlererkennungseinrichtung
- 190
- erste Fehlererkennungseinrichtung
- 302
- 1-aus-n-Adressdecoder
- 312–320
- XOR-Gatter der ersten Stufe
- 322–326
- XOR-Gatter der zweiten Stufe
- 364–368
- Halbaddierer der ersten Stufe
- 370, 372
- Halbaddierer der zweiten Stufe
- 374
- Halbaddierer der dritten Stufe
- 376
- OR-Gatter
- a
- erster Eingang des Halbaddierers
- b
- zweiter Eingang des Halbaddierers
- s
- erstes Ausgangssignal des Halbaddierers
- c
- zweites Ausgangssignal des Halbaddierers
- P
- Gesamtparität