DE602004001869T2 - Fehlererkennung und fehlerbehebung für systematische und zufällige fehler innerhalb einer verarbeitungsstufe einer integrierten schaltung - Google Patents

Fehlererkennung und fehlerbehebung für systematische und zufällige fehler innerhalb einer verarbeitungsstufe einer integrierten schaltung Download PDF

Info

Publication number
DE602004001869T2
DE602004001869T2 DE602004001869T DE602004001869T DE602004001869T2 DE 602004001869 T2 DE602004001869 T2 DE 602004001869T2 DE 602004001869 T DE602004001869 T DE 602004001869T DE 602004001869 T DE602004001869 T DE 602004001869T DE 602004001869 T2 DE602004001869 T2 DE 602004001869T2
Authority
DE
Germany
Prior art keywords
delayed
processing
value
error
logic
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.)
Expired - Lifetime
Application number
DE602004001869T
Other languages
English (en)
Other versions
DE602004001869D1 (de
Inventor
Michael Todd Ann Arbor AUSTIN
Theodore David Ann Arbor BLAAUW
Nigel Trevor Ann Arbor MUDGE
Krisztian Flautner
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.)
ARM Ltd
University of Michigan
Original Assignee
ARM Ltd
Advanced Risc Machines Ltd
University of Michigan
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
Priority claimed from US10/392,382 external-priority patent/US7278080B2/en
Application filed by ARM Ltd, Advanced Risc Machines Ltd, University of Michigan filed Critical ARM Ltd
Publication of DE602004001869D1 publication Critical patent/DE602004001869D1/de
Application granted granted Critical
Publication of DE602004001869T2 publication Critical patent/DE602004001869T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1695Error detection or correction of the data by redundancy in hardware which are operating with time diversity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • G06F11/167Error detection by comparing the memory output
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • 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
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/104Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error using arithmetic codes, i.e. codes which are preserved during operation, e.g. modulo 9 or 11 check
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1608Error detection by comparing the output signals of redundant hardware
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/183Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components

Description

  • Die vorliegende Erfindung bezieht sich auf das Gebiet der integrierten Schaltkreise. Genauer gesagt bezieht die vorliegende Erfindung sich auf die Erfassung von Fehlern einschließlich sowohl von Zufallsfehlern als auch von systematischen Fehlern und die Reparatur bzw. Wiederherstellung aus solchen Fehlern innerhalb der Verarbeitungsstufe eines integrierten Schaltkreises.
  • Es ist bekannt, integrierte Schaltkreise vorzusehen, die als aus einer Reihe von seriell miteinander verbundenen Verarbeitungsstufen gebildet betrachtet werden können (beispielsweise ein Pipeline-Schaltkreis). Zwischen jeder der Stufen befindet sich ein Signaleinfangelement, wie z. B. ein Zwischenspeicher oder ein Abfrageverstärker, in welchem einer oder mehrere Signalwerte gespeichert sind. Die Verarbeitungslogik jeder Verarbeitungsstufe reagiert auf Eingangswerte, die aus vorhergehenden Verarbeitungsstufen oder von irgendwo anders her empfangen wurden, um Ausgangssignalwerte zu erzeugen, die in einem zugehörigen Ausgangszwischenspeicher gespeichert werden (müssen). Die Zeit, welche die Verarbeitungslogik benötigt, um ihre Verarbeitungsoperationen abzuschließen, legt die Geschwindigkeit fest, mit welcher der integrierte Schaltkreis arbeiten kann. Wenn die Verarbeitungslogik aller Stufen in der Lage ist, ihren Verarbeitungsvorgang in einer kurzen Zeitdauer abzuschließen, so können die Signalwerte sehr schnell durch die Ausgangszwischenspeicher weitergeleitet werden, was zu einer Hochgeschwindigkeitsverarbeitung führt. Das System kann jedoch zwischen den Stufen keine Signale schneller weiterbewegen als die langsamste Verarbeitungslogik in der Lage ist, ihren Verarbeitungsvorgang des Empfangens der Eingangssignale und des Erzeugens entsprechender Ausgangssignale durchzuführen. Dies schränkt die maximale Leistungsfähigkeit des Systems ein.
  • In einigen Situationen ist es erwünscht, Daten so schnell wie möglich zu verarbeiten und dementsprechend werden die Verarbeitungsstufen so angesteuert, daß sie ihre Verarbeitungsvorgänge mit einer möglichst schnellen Rate bzw. Geschwindigkeit durchführen, bis die langsamste der Verarbeitungsstufen nicht mehr in der Lage ist, Schritt zu halten. In anderen Situationen ist der Stromverbrauch des integrierten Schaltkreises wichtiger als die Verarbeitungsgeschwindigkeit und die Betriebsspannung des integrierten Schaltkreises wird vermindert, um den Stromverbrauch zu reduzieren, und zwar bis zu einem Punkt, an welchem die langsamste der Verarbeitungsstufen wiederum nicht mehr in der Lage ist, Schritt zu halten. Diese beiden Situationen, in welchen die langsamste der Verarbeitungsstufen nicht in der Lage ist, Schritt zu halten, führt zu dem Auftreten von Verarbeitungsfehlern (d.h. systematischen Fehlern).
  • Eine Art der Vermeidung des Auftretens von Verarbeitungsfehlern besteht darin, den integrierten Schaltkreis mit Arbeitstakten anzusteuern bzw. zu treiben, die eine Frequenz haben, von welcher man weiß, daß sie um eine Toleranzspanne niedriger ist als das zulässige Minimum, welches dem ungünstigsten Fall in den Herstellungsvariationen zwischen verschiedenen integrierten Schaltkreisen, den gegebenen Betriebsbedingungen, den Datenabhängigkeiten der verarbeiteten Signale und dergleichen Rechnung trägt. Im Kontext des Spannungsniveaus ist es normal, einen integrierten Schaltkreis mit einem Spannungsniveau zu betreiben, welches ausreichend oberhalb eines minimalen Spannungsniveaus liegt, um sicherzustellen, daß alle Verarbeitungsstufen in der Lage sind, Schritt zu halten, wobei dem ungünstigsten Fall der Herstellungsvariation, der Umgebungsbedingungen, der Datenabhängigkeiten und dergleichen Rechnung getragen wird. Es versteht sich, daß der konventionelle Ansatz hinsichtlich der maximalen Betriebsfrequenz und der minimalen Betriebsspannung vorsichtig ist, um den ungünstigsten Bedingungen Rechnung zu tragen.
  • Außer systematischen Verarbeitungsfehlern, die daher rühren, daß die langsamsten der Verarbeitungsstufen nicht mehr in der Lage sind, Schritt zu halten, wenn ein Prozessor mit einer zu hohen Frequenz oder mit einer zu niedrigen Betriebsspannung arbeitet, sind integrierte Schaltkreise auch Zufallsfehlern ausgesetzt, die als Einzelereignisstörungen (SEUs) bekannt sind. Ein SEU ist ein Zufallsfehler (Bitsprung), der durch ein ionisierendes Teilchen, wie z. B. kosmische Strahlung oder ein Proton in einer Einrichtung induziert wird. Die Veränderung des Zustandes erzeugt eine Transiente, d.h. etwas Impulsartiges, so daß normalerweise ein Reset oder ein Neubeschreiben der Einrichtung anschließend ein normales Verhalten bewirkt. Es ist bekannt, Fehlerkorrekturcodes zu verwenden, um Zufallsfehler zu erfassen und zu korrigieren. Derartige Fehlerkorrekturtechniken führen jedoch als Folge der für die Fehlererfassung und Korrektur erforderlichen Verarbeitungszeit notwendigerweise eine Verzögerung ein. Diese Verarbeitungsverzögerung ist gerechtfertigt in Umgebungen, wie z. B. in verrauschten Kommunikationskanälen, wo die Fehlerraten hoch sind und es dennoch wichtig ist, Fehler in den verarbeiteten empfangenen Daten bis auf eine vorbestimmte Fehlerrate zu unterdrücken. Im Gegensatz dazu ist es im Falle von integrierten Schaltkreisen, in welchen es erwünscht ist, Daten so schnell wie möglich zu verarbeiten, unerwünscht, in kritischen Pfaden der Datenverarbeitungsvorgänge eine Fehlerkorrektur einzuführen wegen der Verzögerung und des zugehörigen negativen Einflusses auf die Leistungsfähigkeit, welche eine Fehlerkorrekturschaltung mit sich bringt.
  • Das US-Patent US-B-6,476,643 offenbart ein Verfahren zum Erfassen „weicher Fehler" in einem Schaltkreis, der Verarbeitungsstufen aufweist. Der Schaltkreis erfaßt in jeder Stufe den Signalausgangswert der Berechnung in zwei Zwischenspeichern: in dem ersten Zwischenspeicher wird das Signal zu einem zu einem nicht-verzögerten Zeitpunkt eingefangen (nicht verzögerter Zwischenspeicher), in einem zweiten Zwischenspeicher wird das Signal zu einem verzögerten Zeitpunkt eingefangen (verzögerter Zwischenspeicher). Das in dem nicht-verzögerten Zwischenspeicher gespeicherte Signal wird als Ergebnis an die nächste Verarbeitungsstufe geliefert. Die Signale, die in dem nicht-verzögerten Zwischenspeicher und in dem verzögerten Zwischenspeicher gespeichert sind, werden miteinander verglichen. Im Falle fehlender Übereinstimmung wird die Berechnung und die Signalaufnahme wiederholt.
  • Die vorliegende Erfindung wird durch die anhängenden unabhängigen Ansprüche definiert.
  • Unter einem Aspekt gesehen stellt die vorliegende Erfindung einen integrierten Schaltkreis zur Durchführung einer Datenverarbeitung bereit, wobei der integrierte Schaltkreis aufweist:
    eine Mehrzahl von Verarbeitungsstufen, ein Ausgangssignal einer Verarbeitungsstufe von zumindest einer Verarbeitungsstufe, welches als ein Verarbeitungsstufeneingangssignal einer nächstfolgenden Verarbeitungsstufe zugeführt wird, wobei die zumindest eine Verarbeitungsstufe aufweist:
    eine Verarbeitungslogik, die in der Weise betreibbar, daß sie einen Verarbeitungsvorgang nach zumindest einem codierten Eingangswert ausführt, um ein Ausgangssignal der Verarbeitungslogik zu erzeugen, wobei der codierte Eingangswert ein Eingangswert ist, auf welchen ein Fehlerkorrekturcode angewendet worden ist;
    ein nicht-verzögertes Signaleinfangelement, welches in der Weise betreibbar ist, daß es einen nicht-verzögerten Wert des Ausgangssignals der Verarbeitungslogik zu einem nicht-verzögerten Aufnahmezeitpunkt aufnimmt bzw. einfängt, wobei der nicht-verzögerte Wert der nachfolgenden Verarbeitungsstufe als das Verarbeitungsstufenausgangssignal zugeführt wird, welches auf die nicht-verzögerte Einfangzeit folgt,
    ein verzögertes Signaleinfangelement, welches in der Weise betreibbar ist, daß einen verzögerten Wert des Ausgangssignals der Verarbeitungslogik zu einem verzögerten Aufnahmezeitpunkt aufnimmt bzw. einfängt, der später liegt als die nicht-verzögerte Einfangzeit,
    eine Fehlerkorrekturlogik, die in der Weise betreibbar ist, daß sie ein Auftreten eines Zufallsfehlers in dem verzögerten Wert des Ausgangssignals der Verarbeitungslogik erfaßt, um festzustellen, ob der erfaßte Zufallsfehler unter Verwendung des Fehlerkorrekturcodes korrigierbar ist, und um entweder einen fehlerüberprüften verzögerten Wert zu erzeugen, oder um anzuzeigen, daß der erfaßte Zufallsfehler nicht korrigierbar ist,
    einen Komparator, der in der Weise betreibbar ist, daß er den nicht-verzögerten Wert mit dem fehlerüberprüften verzögerten Wert vergleicht, um eine Veränderung in dem Ausgangssignal der Verarbeitungslogik zu einem Zeitpunkt zu erfassen, der auf die nicht-verzögerte Einfangzeit folgt, wobei die Veränderung ein Anzeichen eines systematischen Fehlers ist, bei welchem die Verarbeitungslogik den Verarbeitungsvorgang zu dem verzögerten Einfangzeitpunkt noch nicht beendet hat oder ein Anzeichen eines Zufalls in dem nicht verzögerten Wert ist,
    eine Fehlerreparaturlogik, die in der Weise betreibbar ist, daß dann, wenn der Komparator die Veränderung in dem Ausgangssignal der Verarbeitungslogik erfaßt, derart betreibbar ist, daß sie einen Fehlerkorrekturvorgang durchführt, welcher die Verwendung des nicht-verzögerten Wertes unterdrückt, entweder durch Ersetzen des nicht-verzögerten Wertes durch den fehlerüberprüften verzögerten Wert in den nachfolgenden Verarbeitungsstufen, oder durch Auslösen einer Wiederholung des Verarbeitungsvorganges und der Verarbeitungsvorgänge nachfolgender Verarbeitungsstufen, wenn die Fehlerkorrekturlogik anzeigt, daß der erfaßte Zufallsfehler nicht korrigierbar ist.
  • Die vorliegende Technik geht von der Erkenntnis aus, daß der Betrieb der Verarbeitungsstufen selbst direkt überwacht werden kann, um die Grenzbedingungen herauszufinden, unter welchen sie versagen. Wenn tatsächlich Fehler auftreten, können diese Fehler korrigiert werden, so daß insgesamt keine fehlerhafte Operation erzeugt wird. Die durch das Vermeiden der übermäßig vorsichtigen Leistungseinschränkungen in den früheren Ansätzen erzielten Vorteile im Vergleich mit der direkten Beobachtung des Fehlerpunktes nach dem vorliegenden Ansatz sind mehr als eine Kompensation der zusätzlichen Zeit und Energie, die verbraucht werden beim Wiederherstellen bzw. Repa rieren des Systems, wenn ein Fehler auftritt. Das absichtliche Zulassen des Auftretens derartiger Verarbeitungsfehler, so daß kritische Pfade nicht mehr ihre Zeitablauferfordernisse erfüllen, widerspricht auf diesem technischen Gebiet in hohem Maße der Intuition, wo es normal ist, beträchtliche Bemühungen zu unternehmen, um sicherzustellen, daß alle kritischen Pfade immer ihre Zeitablauferfordernisse erfüllen.
  • Weiterhin geht die Erfindung von der Erkenntnis aus, daß Zufallsfehler in dem verzögerten Wert durch eine Fehlerkorrekturlogik erfaßt und korrigiert werden können, die abseits des kritischen Pfades der Datenverarbeitungsvorgänge eingesetzt wird. Wenn also durch den Vergleicher keine systematischen Verarbeitungsfehler erfaßt werden, so hat die Fehlerkorrekturlogik keinen nachteiligen Einfluß auf den schnellen Fortschritt der Berechnung. Für den Fall jedoch, daß tatsächlich ein Verarbeitungsfehler durch den Vergleicher erfaßt wird, ist der verzögerte Wert, der für die Verwendung durch die Fehlerreparaturlogik verfügbar ist, um ein weiteres Fortschreiten der Verarbeitung sicherzustellen, ein zuverlässiger Wert, mit welchem eine Zufallsfehlerüberprüfung und, soweit angemessen, auch eine Zufallsfehlerkorrektur durchgeführt worden ist. Unabhängig von dem Vorhandensein der Fehlerkorrekturlogik in dem Pfad des verzögerten Signalwertes gibt es, wenn durch den Vergleicher Verarbeitungsfehler erfaßt werden, eine Verzögerung in der Verarbeitung aufgrund des Erfordernisses, den Fehlerreparaturvorgang durchzuführen. Es gibt daher eine überraschende Synergie zwischen der Bereitstellung von verzögerten Aufnahmeelementen, die eine Reparatur beliebig induzierter systematischer Verarbeitungsfehler ermöglichen und der Anwendung von Fehlerkorrekturcodierung um Zufallsfehler in den verzögerten Signalwerten zu korrigieren. Die Fehlerkorrekturlogik bietet den Vorteil der Verbesserung der Zuverlässigkeit des verzögerten Wertes durch Erfassen und Korrigieren von Zufallsfehlern, ohne das Fortschreiten der Berechnung signifikant zu verzögern.
  • Es versteht sich, daß der durch die Verarbeitungslogik durchgeführte Verarbeitungsvorgang ein nicht-trivialer Verarbeitungsvorgang sein könnte, der dazu führt, daß der Wert des Eingangssignals sich relativ zu dem Wert des Ausgangssignals verändert, z. B. wenn der Verarbeitungsvorgang eine Multiplikations-Operation oder eine Divisions-Operation mit nicht-trivialen Operanden ist. Gemäß einer bevorzugten Auslegung ist jedoch der durch die Verarbeitungslogik ausgeführte Verarbeitungsvorgang bzw. die Verarbeitungsoperation eine Operation, für welche das Ausgangssignal der Verarbeitungslogik im wesentlichen gleich dem Eingangswert der Verarbeitungsstufe ist, wenn in dem Verarbeitungsvorgang keine Fehler auftreten.
  • Beispielsweise könnte gemäß einer ersten bevorzugten Auslegung der Datenverarbeitungsvorgang, der in der Regel nicht den Eingangswert verändert, eine Lese- oder Schreiboperation sein, die durch einen Speicherschaltkreis ausgeführt wird. Gemäß einer alternativen bevorzugten Auslegung wird die zumindest eine Verarbeitungsstufe durch ein Register ausgeführt und der Verarbeitungsvorgang ist ein Lese/Schreibe- oder Verschiebungsvorgang. Gemäß einer weiteren alternativen bevorzugten Auslegung, in welcher der Ausgangssignalwert gleich dem Eingangssignalwert sein sollte, wird die zumindest eine Verarbeitungsstufe durch einen Multiplexer ausgeführt und der Verarbeitungsvorgang ist ein Vorgang bzw. die Operation eines Multiplexers.
  • Während die vorliegende Technik sowohl auf synchrone als auch auf asynchrone Datenverarbeitungsschaltkreise anwendbar ist, ist die Erfindung gut geeignet für synchrone Datenverarbeitungsschaltkreise, in welchen die Mehrzahl von Verarbeitungsstufen jeweils Pipeline-Stufen innerhalb einer synchronen Pipeline sind.
  • Es versteht sich, daß eine Vielfalt unterschiedlicher Fehlerkorrekturcodes verwendet werden könnte, um den Eingangswert mittels Fehlerkorrektur zu codieren, beispielsweise in Form linearer Blockcodierungen, Faltungscodes oder Turbocodes. Für Anordnungen, in welchen der Ausgangswert im wesentlichen gleich dem Eingangswert der Verarbeitungslogik ist, ist es jedoch bevorzugt, daß der Eingangswert unter Verwendung eines Hamming-Codes zur Fehlerkorrektur codiert wird und daß die Fehlerreparaturlogik die Korrektur und die Erfassung unter Verwendung des Hamming-Codes durchführt. Hamming-Codes sind einfach zu implementieren und geeignet für das Erfassen und Korrigieren von Einzelbit-Fehlern, wie sie typischerweise bei SEUs entstehen.
  • Auch wenn einige bevorzugte Ausgestaltungen den Wert erhaltende Verarbeitungsvorgänge beinhalten, wie z. B. Lese/Schreibe-Vorgänge und Datenverschiebeoperationen, ist in alternativen bevorzugten Ausgestaltungen der durch die Verarbeitungslogik durchgeführte Verarbeitungsvorgang ein den Wert verändernder Vorgang, für welchen das Ausgangssignal der Verarbeitungslogik von dem Eingangswert der Verarbeitungsstufe verschieden sein kann, selbst wenn keine Fehler in dem Verarbeitungsvorgang auftreten. Die vorliegende Technik ist deshalb für die Anwendung auf die Verarbeitung logischer Elemente, z. B. Addierer, Multiplizierer und Verschieber (Stellenschieber) geeignet.
  • In Ausgestaltungen, in welchen der Verarbeitungsvorgang ein den Wert verändernder Verarbeitungsvorgang ist, ist es bevorzugt, daß der Eingangswert unter Verwendung eines arithmetischen Codes für die Fehlerkorrektur codiert wird, welcher einen der folgenden aufweist:
    ein AN-Code, ein Restwertcode, ein inverser Restwertcode oder ein Restwertnummerncode. Derartige arithmetische Codes erleichtern die Erfassung und Korrektur von Zufallsfehlern bei Verarbeitungsvorgängen, die arithmetische Operatoren beinhalten.
  • Es versteht sich, daß der Komparator allein darauf beruhen könnte, das Vorhandensein systematischer Fehler zu erfassen. In bevorzugten Ausführungsformen weist jedoch der integrierte Schaltkreis einen Metastabilitätsdetektor auf, der in der Weise betreibbar ist, daß er Metastabilität in dem nicht-verzögerten Wert entdeckt und veranlaßt, daß die Fehlerreparaturlogik die Verwendung des nicht-verzögerten Wertes unterdrückt, wenn sich herausstellt, daß er metastabil ist.
  • Wenn das Auftreten eines systematischen Fehlers über den Komparator festgestellt wurde, so gibt es eine Vielfalt unterschiedlicher Wege, auf welchen dieses korrigiert oder kompensiert werden kann. In einer bevorzugten Art einer Ausführungsform ist die Fehlerreparaturlogik in der Weise betreibbar, daß sie den nicht-verzögerten Wert durch den fehlerüberprüften verzögerten Wert als das Ausgangssignal der Verarbeitungsstufe ersetzt. Das Ersetzen des bekannt fehlerhaften Ausgangssignals der Verarbeitungsstufe durch den korrekten Wert, der aus der Abfrage des fehlerüberprüften verzögerten Wertes stammt, wird in hohem Maße bevorzugt, da er dazu dient, das weitere Fortschreiten durch die Datenverarbeitungsvorgänge sicherzustellen, auch wenn Fehler auftreten und eine Kompensation erfordern.
  • Eine bevorzugte Ausgestaltung ist eine, in welcher die Fehlerreparaturlogik in der Weise arbeitet, daß sie erzwingt, daß der verzögerte Wert anstelle des nicht-verzögerten Wertes in dem nicht-verzögerten Zwischenspeicher gespeichert wird.
  • Während die vorliegende Technik sowohl auf synchrone als auch auf asynchrone Datenverarbeitungsschaltkreise anwendbar ist, ist die Erfindung besonders gut geeignet für synchrone Datenverarbeitungsschaltkreise, in welchen Verarbeitungsvorgänge in den Verarbeitungsstufen durch ein nicht-verzögertes Taktsignal getrieben werden.
  • Im Kontext von Systemen, in welchen die Verarbeitungsstufen durch das nicht-verzögerte Taktsignal getrieben werden, kann die Fehlerreparaturlogik dies verwenden, um die Korrektur bzw. Wiederherstellung nach einem Fehler zu ermöglichen, indem das nicht-verzögerte Taktsignal torgesteuert wird, um ausreichend Zeit für die nachfolgende Verarbeitungsstufe zu gewähren, sich von der Eingabe des nicht-korrekten nicht-verzögerten Wertes zu erholen und statt dessen den korrekten, fehlerüberprüften verzögerten Wert zu verwenden.
  • In dem Kontext von Ausführungsformen, welche ein nicht-verzögertes Taktsignal verwenden, können die Aufnahme- bzw. Einfangzeiten aus vorbestimmten Phasenpunkten in dem nicht-verzögerten Taktsignal abgleitet werden und ein verzögertes Taktsignal kann aus dem nicht-verzögerten Taktsignal abgeleitet werden. Die Verzögerung zwischen dem nicht-verzögerten Einfangen und dem verzögerten Einfangen kann als die Phasenverschiebung zwischen diesen beiden Taktsignalen definiert werden.
  • Die Erfassung und die Wiederherstellung nach systematischen Fehlern kann in einer Vielfalt unterschiedlicher Situationen angewendet werden, ist jedoch besonders gut geeignet für Situationen, in welchen man Betriebsparameter eines integrierten Schaltkreises abhängig von der Erfassung derartiger Fehler dynamisch steuern bzw. kontrollieren möchte. Im Gegensatz zur Intuition kann die vorliegende Erfindung verwendet werden, um Betriebsparameter derart zu steuern, daß das System mit einer systematischen Fehlerrate arbeitet, die nicht null ist und die als eine Zielrate aufrecht erhalten wird, da dieses einer verbesserten Gesamtleistungsfähigkeit entsprechen kann, entweder hinsichtlich der Geschwindigkeit oder hinsichtlich des Stromverbrauchs, selbst wenn man die Maßnahmen berücksichtigt, die notwendig sind für die Wiederherstellung nach dem Auftreten sowohl systematischer als auch zufälliger Fehler.
  • Die Betriebsparameter, die variiert werden können, umfassen die Betriebsspannung, eine Betriebsfrequenz, eine Vorspannung des Hauptteils des integrierten Schaltkreises (welche Schwellwertniveaus regelt) und die Temperatur, neben weiteren Parametern.
  • Um sicherzustellen, daß die in dem verzögerten Zwischenspeicher aufgenommenen Daten immer korrekt sind, wird ein oberer Grenzwert der maximalen Verzögerung in der Verarbeitungslogik jeder Stufe so eingestellt, daß an keinem Betriebspunkt die Verzögerung der Verarbeitungslogik irgendeiner Stufe die Summe aus der Taktperiode plus dem Betrag, um welchen die verzögerte Einfangzeit verzögert ist, überschreitet. Als unterer Grenzwert irgendeiner Verarbeitungsverzögerung besteht das Erfordernis, daß die Verarbeitungslogik irgendeiner Stufe eine Verarbeitungszeit haben sollte, welche die Zeit überschreiten sollte, um welche die verzögerte Aufnahme bzw. das verzögerte Einfangen auf die nicht-verzögerte Aufnahme folgt, um so sicherzustellen, daß die folgenden Daten, welche entlang kurzer Pfade weitergeleitet werden, nicht in unpassender Weise den Aufnahmewert der verzögerten Daten verfälschen. Dies kann sichergestellt werden durch „Abpuffern" kurzer Pfade mit einem oder mehreren Verzögerungselementen, je nachdem, was erforderlich ist.
  • Die vorliegende Technik ist auf eine breite Vielfalt unterschiedlicher Arten integrierter Schaltkreise anwendbar, wie z. B. auf allgemeine digitale Verarbeitungsschaltkreise, ist jedoch besonders gut geeignet für Systeme, in welchen die Verarbeitungsstufen Teil eines Datenprozessors oder Mikroprozessors sind.
  • Um die Verwendung von Steueralgorithmen zum Steuern der Betriebsparameter zu erleichtern, umfassen bevorzugte Ausführungsformen einen Fehlerzählerschaltkreis, der in der Weise betreibbar ist, daß er eine Anzahl der Erfassung von Fehlern speichert, welche einer Veränderung in dem verzögerten Wert im Vergleich zu dem nicht-verzögerten Wert entsprechen. Auf diesen Fehlerzähler kann durch Software zugegriffen werden, um die Steuerung von Betriebsparametern auszuführen.
  • Es versteht sich, daß das verzögerte Signaleinfangelement und das nicht-verzögerte Signaleinfangelement, welche oben erläutert wurden, eine große Vielfalt unterschiedlicher Formen annehmen könnten. Insbesondere können diese so betrachtet werden, daß sie Ausführungsformen in Form von Flip-Flops, Zwischenspeichern vom D-Typ, sequenziellen Elementen, Speicherzellen, Registerelementen, Abfrageverstärken, Kombinationen daraus und eine breite Vielfalt anderer Speichereinrichtungen annehmen, die in der Lage sind, einen Signalwert zu speichern.
  • Unter einem anderen Aspekt gesehen stellt die vorliegende Erfindung ein Verfahren zum Steuern eines integrierten Schaltkreises zum Ausführen einer Datenverarbeitung bereit, wobei das Verfahren die Schritte aufweist:
    Zuführen eines Ausgangswertes einer Verarbeitungsstufe von zumindest einer Verarbeitungsstufe aus einer Mehrzahl von Verarbeitungsstufen als ein Eingangssignal einer Verarbeitungsstufe, die eine folgende Verarbeitungsstufe ist, wobei die zumindest eine Verarbeitungsstufe in der Weise betreibbar ist, daß sie:
    einen Verarbeitungsvorgang mit der Verarbeitungslogik mit zumindest einem codierten Eingangswert ausführt, um ein Ausgangssignal der Verarbeitungslogik zu erzeugen, wobei der codierte Eingangswert ein Eingangswert ist, auf welchen ein Fehlerkorrekturcode angewendet worden ist,
    Einfangen (Erfassen) eines nicht-verzögerten Wertes des Ausgangssignals der Verarbeitungslogik zu einem nicht-verzögerten Einfangzeitpunkt, wobei der nicht-verzögerte Wert der nachfolgenden Verarbeitungsstufe als Ausgangssignal der (vorherigen) Verarbeitungsstufe zugeführt wird und zwar im Anschluß an die nicht-verzögerte Einfangzeit,
    Einfangen (Erfassen) eines verzögerten Wertes des Ausgangssignals der Verarbeitungslogik zu einem verzögerten Einfangzeitpunkt, der später liegt als der nicht-verzögerte Einfangzeitpunkt,
    Erfassen eines Auftretens eines Zufallsfehlers in dem verzögerten Wert des Ausgangssignals der Verarbeitungslogik unter Verwendung einer Fehlerkorrekturlogik, um festzustellen, ob der erfaßte Zufallsfehler unter Verwendung des Fehlerkorrekturcodes korrigierbar ist und um entweder einen fehlerüberprüften verzögerten Wert zu erzeugen oder um anzuzeigen, daß der erfaßte Zufallsfehler nicht korrigierbar ist,
    Vergleichen des nicht-verzögerten Wertes mit dem fehlerüberprüften verzögerten Wert, um eine Veränderung in dem Ausgangssignal der Verarbeitungslogik zu einem Zeitpunkt im Anschluß an die nicht-verzögerte Einfangzeit zu erfassen, wobei die Veränderung ein Anzeichen eines systematischen Fehlers ist, wonach die Verarbeitungslogik den Verarbeitungsvorgang zu dem nicht-verzögerten Einfangzeitpunkt noch nicht beendet hat, oder ein Anzeichen eines Zufallsfehlers in dem nicht-verzögerten Wert ist, und
    wenn die Veränderung erfaßt wird, Durchführen eines Fehlerreparaturvorgangs unter Verwendung der Fehlerreparaturlogik, welche den nicht-verzögerten Wert unterdrückt, und zwar entweder durch Ersetzen des nicht-verzögerten Wertes durch den fehlerüberprüften verzögerten Wert in nachfolgenden Verarbeitungsstufen, oder durch Auslösen einer Wiederholung des Verarbeitungsvorgangs und der Verarbeitungsvorgänge folgender Verarbeitungsstufen, wenn die Fehlerkorrekturlogik anzeigt, daß der erfaßte Zufallsfehler nicht korrigierbar ist.
  • Es werden nunmehr Ausführungsformen der Erfindung lediglich anhand eines Beispiels und unter Bezug auf die beigefügten Zeichnungen beschrieben, von denen:
  • 1 schematisch eine Mehrzahl von Verarbeitungsstufen zeigt, auf welche die vorliegende Technik angewendet wird,
  • 2 ein Blockdiagramm ist, welches schematisch einen Schaltkreis für die Verwendung mit der vorliegenden Technik zeigt,
  • 3 ein Schaltkreisdiagramm ist, welches schematisch einen nicht-verzögerten Zwischenspeicher und einen verzögerten Zwischenspeicher gemeinsam mit einem zugehörigen Vergleicher bzw. Komparator und einer Fehlerreparaturlogik zeigt,
  • 4A und 4B ein Flußdiagramm sind, welches schematisch die Betriebsweise des Schaltkreises nach 1 zeigt,
  • 5 schematisch einen Speicherschaltkreis zeigt, der einen schnellen Lesemechanismus und einen langsamen Lesemechanismus umfaßt,
  • 6 eine alternative Schaltkreisanordnung für einen Teil des Schaltkreises nach 5 zeigt,
  • 7 ein Flußdiagramm ist, welches schematisch die Betriebsweise des Speicherschaltkreises nach 5 zeigt,
  • 8 einen Pipeline-Bus mit nicht-verzögerten Zwischenspeichern und verzögerten Zwischenspeichern zwischen den Busstufen zeigt,
  • 9 ein Flußdiagramm ist, welches schematisch die Betriebsweise des Pipeline-Bus nach 8 zeigt,
  • 10 schematisch die Erzeugung von Steuersignalen für die Steuerung eines Mikroprozessors zeigt, die sowohl eine nicht-verzögerte Zwischenspeicherung und Ausgabe und eine verzögerte Zwischenspeicherung und Ausgabe erfahren,
  • 11 ein Flußdiagramm ist, welches schematisch ein Beispiel der Betriebsweise des Schaltkreises nach 10 zeigt,
  • 12 eine Verarbeitungspipeline zeigt, welche nicht-verzögerte Zwischenspeicher und verzögerte Zwischenspeicher umfaßt, wobei diese verzögerten Zwischenspeicher während einer Betriebsart mit geringem Energieverbrauch als Datenhaltespeicher erneut verwendet werden,
  • 13 ein Flußdiagramm ist, welches schematisch die Betriebsweise des Schaltkreises nach 12 zeigt,
  • 14 schematisch eine Mehrzahl von Verarbeitungsstufen zeigt, auf welche Fehlerkorrektur und verzögerte Zwischenspeicher angewendet wurden,
  • 15 schematisch eine Fehlerkorrektur für Daten zeigt, die durch einen Kanal laufen, welcher einfach den Datenwert unverändert von einem Eingang zu einem Ausgang weiterleitet, wenn keine Fehler auftauchen,
  • 16 schematisch darstellt, wie eine Fehlerkorrektur für ein einen Wert veränderndes Logikelement, wie z. B. einen Addierer, Multiplizierer oder Stellenschieber ausgeführt wird,
  • 17 ein Flußdiagramm ist, welches schematisch die Betriebsweise des Schaltkreises nach 14 zeigt,
  • 18 schematisch darstellt, wie verzögerte und nicht-verzögerte Zwischenspeicher verwendet werden können, um die relativen Phasen von Taktsignalen innerhalb einer Verarbeitungspipeline zu steuern,
  • 19 und 20 schematisch entsprechende Verwendungen von Unterbrechungen und Blaseneinfügung bei der Wiederherstellung nach Fehlern veranschaulicht, und
  • 21 einen nicht-verzögerten und einen verzögerten Zwischenspeicher für die Verwendung zwischen Verarbeitungsstufen zeigt, wobei der verzögerte Zwischenspeicher als ein serieller Abtastkettenspeicher erneut verwendet wird.
  • 1 veranschaulicht einen Teil eines integrierten Schaltkreises, der ein Teil einer synchronen Pipeline innerhalb eines Prozessorkernes sein kann, wie z. B. ein ARM-Prozessorkern, der von ARM Limited in Cambridge, England hergestellt wird. Die synchrone Pipeline ist aus einer Mehrzahl gleichartiger Verarbeitungsstufen aufgebaut. Die erste Stufe weist eine Verarbeitungslogik 2 auf, auf welche ein nicht-verzögerter Zwischenspeicher 4 in Form eines Flip-Flops zusammen mit einem Komparator 6 und einem verzögerten Zwischenspeicher 8 folgt. Der Begriff „Zwischenspeicher", wie er hier verwendet wird, umfaßt jedes Schaltkreiselement, welches in der Lage ist, einen Signalwert zu speichern, und zwar unabhängig vom Auslösen bzw. Triggern, Takt und anderen Erfordernissen. Anschließende Verarbeitungsstufen sind in ähnlicher Weise ausgebildet. Ein nicht-verzögertes Taktsignal 10 treibt die Verarbeitungslogik und die nicht-verzögerten Zwischenspeicher 4 innerhalb aller Verarbeitungsstufen in der Weise, daß sie synchron als Teil einer synchronen Pipeline arbeiten. Ein verzögertes Taktsignal 12 wird den verzögerten Zwischenspeichern 8 der entspre chenden Verarbeitungsstufen zugeführt. Das verzögerte Taktsignal 12 ist eine phasenverschobene Version des nicht-verzögerten Taktsignals 10. Das Ausmaß der Phasenverschiebung regelt die Verzögerungsdauer zwischen dem Einfangen des Ausgangswertes der Verarbeitungslogik 2 durch den nicht-verzögerten Zwischenspeicher 4 und das Einfangen des Ausgangswertes der Verarbeitungslogik 2 zu einem späteren Zeitpunkt, welches durch den verzögerten Zwischenspeicher 8 ausgeführt wird. Wenn die Verarbeitungslogik 2 in Anbetracht der existierenden nicht-verzögerten Taktsignalfrequenz, der Betriebsspannung, welche dem integrierten Schaltkreis zugeführt werden, der Hauptteilvorspannung, der Temperatur etc. innerhalb ihrer Grenzen arbeitet, so hat die Verarbeitungslogik 2 ihre Verarbeitungsvorgänge zu dem Zeitpunkt durchgeführt, zu welchem der nicht-verzögerte Zwischenspeicher 4 ausgelöst wird, um seinen Wert einzufangen. Konsequenterweise hat der verzögerte Zwischenspeicher 8, wenn er den Ausgangswert der Verarbeitungslogik 2 später einfängt, denselben Wert wie derjenige, der mit dem nicht-verzögerten Zwischenspeicher 4 eingefangen wurde. Dementsprechend erfaßt der Komparator 6 keine Veränderung, welche während der Verzögerungsdauer auftritt und ein Wiederherstellungsvorgang wegen eines Fehlers wird nicht ausgelöst. Wenn umgekehrt die Betriebsparameter des integrierten Schaltkreises derart sind, daß die Verarbeitungslogik 2 ihren Verarbeitungsvorgang zu dem Zeitpunkt, zu welchem der nicht-verzögerte Zwischenspeicher 4 seinen Wert einfängt, nicht abgeschlossen hat, so nimmt der verzögerte Zwischenspeicher 8 einen anderen Wert auf und dieses wird durch den Komparator 6 erfaßt, welcher dadurch erzwingt, daß ein Vorgang zur Wiederherstellung nach dem Fehler durchgeführt wird. Man erkennt, daß der Fehlerreparaturvorgang bzw. der Wiederherstellungsvorgang nach dem Fehler in der Weise ausgeführt werden könnte, daß der Ausgangswert des nicht-verzögerten Zwischenspeichers, der der nachfolgenden Verarbeitungsstufe während der Zeit zugeführt wurde, die auf die Zeit seines Einfanges folgte, ersetzt wird durch den verzögerten Wert, der in dem verzögerten Zwischenspeicher 8 gespeichert ist. Dieser verzögerte Wert kann zusätzlich zwangsweise in dem nicht-verzögerten Zwischenspeicher gespeichert werden und dadurch den zuvor in fehlerhafter Weise eingefangenen Wert, der darin gespeichert ist, ersetzen.
  • Ein Metastabilitätsdetektor 7 dient dazu, eine Metastabilität in dem Ausgangswert des nicht-verzögerten Zwischenspeichers 4 zu erfassen, d.h. einen nicht klar definierten logischen Zustand. Wenn eine solche Metastabilität erfaßt wird, wird sie als ein Fehler behandelt und der Wert des Verzögerungsspeichers 6 wird statt dessen verwendet.
  • Bei Erfassung eines Fehlers kann die gesamte Pipeline angehalten bzw. unterbrochen werden, indem das nicht-verzögerte Taktsignal 10 für eine zusätzliche Verzögerungsperiode umgetaktet wird, um der Verarbeitungslogik in der folgenden Verarbeitungsstufe ausreichend Zeit zu gewähren, um in angemessener Weise auf den korrigierten Eingangssignalwert zu reagieren, der ihr zugeführt wird. Alternativ ist es möglich, daß die stromaufwärts liegenden Verarbeitungsstufen angehalten werden, wobei nachfolgende Verarbeitungsstufen ihre Arbeit fortsetzen können, wobei eine Blase bzw. eine Leerlaufperiode in die Pipeline entsprechend standardmäßigen Bearbeitungstechniken von Pipelines eingesetzt wird, welche eine Gegenstromarchitektur verwenden (siehe die „Blasen"- und „Spül"-Speicher der Figur. Eine andere Alternative besteht darin, daß die gesamte Verarbei tungspipeline zurückgesetzt wird, wobei die Werte des verzögerten Zwischenspeichers zwangsweise in die nicht-verzögerten Zwischenspeicher jeder Stufe eingesetzt werden und die Verarbeitung wieder aufgenommen wird. Die erneute Verwendung des Wertes der verzögerten Zwischenspeichers anstelle des fehlerhaften Wertes und anstelle eines Versuchs der Zurückrechnung stellt sicher, daß der Verlauf durch die Verarbeitungsstufen weiter fortschreitet, auch wenn ein Fehler aufgetreten ist.
  • Es gibt Einschränkungen hinsichtlich der Beziehung zwischen der Verarbeitungszeit, die die Verarbeitungslogik innerhalb der Verarbeitungsstufen braucht, und der Verzögerung zwischen der nicht-verzögerten Einfangzeit und der verzögerten Einfangzeit. Insbesondere sollte die minimale Verarbeitungszeit irgendeiner Verarbeitungsstufe nicht kürzer sein als die Verzögerung, um sicherzustellen, daß der verzögerte Wert, der eingefangen wurde, nicht durch neue Daten verfälscht ist, die von einer Verarbeitungsstufe mit kurzer Verzögerung ausgegeben wurden. Es kann notwendig sein, Verarbeitungsstufen mit kurzer Verzögerung durch zusätzliche Verzögerungselemente abzupuffern, um sicherzustellen, daß sie nicht unter diese minimale Verarbeitungszeit fallen. Auf der anderen extremen Seite muß sichergestellt werden, daß die maximale Verarbeitungsverzögerung der Verarbeitungslogik innerhalb einer Verarbeitungsstufe, welche zu irgendeinem Zeitpunkt des Betriebes für irgendwelche Betriebsparameter auftreten kann, nicht größer ist als die Summe aus der normalen, nicht-verzögerten Betriebstaktperiode und dem Verzögerungswert, so daß der in dem verzögerten Zwischenspeicher eingefangene verzögerte Wert als stabil und korrekt sichergestellt wird.
  • Es gibt eine Anzahl alternativer Wege, auf welche das System gesteuert werden könnte, um den Stromverbrauch und die Leistungsfähigkeit abzustimmen. Gemäß einer Ausgestaltung des Fehlerzählerschaltkreises (nicht dargestellt) ist vorgesehen, die Anzahl von Erfassungen nicht gleicher Werte durch den Komparator 6 zu zählen. Diese Zahl von erfaßten Fehlern, die repariert wurden bzw. nach denen eine Wiederherstellung stattfand, kann verwendet werden, um die Betriebsparameter entweder durch Hardware implementierte oder durch Software implementierte Algorithmen einzustellen. Der Zähler kann durch Software gelesen werden. Die beste Gesamtleistungsfähigkeit, sei es hinsichtlich der Geschwindigkeit oder des geringsten Energieverbrauchs, kann erzielt werden, indem der integrierte Schaltkreis absichtlich mit Parametern betrieben wird, die ein Niveau von Fehlern aufrechterhalten, welches nicht null ist. Der Gewinn, den man aus dem Betrieb mit nicht-vorsichtig gewählten Betriebsparametern unter derartigen Umständen erzielt, übersteigt den Nachteil, der durch das Erfordernis eingeführt wird, eine Wiederherstellung nach Fehlern durchzuführen. Gemäß einer alternativen Ausgestaltung ist ein Hardwarezähler als ein die Leistungsfähigkeit überwachendes Modul vorgesehen und ist in der Weise betreibbar, daß er nützliche Arbeit und Fehlerreparaturarbeit verfolgt. Insbesondere zählt der Zähler weiterhin die Anzahl nützlicher Anweisungen, die verwendet wurden, um die ausgeführten Verarbeitungsvorgänge weiter voranzutreiben, und verfolgt auch die Anzahl der Befehle und „Blasen", die ausgeführt werden, um eine Wiederherstellung nach einem Fehler bzw. eine Fehlerreparatur durchzuführen. Die Software ist in der Weise betreibbar, daß sie den Hardwarezähler lesen kann und die gezählten Werte verwenden kann, um die Zusatzlast an Fehlerreparatur und deren Auswirkungen auf die Systemleistungsfähigkeit mit dem verringerten Energieverbrauch auszugleichen, der durch das Betreiben des integrierten Schaltkreises mit einer nicht-verschwindenden Fehlerrate erzielt wird.
  • 2 ist ein Schaltkreisdiagramm, welches schematisch einen Schaltkreis für die Verwendung in der vorliegenden Technik veranschaulicht. Der obere Abschnitt der 2 veranschaulicht Schaltkreiselemente, die innerhalb jeder Verarbeitungsstufe vorgesehen sind, nämlich den nicht-verzögerten Zwischenspeicher 4, den verzögerten Zwischenspeicher 8 und den Vergleicher 6. Ein Metastabilitätsdetektor 7 dient dazu, eine Metastabilität im Ausgang des nicht-verzögerten Zwischenspeichers 4 zu erfassen und dies löst außerdem die Erzeugung eines Fehlersignals aus. Fehlersignale von einer Mehrzahl derartiger Stufen werden den entsprechenden Eingängen eines ODER-Gatters 100 zugeführt, wobei ein globales Fehlersignal erzeugt wird, wenn ein Fehler in irgendeiner Prozessorstufe erfaßt wird. Das globale Fehlersignal kann verwendet werden, um ein Spülen und das Einfügen von Blasensignalen auszulösen wie dargestellt. Die Schaltkreise 102 erfassen, ob das Fehlersignal selbst metastabil ist. Das Fehlersignal wird mit einem positiv vorgespannten Zwischenspeicher, der sich auf einen höheren Spannungswert bezieht, und einem negativ vorgespannten Zwischenspeicher, der sich auf eine niedrigere Spannung bezieht, gesichert. Wenn die beiden sich in ihrem gesicherten Wert unterscheiden, ist dies ein Anzeichen, daß das Fehlersignal metastabil ist und es wird das Alarmsignal ausgelöst. Durch Zwischenspeichern des Fehlersignals und Warten während eines gesamten Taktzyklus, bevor es abgetastet bzw. abgefragt wird (d.h. zwei Zwischenspeicher in Reihe), ist die Wahrscheinlichkeit, daß das Alarmsignal metastabil ist, vernachlässigbar. Es ist signifikant, das dann, wenn das Alarmsignal ausgelöst wird, der wiederhergestellte Wert aus dem verzögerten Speicher aufgrund der Metastabilität des Fehlersignals verfälscht sein könnte. In diesem Fall wird der Befehl ebenfalls ungültig gemacht und es gibt kein weiteres Fortschreiten. Demnach muß die Pipeline gespült, der Befehl erneut gestartet und die Taktfrequenz abgesenkt werden, um sicherzustellen, daß das Fehlersignal beim erneuten Versuch desselben Befehls nicht metastabil ist (was ansonsten eine unendliche Schleife erneuter Versuche verursachen könnte).
  • 3 ist ein Schaltkreis, welcher den nicht-verzögerten Zwischenspeicher, den verzögerten Zwischenspeicher, den Komparator und zumindest einen Teil der Schaltung zur Fehlerreparatur bzw. Wiederherstellung nach einem Fehler genauer darstellt. Man kann erkennen, daß der nicht-verzögerte Zwischenspeicher 4 in Form eines Flip-Flops vorliegt, der durch die zwei Verriegelungen bzw. Zwischenspeicher 14, 16 bereitgestellt wird. Der verzögerte Zwischenspeicher 8 liegt in Form eines einzelnen Rückkopplungselementes vor. Ein XOR-Gatter 18 dient als Komparator. Ein Fehlersignal 20 erscheint ggf. aus dem Schaltkreis nach 3 und kann dem Fehlerzählerschaltkreis zugeführt werden, wie es zuvor erläutert wurde, oder anderen, die Betriebsparameter einstellenden Schaltkreisen oder Systemen. Das Fehlersignal 20 dient dazu, einen Multiplexer 22 umzuschalten, der erzwingt, daß der verzögerte Wert in dem verzögerten Zwischenspeicher 8 in der Verriegelung 14 des nicht-verzögerten Zwischenspeichers 4 gespeichert wird, wobei Metastabilitätserfassungsschaltkreise 24 dazu dienen, das Auftreten von Metastabilität innerhalb des nicht-verzögerten Zwi schenspeichers 4 zu erfassen und auch dieses zu verwenden, um ein Fehlersignal auszulösen, was bewirkt, daß der fehlerhafte metastabile Wert durch den innerhalb des verzögerten Zwischenspeichers 8 gespeicherten verzögerten Wert ersetzt wird.
  • Die 4A und 4B sind Flußdiagramme, welche schematisch die Betriebsweise der Schaltkreise nach den 1, 2 und 3 veranschaulichen.
  • Bei Schritt 26 erzeugt die Verarbeitungslogik aus ihrer Stufe i ihr Ausgangssignal zum Zeitpunkt Ti. In Schritt 28 wird dieses durch den nicht-verzögerten Zwischenseichter erfaßt bzw. eingefangen und bildet den nicht-verzögerten Wert. In Schritt 30 wird damit begonnen, den nicht-verzögerten Wert aus dem nicht-verzögerten Zwischenspeicher an die folgende Verarbeitungsstufe i + 1 weiterzuleiten, welche auf der Basis dieses Wertes mit der Verarbeitung beginnt. Die Verarbeitung kann sich als fehlerhaft erweisen und es muß eine Wiederherstellung erfolgen, falls ein Fehler erfaßt wird.
  • Schritt 32 erlaubt es, daß die Verarbeitungslogik die Verarbeitung für eine weitere Zeitperiode, nämlich die Verzögerungszeit, weiter fortsetzt, um zum Zeitpunkt Ti + d ein Ausgangssignal zu erzeugen. Dieses Ausgangssignal wird in Schritt 34 in dem Verzögerungszwischenspeicher gesichert. Die Werte innerhalb des verzögerten Zwischenspeichers und des nicht verzögerten Zwischenspeichers werden in Schritt 36 verglichen. Wenn sie gleich sind, so ist kein Fehler aufgetreten und die normale Verarbeitung wird in Schritt 37 fortgesetzt. Wenn sie nicht gleich sind, so zeigt dies an, daß die Verarbeitungslogik zum Zeitpunkt Ti. ihre Verarbeitungsvorgänge noch nicht abgeschlossen hatte, als der nicht-verzögerte Zwischenspeicher seinen Wert aufgenommen bzw. eingefangen und damit begann, diesen Wert der nächstfolgenden Verarbeitungsstufe i + 1 zuzuführen. Demnach ist ein Fehlerzustand aufgetreten und erfordert eine Korrektur. In Schritt 38 wird diese Korrektur begonnen, indem eine Pipeline-Blase bzw. Leerstelle in die auf die Stufe i folgenden Pipeline-Stufen eingefügt wird. In Schritt 40 werden die der Stufe i + 1 vorangehenden Stufen angehalten. Dies umfaßt die Stufe i, an welcher der Fehler aufgetreten ist. In Schritt 42 führt die Stufe i + 1 ihre Operation erneut aus unter Verwendung des verzögerten Zwischenspeicherwertes als Eingangsgröße. In Schritt 44 können die Betriebsparameter des integrierten Schaltkreises modifiziert werden, falls erforderlich. Beispielsweise könnte die Betriebsfrequenz reduziert, die Betriebsspannung erhöht, die Hauptteilvorspannung erhöht werden etc. Die Verarbeitung geht dann weiter zu Schritt 46.
  • Wenn eine unzureichende Anzahl von Fehlern erfaßt wird, so können die die Betriebsparameter steuernden Schaltkreise und Algorithmen gezielt die Betriebsparameter so einstellen, daß der Energieverbrauch reduziert wird und eine nicht-verschwindende Fehlerrate provoziert wird.
  • 5 veranschaulicht einen Speicher 100, der ein Array aus Speicherzellen 102 enthält. In diesem Beispiel ist eine einzige Reihe von Speicherzellen dargestellt, jedoch sind Fachleute auf diesem technischen Gebiet damit vertraut, daß derartige Speicherzellarrays typischerweise zweidimensionale Arrays sind, die viele Tausende von Speicherzellen enthalten. Gemäß einem normalen Speichervorgang dient ein Decoder 104 dazu, eine Speicheradresse, auf welche zugegriffen werden soll, zu empfangen, und diese Speicheradresse zu decodieren, um eine der Wortleitungen 106 zu aktivieren. Die Wortleitungen dienen dazu, die Speicherzellen 102 in der betreffenden Zeile mit ent sprechenden Bitleitungspaaren 108 zu verbinden. Abhängig von dem in der betreffenden Speicherzelle 102 gespeicherten Bitwert induziert dieses eine elektrische Veränderung (beispielsweise eine Änderung in der Spannung und/oder einem Stromfluß) in den Bitleitungen 108, die nunmehr damit verbunden sind und diese Veränderung wird durch einen Abfrageverstärker 110 erfaßt. Der Ausgangswert des Abfrageverstärkers 110 wird ein erstes Mal innerhalb eines nicht-verzögerten Speichers 112 und anschließend zu einem verzögerten Zeitpunkt innerhalb des verzögerten Speichers 114 gespeichert. Der nicht-verzögerte Wert, der in dem nicht-verzögerten Zwischenspeicher 112 gespeichert ist, wird direkt über einen Multiplexer 116 an einen weiteren Verarbeitungsschaltkreis 118 weitergeleitet, bevor der verzögerte Wert in dem verzögerten Speicher 114 gespeichert worden ist. Wenn der verzögerte Wert innerhalb des verzögerten Speichers 114 aufgenommen ist, dient ein Komparator 120 dazu, den nicht-verzögerten Wert und den verzögerten Wert miteinander zu vergleichen. Wenn diese nicht gleich sind, so wird der verzögerte Wert durch den Multiplexer 116 so umgeschaltet, daß er der Ausgangswert von dem Speicher 100 für das betreffende Bit ist. Ein Unterdrückungssignal wird von dem Komparator 120 ebenfalls an den weiteren Verarbeitungsschaltkreis 118 ausgegeben, um die Verarbeitung durch diesen weiteren Verarbeitungsschaltkreis 118 auf Basis des fehlerhaften nicht-verzögerten Wertes zu unterdrücken, der nunmehr ersetzt worden ist. Diese Unterdrückung nimmt in diesem Beispiel die Form der Steuerung des Taktsignals CLK an, welches dem weiteren Verarbeitungsschaltkreis 118 zugeführt wird, um den betreffenden Taktzyklus zu verlängern und das Zwischenspeichern des neuen Ergebnisses durch diesen weiteren Verarbeitungsschaltkreis bis zu einem Zeitpunkt zu verzögern, zu welchem der verzögerte Wert die Chance gehabt hat, durch den betreffenden Verarbeitungsschaltkreis hindurchzulaufen, um den Zwischenspeicher am Ausgang dieses weiteren Verarbeitungsschaltkreises zu erreichen.
  • Man erkennt, daß der Abfrageverstärker 110 und der nicht-verzögerte Zwischenspeicher 112 einen Teil des schnellen Lesemechanismus bilden. Der Abfrageverstärker 110 und der verzögerte Zwischenspeicher 114 bilden Teile des langsamen Lesemechanismus. In den meisten Fällen ist das schnell gelesene Ergebnis, welches innerhalb des nicht-verzögerten Zwischenspeichers 112 gesichert ist, korrekt und es ist keine Korrekturaktion erforderlich. In einer kleinen Anzahl von Fällen unterscheidet sich das schnell gelesene Ergebnis von dem langsam gelesenen Ergebnis, das in dem verzögerten Zwischenspeicher 114 gesichert ist und in diesem Fall wird das langsam gelesene Ergebnis als das richtige angesehen und dient dazu, das schnell gelesene Ergebnis zu ersetzen, wobei die Verarbeitung, die auf dem schnell gelesenen Ergebnis beruhte, unterdrückt wird. Der Nachteil bzw. Zeitverlust, der mit einem relativ seltenen Erfordernis der Korrektur fehlerhafter schnell gelesener Ergebnisse verbunden ist, wird mehr als kompensiert durch die erhöhte Leistungsfähigkeit (hinsichtlich der Geschwindigkeit, des Betriebs bei niedriger Spannung, des niedrigeren Energieverbrauchs und/oder anderer Leistungsparameter), die erreicht wird, indem man den Speicher 100 näher an seinen Grenzbedingungen arbeiten läßt.
  • 6 veranschaulicht eine Variation eines Teiles des Schaltkreises nach 5. Bei dieser Variation sind zwei Abfrageverstärker 110', 110'' vorgesehen. Diese unterschiedlichen Abfrageverstärker 110', 110'' sind so ausgebildet, daß sie unterschiedliche Arbeitsgeschwindigkeiten haben, wobei der eine, 100', relativ schnell und weniger zuverlässig ist und der andere, 110'', relativ langsam und zuverlässiger ist. Diese unterschiedlichen Eigenschaften können erreicht werden durch Variieren der Parameter der Abfrageverstärker 110', 110'', beispielsweise der Konstruktionsparameter, wie z. B. Transistorgröße, Dotierniveaus, Verstärkung etc. Ein Komparator 120' dient dazu, die beiden Ausgangsgrößen zu vergleichen. Der Ausgang des schnellen Abfrageverstärkers 110' wird normalerweise über den Multiplexer 116' weitergeleitet, bevor der Ausgangswert des langsamen Abfrageverstärkers 110'' verfügbar ist. Wenn der Ausgangswert des langsamen Abfrageverstärkers 110'' verfügbar ist und der Vergleicher bzw. Komparator 120 erfaßt, daß dieser nicht gleich dem Ausgangswert des schnellen Abfrageverstärkers 110' ist, so steuert er den Multiplexer 116' in der Weise, daß dieser den Ausgangswert auf denjenigen umschaltet, der durch den langsamen Abfrageverstärker 110'' erzeugt wurde. Der Komparator 120 löst auch die Erzeugung eines Unterdrückungssignals aus, so daß eine stromabwärtige Verarbeitung auf der Basis des fehlerhaften, schnell gelesenen Ergebnisses unterdrückt wird.
  • 7 ist ein Flußdiagramm, welches die Arbeitsweise des Schaltkreises nach 5 veranschaulicht. In Schritt 122 wird eine Adresse decodiert, was dazu führt, daß entsprechende Speicherzellen mit ihren zugehörigen Bitleitungen verbunden werden unter Verwendung eines Signals, das durch eine Wortleitung weitergleitet wird. In Schritt 124 werden die Bitwerte, die in den ausgewählten Speicherzellen und deren Komplementen gespeichert sind, auf die Bitleitungspaare getrieben. Dieses bewirkt einen Stromfluß innerhalb der Bitleitungen und Spannungsänderungen in den Bitleitungen. Die Abfrageverstärker 110 reagieren auf erfaßte Ströme und/oder Änderungen des Spannungsniveaus.
  • In Schritt 126 nimmt der schnelle Datenlesemechanismus den Wert auf, der von der Speicherzelle zu diesem Zeitpunkt ausgegeben wird. In Schritt 128 wird dieser schnell gelesene Datenwert an die nachfolgenden Verarbeitungsschaltkreise weitergeleitet für die weitere Verarbeitung unter der Annahme, daß er korrekt ist. In Schritt 130 nimmt der langsame Datenlesemechanismus einen langsam gelesenen Datenwert auf. Schritt 132 vergleicht den schnell gelesenen Wert und den langsam gelesenen Wert. Wenn diese beiden dieselben sind, so geht in Schritt 134 die normale Verarbeitung weiter. Wenn jedoch die abgetasteten bzw. aufgenommenen Werte verschieden sind, so dient Schritt 136 dazu, ein Unterdrückungssignal an die weiteren Schaltkreise auszugeben, an welche das schnell gelesene Ergebnis weitergeleitet wurde, und auch den langsam gelesenen Wert anstelle des schnell gelesenen Wertes an diese weiteren Schaltkreise auszugeben, so daß eine Korrekturbearbeitung stattfinden kann.
  • 8 veranschaulicht die Verwendung der vorliegenden Techniken innerhalb eines Pipeline-Busses 140. Der Pipeline-Bus 140 enthält eine Anzahl von Zwischenspeichern 142, die dazu dienen, Datenwerte zu speichern, die entlang des Busses weitergeleitet werden. Als ein Beispiel eines derartigen Pipeline-Busses 140 sind die AXI-Busse bekannt, die von ARM Limited in Cambridge, England entworfen wurden. In dieser Anordnung ist das Ziel des Datenwertes, der entlang des Pipeline-Busses 140 weitergeleitet wird, ein digitaler Verarbeitungsschaltkreis 144. Dieser digitale Signalverarbeitungsschaltkreis 144 (DSP-Schaltkreis) implementiert nicht für sich selbst die nicht-verzögerten und verzögerten Zwischenspeichertechniken, die zuvor erläutert wurden. In alternativen Ausgestaltungen könnte das Ziel für den entlang des Pipeline-Busses weitergeleiteten Datenwert ein Gerät sein, das kein DSP-Schaltkreis ist, beispielsweise ein standardmäßiger ARM-Prozessorkern, der nicht für sich selbst die Techniken der verzögerten und nicht-verzögerten Zwischenspeicherungen implementiert.
  • Zu jedem der nicht-verzögerten Zwischenspeicher 142 gehört ein entsprechender verzögerter Zwischenspeicher 146. Diese verzögerten Zwischenspeicher 146 dienen dazu, den Signalwert auf dem Bus zu einem Zeitpunkt abzutasten bzw. abzufragen, der später liegt als die Abtastung und Zwischenspeicherung durch den nicht-verzögerten Zwischenspeicher 142, welchem sie entsprechen. Demzufolge führt eine Verzögerung in dem Datenwert, der entlang des Busses weitergeleitet wird, aus welchem Grund auch immer (beispielsweise könnte eine zu niedrige Betriebsspannung verwendet worden sein, die Taktgeschwindigkeit könnte zu hoch sein, Kopplungseffekte von benachbarten Datenwerten etc.), zu der Möglichkeit, daß ein Unterschied zwischen den Werten auftritt, die innerhalb des nicht verzögerten Zwischenspeichers 142 und des verzögerten Zwischenspeichers 146 gespeichert sind. Die letzte Stufe des Pipeline-Busses 140 ist mit einem Komparator 147 dargestellt, welcher den nicht-verzögerten Wert und den verzögerten Wert vergleicht. Wenn diese nicht gleich sind, so wird der verzögerte Wert verwendet, um den nicht-verzögerten Wert zu ersetzen und die Verarbeitung beruhend auf dem nicht-verzögerten Wert wird unterdrückt, so daß die Korrektur wirksam werden kann (der Bustaktzyklus kann gestreckt bzw. verlängert werden). Es versteht sich, daß diese Komparator- und Multiplexschaltkreiselemente an jeder der Zwischenspeicherstufen entlang des Pipeline-Busses 140 vorgesehen sind, jedoch sind sie aus Gründen der Klarheit aus 8 fortgelassen worden.
  • Da der DSP-Schaltkreis 144 nicht selbst den nicht-verzögerten und verzögerten Zwischenspeichermechanismus mit seinem zugehörigen Korrekturmöglichkeiten unterstützt, ist es wichtig, daß der Datenwert, welcher dem DSP-Schaltkreis 144 zugeführt wird, in dem erforderlichen Umfang korrigiert wurde. Aus diesem Grunde ist eine zusätzliche Zwischenspeicherstufe 148 zum Puffern am Ende des Pipeline-Busses 140 vorgesehen, so daß jegliche Korrektur, die mit dem Datenwert erforderlich sein könnte, der dem Zwischenspeicher und dem anhängenden DSP-Schaltkreis 144 zugeführt wird, ausgeführt werden kann, bevor der DSP-Schaltkreis 144 auf diesen Datenwert einwirkt. Der Zwischenspeicher 148 zum Puffern kann in ausreichender Nähe zu dem DSP-Schaltkreis 144 angeordnet sein, so daß es auf keinen Fall eine unzureichend verfügbare Laufzeit etc. gibt, was einen Fehler in dem Datenwert verursachen könnte, der von dem Puffer-Zwischenspeicher 148 zu dem DSP-Schaltkreis 144 geleitet wird.
  • Es versteht sich, daß die Busanschlüsse zwischen den entsprechende nicht-verzögerten Zwischenspeichern 142 so betrachtet werden können, als seien sie eine Form von Verarbeitungslogik, die einfach die Daten unverändert weiterleitet. Auf diese Weise wird die Äquivalenz zwischen der Ausführungsform mit dem Pipeline-Bus nach 8 und den zuvor beschriebenen Ausführungsformen (beispielsweise 1) für Fachleute offensichtlich.
  • 9 ist ein Flußdiagramm, welches die Arbeitsweise nach 8 veranschaulicht. In der Stufe 150 wird ein nicht-verzögerter Signalwert aus der Busleitung aufgenommen. In Schritt 152 wird der nicht-verzögerte Wert dann an die nächste Bus-Pipelinestufe weitergeleitet. In Schritt 144 nimmt der entsprechende verzögerte Zwischenspeicher 146 ein verzögertes Bus-Signal auf. In Schritt 156 vergleicht der Komparator 147 den verzögerten Wert mit dem nicht-verzögerten Wert. Wenn diese gleich sind, so geht die normale Verarbeitung bei Schritt 158 weiter. Wenn die beiden verglichenen Werte nicht gleich sind, so dient Schritt 160 dazu, den Bustakt zu verzögern und den nicht-verzögerten Wert durch den verzögerten Wert zu ersetzen, wobei der in 8 dargestellte Multiplexer verwendet wird.
  • 10 veranschaulicht eine weitere beispielhafte Ausführungsform, welche die vorliegenden Techniken verwendet. In dieser beispielhaften Ausführungsform wird ein Befehl von einem Befehlsregister innerhalb eines Prozessorkerns in einem Befehlszwischenspeicher 162 gespeichert. Aus diesem Befehlszwischenspeicher 162 wird der Befehl an einen Decoder 164 weitergeleitet, der einen mikrocodierten ROM umfaßt, welcher dazu dient, eine passende Ansammlung von Prozessorsteuersignalen zur Speicherung in einem nicht-verzögerten Steuersignalzwischenspeicher 166 zu erzeugen und anschließend zu verwenden, um die durch den Prozessorkern gemäß dem in dem Befehlszwischenspeicher 162 gespeicherten Befehl ausgeführte Verarbeitung zu steuern. Die Steuersignale, die von dem Decoder 164 ausgegeben werden, werden ebenfalls innerhalb eines verzögerten Steuersignalzwischenspeichers 168 zu einem späteren Zeitpunkt als sie innerhalb des nicht-verzögerten Steuersignalzwischenspeichers 166 gespeichert wurden, gespeichert. Die verzögerten Steuersignalwerte und die nicht-verzögerten Steuersignalwerte können dann miteinander verglichen werden. Wenn sie nicht gleich sind, so zeigt dies an, daß eine Korrekturaktion erforderlich ist. Ein Unterdrückungsvorgang wird durch die Erfassung eines solchen Unterschiedes ausgelöst und dient dazu, eine nachfolgende Verarbeitung auf der Basis des nicht ordnungsgemäßen Steuersignalwertes des Zwischenspeichers zu stoppen. Es kann vorkommen, daß in einigen Fällen die einzig wirksame Wiederherstellungsoption darin besteht, den Prozessor als Ganzes zurückzusetzen. Dies kann akzeptabel sein. In anderen Situationen kann der Fehler in den Steuersignalen von der Art sein, daß ein weniger drastischer Unterdrückungs- und Erholungsmechanismus möglich ist. Beispielsweise könnte das betreffende fehlerhafte Steuersignal noch nicht bearbeitet worden sein, z. B. im Falle eines mehrzyklischen Programmbefehls, in welchem einige Verarbeitungsvorgänge erst sehr spät in der gesamten Verarbeitung des mehrzyklischen Befehls beginnen. Ein Beispiel hierfür ist eine Multiplizier-Akkumulier-Operation, in welcher der Multiplikationsabschnitt mehrere Taktzyklen benötigt, bevor die endgültige Akkumulation stattfindet. Falls es in dem Steuersignal, welches zu dem Akkumulieren gehört, einen Fehler gibt und in der Praxis ein Akkumulieren nicht erforderlich ist, sondern lediglich ein reines Multiplizieren erforderlich ist, so wäre es möglich, das Akkumulieren zu unterdrücken, indem das dem Akkumulierer zugeführte Steuersignal korrigiert wird, bevor der Addierer versucht hat, den Akkumulierungsvorgang durchzuführen.
  • 11 veranschaulicht ein Beispiel der Arbeitsweise des Schaltkreises nach 10. In Schritt 170 wird ein Multiplizier-Akkumulier-Steuersignal aus dem Decoder 164 (mikrocodierter ROM) gelesen. In Schritt 172 wird dieses Multiplikations-Akkumulations-Steuersignal innerhalb des nicht-verzögerten Steuersignalzwischenspeichers 166 gespeichert und an die verschiedenen Verarbeitungselemente innerhalb des Prozessorkerns ausgegeben. In Schritt 147 werden die Multiplikationsoperanden aus der Registerdatei gelesen und die Multiplikationsoperation wird ausgelöst. In Schritt 176 werden die Steuersignale, welche durch den Befehlsdecoder 164 ausgegeben werden, durch den verzögerten Steuersignalzwischenspeicher 168 erneut abgetastet bzw. abgefragt. In Schritt 178 werden die nicht-verzögerten Steuersignale und die verzögerten Steuersignale miteinander verglichen. Wenn sie gleich sind, so geht die normale Verarbeitung weiter bei Schritt 180. Wenn sie jedoch nicht gleich sind, so geht die Verarbeitung weiter zu Schritt 182, wo die Feststellung getroffen wird, ob der Multiplikationsvorgang bereits abgeschlossen wurde. Wenn der Multiplikationsvorgang abgeschlossen wurde, so hat die fehlerhafte Akkumulationsoperation bereits begonnen und die beste Option der Wiederherstellung besteht darin, das System als Ganzes in Schritt 184 zurückzusetzen. Wenn jedoch der Multiplikationsvorgang abläuft, so kann Schritt 186 verwendet werden, um den Addierer zurückzusetzen und die Akkumulationsoperation zu löschen, wobei das gewünschte Ausgangsergebnis der Multiplikationsoperation in Schritt 188 erzeugt wurde, wie es ursprünglich durch den Programmbefehl beabsichtigt war, der innerhalb des Befehlszwischenspeichers 162 gespeichert ist.
  • 12 veranschaulicht eine Modifizierung des in 1 dargestellten Schaltkreises. In dieser Ausführungsform dienen die verzögerten Speicher 190 der zusätzlichen Funktion von Datenhaltespeichern („Ballon-Speichern") für die Verwendung während eines Standby-/Schlafbetriebs (Betriebsart mit niedrigem Stromverbrauch). Die Funktion der verzögerten Zwischenspeicher 190 während der Verarbeitungsvorgänge ist dieselbe, wie zuvor bereits beschrieben. Wenn jedoch eine Schlafsteuerung 192 dazu dient, den Eintritt in eine Betriebsart mit niedrigem Energieverbrauch auszulösen, so stoppt sie den nicht-verzögerten Takt und den verzögerten Takt in der Weise, daß die verriegelten Zwischenspeicher 190 allesamt Datenwerte speichern, welche ihren jeweiligen nicht-verzögerten Zwischenspeichern entsprechen. An diesem Punkt wird die Spannungsversorgung für die nicht-verzögerten Zwischenspeicher und die zugehörigen Verarbeitungsschaltkreise entfernt, so daß sie heruntergefahren werden und ihren Zustand verlieren. Die Spannung, die den nicht-verzögerten Zwischenspeichern 190 zugeführt wird, wird jedoch in der Weise aufrecht erhalten, daß sie dazu dienen, den Zustand des betreffenden Verarbeitungsschaltkreises zu erhalten. Wenn das System aus der Betriebsart mit niedrigem Energieverbrauch herausgeht, werden die Verarbeitungslogik und die nicht-verzögerten Speicher wieder mit mehr Leistung versehen. Wenn der Komparator einen Unterschied in den Werten in dem nicht-verzögerten Zwischenspeicher und dem verzögerten Zwischenspeicher 190 feststellt, so löst er das Ersetzen des fehlerhaften Wertes in dem nicht verzögerten Zwischenspeicher durch den korrekten Wert aus, der innerhalb des zugehörigen verzögerten Zwischenspeichers 190 gehalten wird. Man erkennt, daß, da die verzögerten Zwischenspeicher 190 weniger strengen Zeitablauferfordernissen ausgesetzt sind als ihre nicht-verzögerten Gegenstücke, sie auch in einer Weise ausgebildet werden können, in welcher sie eine langsamere Arbeitsgeschwindigkeit haben, jedoch während des Betriebs mit niedrigem Energieverbrauch auch besser für einen niedrigeren Energieverbrauch geeignet sind (beispielsweise führen höhere Schwellwertspannungen zu einer langsameren Umschaltung, jedoch mit einem reduzierten Leckstrom). Auf diese Weise können die die Fehler korrigierenden verzögerten Zwischenspeicher, welche während der normalen Verarbeitung verwendet werden, während des niedrigen Energieverbrauchs als Datenhaltespeicher erneut verwendet werden, und reduzieren damit in vorteilhafter Weise die gesamte Gatterzahl des betreffenden Schaltkreises.
  • 13 ist ein Flußdiagramm, welches die Betriebsweise des Schaltkreises nach 12 schematisch wiedergibt. In Schritt 194 ist der integrierte Schaltkreis in seinem normalen Arbeitsbetriebzustand. In Schritt 196 erzeugt die Stufe der Verarbeitungslogik ein Ausgangssignal zu einem nicht-verzögerten Zeitpunkt. In Schritt 198 nimmt der nicht-verzögerte Zwischenspeicher das Ausgangssignal auf. In Schritt 200 wird das nicht-verzögerte Signal in dem nicht-verzögerten Zwischenspeicher an die nächste Verarbeitungsstufe weitergeleitet. In Schritt 202 wird der Ausgangswert der Verarbeitungsstufe zu einem verzögerten Zeitpunkt erzeugt und ist für die Aufnahme durch den verzögerten Zwischenspeicher verfügbar. In Schritt 204 wird der integrierte Schaltkreis veranlaßt, eine Betriebsart mit niedrigem Energieverbrauch einzunehmen und die Geschwindigkeitssteuerung 192 dient dazu, das Herunterfahren der Verarbeitungsschaltkreise auszulösen, während der Strom bzw. die Leistung für die verzögerten Zwischenspeicher 190 aufrechterhalten wird. In Schritt 206 nimmt der verzögerte Zwischenspeicher 190 den verzögerten Signalwert auf. Es kann sein, daß die Aufnahme des verzögerten Signalwertes durch den verzögerten Zwischenspeicher in Schritt 206 stattfindet, bevor die Umschaltung in den Betriebszustand mit niedriger Energie in Schritt 204 stattfindet. In Schritt 208 wird der nicht-verzögerte Zwischenspeicher heruntergefahren und der in ihm gespeicherte Wert geht verloren. Der integrierte Schaltkreis kann für eine lange Zeitdauer in diesem Zustand verbleiben. Falls gewünscht, löst Schritt 210 die Schlafsteuerung 102 aus, damit sie aus der Betriebsart mit niedrigem Energieverbrauch herausgeht und in den Arbeitsbetriebszustand zurückkehrt. In Schritt 212 wird der Strom bzw. die Stromversorgung für die nicht-verzögerten Zwischenspeicher und die zugehörige Verarbeitungslogik wiederhergestellt, wobei die verzögerten Datenwerte in den verzögerten Zwischenspeichern 190 verwendet werden, um die Pipeline-Stufen erneut zu besetzen, wie es erforderlich ist, um das System wieder in den Zustand zu bringen, den es hatte, bevor es in den Betriebszustand mit niedrigem Energieverbrauch eingetreten ist.
  • 14 zeigt schematisch eine Mehrzahl von Verarbeitungsstufen, auf welchen eine Fehlerkorrektursteuerung und verzögerte Zwischenspeicher angewendet wurden. Die Verarbeitungsstufen bilden einen Teil eines integrierten Schaltkreises, der Teil einer synchronen Pipeline innerhalb eines Prozessorkerns, Teil eines Kommunikationsbusses oder Teil eines Speichersystems sein kann. Die erste Verarbeitungsstufe weist entweder einen Kanal für die Kommunikation von Daten oder eine Verarbeitungslogik 1014, einen nicht-verzögerten Zwischenspeicher 1016, einen verzögerten Zwischenspeicher 1018 und einen Komparator 1024 auf, welcher die Ausgangswerte des verzögerten Zwischenspeichers und des nicht-verzögerten Zwischenspeichers vergleicht und ein Steuersignal an einen Multiplexer 1020 ausgibt, welcher feststellt, ob der verzögerte Signalwert oder der nicht-verzögerte Signalwert als Eingangsgröße für eine nachfolgende Verarbeitungsstufe oder einen Kanal 1016 zugeführt werden soll. Der Kanal/die Logik 1014 und der nicht-verzögerte Zwischenspeicher 1016 werden durch ein nicht-verzögerte Taktsignal angesteuert, während der verzögerte Zwischenspeicher 1019 durch ein verzögertes Taktsignal angesteuert wird, welches eine phasenverschobene Version des nicht-verzögerten Taktsignals ist.
  • Wenn der Komparator 1024 eine Differenz zwischen dem nicht-verzögerten Signalwert und dem verzögerten Signalwert erfaßt, so zeigt dies an, daß entweder der Verarbeitungsvorgang zum Zeitpunkt der nicht-verzögerten Aufnahmezeit unvollständig war, für den Fall, daß das Element 1014 eine Verarbeitungslogik repräsentiert, oder daß das Signal von der vorherigen Pipeline-Stufe die vorliegende Stufe noch nicht erreicht hat, in dem Fall, daß das Element 1014 einen Datenkanal darstellt. In dem Fall, daß eine solche Differenz tatsächlich erfaßt wird, bildet der in dem verzögerten Zwischenspeicher 1018 gespeicherte Wert den zuverlässigeren Datenwert, da er später aufgenommen wurde, als der Verarbeitungsvorgang mit größerer Wahrscheinlichkeit bereits abgeschlossen war oder die Daten von der vorherigen Stufe mit größerer Wahrscheinlichkeit über den Datenkanal angekommen waren. Durch Zuführen des Ergebnisses aus dem verzögerten Zwischenspeicher an die nächste Verarbeitungsstufe 1030 und Unterdrückung der Verwendung des nicht-verzögerten Wertes in nachfolgenden Verarbeitungsstufen kann das weitere Fortschreiten der Berechnung sichergestellt werden. Die Zuverlässigkeit des in dem verzögerten Speicher 1018 gespeicherten Signalwertes kann jedoch in dem Fall beeinträchtigt sein, daß eine Einzelereignisstörung aufgetreten ist und den verzögerten Wert verfälscht hat. Die Einzelereignisstörung ist effektiv ein Impuls, so daß dieser durchaus durch den nicht-verzögerten Zwischenspeicher vergaßt werden konnte, jedoch durch den verzögerten Zwischenspeicher aufgenommen wurde. Derartige Einzelereignisstörungen führen dazu, daß der Komparator eine Differenz zwischen dem verzögerten und dem nicht verzögerten Wert als unmittelbare Folge der Einzelereignisstörung erfaßt und dann den gefälschten verzögerten Wert an die nachfolgenden Verarbeitungsstufen weitergibt. Eine Einzelereignisstörung, welche den nicht-verzögerten Datenwert verfälscht, ist kein Problem, da sie dazu führt, daß die Verwendung des fehlerhaften nicht-verzögerten Wertes unterdrückt wird und der verzögerte Wert an die nachfolgenden Stufen weitergeleitet wird.
  • Die Anordnung nach 14 reduziert die Wahrscheinlichkeit, daß ein verfälschter verzögerter Wert durch die Berechnung weitergegeben wird, indem eine zusätzliche Überprüfung der Datenintegrität bereitgestellt wird durch Vorsehen eines Fehlererfassungsmoduls 1026, eines Fehlerkorrekturmoduls 1028 und eines Multiplexers 1022, der durch das Fehlererfassungsmodul 1026 gesteuert wird, um entweder den verzögerten Wert aus dem verzögerten Zwischenspeicher direkt an den Komparator 1024 zuzuführen oder alternativ einen fehlerkorrigierten Wert zuzuführen, der durch das Fehlerkorrekturmodul 1028 ausgegeben wird. Stromaufwärts von der Kanal/Logik-Einheit 1014 wird eine Datennutzlast von 8 Bits mit einem Fehlerkorrekturcode versehen und es werden vier Redundanzbits der Datennutzlast hinzugefügt, um ein 12-Bit-Signal zu bilden. Das 12-Bit-Signal läuft durch die Kanal/Logik-Einheit 1014 und ihr Wert wird sowohl durch den nicht-verzögerten Zwischenspeicher 1016 als auch durch den verzögerten Zwischenspeicher 1018 aufgenommen. Ein verzögerter Wert des Signals, der von dem verzögerten Zwischenspeicher 1018 abgeleitet wird, wird aber auch als Eingansgröße dem Fehlererfassungsmodul 1026 zugeführt, welches anhand des Fehlerkorrektur-codierten 12-Bit-Signals feststellt, ob irgendwelche Fehler aufgetreten sind, die den verzögerten Wert beeinträchtigt haben. In einer alternativen Anordnung könnte ein weiterer Zwischenspeicher vorgesehen sein, um dem Fehlererfassungsmodul 1018 einen Signalwert zuzuführen, der den Signalwert zu einem Zeitpunkt kurz nach dem verzögerten Zwischenspeicher 1018 aufnimmt. Die Fehlerüberprüfung muß mit einem Wert durchgeführt werden, der zu demselben Zeitpunkt aufgenommen wurde wie der verzögerte Wert aufgenommen wurde, oder etwas später, um sicherzustellen, daß irgendein Zufallswert, der zwischen der Aufnahme des nicht-verzögerten Wertes und der Aufnahme des verzögerten Wertes aufgetreten ist, erfaßt wird.
  • Ein gegebener Fehlerkorrekturcode ist in der Lage, eine vorbestimmte Anzahl von Fehlern zu erfassen und eine gegebene Anzahl von Fehlern zu korrigieren. Das Fehlererfassungsmodul 1026 erfaßt also, ob irgendwelche Fehler aufgetreten sind, und, wenn dies der Fall ist, ob die Anzahl der Fehler ausreichend klein ist, so daß sie alle korrigierbar sind. Wenn korrigierbare Fehler erfaßt werden, so wird der Signalwert dem Fehlerkorrekturmodul 1028 zugeführt, wo die Fehler unter Verwendung des Fehlerkorrekturcodes korrigiert werden und der korrigierte verzögerte Wert dem Komparator 1024 zugeführt wird. Wenn durch den Komparator 1024 festgestellt wird, daß sich der korrigierte verzögerte Wert von dem nicht-verzögerten Wert unterscheidet, so wird die Prozedur der Wiederherstellung nach einem Fehler aufgerufen, so daß das weitere Fortschreiten des nicht-verzögerten Wertes von nachfolgenden Verarbeitungsstufen unterdrückt und die Operationen anstatt dessen unter Verwendung des korrigierten verzögerten Wertes ausgeführt werden. Wenn andererseits der Komparator 1024 feststellt, daß der korrigierte verzögerte Wert derselbe wie der verzögerte Wert ist, so gibt es zwei alternative Möglichkeiten für die weitere Berechnung. Zunächst könnte der Wiederherstellungsmechanismus nach einem Fehler dennoch aufgerufen werden, so daß der nicht-verzögerte Wert in den nachfolgenden Verarbeitungsstufen unterdrückt und durch den korrigierten verzögerten Wert ersetzt wird. Alternativ könnte, da festgestellt wurde, daß der nicht-verzögerte Wert korrekt war (wie es nachgewiesen wurde aufgrund der Gleichheit des nicht-verzögerten Wertes und des korrigierten verzögerten Wertes), der Wiederherstellungsmechanismus nach einem Fehler unterdrückt werden (trotz der Erfassung eines Fehlers in dem verzögerten Wert) und damit erlauben, daß der nicht-verzögerte Wert weiterhin durch die nachfolgenden Verarbeitungsstufen fortschreitet. Wenn jedoch durch das Fehlererfassungsmodul 1026 nicht-korrigierbare Fehler in dem verzögerten Wert erfaßt werden, so wird ein Steuersignal zugeführt, um die Verwendung des verfälschten verzögerten Wertes zu unterdrücken. In diesem Fall kann das weitere Fortschreiten der Berechnung nicht erreicht werden. Die Art der Fehlerkorrekturcodierung, die angewendet wurde, unterscheidet sich entsprechend der Art der Kanal-/Verarbeitungslogik 1014.
  • Die Verarbeitungslogik kann entweder in die Kategorie einer einen Wert durchleitenden oder in die Kategorie einer werteverändernden Logik eingeordnet werden. Beispiele einer Verarbeitungslogik, die wertedurchleitend ist, sind Speicher, Register und Multiplexer. Beispiele von werteverändernden Verarbeitungslogikelementen sind Addierer, Multiplizierer und Stellenschieber. Fehlererfassung und -korrektur für werteändernde Verarbeitungslogikelemente ist komplizierter als für werte durchleitende Verarbeitungslogikelemente, da selbst dann, wenn kein Fehler aufgetreten ist, der Werteausgang der Logikstufe 1014 sich wahrscheinlich von dem 12-Bit-Eingangssignal 1013 unterscheidet.
  • 15 zeigt schematisch die Fehlerkorrektur für Daten, welche durch einen Kanal hindurchlaufen, der den Datenwert einfach unverändert von einem Eingang zu einem Ausgang weiterleitet, wenn keine Fehler auftreten. In dem Fall einer solchen wertedurchleitenden Verarbeitungslogik ist es zweckmäßig, eine lineare Blockcodierung wie z. B. einen Hamming-Code für die Fehlerkorrektur und -erfassung zu verwenden. Eine lineare Blockcodierung umfaßt typischerweise das Bilden eines Codewortes, in welchem die Nutzlastbits der ursprünglichen Daten in dem Codewort unverändert bleiben, jedoch einige Paritätsbits (oder Redundanzbits) hinzugefügt werden. Hamming-Codes sind einfache Korrekturcodes für Einzelbitfehler und für einen (N, K)-Code, wobei N die Gesamtzahl von Bits in dem Codewort ist und K die Anzahl von Datenbits ist, die codiert werden müssen. Das Vorhandensein und die Position eines Fehlers wird erfaßt, in dem eine Anzahl von Paritätsüberprüfungen mit dem ausgegebenen Codewort durchgeführt werden. Der Hamming-Code weist N-K Paritätsbits auf, von denen jedes aus einer unterschiedlichen Kombination der Datenbits berechnet wird. Hamming-Codes sind in der Lage, einen Fehler zu korrigieren oder zwei Fehler zu erfassen. Die Anzahl von Paritätsbits (oder Redundanzbits), die erforderlich ist, ist durch die Hamming-Regel K + p + 1 ≤ 2p gegeben, wobei p die Anzahl von Paritätsbits ist und N = K + p.
  • Wie in 15 dargestellt ist, ist die Eingangsgröße in den Kanal ein 12-Bit-Codewort, welches acht Datenbits und vier Paritäts- oder Redundanzbits aufweist. Paritätsüberprüfungen werden durchgeführt durch ein Fehlererfassungs-/Korrekturmodul 1116 mit dem Ausgangswert aus dem Kanal 1114. Irgendein Einzelbitfehler in dem 12-Bit-Codewort wird erfaßt und vor der Ausgabe des Codewortes durch das Fehlererfassungs-/Korrekturmodul 1116 korrigiert. Wenn erfaßte Fehler nicht korrigierbar sind, so gibt das Fehlererfassungs-/Korrekturmodul 1116 ein Signal aus, welches dies in diesem Fall anzeigt. Auch wenn einfache Codes, wie z. B. ein Hamming-Code in Bezug auf 11 für die Verwendung mit einer werteweitergebenden Verarbeitungslogik beschrieben worden sind, so versteht es sich doch, daß auch andere Fehlerkorrekturcodes, wie z. B. Faltungscodes, verwendet werden könnten.
  • 16 zeigt schematisch, wie eine Fehlerkorrektur für ein werteveränderndes Logikelement, wie z. B. einen Addierer, Multiplizierer oder Stellenschieber durchgeführt werden könnte. Im Falle einer den Wert verändernden Verarbeitungslogik können arithmetische Codes, wie z. B. AN-Codes, Restwertcodes, inverse Restwertcodes oder Restnummerncodes verwendet werden, um Zufallsfehler in dem Ausgangswert der Verarbeitungslogik zu erfassen und zu korrigieren.
  • Arithmetische Codes können verwendet werden, um arithmetische Operatoren zu überprüfen. Wenn ⊗ den zu überprüfenden Operator repräsentiert, muß die nachfolgende Beziehung erfüllt sein:
    Code von (X ⊗ Y) = Code von X ⊗ Code von Y
  • AN-Codes sind arithmetische Codes, die ein Multiplizieren des Datenwortes mit einem konstanten Faktor beinhalten, beispielsweise kann ein 3N-Code verwendet werden, um die Gültigkeit bzw. Korrektzeit eines Additionsvorgangs zu überprüfen, indem der folgende Vergleich vorgenommen wird: 3N(X) + 3N(Y) ? = 3N(X + Y) 3X + 3Y ? = 3(X + Y)
  • Ein weiteres Beispiel einer Klasse von arithmetischen Codes sind Restwertcodes, in dem ein Restwert (der Rest einer Division durch eine Konstante) den Datenbits in Form von Prüfbits hinzugefügt wird, beispielsweise umfaßt ein 3R-Code Modulo (MOD) 3 Operationen und es wird die folgende Überprüfung angwendet: X MOD 3 + Y MOD 3 ? = (X + Y) MOD 3
  • Man betrachte das numerische Beispiel von X = 14 und Y = 7:
    14 MOD 3 = 2 (Codewort 111010) mit den letzten beiden Bits als Restwert),
    7 MOD 3 = 1 (Codewort 011101),
    X + Y = 21 (10101),
    und 21 MOD 3 = 0,
    Summe der Restwerte MOD 3 = (2 + 1) MOD 3 = 0 = Restwert von (X + Y).
  • 16 veranschaulicht schematisch die Verwendung eines arithmetischen 7R-Codes für die Überprüfung eines Additionsvorgangs in den Kanal-/Logikeinheiten 1014 nach 10. Die Additionsoperation, die überprüft werden soll, ist X + Y, wobei X und Y 8-Bit-Datenworte sind. Jedes Datenbit hat vier Prüfbits, welche die Werte X MOD 7 bzw. Y MOD 7 haben. Y MOD 7 und Y MOD 7 werden als Operanden einem ersten Addierer 1210 zugeführt und der Ausgang dieses Addierers wird der Logik zugeführt, welche den Wert (X MOD 7 und Y MOD 7) MOD 7 bestimmt und das Ergebnis als erste Eingangsgröße einem Komparator 1250 zuführt. Ein zweiter Addierer 1230 führt die Addition (X + Y) durch, führt das Ergebnis einer Logikeinheit 1240 zu, welche (X + Y) MOD 7 berechnet und das Ergebnis als eine zweite Eingangsgröße dem Komparator 1250 zuführt. Wenn der Komparator irgendeinen Unterschied zwischen den beiden Eingangswerten erfaßt, so ist ein Fehler aufgetreten.
  • 17 ist ein Flußdiagramm, welches schematisch die Arbeitsweise des Schaltkreises nach 14 veranschaulicht, der eine Fehlerkorrektursteuerung des verzögerten Zwischenspeicherwertes aufweist. In der Stufe 1310 wird ein 12-Bit-Fehlerkorrektur-codierter Signalwert in die Kanal-/Logikeinheit 1014 eingegeben. Als nächstes nimmt in Stufe 1320 der nicht-verzögerte Zwischenspeicher 1016 den Ausgangswert aus der Kanal-/Logikeinheit 1014 zum Zeitpunkt Ti auf und der aufgenommene Wert wird an die nachfolgende Stufe I + 1 der Verarbeitungslogik bei Stufe 1330 aufgenommen. In Stufe 1340 nimmt der verzögerte Zwischenspeicher 1018 das Ausgangssignal zum Zeitpunkt Ti + d auf. In Stufe 1350 nimmt die Fehlererfassungslogik den Ausgangwert aus der Kanal-/Logikeinheit 1014 bei einem Zeitpunkt Ti + (d + δ) auf. Auch wenn in bevorzugten Ausführungsformen 6 gleich null ist, so daß der durch den verzögerten Wert ausgegebene Wert selbst tatsächlich fehlerüberprüft ist, kann der Ausgangswert alternativ auch zu einem Zeitpunkt, kurz nachdem der verzögerte Zwischenspeicher das Ausgangsignal bei Ti + d aufgenommen hat, aufgenommen werden. Die Aufnahme des Wertes für die Zufuhr an den Fehlererfassungsschaltkreis wird in zweckmäßigerweise zeitlich so eingestellt, daß sichergestellt wird, daß irgendein Zufallsfehler in dem verzögerten Wert erfaßt wird. In der Stufe 1360 stellt das Fehlererfassungsmodul 1026 fest, ob das verzögerte Ausgangssignal einen Fehler hat, indem die Redundanzbits verwendet werden. Wenn ein Fehler erfaßt wird, so wird dann in Stufe 1370 festgestellt, ob der Fehler ein korrigierbarer Fehler ist, was davon abhängt, wie viele Bits betroffen sind. Beispielsweise kann ein Hamming-Code nur einen einzelnen Bitfehler korrigieren. Wenn in Stufe 1370 festgestellt wird, daß der Fehler korrigierbar ist, so geht der Vorgang weiter zu Stufe 1390, woraufhin der Fehler korrigiert und der korrigierte verzögerte Wert an dem Multiplexer 1022 ausgewählt und dem Komparator 1024 zugeführt wird. Wenn jedoch in Stufe 1370 festgestellt wird, daß die erfaßten Fehler nicht korrigierbar sind, so wird ein Steuersignal erzeugt, welches anzeigt, daß ein nicht-korrigierbarer Fehler aufgetreten ist. In diesem Fall kann die Berechnung nicht in zuverlässiger Weise fortgesetzt werden. In Stufe 1392 stellt der Komparator 1024 fest, ob der fehlerüberprüfte verzögerte Wert gleich dem nicht-verzögerten Wert ist, und, wenn dies der Fall ist, so wird das weitere Fortschreiten der Berechnung fortgesetzt. Ansonsten geht der Prozeß in die Folge von Schritten über, die in Bezug auf 4B beschrieben wurde, was die Unterdrückung des nicht-verzögerten Wertes beinhaltet und dessen Austausch durch den verzögerten Wert in den nachfolgenden Verarbeitungsstufen wird durchgeführt.
  • 18 veranschaulicht die Verwendung der vorliegenden Technik, um den relativen Zeitlauf zwischen den Verarbeitungsstufen dynamisch einzustellen. Es ist bekannt, daß in einer Pipeline-Verarbeitungsumgebung die Verarbeitungsstufen unterschiedliche Zeiten benötigen können, um ihre jeweiligen Operationen abzuschließen. Im Idealfall sollten die Verarbeitungsstufen alle so ausgeglichen sein, daß sie dieselbe Zeit benötigen und daß ihre jeweiligen Zeiten mit Veränderungen in den Umgebungsbedingungen in gleicher Weise variieren. In vielen Fällen ist dies jedoch nicht praktisch und es kann sein, daß eine Ansammlung von Verarbeitungsstufen, die bei einer Betriebsspannung oder Temperatur ausgeglichen sind, bei einer anderen Betriebsspannung oder Temperatur nicht ausgeglichen sind. Weiterhin können Herstellungsvariationen und andere Eigenschaften zu beträchtlichen Unterschieden zwischen den Zeitabläufen der Verarbeitungsstufe führen, was den geplanten Ausgleich zwischen diesen zerstört. In diesen Fällen werden die Traktfrequenz und andere Betriebsparameter im Hinblick auf ein Szenario mit den ungünstigsten Bedingungen (Worst Case) ausgewählt, so daß die Verarbeitungsstufen in ausreichender Weise ausgeglichen sind, so daß sie unter allen Bedingungen funktionsfähig sind.
  • Die vorliegende Technik erlaubt, daß man einen gezielteren und in der Tat dynamischen Ansatz wählen kann. Eine Pipeline-Verarbeitungseinheit 2000 umfaßt verzögerte Zwischenspeicher 2002, die verwendet werden können, um das Auftreten von Fehlern in dem Signalwert zu erfassen, die durch die nicht-verzögerten Zwischenspeicher aufgenommen wurden. Das Auftreten dieser Fehler wird an eine Taktphasensteuerschaltung 204 zurückgekoppelt, die dazu dient, die relativen Phasen der Taktsignale einzustellen, die den jeweiligen Zwischenspeichern innerhalb des Hauptpfades, d.h. den nicht verzögerten Zwischenspeichern, zugeführt werden. Auf diese Weise erfolgt eine Ein stellung, wodurch effektiv Zeit von einer Verarbeitungsstufe entnommen und einer anderen Verareitungsstufe zugewiesen wird. Dies kann erreicht werden, indem die Taktsignale, die durch die jeweiligen nicht-verzögerten Zwischenspeicher verwendet werden sollen, von auswählbaren Positionen innerhalb einer Verzögerungsleitung abgezapft werden, entlang welcher auch das Basistaktsignal weitergeleitet wird.
  • In dem dargestellten Beispiel ist die Verarbeitungslogik zwischen Zwischenspeicher LA und Zwischenspeicher LB in ihrem Betrieb langsamer als die Verarbeitungslogik in der nachfolgenden Stufe. Dementsprechend kann das Taktsignal, welches dem nicht-verzögerten Zwischenspeicher LB zugeführt wird, phasenverschoben werden, um auf diese Weise die ansteigende Flanke dieses Taktsignals (unter der Annahme, daß der Speichereinfang mit der ansteigenden Flanke erfolgt), und dadurch die Zeit zu verlängern, die für die langsame Verarbeitungslogik verfügbar ist. Dies vermindert die für die Verarbeitungslogik in der nachfolgenden Verarbeitungsstufe verfügbare Zeit unter der Annahme, daß diese mit demselben Basistaktsignal arbeitet, wie die übrigen Elemente der Stufe mit Ausnahme des Zwischenspeichers LB.
  • Dieser Zeitausgleich zwischen Verarbeitungsstufen kann dynamisch während des weitergehenden Betriebs des Schaltkreises durchgeführt werden, wobei eine Rückkopplung anhand der im Betrieb erfaßten Fehler unter Verwendung der Verzögerungszwischenspeicher durchgeführt werden kann. Alternativ kann der Ausgleich als ein Ein-Aus-Vorgang während einer Teststufe beim Herstellen oder während einer Initialisierung („Golden Boot") des integrierten Schaltkreises durchgeführt werden. Die verzögerten Zwischenspeicher, die in 18 dargestellt sind, werden für den Zweck eines Zeitausgleichs zwischen den Verarbeitungsstufen verwendet und können danach für die Steuerung von Betriebsparametern und die Fehlerkorrektur verwendet werden, wie es oben erläutert wurde, beispielsweise in Verbindung mit 1. Auf diese Weise wird die Bereitstellung der Verzögerungsspeicher weiter genutzt, um auch die relativen Zeittakte zu steuern.
  • Für 19 zeigt einen einfachen Ansatz für die Wiederherstellung bzw. Erholung der Pipeline nach einem Fehler auf der Basis einer globalen Taktausleitung. In dem Fall, daß irgendeine Stufe einen Fehler erfaßt, wird die gesamte Pipeline für einen Zyklus angehalten, indem die nächste globale Taktflanke ausgeleitet bzw. überbrückt wird. Die zusätzliche Taktperiode erlaubt es jeder Stufe, ihr Ergebnis unter Verwendung des verzögerten Zwischenspeichers als Eingangsgröße erneut zu berechnen. Dementsprechend werden jegliche zuvor weitergeleitete, fehlerhafte Werte durch den korrekten Wert aus dem Verzögerungsspeicher ersetzt. Da alle Stufen ihr Ergebnis mit dem verzögerten Zwischenspeichereingangswert erneut auswerten, kann irgendeine beliebige Anzahl von Fehlern in einem einzelnen Zyklus toleriert bzw. aufgefangen werden und das weitere Fortschreiten ist garantiert. Wenn alle Stufen in jedem Zyklus einen Fehler hervorrufen, läuft die Pipeline weiter, jedoch nur mit der Hälfte der normalen Geschwindigkeit.
  • Es ist wichtig, daß fehlerhafte Pipline-Ergebnisse nicht in den konstruierten (Architektur-) Zustand geschrieben werden, bevor sie durch den Komparator für gültig erklärt wurden. Da die Gültigerklärung verzögerter Werte zwei zusätzliche Zyklen benötigt (d.h. einen für die Fehlererfassung und einen für die Alarmerfassung) müssen zwei nicht-spekulative (nicht-fehlergefährdete) Stufen zwischen dem letzten verzögerten Zwischenspeicher und der Rückschreibe (WB)-Stufe vorhanden sein. In unserem Modell sind Speicherzugriffe auf den Datencache nicht-spekulativ (nicht-fehlerbehaftet) und damit ist nur eine zusätzliche Stufe, die mit ST gekennzeichnet ist, für die Stabilisierung vor dem Zurückschreiben (WB) erforderlich. Die Stufe ST führt ein zusätzliches Niveau einer Registerumleitung ein. Da Speicherbefehle in nicht-spekulativer Weise ablaufen müssen, werden sie in der WB-Stufe der Pipeline ausgeführt.
  • 19 liefert ein Zeitablaufdiagramm einer Pipeline im Falle einer Pipeline-Erholung bzw. -Wiederherstellung für einen Befehl, der in der EX-Stufe der Pipeline fehlerhaft ist. Die erste fehlerhafte Stufenberechnung tritt in dem vierten Zyklus auf, jedoch erst nachdem die MEM-Stufe ein falsches Ergebnis unter Verwendung des fehlerhaften Wertes berechnet hat, der von der EX-Stufe vorgebracht wurde. Nachdem der Fehler erfaßt ist, findet im sechsten Zyklus eine globale Unterberechung statt, was es ermöglicht, daß das korrekte EX-Ergebnis in dem „Razor Shadow Latch" (Verzögerungsspeicher) durch die MEM-Stufe ausgewertet wird. In dem siebten Zyklus wird die normale Pipeline-Verarbeitung aufgenommen.
  • Bei aggressiv getakteten Modellen ist es eventuell nicht möglich, eine globale Taktausleitung zu implementieren, ohne die Prozessorzykluszeit beträchtlich zu beeinflussen. Konsequenterweise ist ein vollständig in Pipeline-Technik ausgeführter Fehlererholungsmechanismus auf der Basis von Gegenstrom-Pipelinetechniken implementiert worden. Dieser Ansatz, der in 20 dargestellt ist, bringt vernachlässigbare Zeitablaufeinschränkungen für das grundlegende Pipeline-Design mit sich, für den Preis, daß sich die Wiederherstellung bzw. Erholung der Pipeline über einige wenige Zyklen erstreckt. Wenn ein nicht-verzögerter Fehlerwert erfaßt wird, so müssen zwei spezielle Aktionen unternommen werden. Zunächst muß die Berechnung der fehlerhaften Stufe, welche auf den fehlerhaften, nicht-verzögerten Zwischenspeicher folgt, gelöscht werden. Diese Aktion wird durch Verwendung des Blasensignals ausgeführt, welches der nächsten und den nachfolgenden Stufen anzeigt, daß der betreffende Pipeline-Slot leer ist. Als zweites wird der Spülzug ausgelöst, indem die Stufe ID der fehlerhaften Stufe vorgebracht wird. In dem folgenden Zyklus wird der korrekte Wert aus den Daten des verzögerten Speichers zurück in die Pipeline eingeführt, was es erlaubt, daß der fehlerhafte Befehl mit seinen korrekten Eingangsgrößen fortgesetzt wird. Zusätzlich gibt es eine Gegenstrom-Pipeline, wodurch der Spülzug das Weitergeben der ID der fehlerhaften Stufe in entgegengesetzter Richtung der Befehle beginnt. Bei jeder Stufe, die durch den aktiven Spülzug besucht wird, werden die entsprechende Pipeline-Stufe und die unmittelbar vorangehende durch eine Blase ersetzt. (Es müssen zwei Stufen gelöscht werden, um die zweifache Relativgeschwindigkeit der Haupt-Pipeline zu berücksichtigen). Wenn die Spül-ID den Anfang der Pipeline erreicht hat, startet die Spülsteuerlogik die Pipeline bei dem Befehl, welcher auf den fehlerhaften Befehl folgt, erneut. In dem Fall, daß mehrere Stufen in demselben Takt Fehler aufweisen, lösen alle die Wiederherstellung aus, jedoch wird nur der nicht-verzögerte Fehler, der dem Zurückschreiben (WB) am nächsten ist, vollständig abgeschlossen. Die früheren Wiederherstellungen werden durch die späteren ausgespült. Man beachte, daß die Gegenstrom-Pipeline nicht dieselbe Länge wie die Vorwärts-Pipeline haben muß, so daß beispielsweise der Spülzug der Gegenstrom-Pipeline zwei Pipeline-Stufen tief sein könnte, während die Vorwärts-Pipeline zwölf Stufen tief sein kann.
  • 20 zeigt ein Zeitablaufdiagramm einer Pipeline bei einer Pipeline-Wiederherstellung für einen Befehl, der in der EX-Stufe fehlerhaft ist. Wie in dem vorangehenden Beispiel tritt die erste fehlerhafte Stufenberechnung in dem vierten Zyklus auf, wenn der zweite Befehl ein inkorrektes Ergebnis in der EX-Stufe der Pipeline berechnet. Dieser Fehler wird in dem fünften Zyklus erfaßt, was bewirkt, daß eine Blase aus der MEM-Stufe ausgegeben und weitergeleitet wird und daß der Spülzug ausgelöst wird. Der Befehl in der EX-ID und IF-Stufe wird in dem sechsten, siebten bzw. achten Zyklus ausgespült. Schließlich wird die Pipeline erneut hinter dem fehlerhaften Befehl in Zyklus 9 gestartet, woraufhin der normale Pipeline-Betrieb wieder aufgenommen wird.
  • Es sei an die Beschreibung in 2 oben erinnert, wo im Falle, daß der Schaltkreis 102 eine Metastabilität in dem Fehlersignal erfaßt, ein Alarmsignal vorgebracht wird. In diesem Fall sollte der aktuelle Befehl (anstelle des nächsten Befehls) erneut ausgeführt werden. Wenn ein solches Alarmsignal vorgebracht wird, wird der gesamte Pipeline-Zustand gespült und die Pipeline wird unmittelbar nach dem letzten Zurückschreiben eines Befehls erneut gestartet. Alarm- bzw. Paniksituationen verkomplizieren die Garantie für das fortgesetzte Voranschreiten, da die Verzögerung beim Erfassen der Situation dazu führen kann, daß das korrekte Ergebnis in dem verzögerten Speicher überschrieben worden ist. Konsequenterweise wird, nachdem eine Alarmsituation aufgetreten ist, die Versorgungsspannung auf ein als sicher bekanntes Betriebsniveau neu eingestellt und die Pipeline wird wieder gestartet. Nach der Neuabstimmung sollte der fehlerhafte Befehl ohne Fehler ablaufen, solange eine Rückkehr (zu den früheren Bedingungen) verhindert wird, bis dieser Befehl abgeschlossen ist.
  • Ein Schlüsselerfordernis der Steuerung der Pipeline-Wiederherstellung besteht darin, daß sie selbst unter den ungünstigsten Betriebsbedingungen (beispielsweise niedrige Spannung, hohe Temperatur und hohe Prozeßvariation) nicht fehlschlägt. Dieses Erfordernis wird erfüllt durch einen konservativen Auslegungsansatz, der den Zeitablauf der Fehlererholungsschaltkreise für eine unterkritische Spannung des schlechtesten Falls validiert bzw. bestätigt.
  • 21 veranschaulicht schematisch die erneute Verwendung des Verzögerungsspeichers 2100 als seriellen Abtastkettenspeicher. Dies wird erreicht durch Bereitstellung eines Multiplexers 2102, der durch die Abtastfreigabesignale gesteuert wird, die erlauben, daß ein serieller Abtastdatenwert in den Verzögerungsspeicher geschrieben oder seriell aus dem Verzögerungsspeicher gelesen wird, je nachdem, was erforderlich ist. Weiterhin wird der normale Mechanismus, welcher es ermöglicht, daß der verzögerte Speicherwert den nicht-verzögerten Speicherwert ersetzt, ausgenutzt, um zu ermöglichen, daß ein serieller Abtastkettenwert in den Betriebspfad eingefügt wird.

Claims (54)

  1. Integrierter Schaltkreis für die Durchführung von Datenverarbeitung, wobei der integrierte Schaltkreis aufweist: eine Mehrzahl von Verarbeitungsstufen, wobei ein Verarbeitungsstufenausgangssignal von zumindest einer Verarbeitungsstufe als ein Verarbeitungsstufeneingangssignal einer nachfolgenden Verarbeitungsstufe zugeführt wird, wobei die zumindest eine Verarbeitungsstufe aufweist: eine Verarbeitungslogik (1014), die in der Weise betreibbar ist, daß sie einen Verarbeitungsvorgang mit zumindest einem codierten Eingangswert (1013) durchführt, um ein Ausgangssignal der Verarbeitungslogik zu erzeugen, wobei der codierte Eingangswert (1013) ein Eingangswert ist, auf welchen ein Fehlerkorrekturcode angewendet wurde, ein nicht verzögertes Signaleinfangelement (1016), welches in der Weise betreibbar ist, daß es einen nicht-verzögerten Wert des Ausgangssignals der Verarbeitungslogik zu einer nicht-verzögerten Einfangzeit einfängt, wobei der nicht-verzögerte Wert im Anschluß an die nicht-verzögerte Einfangzeit an die nächstfolgende Verarbeitungsstufe als das Verarbeitungsstufenausgangssignal zugeführt wird, ein verzögertes Signaleinfangelement (1018), welches in der Weise betreibbar ist, daß es einen verzögerten Wert des Ausgangssignals der Verarbeitungslogik zu einem verzögerten Einfangzeitpunkt einfängt, der später liegt als die nicht-verzögerte Einfangzeit, eine Fehlerkorrekturlogik (1026, 1028), die in der Weise betreibbar ist, daß sie ein Auftreten eines Zufallsfehlers in dem verzögerten Wert des Ausgangssignals der Verarbeitungslogik erfaßt, um festzustellen, ob der erfaßte Zufallsfehler unter Verwendung des Fehlerkorrekturcodes korrigierbar ist, und um entweder einen fehlergeprüften verzögerten Wert zu erzeugen oder um anzuzeigen, daß der erfaßte Zufallsfehler nicht korrigierbar ist, einen Komparator (1024), der in der Weise betreibbar ist, daß er den nicht-verzögerten Wert mit dem fehlerüberprüften verzögerten Wert vergleicht, um eine Veränderung des Ausgangssignals der Verarbeitungslogik zu einem Zeitpunkt zu erfassen, der auf die nicht-verzögerte Einfangzeit folgt, wobei die Veränderung ein Zeichen für einen systematischen Fehler ist, wobei die Verarbeitungslogik den Verarbeitungsvorgang zu dem nicht-verzögerten Einfangzeitpunkt noch nicht beendet hat, oder ein Zeichen für einen Zufallsfehler in dem nicht-verzögerten Wert ist, und eine Fehlerreparaturlogik, die in der Weise betreibbar ist, daß sie dann, wenn der Komparator die Veränderung in dem Ausgangssignal der Verarbeitungslogik erfaßt, einen Fehlerreparaturvorgang ausführt, welcher die Verwendung des nicht-verzögerten Werts unterdrückt, entweder durch Ersetzen des nicht-verzögerten Werts durch den fehlerüberprüften verzögerten Wert in den nachfolgenden Verarbeitungsstufen, oder durch Auslösen einer Wiederholung des Verarbeitungsvorgangs und der Verarbeitungsvorgänge nachfolgender Verarbeitungsstufen, wenn die Fehlerkorrekturlogik anzeigt, daß der erfaßte Zufallsfehler nicht korrigierbar ist.
  2. Integrierter Schaltkreis nach Anspruch 1, wobei die Fehlerreparaturlogik in der Weise betreibbar ist, daß sie die Verwendung des nicht-verzögerten Werts unterdrückt, indem sie den nicht-verzögerten Wert durch den fehlerüberprüften verzögerten Wert in dem Fall ersetzt, daß die Fehlerkorrekturlogik (1026, 1028) in dem verzögerten Werte einen korrigierbaren Zufallsfehler entdeckt und der Komparator (1024) entdeckt, daß es keinen Unterschied zwischen dem nicht-verzögerten Wert und dem fehlerüberprüften verzögerten Wert gibt.
  3. Integrierter Schaltkreis nach Anspruch 1 oder 2, wobei der Verarbeitungsvorgang, welcher durch die Verarbeitungslogik (1014) durchgeführt wird, ein Vorgang ist, für welchen das Ausgangssignal der Verarbeitungslogik im wesentlichen gleich dem Eingangswert der Verarbeitungsstufe ist, wenn kein Fehler in dem Verarbeitungsvorgang auftritt.
  4. Integrierter Schaltkreis nach Anspruch 3, wobei die zumindest eine Verarbeitungsstufe durch einen Speicherschaltkreis ausgeführt wird und der Verarbeitungsvorgang ein Lese- oder Schreibevorgang ist.
  5. Integrierter Schaltkreis nach Anspruch 3, wobei zumindest eine Verarbeitungsstufe durch ein Register ausgeführt wird und wobei der Verarbeitungsvorgang ein Lese-Schreibe- oder Verschiebevorgang ist.
  6. Integrierter Schaltkreis nach Anspruch 3, wobei die zumindest eine Verarbeitungsstufe durch einen Multiplexer ausgeführt wird und wobei der Verarbeitungsvorgang ein Multiplex-Vorgang ist.
  7. Integrierter Schaltkreis nach einem der vorstehenden Ansprüche, wobei die Mehrzahl von Verarbeitungsstufen entsprechende Pipelinestufen innerhalb einer synchronen Pipeline sind.
  8. Integrierter Schaltkreis nach einem der Ansprüche 3 bis 7, wobei der Eingangswert (1013) ein Fehlerkorrekturcode ist, der unter Verwendung eines Hamming-Code codiert ist und wobei die Fehlerkorrekturlogik die Korrektur und die Erfassung unter Verwendung des Hamming-Code ausführt.
  9. Integrierter Schaltkreis nach einem der vorstehenden Ansprüche, wobei der Verarbeitungsvorgang, welcher durch die Verarbeitungslogik (1014) ausgeführt wird, ein einen Wert verändernder Vorgang ist, für welchen das Ausgangssignal der Verarbeitungslogik von dem Eingangswert der Verarbeitungsstufe verschieden sein kann, selbst wenn keine Fehler in dem Verarbeitungsvorgang auftreten.
  10. Integrierter Schaltkreis nach Anspruch 9, wobei die Verarbeitungslogik (1014) eine der folgenden ist: ein Addierer, ein Multiplizierer oder ein Verschieber.
  11. Integrierter Schaltkreis nach Anspruch 8, wobei der Eingangswert (1013) ein Fehlerkorrekturcode ist, der unter Verwendung eines arithmetischen Codes codiert wird, welcher eines der folgenden aufweist: einen AN-Code, einen Restwertcode, einen inversen Restwertcode oder einen Restwertnummerncode.
  12. Integrierter Schaltkreis nach einem der vorstehenden Ansprüche, welcher einen Meta-Stabilitätsdetektor aufweist, der in der Weise betreibbar ist, daß er Meta-Stabilität in dem nicht-verzögerten Wert erfaßt und veranlaßt, daß die Fehlerreparaturlogik die Verwendung des nicht-verzögerten Werts unterdrückt, wenn er sich als meta-stabil herausstellt.
  13. Integrierter Schaltkreis nach einem der vorstehenden Ansprüche, wobei dann, wenn der Komparator (1024) die Veränderung erfaßt, die Fehlerreparaturiogik in der Weise betreibbar ist, daß sie den nicht-verzögerten Wert durch den fehlerüberprüften verzögerten Wert als das Verarbeitungsstufenausgangssignal ersetzt.
  14. Integrierter Schaltkreis nach Anspruch 13, wobei die Zufuhr des fehlerüberprüften verzögerten Werts an die folgenden Verarbeitungsstufen ein weiteres Fortschreiten durch die Verarbeitungsvorgänge erzwingt.
  15. Integrierter Schaltkreis nach einem der vorstehenden Ansprüche, wobei dann, wenn der Komparator (1024) die Veränderung erfaßt, die Fehlerkorrekturlogik in der Weise betreibbar ist, daß sie erzwingt, daß der fehlerüberprüfte verzögerte Wert anstelle des nicht-verzögerten Werts in dem nicht-verzögerten Signaleinfangelement gespeichert wird.
  16. Integrierter Schaltkreis nach einem der vorstehenden Ansprüche, wobei Verarbeitungsvorgänge innerhalb der zumindest einen Verarbeitungsstufe und den nachfolgenden Verarbeitungsstufen durch ein nicht-verzögertes Taktsignal gesteuert bzw. getaktet werden.
  17. Integrierter Schaltkreis nach Anspruch 16, wobei dann, wenn der Komparator (1024) die Veränderung erfaßt, die Fehlerreparaturlogik in der Weise betreibbar ist, daß sie das nicht-verzögerte Taktsignal in einer Torschaltung durchleitet, um Zeit für die folgende Verarbeitungsstufe bereitzustellen, damit sie sich von der Eingabe des nicht-verzögerten Werts erholt und statt dessen den fehlerüberprüften verzögerten Wert verwendet.
  18. Integrierter Schaltkreis nach Anspruch 16, wobei die nicht-verzögerte Einfangzeit von einem vorbestimmten Phasenpunkt des nicht-verzögerten Taktsignals abgeleitet wird, wobei eine phasenverzögerte Version des nicht-verzögerten Taktsignals als ein verzögertes Taktsignal verwendet wird, und die verzögerte Einfangzeit von einem vorbestimmten Phasenpunkt des verzögerten Taktsignals abgeleitet wird.
  19. Integrierter Schaltkreis nach einem der vorstehenden Ansprüche, wobei einer oder mehrere Betriebsparameter des integrierten Schaltkreises in Abhängigkeit von der Erfassung der systematischen Fehler gesteuert werden, welche der Veränderung entsprechen.
  20. Integrierter Schaltkreis nach Anspruch 19, wobei der eine oder die mehreren Betriebsparameter in der Weise gesteuert werden, daß sie ein Niveau haben, auf welchem eine systematische Fehlerrate aufrechterhalten wird, die nicht gleich null ist.
  21. Integrierter Schaltkreis nach einem der Ansprüche 19 oder 20, wobei der eine oder die mehreren Betriebsparameter zumindest einen der folgenden umfassen: eine Betriebsspannung, eine Betriebsfrequenz, eine Vorspannung des Hauptteils des integrierten Schaltkreises und die Temperatur.
  22. Integrierter Schaltkreis nach einem der vorstehenden Ansprüche, wobei eine minimale Verarbeitungszeit, die für den Verarbeitungsvorgang gebraucht wird, größer ist, als eine Zeit, welche die verzögerte Einfangzeit von der nicht-verzögerten Einfangzeit trennt, so daß der fehlerüberprüfte verzögerte Wert nicht durch einen Verarbeitungsvorgang beeinflußt wird, der mit unterschiedlichen Eingangswerten ausgeführt wird.
  23. Integrierter Schaltkreis nach Anspruch 22, wobei die Verarbeitungslogik (1014) eines oder mehrere verzögerte Elemente umfaßt, um sicherzustellen, daß die minimale Verarbeitungszeit überschritten wird.
  24. Integrierter Schaltkreis nach einem der vorstehenden Ansprüche, wobei eine maximale Verarbeitungszeit, die für den Verarbeitungsvorgang benötigt wird, kürzer ist als die Summe aus einer Zeit, welche die verzögerte Einfangzeit von der nicht-verzögerten Einfangzeit trennt und einer Zeit zwischen nicht-verzögerten Einfangzeiten, so daß die Verarbeitungslogik (1014) den Verarbeitungsvorgang bei Erreichen der verzögerten Einfangzeit abgeschlossen hat.
  25. Integrierter Schaltkreis nach einem der vorstehenden Ansprüche, wobei die Verarbeitungsstufen Teil eines Datenprozessors sind.
  26. Integrierter Schaltkreis nach einem der vorstehenden Ansprüche, welcher einen Fehlerzählerschaltkreis aufweist, der in der Weise betreibbar ist, daß er eine Zahl der Erfassungen von Fehlern speichert, welche der Änderung entsprechen.
  27. Integrierter Schaltkreis nach Anspruch 26, wobei die Zahl durch Software gelesen werden kann.
  28. Verfahren zum Steuern eines integrierten Schaltkreises für das Durchführen einer Datenverarbeitung, wobei das Verfahren die Schritte aufweist: Zuführen eines Ausgangssignals einer Verarbeitungsstufe von zumindest einer Verarbeitungsstufe aus einer Mehrzahl von Verarbeitungsstufen als ein Verarbeitungsstufeneingangssignal an eine nachfolgende Verarbeitungsstufe, wobei die zumindest eine Verarbeitungsstufe in der Weise arbeitet, daß sie einen Verarbeitungsvorgang mit einer Verarbeitungslogik mit zumindest einem codierten Eingangswert ausführt, um ein Ausgangssignal einer Verarbeitungslogik zu erzeugen, wobei der codierte Eingangswert ein Eingangswert ist, auf welchen ein Fehlerkorrekturcode angewendet worden ist, Einfangen eines nicht-verzögerten Werts des Ausgangssignals zu einer nicht-verzögerten Eingangzeit, wobei der nicht-verzögerte Wert an die nachfolgende Verarbeitungsstufe im Anschluß an die nicht-verzögerte Einfangzeit als das Verarbeitungsstufenausgangssignal zugeführt wird, Einfangen eines verzögerten Werts des Ausgangssignals der Verarbeitungslogik zu einer verzögerten Einfangszeit, die nach der nicht-verzögerten Einfangszeit liegt, Erfassen des Auftretens eines Zufallsfehlers in dem verzögerten Wert des Ausgangssignals der Verarbeitungslogik unter Verwendung einer Fehlerkorrekturlogik, um zu bestimmen, ob der erfaßte Zufallsfehler unter Verwendung des Korrekturcodes korrigierbar ist und um entweder einen fehlerüberprüften verzögerten Wert zu erzeugen oder um anzuzeigen, daß der erfaßt Zufallsfehler nicht korrigierbar ist, Vergleichen des nicht-verzögerten Werts mit dem fehlerüberprüften verzögerten Wert, um eine Veränderung des Ausgangssignals der Verarbeitungslogik zu einem Zeitpunkt zu erfassen, der auf die nicht-verzögerte Einfangzeit folgt, wobei die Veränderung ein Zeichen eines systematischen Fehlers ist, aufgrund dessen die Verarbeitungslogik den Verarbeitungsvorgang zu dem nicht-verzögerten Einfangzeitpunkt noch nicht beendet hat oder ein Zeichen für einen Zufallsfehler in dem nicht-verzögerten Wert ist, und wenn die Veränderung erfaßt wird, Durchführen eines Fehlerreparaturvorgangs unter Verwendung einer Fehlerreparaturlogik, welche die Verwendung des nicht-verzögerten Werts unterdrückt, entweder durch Ersetzen des nicht-verzögerten Werts durch den fehlerüberprüften verzögerten Wert in nachfolgenden Verarbeitungsstufen oder durch Auslösen einer Wiederholung des Verar beitungsvorgangs und der Verarbeitungsvorgänge nachfolgender Verarbeitungsstufen, wenn die Fehlerkorrekturlogik anzeigt, daß der erfaßte Zufallsfehler nicht korrigierbar ist.
  29. Verfahren nach Anspruch 28, wobei die Fehlerreparaturlogik in der Weise betreibbar ist, daß sie die Verwendung des nicht-verzögerten Werts unterdrückt, und zwar durch Ersetzen des nicht-verzögerten Wertes durch den fehlerüberprüften verzögerten Wert für den Fall, daß die Fehlerkorrekturlogik einen korrigierbaren Zufallsfehler in dem verzögerten Wert erfaßt und der Komparator erfaßt, daß es keinen Unterschied zwischen dem nicht-verzögerten Wert und dem fehlerüberprüften verzögerten Wert gibt.
  30. Verfahren nach einem der vorstehenden Ansprüche, wobei der Verarbeitungsvorgang, welcher durch die Verarbeitungslogik ausgeführt wird, ein Vorgang ist, für welchen das Ausgangssignal der Verarbeitungslogik im wesentlichen gleich dem Eingangswert der Verarbeitungsstufe ist, wenn keine Fehler in dem Verarbeitungsvorgang auftreten.
  31. Verfahren nach Anspruch 30, wobei die zumindest eine Verarbeitungsstufe durch einen Speicherschaltkreis ausgeführt wird und wobei der Verarbeitungsvorgang ein Lese- oder Schreibevorgang ist.
  32. Verfahren nach Anspruch 30, wobei zumindest eine Verarbeitungsstufe durch ein Register ausgeführt wird und wobei der Verarbeitungsvorgang ein Lese-Schreibe- oder Verschiebevorgang ist.
  33. Verfahren nach Anspruch 30, wobei die zumindest eine Verarbeitungsstufe durch einen Multiplexer ausgeführt wird und wobei der Verarbeitungsvorgang ein Multiplex-Vorgang ist.
  34. Verfahren nach einem der vorstehenden Ansprüche, wobei die Mehrzahl von Verarbeitungsstufen entsprechende Pipelinestufen innerhalb einer synchronen Pipeline sind.
  35. Verfahren nach einem der Ansprüche 30 bis 34, wobei der Eingangswert ein Fehlerkorrekturcode ist, der unter Verwendung eines Hamming-Code codiert ist und wobei die Fehlerkorrekturlogik die Korrektur und die Erfassung unter Verwendung des Hamming-Code ausführt.
  36. Verfahren nach irgendeinem der vorstehenden Ansprüche, wobei der Verarbeitungsvorgang, welcher durch die Verarbeitungslogik ausgeführt wird, ein einen Wert ändernder Vorgang ist, für welchen das Ausgangssignal der Verarbeitungslogik von dem Eingangswert der Verarbeitungsstufe verschieden sein kann, selbst wenn keine Fehler in dem Verarbeitungsvorgang auftreten.
  37. Verfahren nach Anspruch 36, wobei die Verarbeitungslogik eine der folgenden ist: ein Addierer, ein Multiplizierer oder ein Verschieber.
  38. Verfahren nach Anspruch 36, wobei der Eingangswert ein Fehlerkorrekturcode ist, der unter Verwendung eines arithmetischen Codes codiert wurde, welcher einen der folgenden aufweist: einen AN-Code, einen Restwertcode, einen inversen Restwertcode oder einen Restwertnummerncode.
  39. Verfahren nach einem der vorstehenden Ansprüche, welches eine Meta-Stabilitätserfassung in dem nicht verzögerten Wert und das Auslösen der Fehlerreparaturiogik aufweist, um die Verwendung des nicht-verzögerten Werts zu unterdrücken, wenn er sich als meta-stabil herausstellt.
  40. Verfahren nach einem der vorstehenden Ansprüche 28 bis 39, wobei dann, wenn die Veränderung durch den Komparator erfaßt wird, die Fehlerreparaturlogik in der Weise betreibbar ist, daß sie den nicht-verzögerten Wert durch den fehlerüberprüften verzögerten Wert als das Verarbeitungsstufenausgangssignal ersetzt.
  41. Verfahren nach einem der Ansprüche 28 bis 40, wobei die Zufuhr des fehlerüberprüften verzögerten Werts an die nachfolgende Verarbeitungsstufe ein Fortschreiten durch die Verarbeitungsvorgänge erzwingt.
  42. Verfahren nach einem Ansprüche 28 bis 41, wobei dann, wenn die Veränderung von dem Komparator erfaßt wird, die Fehlerkorrekturlogik in der Weise betreibbar ist, daß sie erzwingt, daß der fehlerüberprüfte verzögerte Wert anstelle des nicht-verzögerten Werts in dem nicht-verzögerten Signaleinfangelement gespeichert wird.
  43. Verfahren nach einem der Ansprüche 28 bis 42, wobei Verarbeitungsvorgänge innerhalb der zumindest einen Verarbeitungsstufe und der nachfolgenden Verarbeitungsstufen durch ein nicht-verzögertes Taktsignal angesteuert werden.
  44. Verfahren nach Anspruch 43, wobei dann, wenn die Veränderung durch den Komparator erfaßt wird, die Fehlerreparaturlogik in der Weise betreibbar ist, daß sie das nicht-verzögerte Taktsignal durchleitet, um Zeit für die folgende Verarbeitungsstufe bereitzustellen, damit diese sich von der Eingabe des nicht-verzögerten Werts erholt und statt dessen den fehlerüberprüften verzögerten Wert verwendet.
  45. Verfahren nach Anspruch 43 oder 44, wobei die nicht-verzögerte Einfangzeit von einem vorbestimmten Phasenpunkt des nicht-verzögerten Taktsignals abgeleitet wird, wobei eine phasenverzögerte Version des nicht-verzögerten Taktsignals als ein verzögertes Taktsignal verwendet wird, und wobei die verzögerte Einfangzeit von einem vorbestimmten Phasenpunkt des verzögerten Taktsignals abgeleitet wird.
  46. Verfahren nach einem der Ansprüche 28 bis 45, wobei einer oder mehrere Betriebsparameter des integrierten Schaltkreises in Abhängigkeit von der Erfassung der systematischen Parameter gesteuert bzw. geregelt werden, welche der Veränderung entsprechen.
  47. Verfahren nach Anspruch 46, wobei der eine oder die mehreren Betriebsparameter so gesteuert werden, daß man ein Niveau hat, bei welchem eine nicht verschwindende systematische Fehlerrate beibehalten wird.
  48. Verfahren nach einem der Ansprüche 46 oder 47, wobei die einen oder die mehreren Betriebsparameter zumindest eines der folgenden umfassen: eine Betriebsspannung, eine Betriebsfrequenz, eine Vorspannung des Hauptteils des integrierten Schaltkreises und die Temperatur.
  49. Verfahren nach einem der Ansprüche 28 bis 48, wobei eine minimale Verarbeitungszeit, die für den Verarbeitungsvorgang verwendet wird, größer ist als eine Zeit, welche die verzögerte Einfangzeit von der nicht-verzögerten Einfangzeit trennt, so daß der fehlerüberprüfte verzögerte Wert nicht durch einen Verarbeitungsvorgang beeinflußt ist, der mit anderen Eingangswerten ausgeführt wurde.
  50. Verfahren nach Anspruch 49, wobei die Verarbeitungslogik eines oder mehrere Verzögerungselemente umfaßt, um sicherzustellen, daß die minimale Verarbeitungszeit überschritten wird.
  51. Verfahren nach einem der Ansprüche 28 bis 50, wobei eine maximale Verarbeitungszeit, die für den Verarbeitungsvorgang benötigt wird, geringer ist als die Summe aus einer Zeit, welche die verzögerte Einfangzeit von der nicht-verzögerten Einfangzeit trennt und einer Zeit zwischen nicht-verzögerten Einfangzeiten, so daß die Verarbeitungslogik den Verarbeitungsvorgang bei Ablauf der verzögerten Einfangzeit abgeschlossen hat.
  52. Verfahren nach einem der Ansprüche 28 bis 51, wobei die Verarbeitungsstufen Teil eines Datenprozessors sind.
  53. Verfahren nach einem der Ansprüche 28 bis 52, welches einen Fehlerzählerschaltkreis aufweist, der in der Weise betreibbar ist, daß er eine Zahl der Erfassung von Fehlern speichert, welche der Änderung entsprechen.
  54. Verfahren nach Anspruch 53, wobei die Zahl durch Software gelesen werden kann.
DE602004001869T 2003-03-20 2004-03-17 Fehlererkennung und fehlerbehebung für systematische und zufällige fehler innerhalb einer verarbeitungsstufe einer integrierten schaltung Expired - Lifetime DE602004001869T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US392382 2003-03-20
US10/392,382 US7278080B2 (en) 2003-03-20 2003-03-20 Error detection and recovery within processing stages of an integrated circuit
US779805 2004-02-18
US10/779,805 US7162661B2 (en) 2003-03-20 2004-02-18 Systematic and random error detection and recovery within processing stages of an integrated circuit
PCT/GB2004/001143 WO2004084070A1 (en) 2003-03-20 2004-03-17 Systematic and random error detection and recovery within processing stages of an integrated circuit

Publications (2)

Publication Number Publication Date
DE602004001869D1 DE602004001869D1 (de) 2006-09-21
DE602004001869T2 true DE602004001869T2 (de) 2007-05-03

Family

ID=33032648

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602004001869T Expired - Lifetime DE602004001869T2 (de) 2003-03-20 2004-03-17 Fehlererkennung und fehlerbehebung für systematische und zufällige fehler innerhalb einer verarbeitungsstufe einer integrierten schaltung

Country Status (7)

Country Link
US (2) US7337356B2 (de)
EP (1) EP1604281B1 (de)
JP (1) JP4317212B2 (de)
KR (1) KR100981999B1 (de)
DE (1) DE602004001869T2 (de)
RU (1) RU2005129270A (de)
WO (1) WO2004084070A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102015122907A1 (de) * 2015-12-29 2017-06-29 Infineon Technologies Ag Speichereinrichtung und Verfahren zum Betreiben einer Speichereinrichtung

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8650470B2 (en) * 2003-03-20 2014-02-11 Arm Limited Error recovery within integrated circuit
US7278080B2 (en) * 2003-03-20 2007-10-02 Arm Limited Error detection and recovery within processing stages of an integrated circuit
US8185812B2 (en) * 2003-03-20 2012-05-22 Arm Limited Single event upset error detection within an integrated circuit
DE102004010783A1 (de) * 2004-03-05 2005-09-29 Infineon Technologies Ag Verfahren und Schaltungsanordnung zum Testen elektrischer Bausteine
KR100582391B1 (ko) * 2004-04-08 2006-05-22 주식회사 하이닉스반도체 반도체 소자에서의 지연 요소의 지연 검출 장치 및 방법
FR2869430A1 (fr) * 2004-04-27 2005-10-28 St Microelectronics Sa Controle de l'execution d'un algorithme par un circuit integre
US7701240B2 (en) * 2005-03-04 2010-04-20 Arm Limited Integrated circuit with error correction mechanisms to offset narrow tolerancing
US7958430B1 (en) * 2005-06-20 2011-06-07 Cypress Semiconductor Corporation Flash memory device and method
US7725693B2 (en) * 2005-08-29 2010-05-25 Searete, Llc Execution optimization using a processor resource management policy saved in an association with an instruction group
US20070050608A1 (en) * 2005-08-29 2007-03-01 Searete Llc, A Limited Liability Corporatin Of The State Of Delaware Hardware-generated and historically-based execution optimization
US7647487B2 (en) * 2005-08-29 2010-01-12 Searete, Llc Instruction-associated processor resource optimization
US7779213B2 (en) * 2005-08-29 2010-08-17 The Invention Science Fund I, Inc Optimization of instruction group execution through hardware resource management policies
US8214191B2 (en) 2005-08-29 2012-07-03 The Invention Science Fund I, Llc Cross-architecture execution optimization
US7539852B2 (en) * 2005-08-29 2009-05-26 Searete, Llc Processor resource management
US7653834B2 (en) * 2005-08-29 2010-01-26 Searete, Llc Power sparing synchronous apparatus
US7877584B2 (en) * 2005-08-29 2011-01-25 The Invention Science Fund I, Llc Predictive processor resource management
US7627739B2 (en) * 2005-08-29 2009-12-01 Searete, Llc Optimization of a hardware resource shared by a multiprocessor
US8255745B2 (en) 2005-08-29 2012-08-28 The Invention Science Fund I, Llc Hardware-error tolerant computing
US7739524B2 (en) * 2005-08-29 2010-06-15 The Invention Science Fund I, Inc Power consumption management
US8375247B2 (en) * 2005-08-29 2013-02-12 The Invention Science Fund I, Llc Handling processor computational errors
US8209524B2 (en) 2005-08-29 2012-06-26 The Invention Science Fund I, Llc Cross-architecture optimization
US8181004B2 (en) 2005-08-29 2012-05-15 The Invention Science Fund I, Llc Selecting a resource management policy for a resource available to a processor
US8516300B2 (en) 2005-08-29 2013-08-20 The Invention Science Fund I, Llc Multi-votage synchronous systems
DE102005049232A1 (de) * 2005-10-14 2007-04-26 Infineon Technologies Ag Integrierter Schaltkreis und Verfahren zum Betreiben eines integrierten Schaltkreises
KR100971806B1 (ko) * 2005-10-26 2010-07-22 인텔 코오퍼레이션 변화를 탐지하는 클러스터 아키텍처
US20070150115A1 (en) * 2005-12-27 2007-06-28 Micron Technology, Inc. Operation and design of integrated circuits at constrained temperature ranges in accordance with bit error rates
JP5129450B2 (ja) * 2006-01-16 2013-01-30 ルネサスエレクトロニクス株式会社 情報処理装置
JP2007195076A (ja) * 2006-01-20 2007-08-02 Nec Corp 無線通信システムとその送信電力制御方法および装置
FR2897175A1 (fr) * 2006-02-09 2007-08-10 Atmel Corp Appareil et procede pour la detection, et la recuperation depuis, un acces inapproprie au bus dans le domaine technique des circuits microcontroleurs
US7805642B1 (en) * 2006-02-17 2010-09-28 Aquantia Corporation Low power iterative decoder using input data pipelining and voltage scaling
JP5173216B2 (ja) * 2006-04-18 2013-04-03 パナソニック株式会社 半導体集積回路システム、半導体集積回路、オペレーティングシステム及び半導体集積回路の制御方法
US7814339B2 (en) 2006-06-30 2010-10-12 Intel Corporation Leakage power estimation
WO2008015495A1 (en) * 2006-08-03 2008-02-07 Freescale Semiconductor, Inc. Device and method for power management
JP5083214B2 (ja) * 2006-08-24 2012-11-28 日本電気株式会社 故障予測回路と方法及び半導体集積回路
US8020038B2 (en) * 2006-09-28 2011-09-13 Hewlett-Packard Development Company, L.P. System and method for adjusting operating points of a processor based on detected processor errors
GB0619949D0 (en) * 2006-10-09 2006-11-15 Advanced Risc Mach Ltd Integrated circuit
US8412981B2 (en) * 2006-12-29 2013-04-02 Intel Corporation Core sparing on multi-core platforms
US7908516B2 (en) 2007-03-27 2011-03-15 Microchip Technology Incorporated Low power mode fault recovery method, system and apparatus
FR2917202B1 (fr) * 2007-06-06 2009-08-21 Peugeot Citroen Automobiles Sa Dispositif de controle de valeurs de parametre(s) par analyse de fiabilite, et calculateur correspondant.
US7788546B2 (en) * 2007-09-17 2010-08-31 Advanced Micro Devices, Inc. Method and system for identifying communication errors resulting from reset skew
GB2453759B8 (en) * 2007-10-17 2011-12-21 Advanced Risc Mach Ltd Integrated circuit using speculative execution
KR101490249B1 (ko) * 2007-12-11 2015-02-05 엘지전자 주식회사 연판정을 이용한 통신방법 및 장치
KR101467788B1 (ko) * 2007-12-11 2014-12-03 엘지전자 주식회사 랜덤 선형 부호화를 이용하는 통신방법 및 장치
KR101531502B1 (ko) * 2007-12-11 2015-06-26 엘지전자 주식회사 오류제어방법
GB2458260A (en) 2008-02-26 2009-09-16 Advanced Risc Mach Ltd Selectively disabling error repair circuitry in an integrated circuit
US8171386B2 (en) * 2008-03-27 2012-05-01 Arm Limited Single event upset error detection within sequential storage circuitry of an integrated circuit
US7795920B2 (en) * 2008-03-31 2010-09-14 Kabushiki Kaisha Toshiba Semiconductor integrated circuit
US7945811B2 (en) * 2008-05-12 2011-05-17 Arm Limited Low power, high reliability specific compound functional units
US9189014B2 (en) 2008-09-26 2015-11-17 Intel Corporation Sequential circuit with error detection
US8301970B2 (en) * 2008-09-26 2012-10-30 Intel Corporation Sequential circuit with error detection
US8161367B2 (en) * 2008-10-07 2012-04-17 Arm Limited Correction of single event upset error within sequential storage circuitry of an integrated circuit
US7900114B2 (en) 2009-02-27 2011-03-01 Infineon Technologies Ag Error detection in an integrated circuit
US8041992B2 (en) * 2009-05-11 2011-10-18 Technology Currents Llc Input compensated and/or overcompensated computing
US9378077B2 (en) * 2009-08-07 2016-06-28 Stmicroelectronics S.R.L. System for detecting operating errors in integrated circuits
US8914672B2 (en) * 2009-12-28 2014-12-16 Intel Corporation General purpose hardware to replace faulty core components that may also provide additional processor functionality
CN102193581B (zh) * 2010-02-12 2015-06-17 英特尔移动通信技术德累斯顿有限公司 电路系统和用于连接电路系统的同步时钟域的方法
US20130086444A1 (en) * 2010-03-05 2013-04-04 Bao Liu Error detection code enhanced self-timed/asynchronous nanoelectronic circuits
US7977965B1 (en) * 2010-03-12 2011-07-12 International Business Machines Corporation Soft error detection for latches
US8555124B2 (en) 2010-06-07 2013-10-08 Arm Limited Apparatus and method for detecting an approaching error condition
WO2012007643A1 (en) * 2010-07-16 2012-01-19 Aalto University Foundation Sequential circuit with current mode error detection
US8615687B2 (en) 2010-07-23 2013-12-24 Arm Limited Data processing system and method for regulating a voltage supply to functional circuitry of the data processing system
US8639987B2 (en) 2011-02-18 2014-01-28 Arm Limited Data processing apparatus and method using monitoring circuitry to control operating parameters
US8493120B2 (en) 2011-03-10 2013-07-23 Arm Limited Storage circuitry and method with increased resilience to single event upsets
ITTO20110485A1 (it) * 2011-06-03 2012-12-04 Torino Politecnico Method and circuit for solving metastability conditions and recovering signal errors in digitalintegrated circuits
WO2013100983A1 (en) * 2011-12-28 2013-07-04 Intel Corporation Resilient register file circuit for dynamic variation tolerance and method of operating the same
US9600382B2 (en) * 2012-09-03 2017-03-21 Southeast University Error recovery circuit oriented to CPU pipeline
WO2014049395A1 (en) * 2012-09-27 2014-04-03 Freescale Semiconductor, Inc. Scan test system
US9780787B2 (en) 2013-03-28 2017-10-03 Korea Advanced Institute Of Science And Technology Self-reparable digital device for multiple faults based on biological attractor concepts
US9009545B2 (en) * 2013-06-14 2015-04-14 International Business Machines Corporation Pulsed-latch based razor with 1-cycle error recovery scheme
TWI553484B (zh) 2014-04-01 2016-10-11 Nat Univ Chung Cheng 前瞻臆測處理裝置及其處理方法
GB2525864B (en) 2014-05-06 2021-04-07 Advanced Risc Mach Ltd Clock frequency reduction for an electronic device
US9672008B2 (en) 2014-11-24 2017-06-06 Nvidia Corporation Pausible bisynchronous FIFO
US9244123B1 (en) 2014-11-25 2016-01-26 Freescale Semiconductor, Inc. Synchronous circuit, method of designing a synchronous circuit, and method of validating a synchronous circuit
TWI554042B (zh) 2014-12-08 2016-10-11 財團法人工業技術研究院 訊號比較裝置及其控制方法
EP3513293A4 (de) * 2016-09-16 2020-05-20 University Of Southern California Systeme und verfahren zur abschwächung von fehlern in kombinatorischer logik
KR102030461B1 (ko) * 2017-11-23 2019-10-10 현대오트론 주식회사 복수의 프로세서 오류 감지 시스템 및 그 방법
US10936774B1 (en) * 2018-02-15 2021-03-02 Real Intent, Inc. Methods for identifying integrated circuit failures caused by reset-domain interactions
US11022649B2 (en) * 2018-11-30 2021-06-01 Arm Limited Stabilised failure estimate in circuits
US10747601B2 (en) * 2018-11-30 2020-08-18 Arm Limited Failure estimation in circuits
JP2020145356A (ja) * 2019-03-07 2020-09-10 株式会社東芝 集積回路装置
KR20210058566A (ko) 2019-11-14 2021-05-24 삼성전자주식회사 전자 시스템, 그것의 결함 검출 방법, 시스템 온 칩 및 버스 시스템
US11630730B1 (en) * 2021-10-29 2023-04-18 Zoox, Inc. Data processing pipeline error recovery

Family Cites Families (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3905023A (en) * 1973-08-15 1975-09-09 Burroughs Corp Large scale multi-level information processing system employing improved failsaft techniques
US3893070A (en) * 1974-01-07 1975-07-01 Ibm Error correction and detection circuit with modular coding unit
SU809350A1 (ru) 1979-05-31 1981-02-28 Московский Ордена Трудовогокрасного Знамени Текстильныйинститут Запоминающее устройство
US4339657A (en) * 1980-02-06 1982-07-13 International Business Machines Corporation Error logging for automatic apparatus
JPS6020398A (ja) 1983-07-14 1985-02-01 Nec Corp メモリ装置
FR2571566B1 (fr) * 1984-10-09 1987-01-23 Labo Electronique Physique Dispositif de reception de donnees numeriques comportant un dispositif de recuperation adaptative de rythme
US4633465A (en) * 1985-03-27 1986-12-30 At&T Bell Laboratories Eye violation detectors
JPS6224498A (ja) 1985-07-24 1987-02-02 Nippon Telegr & Teleph Corp <Ntt> メモリ読出し方式
US4756005A (en) * 1986-05-27 1988-07-05 American Telephone And Telegraph Company At&T Bell Laboratories Digital signal regenerator arranged for fault location
US5043990A (en) * 1987-12-04 1991-08-27 Hitachi, Ltd. Semiconductor integrated circuit device
GB2213684A (en) * 1987-12-11 1989-08-16 Philips Electronic Associated Data demodulator baud clock phase locking
US4994993A (en) * 1988-10-26 1991-02-19 Advanced Micro Devices, Inc. System for detecting and correcting errors generated by arithmetic logic units
US4975930A (en) * 1988-11-02 1990-12-04 Digital Equipment Corporation Digital phase locked loop
US4926374A (en) * 1988-11-23 1990-05-15 International Business Machines Corporation Residue checking apparatus for detecting errors in add, subtract, multiply, divide and square root operations
JPH03142629A (ja) * 1989-10-30 1991-06-18 Toshiba Corp マイクロコントローラ
US5291496A (en) * 1990-10-18 1994-03-01 The United States Of America As Represented By The United States Department Of Energy Fault-tolerant corrector/detector chip for high-speed data processing
US5321705A (en) * 1990-11-21 1994-06-14 Motorola, Inc. Error detection system
US5203003A (en) * 1991-03-28 1993-04-13 Echelon Corporation Computer architecture for conserving power by using shared resources and method for suspending processor execution in pipeline
US5313625A (en) * 1991-07-30 1994-05-17 Honeywell Inc. Fault recoverable computer system
US5276690A (en) * 1992-01-30 1994-01-04 Intel Corporation Apparatus utilizing dual compare logic for self checking of functional redundancy check (FRC) logic
US5402273A (en) * 1992-10-01 1995-03-28 Conner Peripherals, Inc. Circuit for determining window margin for data transitions in a streaming data device
US5408200A (en) * 1992-12-18 1995-04-18 Storage Technology Corporation Intelligent phase detector
US5376894A (en) * 1992-12-31 1994-12-27 Pacific Communication Sciences, Inc. Phase estimation and synchronization using a PSK demodulator
JPH06216655A (ja) * 1993-01-13 1994-08-05 Nec Corp 復調回路
US5400370A (en) * 1993-02-24 1995-03-21 Advanced Micro Devices Inc. All digital high speed algorithmic data recovery method and apparatus using locally generated compensated broad band time rulers and data edge position averaging
ES2183808T3 (es) * 1993-10-12 2003-04-01 Cit Alcatel Circuito sincronizador.
EP0653708B1 (de) * 1993-10-15 2000-08-16 Hitachi, Ltd. Logischer Schaltkreis mit Fehlernachweisfunktion, Verfahren zum Verwalten von Betriebsmitteln und fehlertolerantes System zu seiner Anwendung
US5504859A (en) * 1993-11-09 1996-04-02 International Business Machines Corporation Data processor with enhanced error recovery
US5553232A (en) * 1994-06-13 1996-09-03 Bull Hn Informations Systems Inc. Automated safestore stack generation and move in a fault tolerant central processor
JPH0863365A (ja) * 1994-08-23 1996-03-08 Fujitsu Ltd データ処理装置
US5463351A (en) * 1994-09-29 1995-10-31 Motorola, Inc. Nested digital phase lock loop
US5734585A (en) 1994-11-07 1998-03-31 Norand Corporation Method and apparatus for sequencing power delivery in mixed supply computer systems
US5615263A (en) 1995-01-06 1997-03-25 Vlsi Technology, Inc. Dual purpose security architecture with protected internal operating system
US5737369A (en) * 1996-02-28 1998-04-07 Motorola, Inc. Apparatus and method for recovering data in the presence of error transients
US5870446A (en) * 1996-03-11 1999-02-09 Adtran, Inc. Mechanism for automatically adjusting the phase of a transmission strobe clock signal to correct for misalignment of transmission clock and data signals
JP3669796B2 (ja) * 1996-12-03 2005-07-13 富士通株式会社 ディジタルpll回路
FR2759796B1 (fr) * 1997-02-19 2001-12-07 Bull Sa Dispositif et procede de detection d'erreurs sur un circuit integre comportant un port parallele serie
US6114880A (en) * 1997-03-14 2000-09-05 Philips Semiconductor Vlsi, Inc. Dynamic over frequency detection and protection circuitry
JP3494849B2 (ja) * 1997-05-29 2004-02-09 富士通株式会社 半導体記憶装置のデータ読み出し方法、半導体記憶装置及び半導体記憶装置の制御装置
CN1202530C (zh) * 1998-04-01 2005-05-18 三菱电机株式会社 在低电源电压下高速动作的静态型半导体存储装置
US6222660B1 (en) * 1998-06-09 2001-04-24 Tektronix, Inc. Adaptive power supply for avalanche photodiode
US6247151B1 (en) * 1998-06-30 2001-06-12 Intel Corporation Method and apparatus for verifying that data stored in a memory has not been corrupted
US6167526A (en) * 1998-12-29 2000-12-26 Adaptec, Inc. Method and apparatus for synchronizing a decoder circuit with a phase-encoded data signal in a data storage device
US6977910B1 (en) * 1998-12-31 2005-12-20 Texas Instruments Incorporated Power control with space time transmit diversity
JP2000228094A (ja) * 1999-02-04 2000-08-15 Toshiba Corp 不揮発性半導体記憶装置
FR2790887B1 (fr) * 1999-03-09 2003-01-03 Univ Joseph Fourier Circuit logique protege contre des perturbations transitoires
US6523201B1 (en) * 1999-05-04 2003-02-25 Eliza A. De Michele Sleep support system
JP3975245B2 (ja) 1999-12-16 2007-09-12 株式会社ルネサステクノロジ 記録再生装置および半導体メモリ
US6834367B2 (en) * 1999-12-22 2004-12-21 International Business Machines Corporation Built-in self test system and method for high speed clock and data recovery circuit
WO2001046800A2 (en) 1999-12-23 2001-06-28 General Instrument Corporation Dual-mode processor
JP2001255356A (ja) * 2000-03-08 2001-09-21 Matsushita Electric Ind Co Ltd 半導体集積回路のテストパターン生成方法及びテスト方法
JP3450814B2 (ja) * 2000-09-26 2003-09-29 松下電器産業株式会社 情報処理装置
FR2815197B1 (fr) * 2000-10-06 2003-01-03 St Microelectronics Sa Circuit asynchrone pour la detection et la correction de l'erreur induite et procede de mise en oeuvre
CA2424572C (en) * 2000-10-23 2010-12-07 The Trustees Of Columbia University In The City Of New York Asynchronous pipeline with latch controllers
US6693985B2 (en) * 2000-10-27 2004-02-17 Silicon Image Clock and data recovery method and apparatus
GB0026614D0 (en) * 2000-10-31 2000-12-13 Lsi Logic Europ Ltd A method and apparatus for estimation of error in data recovery schemes
US6772388B2 (en) * 2000-12-06 2004-08-03 Motorola, Inc Apparatus and method for providing optimal adaptive forward error correction in data communications
JP4526194B2 (ja) * 2001-01-11 2010-08-18 ルネサスエレクトロニクス株式会社 オーバーサンプリングクロックリカバリ方法及び回路
US7116744B2 (en) * 2001-03-29 2006-10-03 Fujitsu Limited Clock recovery circuit and receiver circuit for improving the error rate of signal reproduction
JP4054550B2 (ja) * 2001-06-29 2008-02-27 株式会社エヌ・ティ・ティ・ドコモ 送信電力制御方法及び装置
US6952123B2 (en) * 2002-03-22 2005-10-04 Rambus Inc. System with dual rail regulated locked loop
US6741110B2 (en) * 2002-05-28 2004-05-25 Lsi Logic Corporation Method and/or circuit for generating precision programmable multiple phase angle clocks
US7142623B2 (en) * 2002-05-31 2006-11-28 International Business Machines Corporation On-chip system and method for measuring jitter tolerance of a clock and data recovery circuit
US7085993B2 (en) * 2002-07-29 2006-08-01 International Business Machine Corporation System and method for correcting timing signals in integrated circuits
US7302592B2 (en) * 2002-12-02 2007-11-27 Silverbrook Research Pty Ltd Integrated circuit which disables writing circuitry to memory when the power drops below a power threshold predetermined and controlled by the processor
US7278080B2 (en) 2003-03-20 2007-10-02 Arm Limited Error detection and recovery within processing stages of an integrated circuit

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102015122907A1 (de) * 2015-12-29 2017-06-29 Infineon Technologies Ag Speichereinrichtung und Verfahren zum Betreiben einer Speichereinrichtung
DE102015122907A8 (de) * 2015-12-29 2017-12-21 Infineon Technologies Ag Speichereinrichtung und Verfahren zum Betreiben einer Speichereinrichtung
DE102015122907B4 (de) 2015-12-29 2019-07-04 Infineon Technologies Ag Speichereinrichtung und Verfahren zum Betreiben einer Speichereinrichtung

Also Published As

Publication number Publication date
JP4317212B2 (ja) 2009-08-19
US20050022094A1 (en) 2005-01-27
KR100981999B1 (ko) 2010-09-13
JP2006520954A (ja) 2006-09-14
KR20050117559A (ko) 2005-12-14
EP1604281B1 (de) 2006-08-09
RU2005129270A (ru) 2006-05-27
US20050246613A1 (en) 2005-11-03
US7320091B2 (en) 2008-01-15
EP1604281A1 (de) 2005-12-14
WO2004084070A1 (en) 2004-09-30
US7337356B2 (en) 2008-02-26
DE602004001869D1 (de) 2006-09-21

Similar Documents

Publication Publication Date Title
DE602004001869T2 (de) Fehlererkennung und fehlerbehebung für systematische und zufällige fehler innerhalb einer verarbeitungsstufe einer integrierten schaltung
DE102006048856B4 (de) Verfahren zum Betreiben einer IC-Halbleiterspeichervorrichtung und IC-Halbleiterspeichervorrichtung
DE10304447B4 (de) Verfahren zur Handhabung von Datenfehlern in einem Prozessor mit Pipeline und derartiger Prozessor
DE112005001338T5 (de) Verfahren und Vorrichtung zur Reduzierung falscher Fehlererkennung in einem Mikroprozessor
DE102007058828A1 (de) Speicherbauelement und Fehlerkorrekturverfahren
WO2007045202A1 (de) Integrierter schaltkreis und verfahren zum betreiben eines integrierten schaltkreises
DE2942998A1 (de) Fehler-korrektur- und -erkennungs- anordnung
DE102006003146B4 (de) Vorrichtung und Verfahren zum Auslesen eines Datenwortes und Vorrichtung und Verfahren zum Speichern eines Datenblocks
DE3045609C2 (de)
DE102008015998B4 (de) Getaktete Logik mit verringerter Verzögerung
DE602004001679T2 (de) Speichersystem mit sequenziell ausgeführten schnellen und langsamen lesezugriffen
DE602004001228T2 (de) Bereitstellung von zwischenspeichern zur zurückhaltung von daten in integrierten schaltungen
DE102008013099A1 (de) Speichertestschaltung
EP1444700B1 (de) Speichertest
DE112019001968B4 (de) Gemeinsame korrekturlogik für hohe und niedrige zufalls-bitfehlerraten
DE4411874C2 (de) Schreibsignaleingangspuffer in einem integrierten Halbleiterschaltkreis
DE102006027448B4 (de) Schaltungsanordnung
DE112016002871T5 (de) Halbleitervorrichtung
DE102004002219A1 (de) Unterstütztes Speichersystem
DE112011102474B4 (de) Hybride Dekodierung von BCH-Kodes für nichtflüchtige Speicher
DE3731097C2 (de) Schaltungsanordnung zur Überwachung einer von zwei Mikroprozessoren gesteuerten Einrichtung, insbesondere einer Kraftfahrzeug-Elektronik
DE2161994A1 (de) Fehlerfeststellungsschaltung bei einer Datenverarbeitungsanlage
DE102005060714B4 (de) Datenverarbeitungsvorrichtung, Speicherkarte, Verfahren zum Betreiben einer Datenverarbeitungsvorrichtung und Herstellungsverfahren für eine Datenverarbeitungsvorrichtung
DE3716594C2 (de) Schaltungsanordnung für Fernmeldeanlagen, insbesondere Fernsprechvermittlungsanlagen, mit Speichereinrichtungen, in denen gespeicherte Informationsportionen auf ihre Richtigkeit überprüft werden
DE60109644T2 (de) Vorrichtung und verfahren zur erkennung und korrektur von speicherfehlern in einer elektronischen vorrichtung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition