DE102013112020A1 - Verfahren und Vorrichtung zum Erkennen von Bitfehlern - Google Patents

Verfahren und Vorrichtung zum Erkennen von Bitfehlern Download PDF

Info

Publication number
DE102013112020A1
DE102013112020A1 DE201310112020 DE102013112020A DE102013112020A1 DE 102013112020 A1 DE102013112020 A1 DE 102013112020A1 DE 201310112020 DE201310112020 DE 201310112020 DE 102013112020 A DE102013112020 A DE 102013112020A DE 102013112020 A1 DE102013112020 A1 DE 102013112020A1
Authority
DE
Germany
Prior art keywords
bit
parity
input
code
bits
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE201310112020
Other languages
English (en)
Other versions
DE102013112020B4 (de
Inventor
Christian Siemers
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hochschule Nordhausen De
Technische Universitaet Clausthal
Original Assignee
Technische Universitaet Clausthal
Fachhochschule Nordhausen
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Technische Universitaet Clausthal, Fachhochschule Nordhausen filed Critical Technische Universitaet Clausthal
Priority to DE102013112020.2A priority Critical patent/DE102013112020B4/de
Publication of DE102013112020A1 publication Critical patent/DE102013112020A1/de
Application granted granted Critical
Publication of DE102013112020B4 publication Critical patent/DE102013112020B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's

Landscapes

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

Abstract

Die Erfindung betrifft ein Verfahren und eine Vorrichtung zum Erkennen von Bitfehlern in einem Ergebnis einer auf einer Rechenmaschine ausgeführten arithmetischen Inkrement- oder Dekrementoperation einer Bitsequenz, wobei für die Bitsequenz ein Paritätscode berechnet wird, der eine Mehrzahl von Paritätsbits enthält, wobei jedes Paritätsbit des Paritätscodes bezüglich der arithmetischen Inkrement- oder Dekrementoperation vorausberechnet wird und durch Vergleich der tatsächlichen Ergebnis-Paritäten ein Bitfehler erkennbar ist.

Description

  • Die Erfindung betrifft ein Verfahren zum Erkennen von Bitfehlern in einem Ergebnis einer auf einer Rechenmaschine ausgeführten, arithmetischen Inkrement- oder Dekrementoperation einer Bitsequenz. Die Erfindung betrifft ebenso ein Computerprogramm, eine Halbleiterschaltung sowie ein Computersystem hierzu.
  • Es ist allgemein bekannt, dass auch bei Computerprogrammen, die hinsichtlich ihrer semantischen Vorgabe mathematisch korrekt sind, Fehler auftreten können, deren Ursprünge meist nicht mehr feststellbar sind. Derartige Fehler bei der Ausführung von Computerprogrammen in Rechenmaschinen können beispielsweise durch äußere Einflüsse, Erwärmungen oder auch Hardwaredefekte entstehen und können temporär oder von dauerhafter Natur sein. Insbesondere in sicherheitskritischen Anwendungen ist es daher notwendig, derartige Fehler sicher und schnell erkennen zu können.
  • So ist es beispielsweise bekannt, dass sicherheitskritische Systeme redundant ausgelegt werden, so dass jedes der Systeme einzeln für sich die Berechnung durchführt und anschließend durch Vergleich der Ergebnisse festgestellt werden kann, ob ein Fehler in einer der Berechnungen aufgetreten ist. Sind beide Ergebnisse identisch, so wird von keinem Fehler ausgegangen.
  • Bei der Übertragung von Daten werden beispielsweise sogenannte CRC-Summen (Cyclic Redundancy Check) eingesetzt, die durch erzeugende Polyname gebildet werden. Hierdurch lassen sich bestimmte Arten von Fehlern zuverlässig erkennen.
  • Bei dem Fehlererkennungsverfahren durch redundante Ausführung ist ein Nachteil jedoch darin zu sehen, dass aufgrund der Mehrfachausführung der Systeme auch entsprechend mehr Hardware bereitgestellt werden muss. Darüber hinaus benötigen derartige Systeme auch signifikant mehr elektrische Energie für den Betrieb, so dass diese Art der Fehlererkennung hinsichtlich des Einsatzgebietes Beschränkungen unterliegt. Wird die Redundanz der Berechnung auf ein und demselben Mikroprozessor untergebracht, so ist hierfür meist eine wesentlich höhere Siliziumfläche notwendig, was sich in einigen Einsatzgebieten ebenfalls als nachteilig erwiesen hat. Demgegenüber steht jedoch der unübersehbare Vorteil, dass mit Hilfe der redundanten Ausführung (auch mehrfach redundant) Rechenfehler innerhalb des Mikroprozessors zuverlässig erkannt werden können.
  • Ein Standardfall bei der Ausführung eines Computerprogramms durch einen Mikroprozessor stellt dabei die arithmetische Inkrement- oder Dekrementoperation des Programm Counters dar. In dem Programm Counter ist die Speicheradresse hinterlegt, in der der nächste abzuarbeitende Befehl für den Mikroprozessor hinterlegt ist. Die Erhöhung des Programm Counters um eine Befehlsbreite (Inkrementoperation) führt zum Verweis auf die nächstfolgende Speicherstelle und somit zur Abarbeitung des nächstfolgenden Maschinenbefehls. Einmal abgesehen von relativen Adressierungen sowie absoluten Sprungbefehlen stellt das einfache Inkrement um eine Befehlsbreite ca. 80% aller Instruktionen im Programmablauf dar.
  • Unter der arithmetischen Inkrement- oder Dekrementoperation im Sinne der vorliegenden Erfindung wird dabei eine arithmetische Operation verstanden, bei der zu einer Mehrbitsequenz eine Ganzzahl ≧ 1 addiert bzw. subtrahiert wird. Den einfachsten Fall stellt dabei das Inkrement bzw. Dekrement um 1 an der Bitstelle 2° dar. Denkbar sind aber auch das Inkrement bzw. Dekrement um Werte, die einer ganzzahligen Potenz von 2 entsprechen bzw. um Werte, die einer nicht ganzzahligen Potenz von 2 entsprechen. Insbesondere das Inkrement bzw. Dekrement um einen Wert, der einer ganzzahligen Potenz von 2 entspricht, wird häufig bei der Erhöhung bzw. Verringerung des Programm Counters um eine ganze Befehlsbreite verwendet, wenn die Befehlsbreite beispielsweise 16 oder 32 Bit entspricht.
  • Aus der US 6,990,507 B2 ist ein Verfahren bekannt, bei dem die Parität eines Ergebnisses eines Inkrementes um 1 einer Mehrbitsequenz vorhergesagt werden kann, so dass sich ein Bitfehler durch Vergleich der vorhergesagten Parität mit der berechneten Parität aus der Ergebnis-Bitsequenz ermitteln lässt. Dabei wird zunächst die Parität der Eingangs-Bitsequenz ermittelt und anschließend überprüft, ob eine ungerade Anzahl von Bits aufgrund des Übertrags bei der Inkrementoperation ihren Bitwert ändern, so dass die vorhergesagte Parität dann durch Umkehr der Parität der Eingangs-Bitsequenz berechnen lässt. Ist die Anzahl der Bits, die sich aufgrund des Übertrags bei der Inkrementoperation ändern werden, gerade, so entspricht die vorhergesagte Parität der Ausgangsparität.
  • Für eine 8 Bit Sequenz, deren Wert um 1 inkrementiert werden soll, ergibt sich somit folgende Formel zur Bestimmung der Parität:
    Figure DE102013112020A1_0002
    wobei p die Parität der 8 bit Eingangs-Bitsequenz darstellt, b[0] das niederwertigste Bit der Bitsequenz und b[7] das höchstwertigste Bit darstellen. Das Symbol O ist dabei die XOR Operation.
  • Demnach kann die Parität einer Bitsequenz dadurch ermittelt werden, dass sämtliche Bits der Bitsequenz XOR verknüpft werden. Die booleschen Operation XOR ist dabei immer dann 0 (false), wenn die beiden Operanden gleich sind, sonst 1 (true). Die ermittelte Parität p ist in diesem Beispiel 0 (false), wenn eine gerade Anzahl von Bits der Bitsequenz 1 sind, sonst ist die Parität 1 (true). Im o. g. Beispiel entspricht dies der even-Parität.
  • Mittels der nachstehenden Formel
    Figure DE102013112020A1_0003
    bei der p die vorhergesagte Parität des Ergebnisses darstellt, not die Invertierung des Bits, + das logische OR und * das logische AND ist, lässt sich die Parität des Ergebnisses der Inkrementoperation um 1 vorhersagen, indem festgestellt wird, ob eine ungerade Anzahl von Bits aufgrund des Übertrags der arithmetischen Operation ihren Bitwert ändern. Sind b[0] und b[1] gleich 1 und ist b[2] gleich 0, so ergibt sich bei einem Inkrement um 1, das sich die Bits 0, 1, und 2 in ihrem Bitwert ändern, was einer ungeraden Anzahl von Bits entspricht und was somit zu einem Wechsel der Parität der Eingangs-Bitsequenz führt.
  • Der große Nachteil dieses Verfahrens besteht jedoch darin, dass hiermit keine 2 Bit-Fehler erkannt werden können, da durch den doppelten Wechsel der Fehlerbits sich die Parität in der Ergebnis-Bitsequenz gegenüber der Eingangs-Bitsequenz nicht ändert. Letztlich lassen sich alle geraden Mehrbitfehler nicht erkennen, so dass mit diesem System nicht hinreichend sicher jegliche Formen von Bitfehlern erkannt werden können, so dass sich dieses Verfahren nicht als Ersatz für die redundante Ausführung zur Erkennung von Bitfehlern eignet.
  • Vor diesem Hintergrund ist es Aufgabe der vorliegenden Erfindung, ein verbessertes Verfahren und eine verbesserte Vorrichtung anzugeben, mit denen neben 1 Bit Fehlern und ungeraden Mehrbitfehlern insbesondere auch 2 Bit Fehler sicher erkannt werden können.
  • Die Aufgabe wird mit dem Verfahren gemäß Anspruch 1 erfindungsgemäß gelöst. Die Aufgabe wird auch mit dem Computerprogramm gemäß Anspruch 10 sowie der Halbleiterschaltung gemäß Anspruch 11 erfindungsgemäß gelöst. Die Aufgabe wird im übrigen auch mit dem Computersystem gemäß Anspruch 13 erfindungsgemäß gelöst.
  • Gemäß Anspruch 1 wird ein Verfahren zum Erkennen von Bitfehlern in einem Ergebnis einer auf einer Rechenmaschine mittels eines Mikroprozessors ausgeführten, arithmetischen Inkrement- oder Dekrementoperation einer Bitsequenz vorgeschlagen, bei dem ein Paritätscode des Ergebnisses aus der Eingangs-Bitsequenz zu einem vorhergesagt und zum anderen aus der Ergebnis-Bitsequenz berechnet wird. Durch Vergleich der vorhergesagten und berechneten Paritätscodes kann dann auf einen entsprechenden Bitfehler geschlossen werden.
  • Bei der Eingangs-Bitsequenz im Sinne der vorliegenden Erfindung handelt es sich um diejenige Bitsequenz, auf der die arithmetische Inkrement- oder Dekrementoperation angewendet werden soll, um die Ergebnis-Bitsequenz zu erhalten. Die Eingangs-Bitsequenz stellt somit die Bitsequenz dar, die dem System als Eingang zur Durchführung der Operation zugeführt und bereitgestellt wird und stellt somit einen Teil der Operanden dar. Die Rechenoperation erfolgt dabei in der Regel bitweise.
  • Erfindungsgemäß wird vorgeschlagen, dass aus der Eingangs-Bitsequenz, auf der die arithmetische Inkrement- oder Dekrementoperation durchgeführt werden soll, ein Eingangs-Paritätscode berechnet wird. Ein derartiger Paritätscode enthält eine Mehrzahl von Paritätsbits, wobei jedes Paritätsbit in Abhängigkeit von den Bitwerten eines Teils der Bits der Eingangs-Bitsequenz berechnet wird. Ein derartiger Paritätscode kann beispielsweise ein Hamming-Code sein, bei dem die einzelnen Paritätsbits jeweils aus einer Kombination verschiedener Bits der Eingangs-Bitsequenz berechnet werden. Bei dem Paritätscode handelt es sich somit um eine Folge von mehreren Bits, die jeweils für sich ein Paritätsbit darstellen, das sich aus einem Teil der Bits der Eingangs-Bitsequenz berechnen lässt. Die Anwendung des Schemas zur Berechnung des Paritätscodes auf die Eingangs-Bitsequenz erzeugt somit dann im Ergebnis den sogenannten Eingangs-Paritätscode.
  • Im nächsten Schritt wird nun basierend auf dem Eingangs-Paritätscode ein Vorausberechnungs-Paritätscode berechnet, der eine Vorausberechnung der einzelnen Paritätsbits des Eingangs-Paritätscodes darstellt, so als ob die Inkrement- oder Dekrementoperation auf der Eingangs-Bitsequenz angewendet und der Paritätscode aus dem Ergebnis berechnet werden würde. Der Vorausberechnungs-Paritätscode stellt somit eine Vorausschau der Paritätsbits des Paritätscodes dar, so als ob die Paritätsbits entsprechend des Schemas des Paritätscodes aus der Ergebnis-Bitsequenz berechnet würden, ohne dass tatsächlich das Ergebnis berechnet und der Paritätscode dann ermittelt wird.
  • Der Vorausberechnungs-Paritätscode enthält somit jene Paritätsbits, die sich ergeben, wenn man den Paritätscode des Ergebnisses der Inkrement- oder Dekrementoperation berechnet.
  • Dabei wird für jedes Paritätsbit des Eingangs-Paritätscodes festgestellt, ob eine ungerade Anzahl von des jeweilige Paritätsbit betreffenden Bits der Eingangs-Bitsequenz einen Bitwert aufweisen, welcher aufgrund einer arithmetischen Rechenregel der Inkrement- oder Dekrementoperation zu einer Umkehrung führen wird. Eine solche Rechenregel ist beispielsweise der Übertrag, wenn die beiden Operanden der Addition eins sind. Die Feststellung, ob eine ungerade Anzahl von des jeweiligen Paritätsbit betreffenden Bits der Eingangs-Bitsequenz ihren Bitwert ändern wird, lässt sich mit Hilfe einer Booleschen Algebra der in der Eingangs-Bitsequenz enthaltenen Bitwerte ermitteln.
  • Dabei wird für jedes Paritätsbit des Eingangs-Paritätscodes untersucht, ob eine ungerade Anzahl von Bits, die zur Berechnung des jeweiligen Paritätsbits des Paritätscodes aus der Eingangs-Bitsequenz benötigt werden, ihren Bitwert aufgrund der anzuwendenden arithmetischen Inkrement- oder Dekrementoperation ihren Bitwert ändern. Wurde eine solche Feststellung, beispielsweise mit Hilfe einer Booleschen Algebra, festgestellt, so wird das entsprechende Paritätsbit des Vorausberechnungs-Paritätscodes durch Umkehr des Paritätsbits des Eingangs-Paritätscodes ermittelt. Denn ändert sich eine ungerade Anzahl von denjenigen Bits, die zur Berechnung des entsprechenden Paritätsbits des Paritätscodes notwendig sind, ihren Bitwert, so hat dies bei der Berechnung des Paritätsbits eine Umkehr der Parität zur Folge. Mit anderen Worten, die Paritätsbits des Vorausberechnungs-Paritätscodes entsprechen der umgekehrten Parität der Paritätsbits des Eingangs-Paritätscodes, wenn für das jeweilige Paritätsbit eine solche ungerade Anzahl von das jeweilige Paritätsbit betreffenden Bits, die einen Bitwert ändern werden, festgestellt wurde. Andernfalls entspricht das jeweilige Paritätsbit des Vorausberechnungs-Paritätscodes den entsprechenden Paritätsbit des Eingangs-Paritätscodes.
  • In einem zweiten Weg, der vorher parallel oder im Nachgang zu dem oben Genannten durchgeführt werden kann, wird eine Ergebnis-Bitsequenz berechnet, indem die Inkrement- oder Dekrementoperation auf die Eingangs-Bitsequenz angewendet wird. Anschließend wird ein Ergebnis-Paritätscode aus der Ergebnis-Bitsequenz entsprechend dem Berechnungsschema für den Eingangs-Paritätscode in Abhängigkeit von den jeweiligen Bitwerten der Ergebnis-Bitsequenz berechnet, so dass aus der Ergebnis-Bitsequenz ebenfalls die entsprechenden Paritätsbits des anzuwendenden Paritätscodes vorliegen. Das Berechnungsschema, d. h. die Art und Weise, wie die Paritätsbits des Paritätscodes berechnet werden, muss sowohl für den Eingangs-Paritätscode als auch den Ergebnis-Paritätscode identisch sein.
  • Nunmehr liegen die Ergebnisparitäten der Ergebnis-Bitsequenz sowie die Vorausberechnungs-Paritäten der Eingangs-Bitsequenz vor, so dass durch einen Vergleich der jeweiligen Vorausberechnungs-Paritäten mit den entsprechenden Ergebnis-Paritäten mögliche Bitfehler erkannt werden können. Sind sämtliche Paritätsbits des Vorausberechnungs-Paritätscodes mit den entsprechenden Paritätsbits des Ergebnis-Paritätscodes identisch, so liegt kein Fehler vor. Weist jedoch mindestens ein Paritätsbit des Vorausberechnungs-Paritätscodes einen anderen Wert auf als das entsprechende Paritätsbit des Ergebnis-Paritätscodes, so liegt ein Bitfehler vor. Dabei ist es unter Umständen sogar möglich, entsprechende Bitfehler zu korrigieren, wenn anhand des verwendeten Paritätscodes und eines erkannten Fehlers auf das entsprechende fehlerhafte Bit in der Bitsequenz geschlossen werden kann, was beispielsweise bei der Verwendung eines Hamming-Codes als Paritätscode möglich ist.
  • Die vorliegende Erfindung hat dabei den wesentlichen Vorteil, dass bei der Durchführung von arithmetischen Inkrement- oder Dekrementoperationen neben den klassischen Einbit-Fehlern auch Zweibit-Fehler und Dreibit-Fehler sicher erkannt werden können, ohne dass es hierfür den Aufbau einer redundanten Ausführung bedarf. Dabei wurde erkannt, dass durch die Verwendung eines entsprechenden Paritätscodes auch Zweibit-Fehler und einige Mehrbit-Fehler sicher erkannt werden können. Dabei wird angenommen, dass die Vorausberechnung immer korrekt arbeitet. Bei einem erkannten Fehler kann dann das Gesamtsystem in einen sicheren Zustand überführt werden.
  • Durch die Reduzierung der Abfrage für die Feststellung der prognostizierten Bitwertänderung, beispielsweise mittels Minimierung anhand einer Common Path Expression, kann der Kostenaufwand der Vorausberechnung unter den Kostenaufwand für eine redundante Ausführung gedrückt werden, so dass das vorliegende Verfahren beispielsweise deutlich weniger Siliziumfläche benötigt als eine redundante Ausführung der Berechnung.
  • Zweckmäßigerweise wird für jedes Paritätsbit des Vorausberechnungs-Paritätscodes ein Fehlersyndrom in Abhängigkeit von dem jeweiligen Paritätsbit des Vorausberechnungs-Paritätscodes und dem entsprechenden Paritätscode des Ergebnis-Paritätscodes berechnet, wobei ein Bitfehler dann erkannt wird, wenn zumindest eines der Fehlersyndrome eine Fehlererkennung enthält. Hierzu weist das jeweilige Fehlersyndrom eine Fehlererkennung auf, die angibt, ob ein Fehler vorliegt oder nicht und gegebenenfalls was für ein Fehler vorliegt. Wird für die Ermittlung der Syndrome die XOR-Operation verwendet, so liegt ein Bitfehler immer dann vor, wenn zumindest eines der Syndrome der Paritäten des Paritätscodes ≠ 0 ist. Bei einem linearen Code ist ein Syndrom definiert als eine Operation eines empfangenen, gegebenenfalls ungültigen Codeworts am Empfänger mit einer Kontrollmatrix. Der einfachste Fall einer Syndrom-Operation ist die XOR-Operation.
  • In einer vorteilhaften Ausführungsform wird vorgeschlagen, dass die Eingangs-Bitsequenz, auf der die arithmetische Inkrement- oder Dekrementoperation angewendet werden soll und welche den arithmetischen Wert in binärer Form enthält, in einer Eingangs-Matrix so angeordnet wird, dass die Bits der Eingangs-Bitsequenz nacheinander zeilenweise in die Eingangs-Matrix eingeschrieben werden. So kann eine 32 Bit Eingangs-Bitsequenz in vier Zeilen à 8 Bit angeordnet werden, wobei die unterste Zeile die Bits 0 bis 7, die nächstfolgende Zeile die Bits 8 bis 15, die dritte Zeile die Bits 16 bis 23 und die vierte Zeile die Bits 24 bis 31 enthält.
  • Die Bits werden dabei in der Matrix so angeordnet, dass sie zeilenweise angeordnet werden, d. h. die Bits werden jeweils ihrer Reihenfolge nacheinander in eine Zeile geschrieben, bis diese Zeile keine weiteren Bits mehr aufnehmen kann, so dass die nächsten Bits am Anfang der nächsten Zeile wieder der Reihenfolge nach folgend eingeordnet werden.
  • Die Bits einer 32 Bit Sequenz können beispielsweise wie folgt angeordnet werden:
    Figure DE102013112020A1_0004
  • Im nächsten Schritt wird der Eingangs-Paritätscode berechnet, indem für jede Zeile und jede Spalte der Eingangs-Matrix ein Paritätsbit, das Bestandteil des Eingangs-Paritätscodes ist, in Abhängigkeit von den Bitwerten der die jeweilige Zeile oder Spalte betreffenden Bits der Eingangs-Bitsequenz berechnet wird. Somit ergeben sich für die jeweils vier Zeilen und die jeweils acht Spalten des oben genannten Beispiels insgesamt 12 Paritätsbits, die zusammen den Eingangs-Paritätscode bilden. Die Paritätsbits des Eingangs-Paritätscodes in dieser Form werden somit zeilen- und spaltenweise aus der Matrixanordnung berechnet.
  • Für das o. g. Beispiel einer 32 Bit Eingangs-Bitsequenz ergibt sich somit folgendes Schema:
    Figure DE102013112020A1_0005
  • Dabei sind pr[0] bis pr[3] die Paritätsbits für die jeweiligen Zeilen und pc[0] bis pc[7] die Paritätsbits der jeweiligen Spalten der Eingangs-Matrix. Die Parität der jeweiligen Zeile oder Spalte lässt sich dabei anhand der bekannten Verfahren ermitteln, beispielsweise mittels der XOR-Operation. Für das o. g. Beispiel ergibt sich somit für die erste Zeile folgende Eingangs-Paritätsberechnung:
    Figure DE102013112020A1_0006
  • Im nächsten Schritt wird nun ein Vorausberechnungs-Paritätscode berechnet, indem für jede Zeile und jede Spalte ein Vorausberechnungs-Paritätsbit auf Basis des Eingangs-Paritätscodes der Eingangs-Matrix berechnet wird, wobei die Vorausberechnungs-Paritätsbits diejenige Parität der jeweiligen Zeile oder Spalte darstellt, die nach der arithmetischen Inkrement- oder Dekrementoperation aus der Matrix berechnet werden würde. Die Vorausberechnungs-Paritäten für jede Zeile und jede Spalte stellen somit jene Paritäten dar, die sich ergeben, wenn man die Paritäten der Zeilen und Spalten des Ergebnisses der Inkrement- oder Dekrementoperation berechnet.
  • Bei der Berechnung der Vorausberechnungs-Paritätsbits wird dabei für jede Zeile und jede Spalte festgestellt, ob eine ungerade Anzahl von die jeweilige Zeile oder Spalte betreffenden Bits einen Bitwert aufweisen, welcher aufgrund einer arithmetischen Rechenregel der Inkrement- oder Dekrement-Operation zu einer Umkehrung führen wird. Die Feststellung, ob eine ungerade Anzahl von Bits ihren Bitwert ändern wird, lässt sich mit Hilfe einer boolesche Algebra der in der Eingangs-Bitsequenz enthaltenen Bitwerte ermitteln.
  • Wird für die betreffende Zeile oder Spalte eine solche ungerade Anzahl von Bits festgestellt, so wird das Vorausberechnungs-Paritätsbit durch Umkehr des Eingangs-Paritätsbits der jeweiligen Zeile oder Spalte ermittelt, und sonst durch Nicht-Umkehr des entsprechenden Eingangs-Paritätsbit. Mit anderen Worten, die Vorausberechnungs-Parität einer Spalte oder Zeile entspricht der umgekehrten Eingangs-Parität der entsprechenden Zeile oder Spalte, wenn eine ungerade Anzahl von Bits ihren Bitwert ändern werden. Die Vorausberechnungs-Parität der jeweiligen Zeile oder Spalte entspricht der Eingangs-Parität der entsprechenden Zeile oder Spalte dann, wenn eine solche ungerade Anzahl von Bits, deren Bitwert sich ändern soll, nicht festgestellt wurde.
  • Für das oben angesprochene Beispiel der 32 Eingangs-Bitsequenz lässt sich für die erste Zeile folgende Formel zur Berechnung der Vorausberechnungs-Parität bei einer Inkrement um 1 angeben:
    Figure DE102013112020A1_0007
  • pr'[0] ist dabei die Vorausberechnungs-Parität der ersten Zeile der Eingangs-Matrix. Die o. g. Formel ermittelt dabei, ob gerade Anzahlen von Bits mit einem Bitwert = 1 existieren, so dass durch die Addition von 1 aufgrund des Übertrags sich sämtliche dieser Bits auf 0 ändern und dass sich an diese einer Folge anschließende abschließende Bit aufgrund des letzten Übertrages auf 1 ändert, so dass eine ungerade Anzahl von Bitwertänderungen feststellbar ist.
  • Nach Berechnung der Ergebnis-Bitsequenz wird nun gemäß dem Schema der Eingangs-Matrix die Ergebnis-Bitsequenz in einer Ergebnis-Matrix angeordnet, wobei auch hier die entsprechenden Paritäten der Zeilen und Spalten, beispielsweise mittels der XOR-Operation berechnet werden. Demnach liegen nunmehr der Ergebnis-Paritätscode vor, der die Ergebnis-Paritäten der Ergebnis-Bitsequenz enthält, sowie der Vorausberechnungs-Paritätscode, der die Vorausberechnungs-Paritäten der Eingangs-Bitsequenz enthält, so dass durch einen entsprechenden Vergleich der jeweiligen Vorausberechnungs-Paritäten mit den entsprechenden Ergebnis-Paritäten Bitfehler erkannt werden können.
  • Sind sämtliche Vorausberechnungs-Paritäten mit den entsprechenden Ergebnis-Paritäten identisch, so liegt kein Fehler vor. Weist jedoch mindestens eine Vorausberechnungs-Parität einer Zeile oder Spalte einen anderen Wert auf als die entsprechende Ergebnis-Parität, so liegt ein Bitfehler vor.
  • Hierdurch wird es möglich, dass bei der Durchführung von arithmetischen Inkrement- oder Dekrementoperationen neben den klassischen Einbit-Fehlern auch Zweibit- und Dreibit-Fehler sicher erkannt werden können, ohne dass es hierfür den Aufbau einer redundanten Ausführung bedarf. Dabei wurde erkannt, dass durch die spalten- und zeilenweise Berechnung der Paritäten Zweibit-Fehler und einige Mehrbit-Fehler sicher erkannt werden können, da sich die Paritäten nicht gegenseitig aufheben können. Werden beispielsweise zwei Bit in einer Spalte ungewollt verändert, so schlägt sich dies zwar nicht in der Parität der betreffenden Spalte nieder, so dass an dieser Stelle noch nicht sicher ein Fehler erkannt werden könnte. Allerdings sind dann zumindest zwei Zeilen-Paritäten derart betroffen, dass deren Wert von den entsprechenden Ergebnis-Paritäten abweicht.
  • Hierbei ist es vorteilhaft, wenn festgestellt wird, ob genau ein Spalten-Syndrom aus den Syndromen der Spalten eine Fehlerkennung aufweist und genau ein Zeilen-Syndrom der Syndrome der Zeilen eine Fehlerkennung aufweist, was auf einen 1 Bit-Fehler schließen lässt, und wobei in Abhängigkeit der Zeile und der Spalte der Syndrome, die eine Fehlerkennung aufweisen, das entsprechende Fehlerbit in der Ergebnis-Bitsequenz lokalisiert wird.
  • In diesem Fall ist es möglich, den 1 Bit-Fehler aufgrund der Lokalisierung der Fehlerquelle innerhalb der Bitsequenz zu korrigieren.
  • Hiermit lassen sich auch ungerade Mehrbitfehler korrigieren, die in einer gemeinsamen Zeile oder einer gemeinsamen Spalte liegen. Hierfür wird ermittelt, ob genau ein Spalten-Syndrom und eine ungerade Anzahl von Zeilen-Syndromen eine Fehlerkennung aufweisen oder ob genau ein Zeilen-Syndrom und eine ungerade Anzahl von Spalten-Syndromen eine Fehlerkennung aufweisen.
  • Vorteilhafterweise wird für die Berechnung der Vorausberechnungs-Paritäten festgestellt, ob ausgehend von einem Pivot-Bit (das mit dem geringsten Wert), an dem die arithmetische Inkrement- oder Dekrement-Operation durchgeführt wird oder beginnt, in der Eingangs-Bitsequenz eine zusammenhängende Teil-Bitsequenz existiert, bei der sich aufgrund der arithmetischen Rechenregel alle Bitwerte ändern und ob eine ungerade Anzahl von Bits der zusammenhängenden Teil-Bitsequenz der entsprechenden Zeile zugeordnet ist. Hierdurch lassen sich auch ungerade Anzahlen von Bitwertänderungen innerhalb einer Zeile feststellen, die in der Reihenfolge nach den Zeilen kommt, in der das Pivot-Bit liegt. Denn aufgrund der arithmetischen Rechenregel kann sich eine Bitwertänderung in einer Zeile bis in eine andere Zeile und darüber hinaus aufsummieren.
  • Entsprechendes gilt auch für die jeweiligen Spalten, wobei auch hier festgestellt wird, ob ausgehend von einem Pivot-Bit, an dem die arithmetische Inkrement- oder Dekrementoperation durchgeführt wird, in der Eingangs-Bitsequenz eine zusammenhängende Teil-Bitsequenz existiert, bei der sich alle Bitwerte ändern und bei der zumindest eine ungerade Anzahl von Bits der entsprechenden Spalte zugeordnet ist.
  • Mit Hilfe dieser Grundsätze lassen sich somit für jede Zeile und jede Spalte die Paritäten des Ergebnisses der Inkrement- oder Dekrementoperation vorausberechnen, ohne dass die arithmetische Inkrement- oder Dekrementoperation tatsächlich durchgeführt werden muss.
  • In einer alternativen Ausführungsform wird als Eingangs-Paritätscode ein linearer Block-Code, beispielsweise ein Hamming-Code, aus der Eingangs-Bitsequenz berechnet, indem jedes Paritätsbit des linearen Block-Codes in Abhängigkeit von den Bitwerten der für das jeweilige Paritätsbit des linearen Block-Codes vorgegebenen Bits der Eingangs-Bitsequenz berechnet wird. Anschließend wird der so aus der Eingangs-Bitsequenz berechnete lineare Block-Code als Vorausberechnungs-Paritätscode vorausberechnet, indem, entsprechend dem bereits Vorhergesagten, festgestellt wird, ob eine ungerade Anzahl von das jeweilige Paritätsbit des linearen Block-Codes betreffenden Bits der Eingangs-Bitsequenz einen Bitwert aufweisen, welcher aufgrund der arithmetischen Rechenregel der Inkrement- oder Dekrementoperation zu einer Umkehrung führen wird, wobei das vorausberechnete Paritätsbit des linearen Block-Codes durch Umkehrung des entsprechenden Paritätsbits des linearen Bock-Codes als Eingangs-Paritätscode berechnet wird.
  • Mit anderen Worten, es wird für ein Paritätsbit des linearen Block-Codes überprüft, ob sich eine ungerade Anzahl derjenigen Bits, aus denen das Paritätsbit entsprechend des Berechnungsschemas des linearen Block-Codes berechnet wird, aufgrund der arithmetischen Rechenregel ihren Bitwert ändern oder nicht. Wird eine solche ungerade Anzahl festgestellt, so wird das aus der Ergebnis-Bitsequenz ermittelte Paritätsbit des linearen Block-Codes umgekehrt, um das Paritätsbit vorauszuberechnen. Andernfalls verbleibt es unverändert. Eine derartige Abfrage kann beispielsweise mit Hilfe einer Booleschen Algebra über die betreffenden Bits der jeweiligen Paritätsbits des linearen Block-Codes durchgeführt werden.
  • Nach Berechnung der Ergebnis-Bitsequenz wird ein linearer Block-Code als Ergebnis-Paritätscode berechnet, und zwar aus der Ergebnis-Bitsequenz, und mit den vorausberechneten Paritäten des linearen Block-Codes verglichen, wobei hierbei nicht nur Fehler erkannt werden können, sondern gegebenenfalls auch korrigiert werden können, wenn der lineare Block-Code auch Bitfehler korrigieren kann. Je nach Paritätsbit, das einen entsprechenden Fehler zeigt, kann dann auf einen entsprechenden Fehler geschlossen werden.
  • Grundsätzlich schließt das Korrigieren eines Bitfehlers per Definition auch das Erkennen eines Bitfehlers mit ein.
  • In dieser Ausführungsform ist es besonders vorteilhaft, wenn der lineare Block-Code ein Hamming-Code ist, der vielfältig Anwendung findet und teilweise auch als Hardware-Implementation vorliegt. Beim Hamming-Code wird je nach Länge der Eingangs-Bitsequenz eine vorgegebene Anzahl von Paritätsbits aus der Eingangs-Bitsequenz erzeugt, wobei für jedes Paritätsbit eine unterschiedliche Kombination von Bits aus der Eingangs-Bitsequenz verwendet wird. Bei einer 32-Bit-Eingangs-Bitsequenz ergibt sich dabei das erste Paritätsbit p1 des Hamming-Codes wie folgt:
    Figure DE102013112020A1_0008
    Figure DE102013112020A1_0009
  • Um nun dieses Paritätsbit p1 des Hamming-Codes für ein 32-Bit-Eingang-Bitsequenz vorauszuberechnen, wird festgestellt, ob aus der Menge der zur Berechnung von p1 notwendigen Bits der Eingangs-Bitsequenz eine ungerade Anzahl von Bits aufgrund der arithmetischen Rechenoperation ihren Bitwert ändern. So kann das Paritätsbit p1 des Hamming-Codes mit Hilfe der nachstehenden Formel vorausberechnet werden:
    Figure DE102013112020A1_0010
    Figure DE102013112020A1_0011
  • Gemäß dieser Formel führt die Parität p1 zu einer Umkehr, wenn eine ungerade Anzahl von Bits, die für die Berechnung des ersten Paritätsbit des Hamming-Paritätscodes notwendig sind, entsprechend festgestellt wurde. Dann wird der Ausdruck hinter dem XOR logisch 1, was zu einer Umkehrung von p1 führt.
  • Gemäß diesem Prinzip lassen sich somit alle weiteren Paritätsbits des Hamming-Codes vorausberechnen, indem jedes Mal festgestellt wird, ob eine ungerade Anzahl von die jeweiligen Paritätsbits betreffenden Bits der Eingangs-Bitsequenz ihren Bitwert ändern.
  • In einer weiteren vorteilhaften Ausführungsform, die zusätzlich zu den beiden vorherigen Ausführungsformen oder auch alternativ dazu gesehen werden kann, wird zusätzlich ein erweitertes Eingangs-Paritätsbit berechnet, welches in Abhängigkeit von den Bitwerten aller Bits der Eingangs-Bitsequenz und aller Paritätsbits des Eingangs-Paritätscodes berechnet wird. Dieses erweiterte Eingangs-Paritätsbit kann dann als Erweiterung des Eingangs-Paritätscodes betrachtet werden. So kann beispielsweise bei einem Hamming-Code über eine 32-Bit-Eingangs-Bitsequenz dieses zusätzliche erweiterte Eingangs-Paritätsbit durch die nachstehende Formel ermittelt werden:
    Figure DE102013112020A1_0012
    wobei sich die zugrunde gelegten Bits der Eingangs-Bitsequenz auf die angegebenen Bits aufgrund der Redundanz des Paritätscodes reduzieren lassen.
  • Dieses erweiterte Eingangs-Paritätsbit lässt sich dann ebenso wie die übrigen Paritätsbits vorausberechnen, indem ebenfalls festgestellt wird, ob die betreffenden Bits zur Berechnung des erweiterten Paritätsbits eine ungerade Anzahl von Bits aufweisen, die aufgrund der arithmetischen Rechenoperation zu einer Umkehrung führen würden. Durch Vergleich dieses vorausberechneten erweiterten Paritätsbits mit dem berechneten erweiterten Ergebnis-Paritätsbits lässt sich dann sicher Zweibit-Fehler detektieren und gegebenenfalls korrigieren.
  • Um den Aufwand bei der Erkennung von Bitfehlern gemäß der vorliegenden Erfindung zu reduzieren, wird des Weiteren vorteilhafterweise vorgeschlagen, dass ein derartiges Verfahren nicht jedes Mal durchgeführt wird, sondern lediglich in Situationen, in denen die Vorausberechnung des Paritätscodes relativ einfach realisiert werden kann. So führt bei einer einfachen Inkrementoperation die Tatsache, dass das Pivot-Bit eine logische „0” aufweist, in der Regel lediglich dazu, dass sämtliche Paritätsbits des Paritätscodes, die sich auf das Pivot-Bit beziehen, ihre Parität umkehren, während die übrigen Paritätsbits des Paritätscodes unverändert verbleiben. Ein solcher Fall liegt in 50% der Fälle vor. Das Gleiche gilt beispielsweise bei der Konstellation, bei dem das Pivot-Bit eine logische „1” aufweist und das nachfolgende Bit eine logische „0” aufweist, so dass auch hier nur diejenigen Paritätsbits des Paritätscodes vorausberechnet werden müssen, die sich auf diese beiden Bits beziehen. Bei der Verwendung eines Hamming-Codes als Paritätscode wären dies immerhin lediglich nur die ersten beiden Paritätsbits des Hamming-Codes.
  • Es ist daher ganz besonders vorteilhaft, wenn zunächst festgestellt wird, ob sich innerhalb einer zusammenhängenden Teil-Bitsequenz der Eingangs-Bitsequenz, die eine vorgegebene Bitlänge aufweist, die Umkehrung der arithmetischen Rechenwege der Inkrement- oder Dekrementoperation erschöpft, d. h. dass aufgrund der arithmetischen Rechenregel ein Übertrag außerhalb der Teil-Bitsequenz mit vorgegebener Bitlänge nicht erfolgt. Wurde eine derartige Feststellung getroffen, d. h. dass eine Umkehrung nur innerhalb einer vorgegebenen Teil-Bitsequenz erfolgt, so werden letztendlich für die Vorausberechnung der einzelnen Paritätsbits zur Ermittlung des Vorausberechnungs-Paritätscodes nur diejenigen Paritätsbits vorausberechnet, bei denen mindestens ein Bit der Eingangs-Bitsequenz zur Berechnung des jeweiligen Paritätsbits in der Teil-Bitsequenz liegt. Die übrigen Paritätsbits müssen demnach dann nicht vorausberechnet werden, da diese Paritätsbits ohne die Bits der Teil-Bitsequenz berechnet werden und es somit unabhängig von dem Ergebnis nie zu einem Paritätswechsel bei diesen Paritätsbits kommen kann.
  • Dies hat den entscheidenden Vorteil, dass eine Überprüfung des Ergebnisses und somit ein Erkennen der Bitfehler relativ schnell und ohne viel Aufwand durchgeführt werden kann, was sich jedoch mit der Tatsache erkauft wird, dass eine derartige Bitfehlererkennung nicht immer durchgeführt werden kann.
  • Die Aufgabe wird im übrigen auch mit einem Computerprogramm mit Programmcodemitteln, insbesondere auch einem maschinenlesbaren Träger gespeichert, eingerichtet zur Durchführung des Verfahrens gelöst, wenn das Computerprogramm auf einer Datenverarbeitungsanlage abläuft.
  • Die Erfindung wird im Übrigen auch mit einer Halbleiterschaltung gemäß Anspruch 7, eingerichtet zur Durchführung des Verfahrens, gelöst. Vorteilhafte Ausgestaltungen der Halbleiterschaltung befinden sich in den entsprechenden Unteransprüchen.
  • Die Aufgabe wird im übrigen auch mit einem Computersystem gemäß Anspruch 9 gelöst, wobei das Computersystem eingerichtet ist, mittels eines Mikroprozessors das vorstehend beschriebene Verfahren durchzuführen.
  • Die Erfindung wird anhand der beigefügten Zeichnung beispielhaft näher erläutert. Es zeigt:
  • 1 schematische Darstellung der Einbettung der vorliegenden Erfindung im Bereich der arithmetischen Rechenoperationen;
  • 2 schematische Darstellung der Einbettung der vorliegenden Erfindung in den Bereich des Programm Counters.
  • 1 zeigt schematisch die Einbettung der vorliegenden Erfindung im Bereich der schematischen Rechenoperationen eines Computersystems, insbesondere eines Mikroprozessors bzw. einer Halbleiterschaltung. Kernstück ist die sog. ALU (Arithmetic Logic Unit), die als Eingang zwei Operanden erhält, und hieraus je nach Funktion eine Inkrement- oder Dekrementoperation durchführt. Bei einer Inkrementoperation würde im Ausführungsbeispiel der 1 zu der Eingangs-Bitsequenz b[0...n] der Wert des Operanden OPP hinzuaddiert werden. Im einfachsten Beispiel ist der Operand 1, so dass zu der Eingangs-Bitsequenz b[0...n] der Wert 1 hinzuaddiert wird. Denkbar ist allerdings auch, dass der Operand OPP beliebige Werte enthält, so dass beliebige Werte zu der Eingangs-Bitsequenz hinzuaddiert oder auch subtrahiert werden.
  • Als Ergebnis liefert die ALU eine Ergebnis-Bitsequenz r[0...n], die das Resultat der arithmetischen Inkrement- oder Dekrementoperation enthält.
  • Um nun bei einer derartigen arithmetischen Rechenoperation Bitfehler bei der Berechnung in der ALU feststellen zu können, wird parallel zu der ALU eine Paritäts-Vorausberechnungsbaugruppe 1 vorgesehen, die als Eingang die beiden Operanden der ALU erhält. Die Paritäts-Vorausberechnungsbaugruppe 1 berechnet nun gemäß dem Verfahren der vorliegenden Erfindung die entsprechenden Vorausberechnungs-Paritäten des Paritätscodes, und liefert diese als Eingang einer Bitfehler-Erkennungsbaugruppe 2. Die Bitfehler-Erkennungsbaugruppe 2 erhält als zweiten Eingang das Berechnungsergebnis der ALU, nämlich die Ergebnis-Bitsequenz r[0...n].
  • Die Bitfehler-Erkennungsbaugruppe 2 berechnet nun die Ergebnis-Paritäten des Paritätscodes aus der Ergebnis-Bitsequenz, die es von der ALU erhalten hat, und vergleicht diese Ergebnis-Paritäten mit den Vorausberechnungs-Paritäten der Paritäts-Vorausberechnungsbaugruppe 1.
  • Die Bitfehler-Erkennungsbaugruppe 2 kann je nach Fehlertyp, beispielsweise 1 Bit-Fehler, 2 Bit-Fehler, 3 Bit-Fehler oder Mehrbit-Fehler einen entsprechenden Errorcode ausgeben, der dann beispielsweise über eine Exception im Programmablauf des übergeordneten Computerprogramms abgefangen werden kann.
  • Eine solche Einbettung ist beispielsweise im Bereich des Programm Counters vorteilhaft, der in 2 dargestellt ist. Hierbei erhält die ALU als Operand den Wert 1, um den Programm Counter in die nächste Befehlszeile zeigen zu lassen. Wird während der Addition hierbei ein Fehler festgestellt, so wird ein entsprechender Error ausgegeben.
  • 1. Ausführungsbeispiel
  • Das nachfolgende Beispiel zeigt die Berechnung der Vorausberechnungs-Paritäten eines matrixartigen Paritätscodes bei einer 32 Bit Eingangs-Bitsequenz.
  • Zunächst wird die Eingangs-Bitsequenz b[0...31] in einer Matrix zeilenweise und aufeinander folgend angeordnet, so wie nachfolgend gezeigt.
  • Figure DE102013112020A1_0013
  • Anschließend wird für jede Zeile und jede Spalte die Parität berechnet. Die Eingangs-Paritäten der Zeilen ergeben sich dabei wie folgt:
    Figure DE102013112020A1_0014
  • Die Eingangs-Paritäten für die Spalten ergeben sich dabei aus den folgenden Gleichungen:
    Figure DE102013112020A1_0015
  • Die Eingangs-Paritäten für die Spalten und die Zeilen ergeben zusammen den Eingangs-Paritätscode.
  • Die Vorausberechnungs-Paritäten dieses Paritätscodes werden nun derart berechnet, dass zunächst festgestellt wird, ob in der entsprechenden Zeile oder Spalte eine ungerade Anzahl von Bits vorhanden ist, deren Bitwerte sich aufgrund der Rechenwege ändern werden, wobei dann die Vorausberechnungs-Parität aus der Umkehr der entsprechenden Eingangs-Parität berechnet wird, und ansonsten aus der Nicht-Umkehr der Eingangs-Paritäten.
  • Für die Vorausberechnungs-Paritäten der Zeilen ergeben sich demnach folgende Gleichungen:
    Figure DE102013112020A1_0016
  • Für die Vorausberechnungs-Paritäten der Spalten ergeben sich die folgenden Gleichungen:
    Figure DE102013112020A1_0017
    Figure DE102013112020A1_0018
  • Anschließend werden aus der Ergebnis-Bitsequenz, die sich durch Anwendung der Inkrement- oder Dekrementoperation auf die Eingangs-Bitsequenz ergibt, ebenfalls der Paritätscode gemäß dem Eingangs-Paritätscode berechnet, indem die Ergebnis-Bitsequenz zeilenweise in einer Matrix angeordnet wird und dann die Zeilen- und Spaltenparitäten entsprechend des Eingangs-Paritätscodes berechnet werden.
  • Durch Vergleich der Vorausberechnungs-Paritäten pc' und pr' mit den Ergebnis-Paritäten pc'' und pr'' der Ergebnis-Bitsequenz lässt sich sodann feststellen, ob ein Bitfehler vorhanden ist oder nicht. Dabei lassen sich auch Zweibit-Fehler, Dreibit-Fehler und einige Mehrbit-Fehler mit Sicherheit erkennen.
  • Eine derartige Erkennung kann beispielsweise mit Hilfe von Fehlersyndromen gemäß den folgenden Gleichungen ermittelt werden:
    Figure DE102013112020A1_0019
  • Jedes Syndrom (XOR-Operation) liefert somit 1 als Fehlerkennung, wenn ein Fehler vorliegt oder 0, wenn kein Fehler vorliegt. Durch Aufsummierung (OR-Operation) lässt sich somit eine gesamte Fehlerkennung ermitteln.
  • Für die Vorausberechnungs-Paritäten der Zeilen ergeben sich für eine Dekrementoperation um 1 in Bezug auf eine 32 Bit Eingangs-Bitsequenz folgende Gleichungen:
    Figure DE102013112020A1_0020
    Figure DE102013112020A1_0021
  • Für die Vorausberechnungs-Paritäten der Spalten bei einer Dekrement-Operation um 1 ergeben sich demnach die folgenden Gleichungen:
    Figure DE102013112020A1_0022
    Figure DE102013112020A1_0023
  • 2. Ausführungsbeispiel
  • Gemäß der zweiten Alternative kann der zugrunde gelegte Paritätscode ein linearer Block-Code sein. Nachfolgend wird die vorliegende Erfindung anhand des Hamming-Codes als Paritätscode beispielhaft näher erläutert.
  • Bei der Berechnung des Hamming-Codes für eine 32-Bit-Bitsequenz werden zunächst insgesamt sechs Paritätsbits benötigt, die sich jeweils aus unterschiedlichen Bits der 32-Bit-Bitsequenz berechnen. Wie in der nachstehenden Tabelle gezeigt, wird die 32-Bit-Bitsequenz d0 bis d31 um zusätzliche sechs Paritätsbits an entsprechenden Stellen erweitert:
    Figure DE102013112020A1_0024
  • Die Paritätsbits p1 bis p6 des Hamming-Codes werden dann wie folgt berechnet:
    Figure DE102013112020A1_0025
    Figure DE102013112020A1_0026
  • Somit wurde im ersten Schritt aus der 32-Bit-Eingangs-Bitsequenz b0 bis b31 der Hamming-Code als Eingangs-Paritätscode mit den Paritätsbits p1 bis p6 entsprechend den vorgegebenen Formeln berechnet.
  • Im anschließenden Schritt wird dieser Eingangs-Paritätscode mit seinen Paritätsbits vorausberechnet, indem für jedes Paritätsbit des Hamming-Codes der Wert des Paritätsbits entsprechend vorausberechnet wird. Hierbei liegt die Idee zugrunde, dass diejenigen Bits der einzelnen Paritätsbits, die für die Berechnung des jeweiligen Paritätsbits notwendig sind, entsprechend so untersucht werden, dass festgestellt wird, ob sich eine ungerade Anzahl von Bits der für die Berechnung des jeweiligen Paritätsbits notwendigen Bits zu einer Umkehrung führen wird, so dass im Ergebnis auch das jeweilige Paritätsbit eine Umkehrung in seinem Wert erfährt.
  • Für die Vorausberechnungs-Paritäten des Vorausberechnungs-Paritätscodes in Form eines Hamming-Codes ergeben sich demnach folgende Gleichungen:
    Figure DE102013112020A1_0027
    Figure DE102013112020A1_0028
    Figure DE102013112020A1_0029
    Figure DE102013112020A1_0030
    Figure DE102013112020A1_0031
  • Demgegenüber wird nun aus der Ergebnis-Bitsequenz ebenfalls der Hamming-Code mit seinen Paritätsbits p1'' bis p6'' ermittelt, sodass nunmehr die Vorausberechnungs-Paritäten des Hamming-Codes sowie die Ergebnis-Paritäten des Hamming-Codes vorliegen. Durch Vergleich der Paritäten lässt sich dann feststellen, ob ein Bitfehler vorliegt oder nicht. Darüber hinaus kann ein solcher Bitfehler aufgrund des Hamming-Codes auch gegebenenfalls korrigiert werden.
  • Um aus dem Hamming-Code, der einen Hamming-Abstand von 3 besitzt, einen Code zu generieren, der einen Hamming-Abstand von 4 besitzt und die Detektierung von Zweibit-Fehlern erlaubt, wird im erweiterten Hamming-Code noch ein weiteres gerades Paritätsbit p7 über alle Daten und bisherigen Paritätsbits des jeweiligen Hamming-Codes hinzugefügt. Dieses zusätzliche Paritätsbit kann auf die XOR-Verknüpfung aller Bits, die in ungerader Anzahl vorkommen, reduziert werden. Für die Auswertung zur Erkennung der Bitfehler folgt nun:
    Figure DE102013112020A1_0032
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 6990507 B2 [0008]

Claims (13)

  1. Verfahren zum Erkennen von Bitfehlern in einem Ergebnis einer auf einer Rechenmaschine ausgeführten, arithmetischen Inkrement- oder Dekrementoperation einer Bitsequenz, gekennzeichnet durch die mittels eines Mikroprozessors ausführbaren Schritte: a) Berechnen eines Eingangs-Paritätscodes aus einer Eingangs-Bitsequenz, auf der die Inkrement- oder Dekrementoperation angewendet werden soll, wobei der Eingangs-Paritätscode eine Mehrzahl von Paritätsbits aufweist und jedes Paritätsbit in Abhängigkeit von den Bitwerten eines Teils der Bits der Eingangs-Bitsequenz berechnet wird; b) Berechnen eines Vorausberechnungs-Paritätscodes basierend auf dem Eingangs-Paritätscode, indem für jedes Paritätsbit des Eingangs-Paritätscodes festgestellt wird, ob eine ungerade Anzahl von das jeweilige Paritätsbit betreffenden Bits der Eingangs-Bitsequenz einen Bitwert aufweisen, welcher aufgrund einer arithmetischen Rechenregel der Inkrement- oder Dekrementoperation zu einer Umkehrung führen wird, und indem jedes Paritätsbit des Vorausberechnungs-Paritätscode durch Umkehr des entsprechenden Paritätsbit des Eingangs-Paritätscodes ermittelt wird, wenn eine solche ungerade Anzahl von Bits für das betreffende Paritätsbit festgestellt wurde, und sonst durch Nicht-Umkehr des entsprechenden Paritätsbit des Eingangs-Paritätscodes; c) Berechnen einer Ergebnis-Bitsequenz, indem die Inkrement- oder Dekrementoperation auf der Eingangs-Bitsequenz durchgeführt wird; d) Berechnen eines Ergebnis-Paritätscodes aus der Ergebnis-Bitsequenz entsprechend dem Berechnungsschema für den Eingangs-Paritätscode in Abhängigkeit von den jeweiligen Bitwerten der Ergebnis-Bitsequenz; und e) Erkennen von Bitfehlern in Abhängigkeit von einem Vergleich des Vorausberechnungs-Paritätscodes mit dem Ergebnis-Paritätscode.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass für jedes Paritätsbit des Vorausberechnungs-Paritätscode ein Fehlersyndrom in Abhängigkeit von dem jeweiligen Paritätsbit des Vorausberechnungs-Paritätscode und dem entsprechenden Paritätscode des Ergebnis-Paritätscode berechnet wird, wobei ein Bitfehler dann erkannt wird, wenn zumindest eines der Fehlersyndrome eine Fehlerkennung enthält.
  3. Verfahren nach Anspruch 1 oder 2, gekennzeichnet durch – Anordnen der Eingangs-Bitsequenz in einer Eingangs-Matrix, indem die Bits der Eingangs-Bitsequenz nacheinander zeilenweise in der Eingangs-Matrix angeordnet werden; – Berechnen des Eingangs-Paritätscodes, indem für jede Zeile und jede Spalte der Eingangs-Matrix ein Paritätsbit in Abhängigkeit von den Bitwerten der die jeweilige Zeile oder Spalte betreffenden Bits der Eingangs-Bitsequenz berechnet wird; – Berechnen des Vorausberechnungs-Paritätscodes basierend auf dem Eingangs-Paritätscode, indem für jede Zeile und jede Spalte festgestellt wird, ob eine ungerade Anzahl von die jeweilige Zeile oder Spalte betreffenden Bits der Eingangs-Bitsequenz einen Bitwert aufweisen, welcher aufgrund der arithmetischen Rechenregel der Inkrement- oder Dekrementoperation zu einer Umkehrung führen wird, und indem jedes Paritätsbit des Vorausberechnungs-Paritätscode durch Umkehr des entsprechenden Paritätsbits des Eingangs-Paritätscodes, das der Zeile oder Spalte des Paritätsbits des Vorausberechnungs-Paritätscodes entspricht, vorausberechnet wird, wenn eine solche ungerade Anzahl von Bits für die betreffende Zeile oder Spalte festgestellt wurde, und sonst durch Nicht-Umkehr des entsprechenden Paritätsbits des Eingangs-Paritätscodes; – Anordnen der Ergebnis-Bitsequenz in einer Ergebnis-Matrix gemäß dem Schema der Eingangs-Matrix und Berechnen eines Ergebnis-Paritätscodes, indem für jede Zeile und jede Spalte der Ergebnis-Matrix ein Paritätsbit in Abhängigkeit von den Bitwerten der die jeweilige Zeile oder Spalte betreffenden Bits der Ergebnis-Bitsequenz berechnet wird; und – Erkennen von Bitfehlern in Abhängigkeit von einem Vergleich des Vorausberechnungs-Paritätscodes mit dem Ergebnis-Paritätscode.
  4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, dass für jede Zeile und jede Spalte der Eingangs-Matrix zur Berechnung des die jeweilige Zeile oder Spalte betreffenden Paritätsbits des Vorausberechnungs-Paritätscodes festgestellt wird, ob ausgehend von einem Pivot-Bit, an dem die arithmetische Inkrement- oder Dekrementoperation durchgeführt wird, in der Eingangs-Bitsequenz eine zusammenhängende Teil-Bitsequenz existiert, in der alle Bits einen Bitwert aufweisen, welcher aufgrund der arithmetischen Rechenregel zu einer Umkehrung führen wird, und ob eine ungerade Anzahl von Bits der zusammenhängenden Teil-Bitsequenz die jeweilige Zeile oder Spalte betrifft.
  5. Verfahren nach Anspruch 3 oder 4, dadurch gekennzeichnet, dass für jede Zeile und jede Spalte ein Fehlersyndrom in Abhängigkeit von dem die jeweilige Zeile oder Spalte betreffenden Paritätsbit des Vorausberechnungs-Paritätscodes und dem die jeweilige Zeile oder Spalte betreffenden Paritätsbit des Ergebnis-Paritätscodes berechnet wird, wobei ermittelt wird, ob genau ein Zeilen-Syndrom der Fehlersyndrome der Zeilen und eine ungerade Anzahl von Spalten-Syndromen der Fehlersyndrome der Spalten eine Fehlerkennung enthalten oder ob genau ein Spalten-Syndrom der Fehlersyndrome der Spalten und eine ungerade Anzahl von Zeilen-Syndromen der Fehlersyndrome der Zeilen eine Fehlerkennung enthalten, und wobei eine ungerade Anzahl von Fehlerbits eines Ein- oder Mehrbitfehlers in der Ergebnis-Bitsequenz in Abhängigkeit von den Zeilen der ermittelten Zeilen-Syndrome mit einer Fehlerkennung und den Spalten der ermittelten Spalten-Syndrome mit einer Fehlerkennung lokalisiert werden.
  6. Verfahren nach Anspruch 1 oder 2, gekennzeichnet durch – Berechnen eines linearen Blockcodes als Eingangs-Paritätscode aus der Eingangs-Bitsequenz, indem jedes Paritätsbit des linearen Blockcodes in Abhängigkeit von den Bitwerten der für das jeweilige Paritätsbit des linearen Blockcodes vorgegebenen Bits der Eingangs-Bitsequenz berechnet wird; – Vorausberechnen des linearen Blockcodes als Vorausberechnungs-Paritätscode basierend auf dem linearen Blockcode als Eingangs-Paritätscode, indem für jedes Paritätsbit des linearen Blockcodes festgestellt wird, ob eine ungerade Anzahl von das jeweilige Paritätsbit des linearen Blockcodes betreffenden Bits der Eingangs-Bitsequenz einen Bitwert aufweisen, welcher aufgrund der arithmetischen Rechenregel der Inkrement- oder Dekrementoperation zu einer Umkehrung führen wird, und indem jedes Paritätsbit des linearen Blockcodes durch Umkehr des entsprechenden Paritätsbits des linearen Blockcodes vorausberechnet wird, wenn eine solche ungerade Anzahl von für das betreffende Paritätsbit des linearen Blockcodes vorgegebenen Bits festgestellt wurde, und sonst durch Nicht-Umkehr des entsprechenden Paritätsbits des linearen Blockcodes; – Berechnen eines linearen Blockcodes als Ergebnis-Paritätscode aus der Ergebnis-Bitsequenz gemäß dem linearen Blockcode als Eingangs-Paritätscode, der aus der Eingangs-Bitsequenz berechnet wurde; und – Erkennen von Bitfehlern in Abhängigkeit von einem Vergleich des vorausberechneten linearen Blockcodes und dem aus der Ergebnis-Bitsequenz berechneten linearen Blockcode.
  7. Verfahren nach Anspruch 6, gekennzeichnet durch einen Hamming-Code als linearen Blockcode.
  8. Verfahren nach einem der vorhergehenden Ansprüche, gekennzeichnet durch – Berechnen eines erweiterten Eingangs-Paritätsbits, welches in Abhängigkeit von den Bitwerten aller Bits der Eingangs-Bitsequenz und aller Paritätsbits des Eingangs-Paritätscodes berechnet wird; – Berechnen eines erweiterten Vorausberechnungs-Paritätsbits basierend auf dem erweiterten Eingangs-Paritätsbit, indem festgestellt wird, ob eine ungerade Anzahl von Bits der Eingangs-Bitsequenz und von das jeweilige Paritätsbit des Eingangs-Paritätscode betreffenden Bits der Eingangs-Bitsequenz einen Bitwert aufweisen, welcher aufgrund einer arithmetischen Rechenregel der Inkrement- oder Dekrementoperation zu einer Umkehrung führen wird, und indem das erweiterte Vorausberechnungs-Paritätsbit durch Umkehr des erweiterten Eingangs-Paritätsbit ermittelt wird, wenn eine solche ungerade Anzahl von Bits festgestellt wurde, sonst durch Nicht-Umkehr des erweiterten Eingangs-Paritätsbits; – Berechnen eines erweiterten Ergebnis-Paritätsbit, welches in Abhängigkeit von den Bitwerten aller Bits der Ergebnis-Bitsequenz und aller Paritätsbits des Ergebnis-Paritätscodes berechnet wird; und – Erkennen von Bitfehlern weiterhin in Abhängigkeit von einem Vergleich des erweiterten Vorausberechnungs-Paritätsbit mit dem erweiterten Ergebnis-Paritätsbit.
  9. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass zunächst festgestellt wird, ob sich innerhalb einer zusammenhängenden Teil-Bitsequenz der Eingangs-Bitsequenz, ausgehend von einem Pivot-Bit, an dem die Inkrement- oder Dekrementoperation durchgeführt wird, mit vorgegebener Bitlänge die Umkehrung der Bits aufgrund der arithmetischen Rechenregel der Inkrement- oder Dekrementoperation erschöpfen, und wobei bei einer derartigen Feststellung nur diejenigen Paritätsbits des Vorausberechnungs-Paritätscodes durch Feststellung, ob eine ungerade Anzahl von das jeweilige Paritätsbit betreffenden Bits der Eingangs-Bitsequenz einen Bitwert aufweisen, welcher aufgrund der arithmetischen Rechenregel der Inkrement- oder Dekrementoperation zu einer Umkehrung führen wird, entsprechend ermittelt werden, bei denen die entsprechenden Bits der Eingangs-Bitsequenz zur Berechnung des jeweiligen Paritätsbits zumindest teilweise in der zusammenhängenden Teil-Bitsequenz liegen, während die übrigen Paritätsbits des Vorausberechnungs-Paritätscode den jeweiligen Paritätsbits des Eingangs-Paritätscode entsprechen.
  10. Computerprogramm mit Programmcodemitteln, insbesondere auf einem maschinenlesbaren Träger gespeichert, eingerichtet zur Durchführung des Verfahrens nach einem der vorhergehenden Ansprüche, wenn das Computerprogramm auf einer Datenverarbeitungsanlage abläuft.
  11. Halbleiterschaltung, eingerichtet zur Durchführung des Verfahrens nach einem der Ansprüche 1 bis 9.
  12. Halbleiterschaltung nach Anspruch 11, dadurch gekennzeichnet, dass eine Paritäts-Vorausberechnungsbaugruppe zur Durchführung der Verfahrensschritte a) und b), eine Arithmetik-Berechnungsbaugruppe zur Durchführung des Verfahrensschrittes c) und eine Bitfehler-Erkennungsbaugruppe zur Durchführung der Verfahrensschritte d) und e) vorgesehen ist.
  13. Computersystem zum Erkennen von Bitfehlern in einem Ergebnis einer auf dem Computersystem auszuführenden, arithmetischen Inkrement- oder Dekrementoperation einer Bitsequenz, dadurch gekennzeichnet, dass das Computersystem mittels eines Mikroprozessors zur Durchführung des Verfahrens nach einem der Ansprüche 1 bis 9 eingerichtet ist.
DE102013112020.2A 2013-10-31 2013-10-31 Verfahren und Vorrichtung zum Erkennen von Bitfehlern Expired - Fee Related DE102013112020B4 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102013112020.2A DE102013112020B4 (de) 2013-10-31 2013-10-31 Verfahren und Vorrichtung zum Erkennen von Bitfehlern

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102013112020.2A DE102013112020B4 (de) 2013-10-31 2013-10-31 Verfahren und Vorrichtung zum Erkennen von Bitfehlern

Publications (2)

Publication Number Publication Date
DE102013112020A1 true DE102013112020A1 (de) 2015-04-30
DE102013112020B4 DE102013112020B4 (de) 2016-04-07

Family

ID=52811532

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013112020.2A Expired - Fee Related DE102013112020B4 (de) 2013-10-31 2013-10-31 Verfahren und Vorrichtung zum Erkennen von Bitfehlern

Country Status (1)

Country Link
DE (1) DE102013112020B4 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220245023A1 (en) * 2018-07-16 2022-08-04 Taiwan Semiconductor Manufacturing Co., Ltd. Detection and correction of data bit errors using error correction codes

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6990507B2 (en) 2002-05-21 2006-01-24 Hewlett-Packard Development Company, L.P. Parity prediction for arithmetic increment function

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6990507B2 (en) 2002-05-21 2006-01-24 Hewlett-Packard Development Company, L.P. Parity prediction for arithmetic increment function

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Poolakkaparambil, M. u.a: BCH code based multiple bit error correction in finite field multiplier circuits. Quality Electronic Design (ISQED), 2011 12th International Symposium on, März 2011 *
Russell, Gordon; Sayers, Ian L. : Advanced simulation and test methodologies for VLSI design. 1. publ. . London : van Nostrand Reinhold, 1989. ISBN: 0-7476-0001-5, S. 287 - 298 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220245023A1 (en) * 2018-07-16 2022-08-04 Taiwan Semiconductor Manufacturing Co., Ltd. Detection and correction of data bit errors using error correction codes
US11740960B2 (en) * 2018-07-16 2023-08-29 Taiwan Semiconductor Manufacturing Co., Ltd. Detection and correction of data bit errors using error correction codes

Also Published As

Publication number Publication date
DE102013112020B4 (de) 2016-04-07

Similar Documents

Publication Publication Date Title
DE102011085602B4 (de) Vorrichtung und Verfahren zum Korrigieren zumindest eines Bitfehlers in einer codierten Bitsequenz
DE2060643A1 (de) Schaltungsanordnung zur Korrektur von Einzelfehlern
DE102017103347B4 (de) Verarbeitung von daten in speicherzellen eines speichers
DE102006005817B4 (de) Fehlererkennungsvorrichtung für einen Adressdecoder und Vorrichtung zur Fehlererkennung für einen Adressdecoder
DE102010037457A1 (de) Verfahren zur Datenverarbeitung zum Bereitstellen eines Wertes zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, Verfahren zur Datenverarbeitung zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, Verfahren zum Erzeugen von Programm-Code, Datenverarbeitungsanordnungen zum Bereitstellen eines Wertes zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, Datenverarbeitungsanordnungen zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, und Datenverarbeitungsanordnungen zum Erzeugen von Programm-Code
DE2456709C2 (de) Schaltungsanordnung zur Fehlererkennung und -korrektur
DE102005022107B9 (de) Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge
DE102011087634B9 (de) Vorrichtung und verfahren zum erfassen eines fehlers in einem codierten binärwort
EP3614268B1 (de) Verfahren und vorrichtung zum verarbeiten von daten mittels codierter operationen
DE102020110787B3 (de) Schaltung und verfahren zum kodieren oder dekodieren eines datenworts
DE102018131613A1 (de) Fehlererkennung mittels Gruppenfehler
DE102010041680B4 (de) Vorrichtung und Verfahren zum Bestimmen einer Position eines 1-Bit-Fehlers in einer codierten Bitsequenz, Vorrichtung und Verfahren zur Korrektur eines 1-Bit-Fehlers in einer codierten Bitsequenz und Decodierer und Verfahren zum Decodieren einer fehlerhaften, codierten Bitsequenz
DE102013219088B9 (de) Schaltungsanordnung und Verfahren zur Realisierung von Prüfbitkompaktierung für Cross-Parity-Codes
DE102013112020B4 (de) Verfahren und Vorrichtung zum Erkennen von Bitfehlern
DE102021109391B3 (de) Multibytefehler-Erkennung
DE102014114157B4 (de) Verfahren zur Datenverarbeitung zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist und Datenverarbeitungsanordnungen zum Erzeugen von Programm-Code
DE102019113970B4 (de) Erkennung von adressfehlern
DE102015111729B4 (de) Verfahren und decoder zum bestimmen eines fehlervektors für ein datenwort gemäss einem reed-muller-code
DE102015118668B4 (de) Fehlerkorrektur
DE102022111624B4 (de) Fehlerkorrektur mit schneller Syndromberechnung
DE102015121646B4 (de) Fehlerkorrektur
DE102015112554B4 (de) Verfahren und Vorrichtung zum Erzeugen einer Codebitsequenz sowie zum Erkennen von Bitfehlern
EP1579230B1 (de) Vorrichtung und verfahren zur bildung einer signatur
EP0046963B1 (de) Schaltungsanordnung zur Erkennung und Korrektur von Fehlerbündeln
DE102021123727B4 (de) Bytefehlerkorrektur

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: TECHNISCHE UNIVERSITAET CLAUSTHAL, DE

Free format text: FORMER OWNER: FACHHOCHSCHULE NORDHAUSEN, TECHNISCHE UNIVERSITAET CLAUSTHA, , DE

Owner name: HOCHSCHULE NORDHAUSEN, DE

Free format text: FORMER OWNER: FACHHOCHSCHULE NORDHAUSEN, TECHNISCHE UNIVERSITAET CLAUSTHA, , DE

Owner name: TECHNISCHE UNIVERSITAET CLAUSTHAL, DE

Free format text: FORMER OWNERS: FACHHOCHSCHULE NORDHAUSEN, 99734 NORDHAUSEN, DE; TECHNISCHE UNIVERSITAET CLAUSTHAL, 38678 CLAUSTHAL-ZELLERFELD, DE

Owner name: HOCHSCHULE NORDHAUSEN, DE

Free format text: FORMER OWNERS: FACHHOCHSCHULE NORDHAUSEN, 99734 NORDHAUSEN, DE; TECHNISCHE UNIVERSITAET CLAUSTHAL, 38678 CLAUSTHAL-ZELLERFELD, DE

R082 Change of representative

Representative=s name: GRAMM, LINS & PARTNER GBR, DE

Representative=s name: GRAMM, LINS & PARTNER PATENT- UND RECHTSANWAEL, DE

R082 Change of representative

Representative=s name: GRAMM, LINS & PARTNER PATENT- UND RECHTSANWAEL, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee