DE68919069T2 - Verfahren und Gerät zur Fehlererkennung und -korrektur in einem nach dem überlappten Steuerungsverfahren arbeitenden Rechnersystem. - Google Patents

Verfahren und Gerät zur Fehlererkennung und -korrektur in einem nach dem überlappten Steuerungsverfahren arbeitenden Rechnersystem.

Info

Publication number
DE68919069T2
DE68919069T2 DE68919069T DE68919069T DE68919069T2 DE 68919069 T2 DE68919069 T2 DE 68919069T2 DE 68919069 T DE68919069 T DE 68919069T DE 68919069 T DE68919069 T DE 68919069T DE 68919069 T2 DE68919069 T2 DE 68919069T2
Authority
DE
Germany
Prior art keywords
instruction
execution
central processing
unit
processing unit
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 - Fee Related
Application number
DE68919069T
Other languages
English (en)
Other versions
DE68919069D1 (de
Inventor
Richard C Beaven
Michael B Evans
Tryggve Fossum
Ricky C Hetherington
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.)
Digital Equipment Corp
Original Assignee
Digital Equipment Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Digital Equipment Corp filed Critical Digital Equipment Corp
Publication of DE68919069D1 publication Critical patent/DE68919069D1/de
Application granted granted Critical
Publication of DE68919069T2 publication Critical patent/DE68919069T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2236Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
    • 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]
    • G06F11/0724Error 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] in a multiprocessor or a multi-core unit
    • 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/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • 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/0766Error or fault reporting or storing
    • G06F11/0781Error filtering or prioritizing based on a policy defined by the user or on a policy defined by a hardware/software module, e.g. according to a severity level
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • 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 or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Retry When Errors Occur (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)
  • Radar Systems Or Details Thereof (AREA)

Description

  • Die Erfindung betrifft allgemein ein Verfahren und eine Vorrichtung zur Fehlerbehandlung in einem Computersystem, das nach dem Pipeline-Verfahren arbeitet, und insbesondere ein Computersystem, bei dem zwischen synchronen und asynchronen Fehlern unterschieden wird und verschiedene Routinen verwendet werden, um für jeden Fehlertyp eine Korrektur vorzunehmen.
  • Herkömmliche Digitalrechner verarbeiten Daten gemäß "Abruf-/Ausführungszyklen", in denen Befehle aus dem Speicher abgerufen und ausgeführt werden. Je der Zyklus kann eine Anzahl von Zwischenschritten umfassen, was von dem einzelnen Befehl abhängt. Ein Befehl kann beispielsweise Operanden spezifizieren, die aus dem Speicher abgerufen werden müssen, bevor der Befehl ausgeführt wird.
  • In kleinen, langsamlaufenden Computern wird der Abruf-/Ausführungszyklus für einen Befehl gleichzeitig durchgeführt. Beispielsweise erfolgt der Abruf des nächsten Befehls erst, wenn das Ergebnis des gegenwärtigen Befehls gespeichert worden ist. Die jedem Schritt in dem Abruf-/Ausführungszyklus überlassene Hardware wird nur während dieses entsprechenden Schritts verwendet und bleibt dann ungenutzt, bis sie für den nächsten Befehl benötigt wird. Dementsprechend sind Fehler, die während der Ausführung dieser diskreten Befehle auftreten, relativ leicht zu lokalisieren und können dem gegenwärtigen Befehl zugeschrieben werden. Somit wird die Korrektur so eines Fehlers durch Zurückstellen der Statuszustände auf ihren Status vor dem Befehl und Neustarten der Befehlsausführung des Computers zustande gebracht. Diese Statuszustände sind in Form von Speicherinhalten und Registerwerten zwischen der Ausführung jedes Befehls genau festgelegt. Daher ist es im allgemeinen ein einfacher Prozeß, die Befehlsausführung an den Anfang des Befehls zu "sichern" und den Befehl neu auszuführen.
  • Größere Computer verkürzen ihre Befehlsausführungszeit durch einen Vorababruf von Befehlen, so daß der nächste Befehl zur Decodierung bereit ist, sobald das Ergebnis des gegenwärtigen Befehls gespeichert ist. Dies ist eine einfache Form des "Pipeline-Verfahrens", bei dem der erste Schritt im Zyklus für den nächsten Befehl gleichzeitig mit dem letzten Schritt für den gegenwärtigen Befehl durchgeführt wird. Diese einfache Form des Pipeline-Verfahrens verkürzt die Gesamtzeit zur Durchführung der Befehle.
  • Die am weitesten fortgeschrittenen Computer führen die gesamte Abfolge von Befehlsaktivitäten nach dem Pipeline-Verfahren durch. Ein grundlegendes Beispiel ist der Computer VAX 8600, der von der Fa. Digital Equipment Corporation, 111 Powdermill Road, Maynard, MA, 01754-1418, hergestellt und verkauft wird. Die Befehls-Pipeline für den VAX 8600 ist beschrieben in T. Fossum et al., "An Overview of the VAX 8600 System", Digital Technical Journal, Nr. 1, August 1985, S. 8-23. Für den Befehlsabruf, die Befehlsdecodierung, die Operandenadressenerzeugung, den Operandenabruf, die Befehlsdecodierung, die Operandenadressenerzeugung, den Operandenabruf, die Befehlsausführung und die Ergebnisspeicherung sind getrennte Pipeline-Stufen vorgesehen. Wenn in der Zentraleinheit ein Hardware-Fehler nachgewiesen wird, wird ein Fehlersignal an eine Ausführungseinheit abgegeben. Als Antwort auf das Fehlersignal wird ein Systemtakt der Zentraleinheit angehalten, und der Inhalt von ausgewählten Latchen der Zentraleinheit wird für eine Diagnoseauswertung im Speicher gesichert. Darauf wird die Zentraleinheit auf einen geeigneten Status zurückgesetzt, und der Systemtakt wird neu gestartet.
  • Ein Abtasttestaufbau zur Fehlerüberwachung in der Hardware eines nach dem Pipeline-Verfahren arbeitenden Prozessors ist beschrieben in Bosshart et al, "A 553K-Transistor LISP Prozessor Chip", IEEE Journal of Solid-State Circuits, Band SC-22, Nr. 5, Oktober 1987. Der Abtastaufbau soll die Verwendung einer automatischen Testmustererzeugung erlauben und die benötigten Fähigkeiten während der Konstruktion, dem Austesten, dem Systemtest und der Systemsoftwareentwicklung liefern. Es wird Zweiphasen-Takten verwendet, mit zwei nichtüberlappenden Takten PH1 und PH2. Register bestehen aus einem Durchlaßtransistor-Latch, das durch PH2 torgesteuert wird, gefolgt von einem ähnlichen Latch, das durch PH1 torgesteuert wird. Das PH 1-Latch wird als das Leit- oder Haupt-Latch zwischen Taktzyklen und Pipeline-Stufen betrachtet, und das PH2- Latch kann einfach als Sperrstufe angesehen werden, um zu verhindern, daß die Daten durch sämtliche Register im Aufbau auf einmal fließen. Außerdem soll der Speicher auf dem Prozessorchip unter Verwendung des Abtastsystems getestet werden können.
  • Man sollte sich darüber im klaren sein, daß sich in einem Prozessor, der nach dem Pipeline-Verfahren arbeitet, zu irgendeinem Zeitpunkt mehrere Befehle in verschiedenen Ausführungsstufen befinden. Die Komplexität der Befehls-Pipeline macht es schwierig, zu bestimmen, wann ein individueller Befehl abgeschlossen worden ist. Somit wird eine Fehlerbehandlung, die während der zwischen der Ausführung jedes Befehls herrschenden stabilen Statuszustände leicht durchgeführt werden kann, zunehmend schwierig, wenn diese stabilen Statuszustände nicht leicht bestimmbar sind. Es ist relativ einfach, zu bestimmen, wann ein Befehl abgeschlossen ist, falls nur ein Befehl ausgeführt wird; wenn aber mehrere Befehle gleichzeitig ausgeführt werden, ist es schwierig, zu bestimmen, wann irgendein Befehl abgeschlossen ist.
  • Die vorliegende Erfindung ist in den beigefügten Patentansprüchen 1 und 5 angegeben, auf die hiermit Bezug genommen wird.
  • Gemäß einem Grundaspekt der vorliegenden Erfindung, wie im Patentanspruch 1 angegeben, wird ein Verfahren zur Behandlung von Hardware-Fehlern in einer nach dem Pipeline-Verfahren arbeitenden Zentraleinheit (12) eines Computersystems (10) geschaffen. Die Zentraleinheit weist eine Befehlseinheit (18) zum Abrufen und Decodieren von Befehlen, eine Ausführungseinheit (20) zum Ausführen von Befehlen und einen Systemtakt zum Takten der Befehlseinheit und der Ausführungseinheit auf. Das Verfahren umfaßt die Verfahrensschritte, jeden Hardware-Fehler in der Zentraleinheit nachzuweisen und ein Fehlersignal an die Ausführungseinheit abzugeben, den Systemtakt der Zentraleinheit anzuhalten, den Inhalt von ausgewählten Latchen (150, 152) der Zentraleinheit seriell aus der Zentraleinheit heraus zu verschieben, die Zentraleinheit auf einen geeigneten Status zurückzusetzen und den Systemtakt neu zu starten. Das Verfahren der Erfindung ist dadurch gekennzeichnet, daß es umfaßt, die Befehlsausführung als Antwort auf jedes Fehlersignal vor dem Anhalten des Systemtakts zu kontrollieren, indem:
  • auf synchrone Fehler, die in irgendeiner Pipeline-Stufe der Zentraleinheit auftreten, geantwortet wird durch
  • Abschließen der Ausführung eines gegenwärtig in der Ausführungseinheit befindlichen Befehls für einen Fall, in dem der gegenwärtig in der Ausführungseinheit befindliche Befehl eine Register- oder Cache- Speicherstelle geändert hat und nicht neu gestartet werden kann und der Fehler als Folge eines nachfolgenden Befehls in einer früheren Pipeline- Stufe aufgetreten ist, und
  • Anhalten der ganzen weiteren Ausführung in der Ausführungseinheit für Fälle, in denen ein gegenwärtig in der Ausführungseinheit befindlicher Befehl keine Register- oder Cache-Speicherstelle geändert hat oder der Fehler durch den gegenwärtig in der Ausführungseinheit befindlichen Befehl verursacht wurde; und
  • auf asynchrone Fehler, die in einem Schaltungsteil auftreten, die sich nicht in einer Pipeline-Stufe der Zentraleinheit befindet, geantwortet wird, indem der Abschluß eines gegenwärtig in der Ausführungseinheit befindlichen Befehls durch alle Pipeline-Stufen zugelassen wird, ohne zuzulassen, daß ein anderer Befehl die Ausführungs-Stufe betritt.
  • Gemäß einem weiteren Aspekt liefert die vorliegende Erfindung, wie im Patentanspruch 5 angegeben, eine Vorrichtung zur Behandlung von Hardware- Fehlern in einer nach dem Pipeline-Verfahren arbeitenden Zentraleinheit (12) eines Computersystems (10). Die Zentraleinheit weist eine Befehlseinheit (18) zum Abrufen und Decodieren von Befehlen, eine Ausführungseinheit (20) zum Ausführen von Befehlen und einen Systemtakt zum Takten der Befehlseinheit und der Ausführungseinheit auf. Die Vorrichtung umfaßt Mittel zum Nachweisen jedes Fehlers in der Zentraleinheit und zum Abgeben eines Fehlersignals an die Ausführungseinheit, Mittel zum Anhalten des Systemtakts der Zentraleinheit, Mittel zum seriellen Verschieben des Inhalts von ausgewählten Latchen (150, 152) der Zentraleinheit aus der Zentraleinheit heraus, Mittel zum Zurücksetzen der Zentraleinheit auf einen geeigneten Status und Mittel für einen Neustart des Systemtakts. Die Vorrichtung der Erfindung ist dadurch gekennzeichnet, daß sie Mittel für eine Kontrolle der Befehlsausführung als Antwort auf jedes Fehlersignal vor dem Anhalten des Systemtakts umfaßt, welche umfassen:
  • Mittel, um auf synchrone Fehler zu antworten, die in irgendeiner Pipeline-Stufe der Zentraleinheit auftreten, einschließlich
  • Mitteln zum Abschließen der Ausführung eines gegenwärtig in der Ausführungseinheit befindlichen Befehls für einen Fall, in dem der gegenwärtig in der Ausführungseinheit befindliche Befehl eine Register- oder Cache-Speicherstelle geändert hat und nicht neu gestartet werden kann und der Fehler als Folge eines nachfolgenden Befehls in einer früheren Pipeline-Stufe aufgetreten ist, und
  • Mitteln zum Anhalten der ganzen weiteren Ausführung in der Ausführungseinheit für Fälle, in denen ein gegenwärtig in der Ausführungseinheit befindlicher Befehl keine Register- oder Cache-Speicherstelle geändert hat oder der Fehler durch den gegenwärtig in der Ausführungseinheit befindlichen Befehl verursacht wurde; und
  • Mittel, um auf asynchrone Fehler zu antworten, die in einem Schaltungsteil auftreten, die sich nicht in einer Pipeline-Stufe der Zentraleinheit befindet, indem der Abschluß eines gegenwärtig in der Ausführungseinheit befindlichen Befehls durch alle Pipeline-Stufen zugelassen wird, ohne zuzulassen, daß ein anderer Befehl die Ausführungs-Stufe betritt.
  • Die vorliegende Erfindung kann auf verschiedene Weisen in die Tat umgesetzt werden, von denen nun eine anhand von Beispielen unter Bezugnahme auf die beigefügten Zeichnungen beschrieben wird, in denen:
  • FIG. 1 ein Blockdiagramm der oberen Ebene eines Teils eines Computersystems mit parallelgeschalteten CPU's, einem Hauptspeicher, einer Systemsteuereinheit und einer Systemprozessoreinheit ist;
  • FIG. 2 ein Funktionsdiagramm der Pipeline-Verarbeitung eines Langwort- Bewegungsbefehls-Operanden ist;
  • FIG. 3 ein Blockdiagramm eines Teils der Pipeline-Hardware des Computersystems ist;
  • FIG. 4 ein Flußdiagramm einer Mikrocode-Steuerroutine zur Verarbeitung von asynchronen Fehlern in der Ausführungseinheit ist;
  • FIG. 5 ein Flußdiagramm einer seriellen Diagnosesteuerroutine ist, die ausgewählte Latch-Werte in einer fehlerhaft arbeitenden CPU ab tastet;
  • FIG. 6 ein Blockdiagramm des Abtastverteilers in der CPU ist; und
  • FIG. 7 eine Prinzipskizze der seriellen Diagnose-Latche und des Steuerschaltungsteils innerhalb eines Makrozellen-Arrays ist.
  • Obwohl die Erfindung für verschiedene Modifikationen und Alternativformen geeignet ist, sind bestimmte Ausführungsformen davon anhand von Beispielen in den Zeichnungen dargestellt worden und werden nun im Detail beschrieben. Selbstverständlich ist jedoch nicht beabsichtigt, die Erfindung auf die bestimmten offenbarten Formen zu beschränken, sondern im Gegenteil, daß die Erfindung alle Modifikationen, Äquivalente und Alternativen abdecken soll, die in den Rahmen der Erfindung fallen, wie in den beigefügten Patentansprüchen angegeben.
  • FIG. 1 ist ein Blockdiagramm der oberen Ebene eines Teils eines Computersystems 10, das nach dem Pipeline-Verfahren arbeitet. Das System 10 umfaßt wenigstens eine Zentraleinheit (CPU) 12, die Zugriff auf einen Hauptspeicher 14 hat. Selbstverständlich arbeiten zusätzliche CPU's in dem System 10, indem sie den Hauptspeicher 14 gemeinsam benutzen. Zum Beispiel können vier CPU's gleichzeitig arbeiten und über den gemeinsam benutzten Hauptspeicher 14 wirksam miteinander kommunizieren.
  • Innerhalb der CPU 12 wird die Ausführung eines individuellen Befehls in mehrere kleinere Teilaufgaben aufgegliedert. Diese Teilaufgaben werden von festgeschalteten, getrennten, unabhängigen Funktionseinheiten durchgeführt, die zu diesem Zweck optimiert sind.
  • Obwohl jeder Befehl letztlich eine andere Operation durchführt, sind viele der kleineren Teilaufgaben, in die jeder Befehl aufgegliedert wird, allen Befehlen gemeinsam. Im allgemeinen werden während der Ausführung eines Befehls die folgenden Schritte durchgeführt: Befehlsabruf, Befehlsdecodierung, Operandenabruf, Ausführung und Ergebnisspeicherung. Durch die Verwendung von festgeschalteten Hardware-Stufen können diese Schritte überlappend durchgeführt werden, wodurch der Gesamt-Befehlsdurchsatz erhöht wird.
  • Der Datenweg durch die Pipeline umfaßt einen jeweiligen Satz von Registern für den Transfer der Ergebnisse jeder Pipeline-Stufe an die nächste Pipeline-Stufe.
  • Diese Transferregister werden in Reaktion auf einen gemeinsamen Systemtakt getaktet. Zum Beispiel wird während eines ersten Taktzyklus der erste Befehl durch Hardware abgerufen, die dem Befehlsabruf überlassen ist. Während des zweiten Taktzyklus wird der abgerufene Befehl transferiert und von der Befehlsdecodierungs-Hardware decodiert, gleichzeitig wird aber von der Befehlsabruf-Hardware der nächste Befehl abgerufen. Während des dritten Taktzyklus wird jeder Befehl zur nächsten Stufe der Pipeline verschoben und ein neuer Befehl abgerufen. Nachdem die Pipeline aufgefüllt ist, wird dann somit am Ende jedes Taktzyklus ein Befehl vollständig ausgeführt.
  • Dieser Prozess ist analog zu einem Fließband in einer Fertigungsanlage. Jedem Arbeiter wird die Durchführung einer einzelnen Teilaufgabe an jedem Erzeugnis überlassen, das seine oder ihre Arbeitsstufe durchläuft. Mit jeder durchgeführten Teilaufgabe kommt das Erzeugnis seiner Fertigstellung näher. Auf der Endstufe rollt jedesmal, wenn der Arbeiter die ihm zugewiesene Teilaufgabe durchführt, ein fertiges Erzeugnis vom Fließband.
  • Wie in FIG. 1 gezeigt, ist jede CPU 12 in wenigstens drei Funktionseinheiten eingeteilt: die Speicherzugriffseinheit 16, die Befehlseinheit 18 und die Ausführungseinheit 20.
  • Die Befehlseinheit 18 ruft Befehle vorab ab, decodiert die Befehle, um Operationscodes und Ursprungs- und Zielspezifikationen zu erhalten, ruft Operanden ab und aktualisiert den Programmzähler. Die Befehlseinheit 18 umfaßt eine Operandenverarbeitungseinheit (OPU) 22, einen Programmzähler (PC) 24 und einen Befehlsdecodierer 26. Der Programmzähler 24 wird in der Befehlseinheit 18 aufrechterhalten, so daß die richtigen Befehle aus einem Hochgeschwindigkeits- Cache-Speicher 28 wiedergewonnen werden können, der in der Speicherzugriffseinheit 16 aufrechterhalten wird. Der Cache-Speicher 28 speichert eine Kopie eines kleinen Teils der im Hauptspeicher 14 gespeicherten Informationen und wird verwendet, um die Verarbeitungsgeschwindigkeit durch Verkürzen der Speicherzugriffszeit zu steigern.
  • Der Programmzähler 24 benutzt vorzugsweise virtuelle Speicherstellen und nicht die absoluten Speicherstellen des Hauptspeichers 14 und des Cache-Speichers 28. Somit muß die virtuelle Adresse des Programmzählers 24 in die absolute Adresse des Hauptspeichers 14 übersetzt werden, bevor Befehle wiedergewonnen werden können. Dementsprechend wird der Inhalt des Programmzählers 24 an die Speicherzugriffseinheit 16 transferiert, wo ein Übersetzungspuffer (TB) 30 die Adressenumwandlung durchführt. Der Befehl wird unter Verwendung der umgewandelten Adresse aus seiner absoluten Speicherstelle im Cache-Speicher 28 wiedergewonnen. Der Cache-Speicher 28 gibt den Befehl über die Datenrücksendeleitungen an den Befehlsdecodierer 26 ab. Die Organisation und der Betrieb des Cache-Speichers 28 und des Übersetzungspuffers 30 sind weiter in Kapitel 11 von Levy und Eckhouse, Jr., Computer Programming and Architecture7 The VAX- 11, Digital Equipment Corporation, S. 351-368 (1980), beschrieben.
  • Die OPU 22 erzeugt außerdem virtuelle Adressen. Insbesondere erzeugt die OPU 22 virtuelle Adressen für Speicherursprungs(Lese)-Spezifikationen und Speicherziel(Schreib)-Spezifikationen. Zumindest für die Speicherursprungs- Spezifikationen muß die OPU 22 diese virtuellen Adressen an die Speicherzugriffseinheit 16 abgeben, wo sie in absolute Adressen übersetzt werden. Es wird dann auf die absoluten Speicherstellen des Cache-Speichers 28 zugegriffen, um die Operanden für die Speicherursprungs-Spezifikationen abzurufen. Die OPU 22 gibt außerdem virtuelle Adressen an die Speicherzugriffseinheit 16 für die Speicherziel-Spezifikationen ab.
  • Die virtuelle Adresse ist beispielsweise eine 32-Bit-Binärzahl. Außer daß sie die virtuelle 32-Bit-Adresse sendet, gibt die OPU 22 ferner ein 3-Bit-Kontrollfeld ab, um anzuzeigen, ob der Befehl eine Lese- oder Schreiboperation spezifiziert. Im Falle, daß das Kontrollfeld anzeigt, daß die virtuelle Adresse einer Leseoperation entspricht, gewinnt der Cache-Speicher 28 die Daten aus der identifizierten absoluten Speicherstelle wieder und gibt die Daten an die Ausführungseinheit 20 ab.
  • Umgekehrt wird für eine Schreiboperation die Schreibadresse gespeichert, bis die zu schreibenden Daten zur Verfügung stehen. Für Befehle wie einen Bewegungsbefehl oder einen Additionsbefehl stehen die zu schreiben den Daten natürlich erst zur Verfügung, wenn die Ausführung des Befehls abgeschlossen worden ist. Jedoch kann die virtuelle Adresse des Ziels während der Zeit, die für die Ausführung des Befehls benötigt wird, in eine entsprechende absolute Adresse übersetzt werden. Außerdem ist es günstig, wenn die OPU 22 während dieser Zeit mehrere Befehls-Spezifikationen vorverarbeitet, um die Gesamtgeschwindigkeit zu erhöhen, mit der Befehle durchgeführt werden. Zu diesen Zwecken wird die Speicherzugriffseinheit 16 mit einer (nicht gezeigten) "Schreibwarteschlange" zwischen dem Übersetzungspuffer 30 und dem Cache-Speicher 28 versehen, um die absoluten Zieladressen einer variablen Anzahl von Schreiboperationen zu speichern. Die Schreibwarteschlange hält die Adresse aufrecht, bis die Ausführungseinheit 20 den Befehl abschließt und die sich ergebenden Daten an die Speicherzugriffseinheit 16 sendet. Diese Daten werden mit den vorher gespeicherten Schreibadressen gepaart und an der entsprechenden Speicherstelle in den Cache-Speicher 28 geschrieben.
  • Außer Speicheroperanden verarbeitet die OPU 22 ferner Sofortoperanden, Kurzliterale und Registeroperanden. Bei jedem dieser Typen von Spezifikationen gibt die OPU 22 Daten oder Zeiger direkt an die Ausführungseinheit 20 ab.
  • Der erste Schritt bei der Verarbeitung der Befehle ist, den Operationscode-Teil des Befehls zu decodieren. Der erste Teil jedes Befehls besteht aus seinem Operationscode, der die durchzuführende Operation in dem Befehl spezifiziert. Die Decodierung geschieht unter Verwendung einer Tabellensuchtechnik im Befehlsdecodierer 26. Der Befehlsdecodierer 26 sendet den decodierten Operationscode an die Ausführungseinheit 20, wo er benutzt wird, um eine Nachschlagtabelle zu adressieren, die eine Mikrocode-Startadresse liefert. Später führt die Ausführungseinheit 20 die spezifizierte Operation durch, indem sie einen vorher gespeicherten Mikrocode ausführt, der an der angezeigten Startadresse beginnt. Außerdem bestimmt der Decodierer 26, wo in dem Befehl Ursprungsoperanden- und Zieloperanden-Spezifikationen auftreten, und übermittelt diese Spezifikationen für eine Vorverarbeitung vor der Ausführung des Befehls an die Operandenverarbeitungseinheit 22.
  • Die Speicherzugriffseinheit 16 umfaßt den Cache-Speicher 28, den Übersetzungspuffer 30, die Schreibwarteschlange, ein Register und einen Multiplexer. Wie schon gesagt, ist der Cache-Speicher 28 ein Hochgeschwindigkeitsspeicher, der eine Kopie eines kleinen Teils der im Hauptspeicher gespeicherten Informationen speichert. Auf den Cache-Speicher 28 läßt sich mit einer viel höheren Geschwindigkeit als auf den Hauptspeicher zugreifen. Sein Zweck ist es folglich, die mittlere Zeit zu verkürzen, die zur Durchführung eines Speicherzugriffs (d.h. eine Lese- oder Schreiboperation) benötigt wird. Da der Cache-Speicher 28 nur einen kleinen Teil der im Hauptspeicher gespeicherten Informationen speichert, gibt es dann gelegentlich Befehle, die auf nicht im Cache-Speicher 28 enthaltenen Speicher zuzugreifen versuchen. Der Cache-Speicher 28 erkennt, wann diese "Fehlschläge" auftreten, und gewinnt in diesen Fällen die identifizierten Daten aus dem Hauptspeicher 14 wieder. Natürlich leidet die Leistung der CPU 12 während dieser "Fehlschläge". Jedoch wird die Gesamt-Speicherzugriffsgeschwindigkeit durch die Verwendung eines Cache-Speichers erhöht.
  • Der Übersetzungspuffer 30 ist ein Hochgeschwindigkeits-Assoziativspeicher, der die am häufigsten zuletzt benutzten Übersetzungen virtueller in absolute Adressen speichert. In einem virtuellen Speichersystem kann ein Verweis auf eine einzige virtuelle Adresse mehrere Speicherverweise zur Folge haben, ehe die gewünschten Informationen zur Verfügung gestellt werden. Bei Verwendung des Übersetzungspuffers 30 wird die Übersetzung jedoch darauf reduziert, einfach einen "Treffer" im Übersetzungspuffer 30 zu finden.
  • Sobald die Übersetzungvirtueller in absolute Adressen abgeschlossen ist, wird die absolute Adresse entweder an die Schreibwarteschlange oder an das Register transferiert. Wie ihr Name andeutet, empfängt die Schreibwarteschlange die absolute Adresse nur, falls die entsprechende Operation eine Operation ist, in den Speicher zu schreiben. Der Zweck der Schreibwarteschlange ist es, eine vorübergehende Speicherstelle für die absolute Schreibadresse der Schreiboperation bereitzustellen. Wegen der Pipeline-Natur der CPU 12 steht die Schreibadresse gewöhnlich zur Verfügung, bevor die an dieser Adresse zu speichernden Daten zur Verfügung stehen. Tatsächlich werden die Daten erst nach der Ausführung des Befehls in der Ausführungseinheit 20 verfügbar. Da es günstig ist, mehrere Operanden-Spezifikationen für Befehle in der Pipeline vorzuverarbeiten, ist es darüber hinaus wahrscheinlich, daß es dann eine Vielzahl von absoluten Schreibadressen gibt, die auf ihre entsprechenden Daten warten. Dementsprechend ist die Schreibwarteschlange ein Mehrpositions-Zuerst-herein-Zuerst-heraus-Puffer, der eine Vielzahlvon absoluten Schreibadressen beherbergt.
  • Ist umgekehrt der Befehl, der der absoluten Adresse entspricht, ein Lesebefehl, so liefert der Übersetzungspuffer 30 die absolute Adresse für einen Operanden der Lese-Spezifikation. Diese Leseadresse wird an das Register transferiert, wo es vom Multiplexer ausgewählt und an den Cache-Speicher 28 abgegeben wird. Der Cache-Speicher 28 greift auf die identifizierte Speicherstelle zu und gibt die an dieser Stelle gespeicherten Daten an die Ausführungseinheit 20 ab.
  • Die Fähigkeit der CPU 12, während des Operandenabrufs für die Leseoperationen sofort auf den Cache-Speicher 28 zuzugreifen, während der Befehlsausführung für die Schreiboperationen aber verzögert zu werden, kann Timing-Probleme in der Pipeline verursachen. Zum Beispiel benötigen Folgebefehle häufig den ersten Befehl, um eine Speicherstelle zu modifizieren, während der nachfolgende Befehl die gleiche Adresse liest. Da beide Befehle in einer Folge von kleineren Schritten durchgeführt werden, ist es möglich, daß die Lese- und Schreiboperationen in der falschen Reihenfolge durchgeführt werden. Selbst wenn die Schreib-Spezifikation für den ersten Befehl vor den Lese-Spezifikationen für den zweiten Befehl verarbeitet wird, kann es die Verzögerung bei der Ausführung zulassen, daß ein oder mehrere Leseoperanden für den zweiten Befehl abgerufen werden, bevor das Ergebnis des ersten Befehls gespeichert ist. Als Folge des Abrufs der Leseoperanden ist es möglich, daß "hinfällige" Daten an die Ausführungseinheit zurückgesandt werden. Dementsprechend muß die CPU 12 imstande sein, die Leseoperation aufzuschieben, bis die frühere Schreiboperation an die gleiche Adresse abgeschlossen werden kann.
  • Außerdem ist zu erwähnen, daß die an eine identifizierte Speicherstelle geschriebenen Daten bis zum Ende des Befehls nicht vollendet sind. Fehler, die während eines Befehls auftreten, der in den Speicher schreibt, was verhindert, daß der Befehl abgeschlossen wird, erlauben es dementsprechend nicht, daß der Inhalt der identifizierten Speicherstelle geändert wird. Daher können die vor Beginn dieses Befehls herrschenden stabilen Statuszustände wiederhergestellt werden und kann der Befehl neu ausgeführt werden, ohne zu befürchten, daß der Inhalt der Speicherstelle durch den Fehler verfälscht worden ist.
  • Um den vollen Vorteil aus den mehreren CPU's zu ziehen, wird das System konfiguriert, den CPU1-CPU4 zu erlauben, parallel zu arbeiten. Dieser Parallelbetrieb zeigt einige Probleme in Form von Adressenkonflikten in bezug auf den gemeinsam benutzten Hauptspeicher 14. Um diese Kommunikation zwischen den Einheiten zu verwalten, wird eine Systemsteuereinheit (SCU) 40 verwendet. Die SPU 40 verbindet die CPU1-CPU4 über eine Reihe von unabhängigen Schnittstellen mit dem Hauptspeicher 14. Datenanforderungen werden von der SCU 40 aus jeder der Einheiten empfangen, was infolge der parallelen Natur des CPU-Betriebs zu unplanmäßigen Zeiten und insbesondere gleichzeitig geschieht. Diese Anforderungen in bezug auf Datentransfers werden gemäß einem Zuteilungsalgorithmus zusammengestellt und durch die geeignete Schnittstelle zu/von der identifizierten Einheit verarbeitet.
  • Die SCU 40 verbindet die verschiedenen Systemeinheiten außerdem mit einer Dienstprozessoreinheit (SPU) 42, die Bedienerpult-Funktionen durchführt. Die SPU 42 hat die Verantwortlichkeit für die Statusbestimmung und die Steuerung des Gesamtbetriebs des Verarbeitungssystems. Insbesondere versorgt die SCU 40 die SPU 42 mit Mitteln für die Kommunikation mit der Vielzahl von CPU's. Die SPU 42 ist imstande, sowohl Speicherzugriffsfunktionen einschließlich Lese- und Schreiboperationen als auch Eingabe/Ausgabe-Lese- und -Schreiboperationen durchzuführen. Ferner ist die SPU 42 auch imstande, Unterbrechungen in bezug auf irgendeine oder sämtliche der CPU's einzuleiten.
  • Die SPU 42 ist auch letztlich für die Fehlerbestimmung und die Kommunikation mit Außendiensttechnikern verantwortlich. Diese Fehlerbestimmungwird durch eine serielle Diagnoseleitung durchgeführt, die Zugriff auf alle Speicherelemente innnerhalb der CPU's liefert und einen Abtast-Controller (SCM) 44 umfaßt, der sich innerhalb der SPU 42 befindet. Der SCM 44 liefert die Kontrolle über die serielle Diagnoseleitung, die in jeder der CPU's und in der SCU 40 vorhanden ist. Jede der CPU's und die SCU 40 stehen über einen Abtastverteiler 45, 46, 47, 48, 49 mit dem SCM 44 in Schnittstellenverbindung. Die serielle Diagnoseleitung liefert Zugriff auf die internen Latche innerhalb der CPU's und der SCU 40, damit die SPU 42 die Fehleranalyse durchführt. Es ist klar, daß der Zustand der internen Latche die Ursache des Fehlers offenbaren kann, wenn in einer der Systemeinheiten ein Fehler auftritt. Dementsprechend verbindet die serielle Diagnoseleitung sämtliche Latche innerhalb einer ausgewählten Einheit durchgehend, so daß der Status dieser Latche seriell aus der Einheit heraus und in die SPU 42 hinein verschoben werden kann.
  • FIG. 2 veranschaulicht den Betrieb der Befehls-Pipeline für einen 4-Byte- Bewegungssbefehl der Form "MOVL MEM1, MEM2", wobei MOVL die durchzuführende Operation bezeichnet und MEM1 und MEM2 Operandenspezifikationen sind, die eine Ursprungsadresse bzw. eine Zieladresse spezifizieren. Die Kästen entlang der Diagonalrichtung in FIG. 2 zeigen die aufeinanderfolgenden Aktionen, die die CPU 12 vornimmt, um den Bewegungsbefehl durchzuführen. Von links nach rechts in FIG. 2 erfolgen die Aktionen in elf aufeinanderfolgend vorgerückten Zyklen oder Intervallen in der Zeit (t). Von oben nach unten in FIG. 2 erfolgen die Aktionen in zehn aufeinanderfolgenden Stufen entlang der Länge (x) der Pipeline.
  • In der ersten Stufe wird der Programmzähler (PC) 24 für diesen Befehl an der Stelle 201 erzeugt. Dies geschieht entweder durch Inkrementieren des Werts des Programmzählers (24 in FIG.1) für den vorhergehenden Befehl oder durch Verwenden der Zieladresse eines Sprungbefehls. In der zweiten Stufe, an der Stelle 202, greift die Befehlseinheit auf den Übersetzungspuffer (30 in FIG. 1) mit der virtuellen Adresse des Programmzählers zu. Der Ubersetzungspuffer wandelt die virtuelle Adresse in eine absolute Adresse um und sendet sie an den Cache- Speicher 28 der Speichereinheit. Es ist nicht notwendig, die zweite und die dritte Stufe durchzuführen, falls der Puffer oder Cache-Speicher in der Befehlseinheit den vom PC 24 angezeigten Befehl nicht enthält. Der Cache-Speicher wird an der Stelle 203 in der dritten Stufe gelesen, und ein Block von Daten wird in den Befehlspuffer geladen, um den vom PC 24 angezeigten Befehl MOVL wiederzugewinnen. An der Stelle 204 decodiert die vierte Stufe den Befehl durch Zugriff auf die Decodiertabelle mit dem Operationscode von MOVL (D0).
  • Danach wird in der fünften Stufe an der Stelle 205 die virtuelle Operandenadresse aus der ersten Spezifikation MEM 1 erzeugt. Ähnlich wird zu einem späteren Zeitpunkt in der fünften Stufe, an der Stelle 206, die virtuelle Zieladresse aus der zweiten Spezifikation MEM2 erzeugt. Zum gleichen Zeitpunkt greift die OPU 22 in der sechsten Stufe, an der Stelle 207, auf den Übersetzungspuffer 30 zu, um die virtuelle Operandenadresse in eine absolute Adresse umzuwandeln. Ebenso greift die OPU 22 zu einem späteren Zeitpunkt in der sechsten Pipeline-Stufe, an der Stelle 208, auf den Übersetzungspuffer 30 zu, um die virtuelle Zieladresse in eine absolute Adresse umzuwandeln.
  • Natürlich kann die Schreiboperation an die MEM 2 entsprechende absolute Adresse erst abgeschlossen werden, wenn die zu speichernden Daten an der MEM2 entsprechenden absoluten Adresse gelesen worden sind. Somit wird die MEM2-Adresse in der Schreibwarteschlange 36 gespeichert, bis die Daten zur Verfügung stehen. Die siebte Stufe an der Stelle 209 liest den Cache-Speicher 28 der Speicherzugriffseinheit und gibt diese Daten an die Ausführungseinheit 20 ab.
  • In der achten Stufe, an der Stelle 210, stehen sämtliche Operandendaten und Ergebnisadressen zur Verfügung, und der Befehl wird ausgeführt. In der neunten Stufe, an der Stelle 211, werden die Daten und ein Schreibmerker an die Speichereinheit 16 abgegeben, wird die Schreibwarteschlangen-Adresse aus der Schreibwarteschlange entfernt und wird auf die Cache-Etiketten zugegriffen, um auf einen Cache-Treffer hin zu testen. Einen Cache-Treffer vorausgesetzt, erfolgt das tatsächliche Scheiben in der zehnten Stufe und Endstufe an der Stelle 212.
  • Es wird nun auf FIG. 3 Bezug genommen, in der ein Teil der Logikschaltung der Pipeline gezeigt ist. Zwei der tatsächlichen Stufen der Pipeline sind in Blockform gezeigt, um allgemein eine der in FIG. 2 gezeigten Stufen darzustellen. Diese Pipeline-Stufen 50, 52 umfassen ein Transfer- und ein Halteregister 54, 56 und einen Multiplexer 58.
  • Während des Normalbetriebs werden die Daten aus der Pipeline-Stufe 50 während jedes Übergangs des Systemtaktsignals an das Transferregister 54 transferiert. Danach werden diese Daten durch den Multiplexer 58 an die nächste Pipeline- Stufe übermittelt, wo sie weiterverarbeitet werden. Es ist jedoch möglich, daß während des Betriebs der zweiten Pipeline-Stufe 52 ein Zugriffskonflikt auftritt und die Pipeline-Stufe 52 dann nicht imstande ist, die Daten, die sie gerade empfangen hat, gegenwärtig zu verarbeiten. Dementsprechend ist die Pipeline- Stufe 52 vorzugsweise dazu fähig, diese Daten zu speichern, bis sie ihre gegenwärtige Verarbeitung abschließt, und die Daten darauf folgend zu verarbeiten. Weiterhin fährt dann die vorhergehende Pipeline-Stufe 50 wahrscheinlich damit fort, Daten zu verarbeiten. Um ein Steckenbleiben der Pipeline-Verarbeitung zu verhindern, sollte die vorhergehende Pipeline-Stufe 50 somit vorzugsweise eine Speicherstelle aufweisen, in der sie ihre nachfolgenden Daten speichert.
  • Der Eingang des Halteregisters 56 ist, wie gezeigt, mit dem Ausgang des Multiplexers 58 verbunden. Auf diese Weise werden die gegenwärtig im Transferregister 54 enthaltenen Daten nicht nur an die Pipeline-Stufe 52, sondern auch an das Halteregister 56 weitergeleitet. Wenn daher von der Pipeline-Stufe 52 ein Adressenkonflikt nachgewiesen wird, wird das Signal an den Auswahl-Eingang des Multiplexers 58 weitergeleitet, wodurch auf das Halteregister 56 und nicht auf das Transferregister 54 zugegriffen wird. Das Transferregister 54 steht dann zur Verfügung, um nachfolgende Daten aus der Pipeline-Stufe 50 zu empfangen, während die im Halteregister 56 enthaltenen Daten als ein Eingangssignal in die Pipeline-Stufe 52 zur Verfügung stehen. Sobald die im Halteregister 56 enthaltenen Daten von der Pipeline-Stufe 52 verarbeitet werden, wird das Auswahl- Signal an den Multiplexer 58 auf seinen ursprünglichen Wert zurückgestellt, und die im Transferregister 54 enthaltenen Daten stehen wieder als ein Eingangssignal in die Pipeline-Stufe 25 zur Verfügung.
  • Ferner ist es möglich, daß in ein Fehler in irgendeiner Stufe der Pipeline auftritt. Fehler dieses Typs, die in der Pipeline auftreten, verhindern wahrscheinlich die Ausführung dieses bestimmten Befehls. Entspricht beispielsweise die Pipeline- Stufe 52 der Ausführungs-Stufe der Pipeline, so tritt dann ein Fehler auf, wenn festgestellt wird, daß die Operandendaten eine unrichtige Parität haben. Wenn die Ergebnisdaten an die nächsten Pipeline-Stufen transferiertwerden, die dann eventuell die Ergebnisdaten in den Cache-Speicher schreiben, dann verfälscht die Datenschreibstufe dementsprechend den Inhalt des Cache-Speichers, da die Ergebnisdaten wahrscheinlich unrichtig sind. Man kann daher sehen, daß es wichtig ist, daß die Fehlerkontroll-Logikschaltung in der Ausführungseinheit früh genug von dem Fehler in Kenntnis gesetzt wird, um die Endstufen der Pipeline anzuhalten, in den Cache-Speicher zu schreiben. Dies wird bewerkstelligt, indem alle Fehlernachweissignale sofort, unter Umgehung aller Pipeline-Stufen, an die Fehlerkontroll-Logikschaltung gesendet werden. Wie in FIG. 3 gezeigt, wird jedoch das Fehler-Ausgangssignal aus der Pipeline-Stufe, die den Fehler nachgewiesen hat, für den Auswahl-Eingang des Multiplexers 58 verwendet, wodurch die fehlerhaften Daten im Halteregister 56 gehalten werden. Dies ist während der von der SPU durchgeführten Fehlerprotokoll- und Fehlerkorrektursequenzen von Bedeutung. Die SPU kann die fehlerhaften Daten unter Verwendung der seriellen Diagnoseleitung aus dem Halteregister 56 austasten.
  • Wie zuvor erörtert, wird dieser Fehlertyp allgemein als synchroner Fehler bezeichnet, da er verhindert, daß der gegenwärtige Befehlsstrom abgeschlossen wird. Man sollte sich darüber im klaren sein, daß ein synchroner Fehler in einer beliebigen Stufe der Pipeline auftreten kann und schließlich der Fehlerkontroll- Logikschaltung in der Ausführungseinheit mitgeteilt werden muß. Dementsprechend wird jeder Fehler, der in der Pipeline auftritt, sofort an die Fehlerkontroll- Logikschaltung übertragen. Diese Übertragung wird unter Umgehung aller nachfolgenden Pipeline-Stufen in der Pipeline durchgeführt.
  • Sobald ein Fehler die Fehlerkontroll-Logikschaltung erreicht, wird ein Merker in der Ausführungseinheit gesetzt. Der Fehlermerker bewirkt, daß die Kontroll- Logikschaltung den Status des gegenwärtigen Befehls auswertet, obwohl der Fehler als Folge eines nachfolgenden Befehls in einer früheren Pipeline-Stufe verursacht worden sein kann. Hat - erstens - der gegenwärtige Befehl keinerlei Register- oder Cache-Speicherstellen geändert und könnte vom Beginn neu gestartet werden, so hält die Ausführungseinheit die ganze weitere Ausführung an. Hat - zweitens - der gegenwärtige Befehl eine Register- oder Cache-Speicherstelle geändert und kann nicht neu gestartet werten, so versucht die Ausführungseinheit, den gegenwärtigen Befehl abzuschließen. Der gegenwärtige Befehl wird eventuell abgeschlossen, falls der Fehler als Folge eines nachfolgenden Befehls in einer früheren Pipeline-Stufe aufgetreten ist. Die Ausführungseinheit versucht dann nicht, irgendwelche neuen Befehle zu starten. Schließlich kann es sein, daß der gegenwärtige Befehl infolge des Fehlers nicht abgeschlossen werden kann, was zur Folge hat, daß die Ausführungseinheit in der Mitte eines Befehls anhält, und die Fehlerkorrektur schwieriger gemacht wird. Sobald die Ausführungseinheit die Stelle bestimmt hat, an der die Ausführung bei einem synchronen Fehler anzuhalten ist, überträgt sie eine Anzahl von Signalen an den Rest der CPU, um anzuzeigen, daß ein Fehler die weitere Verarbeitung angehalten hat. Die SPU wird informiert, ein Fehlerprotokoll und eine Fehlerkorrektur einzuleiten.
  • Manche Fehler treten in Schaltungsteilen auf, die nicht Teil der Haupt-Befehlsausführungs-Pipeline sind. Beispielsweise werden Eingabe/Ausgabe-Unterbrechungsanforderungen in einem codierten Format an die Ausführungseinheit gesendet. Die Anforderungen werden in der Ausführungseinheit mit Prioritäten versehen und zugeteilt, um im geeigneten Zeitpunkt interpretiert zu werden. Wurde festgestellt, daß der Unterbrechungsanforderungs-Code unrichtige Parität hat, so würde der Fehler keinerlei Auswirkung auf die Ausführung des Befehlsstroms haben. Er würde zur Folge haben, daß die Ausführungseinheit eine Unterbrechungsanforderungverfehlt. Dieser Fehlertyp ist asynchron zum Befehlsstrom und wird anders als die synchronen Fehler behandelt. Alle asynchronen Fehler werden der Fehlerkontroll-Logikschaltung in der Ausführungseinheit berichtet.
  • Sobald der Fehler die Fehlerkontroll-Logikschaltung erreicht, wird ein Merker in der Ausführungseinheit gesetzt. Der Fehlermerker bewirkt, daß die Kontroll- Logikschaltung den gegenwärtigen Befehl abschließt, und löst dann eine Falle in der Mikro-Ablaufsteuerung der Ausführungseinheit 20 aus, was zur Folge hat, daß der Mikrocode an einer vorgewählten Stelle im Mikrocode startet und die im Flußdiagramm von FIG. 4 dargestellte Routine ausführt.
  • Die mikrocodegesteuerte Mikro-Ablaufsteuerung beginnt die Ausführung am Entscheidungsblock 70 damit, den Abschluß des letzten Befehls durch sämtliche Pipeline-Stufen abzuwarten. Solange, bis die Ausführungseinheit 20 jede Stufe der Ausführung des letzten Befehls abschließt, bleibt die Steuerung im Entscheidungsblock 70 und geht nicht zum nachfolgenden Mikrocode über. Sobald der letzte Befehl abgeschlossen ist, ist die Mikro-Ablaufsteuerung bereit, den nächsten Mikrocode zu verarbeiten, und die Steuerung geht zum Block 72 über.
  • Im Block 72 sendet der Mikrocode ein Cache-Absuchkommando an die Speicherzugriffseinheit 16, und die Steuerung geht zum Block 74 über. Im Block 74 bewirkt der Mikrocode, daß ein an die SPU 42 zu sendendes Signal anzeigt, daß ein Fehler aufgetreten ist. Die Steuerung geht zum Block 76 über, wo die Mikro- Ablaufsteuerung steckenbleibt, wobei sie auf Antwort von der SPU 42 wartet.
  • Sowohl bei synchronen als auch asynchronen Fehlern versucht die Ausführungseinheit, zwischen Befehlen anzuhalten, wo der Maschinenstatus stabil ist. Dies wird entweder dadurch erreicht, daß ein Befehl angehalten wird, bevor er den Maschinenstatus ändert, oder dadurch, daß die Ausführung bis zum Abschluß fortgesetzt wird. Nachdem die SPU den Fehlerzustand korrigiert hat, wird die CPU dementsprechend auf den letzten stabilen Status zurückgebracht, und die Neuausführung beginnt von dieser Stelle aus.
  • Die Fehlerbehandlung ist für synchrone wie asynchrone Fehler ähnlich. Die Speicherzugriffseinheit 16 wird angewiesen, den Cache-Speicher 28 abzusuchen. Während der Verarbeitung des Fehlers steht die CPU 12 nicht zur Verfügung, um auf Speicheranforderungen von den anderen parallelen CPU's zu antworten. Dementsprechend stehen irgendwelche Daten, die im Cache-Speicher der CPU vorhanden sind und die von einer der parallelen CPU's angefordert werden können, nicht zur Verfügung, wodurch der Betrieb der parallelen CPU's steckenbleibt. Um eine Unterbrechung der Verarbeitung der parallelen CPU's zu vermeiden, werden alle Daten, die im Cache-Speicher 28 vorhanden sind und auf die von den parallelen CPU's zugegriffen werden könnte, an den Hauptspeicher 14 transferiert. Danach endet die Aktivität der CPU, die fehlerhaft gearbeitet hat, und der SCM 44 steuert den SCD 45 der fehlerhaft arbeitenden CPU, um den Status der Latche in der CPU 12 seriell zu löschen.
  • FIG. 5 ist ein Flußdiagramm der Kontrolle, die vom SCM 44 über den SCD 45 ausgeübt wird. Die SCM-Steuerroutine beginnt am Block 86, wo die Takte der fehlerhaft arbeitenden CPU angehalten werden. Dies verhindert den weiteren Betrieb der fehlerhaft arbeitenden CPU solange, bis ihre Statuswerte vom SCM abgetastet worden sind. Darüber hinaus können durch Anhalten der CPU-Takte die fehlerhaften Statuszustände für die bevorstehende Analyse konserviert werden. Die Steuerung geht zum Block 88 über, wo der SCM 44 den SCD 45 anweist, die Informationen aus der CPU heraus und in den SCM 44 hinein zu verschieben. Sobald die Informationen aus der CPU 12 kopiertworden sind, geht die Steuerung zum Block 90 über, wo die CPU auf ihren geeigneten Status zurückgesetzt wird. Zum Beispiel wird im Falle von asynchronen Fehlern der PC 24 auf seinem gegenwärtigen Status gelassen und wird im Falle eines synchronen Fehlers der PC 24 auf den Wert zurückgesetzt, der dem Befehl entspricht, der den Fehler verursacht hat. Danach geht die Steuerung zum Block 92 über, wo die CPU- Takte neu gestartet werden und es der CPU 12 erlaubt wird, die Ausführung ihres Programms wieder anzufangen.
  • Im Block 94 leitet der SCM 44 die Fehlerinformationen, die aus der CPU 12 herausgeschoben wurden, an ein Fehleranalyseprogramm weiter. Die SPU 42 analysiert den Zustand der abgetasteten Latche in der CPU 12, um zu bestimmen, wo der Fehler aufgetreten ist. Das Fehleranalyseprogramm ist imstande, das versagende Schaltungselement zu lokalisieren und die entsprechenden Informationen einem Außendienst-Wartungstechniker mitzuteilen, so daß selbst bei sporadischen Fehlern schnell und wirksam eine Reparatur durchgeführt werden kann.
  • Wenn nun auf FIG. 6 Bezug genommen wird, so sollte man sich vergegenwärtigen, daß die CPU 12 aus einer Vielzahl von Größtintegrations(VLSI)-Schaltungen aufgebaut ist, wobei jede dieser Schaltungen Hunderte oder Tausende von individuellen elektronischen Schaltungselementen enthält. Diese VLSI-Chips werden allgemein als Makrozellen-Arrays (MCA) bezeichnet. Jedes MCA führt eine spezifizierte Funktion oder eine Gruppe von verwandten Funktionen darin durch. Dementsprechend muß die serielle Diagnoseleitung durch jedes der MCA's hindurch laufen; eine durchgehende Verbindung sämtlicher MCA's in einer großen seriellen Schleife schränkt jedoch die Flexibilität der seriellen Diagnose ein, ausgewählte Teile der CPU abzufragen. Deshalb werden die MCA's in mehreren Schleifen angeordnet, die wahlweise umgangen werden können. Zum Beispiel ist der SCD 45 mit einer Datenausgangsleitung 100 gezeigt, die mit dem Eingang (IN) einesTaktverteilers (CD) 102 verbunden ist. Der CD 102 weist zwei getrennt adressierbare Ausgangsanschlüsse (OUT) für die wahlweise Abgabe der seriellen Daten an einen Ring von acht MCA's, die diesem bestimmten CD 102 zugeordnet sind, bzw. an einen nachfolgenden CD 104 auf. Somit gibt der Taktverteiler 102 als Antwort auf ein Kommando vom SCD 45 die seriellen Daten entweder an den Ring der dazugehörigen MCA's ab oder umgeht diesen Ring von MCA's und gibt die Daten an den nachfolgenden CD 104 ab.
  • Ebenso wird das Ausgangssignal (OUT) des CD 104 an den Eingang (IN) eines CD 106 abgegeben und wird das Ausgangssignal des CD 106 an den Eingang eines CD 108 abgegeben. Schließlich ist der Ausgang des CD 108 mit dem Dateneingang des SCD 45 verbunden. Obwohl die serielle Diagnoseleitung so dargestellt worden ist, daß sie durch maximal vier CD's und zweiunddreißig MCA's hin durch läuft, sollte klar sein, daß dies nur zu Darstellungszwecken dient und daß eine beliebige Anzahl von CD's und MCA's in die serielle Diagnoseleitung eingefügt werden kann.
  • Um eine Umgehung der CD's 102, 104, 106, 108 zu bewirken, enthält der SCD 45 außerdem vier Auswahl-Ausgangsleitungen, die mit den Auswahl-Eingängen (SEL) jedes der CD's 102, 104, 106, 108 verbunden sind. Wird beispielsweise gewünscht, die Latche abzufragen, die in den zum CD 104 gehörenden MCA's enthalten sind, so wird nur die mit dem CD 104 verbundene Auswahl-Leitung vom SCD 45 aktiviert. Die vom SCD 45 über die Leitung 100 abgegebenen seriellen Daten werden dann an den CD 102 abgegeben, der dann die Daten um leitet und direkt an den CD 104 sendet. Der CD 104 übermittelt die Daten über seinen zweiten Ausgangsanschluß an den Eingang eines MCA 110. Der MCA 110 umfaßt einen Ausgangsanschluß, der mit dem Eingangsanschluß eines MCA 112 verbunden ist. Ähnlich sind die MCA's 114, 116, 118, 120, 122, 124 seriell mit dem Ausgang eines MCA 124 verbunden, der zum Eingangsanschluß des CD 104 zurückgeführt ist. Somit werden dem Eingang des MCA 104 dargebotene serielle Daten eine vorgewählte Anzahl von Taktzyklen später an den Eingangsanschluß des CD 104 zurückgesendet.
  • Die CD's 106 und 108 sind ebenfalls vom SCD 45 umgangen worden, der den den CD's 106, 186 entsprechenden Auswahl-Ausgang nicht aktiviert. Somit werden die durch die MCA's 110 bis 124 übermittelten seriellen Daten über den Eingangsanschluß des CD 104 und über seinen Ausgangsanschluß an den CD 106 zurückgesendet. Die CD's 106 und 108 leiten die Daten beide um und senden sie an den Dateneingangs-Anschluß des SCD 45 zurück. Indem es den CD's 102, 104, 106, 108 ermöglicht wird, Daten umzuleiten, kann die ausgewählte Schleife von MCA's in einem viel kürzeren Zeitintervall abgefragtwerden.
  • Nimmt man zum Beispiel an, daß jeder MCA 500 Latche enthält, so erscheinen an den seriellen Eingangsanschluß eines ausgewählten MCA gelegte Daten dann 500 Taktzyklen später wieder an seinem Ausgang. Damit die Daten einen Ring mit acht MCA's durchqueren, sind also 4000 Taktzyklen notwendig. Man sieht, daß die in FIG. 6 gezeigte Vier-CD-Schleife insgesamt 16000 Taktzyklen erfordern würde, um den Wert des ersten Latch im ersten MCA der zum CD 102 gehörenden Schleife zu bestimmen. Bei jeder CD-Umleitungwerdenjedoch 4000 Taktzyklen eingespart.
  • Durch die Fähigkeit, ausgewählte MCA's zu umgehen, wird außerdem die ausgewählte Abfragevon Latchen verbessert. Die CD's 102, 104, 106, 108 sind mit den Steuereingängen (CTL) jedes ihrer zugehörigen MCA's verbunden. Uber diese Steuerleitung gibt der CD eine Vielzahl von Steuersignalen ab, einschließlich einer Auswahl-Leitung, die im wesentlichen ähnlich zu der CD-Auswahl- Leitung arbeitet. Somit ist der CD imstande, eine beliebige ausgewählte MCA oder eine beliebige Gruppe von ausgewählten MCA's zu umgehen.
  • Es wird nun auf FIG. 7 Bezug genommen, die eine Prinzipskizze der MCA-Latche und des zugehörigen Steuerschaltungsteils ist
  • Das in dem Computersystem 10 verwendete Taktsystem ist ein nichtüberlappender Zweiphasentyp, wobei die Phase "A" die Abtast-Latche und die Phase "B" die Neben-Latche ansteuert. Dies liefert eine wettlauffreie Konstruktion, indem ein einziger Datenübergang für jedes Latch-Paar pro Taktzyklus erlaubt wird.
  • FIG. 7 stellt einen kleinen Teil der Gesamtzahl von Abtast- und Neben-Latchen dar, um genügend Details für ein richtiges Verständnis der Erfindung zu zeigen, beschränkt aber die Anzahl der gezeigten Latche für eine mühelose Darstellung und um ein übermäßiges Durcheinander zu verhindern. Es sind drei Abtast-Latche 150a, 150b, 150c dargestellt, wobei jedes dieser Abtast-Latche einen Eingang hat, der mit einer Datenquelle in der CPU verbunden ist. Da die drei Latche nur zu Veranschaulichungszwecken gezeigt sind, ist es unwichtig, die genaue Quelle der Dateneingangssignale in diese Latche 150a, 150b, 150c zu identifizieren, sondern es genügt, sich zu vergegenwärtigen, daß diese Latche während des Normalbetriebs der CPU Daten speichern. Mit anderen Worten arbeiten die Abtast-Latche 150a, 150b, 150c nicht nur zu Zwecken des seriellen Abtastens von Daten in die CPU hinein und aus ihr heraus, sondern führen auch die Zweitfunktion einer tatsächlichen, vorübergehenden Datenspeicherung während des normalen CPU-Betriebs durch.
  • Ähnlich führen die Neben-Latche 152a, 152b, 152c die wichtige Funktion durch, während der seriellen Datendiagnose einen wettlauffreien seriellen Datentransfer zu liefern, arbeiten aber auch, um während des normalen CPU-Betriebs Daten zu speichern. Zum Beispiel arbeiten die Neben-Latche 152a, 152b, 152c während des normalen CPU-Betriebs in Verbindung mit den Abtast-Latchen 150a, 150b, 150c in einer im wesentlichen ähnlichen Weise wie die in Verbindung mit FIG. 3 erörterten Halte- und Transfer-Latche. Die Abtast-Latche 150a, 150b, 150c entsprechen den Transferregistern 54, und die Neben-Latche 152a, 152b, 152c entsprechen den Halteregistern 56. Daten, die sich gegenwärtig in den Abtast- Latchen 150a, 150b, 150c befinden und die nicht sofort an die Datenausgänge der Latche abgegeben werden können, werden auch in den Neben-Latchen 152a, 152b, 152c untergebracht. Dies verhindert, daß die Logikschaltungen steckenbleiben, die den Abtast-Latchen 150a, 150b, 150c Daten zuführen, indem die Abtast- Latche 150a, 150b, 150c freigemacht werden, um die nachfolgenden Logiksignale zu empfangen, während die früheren Logiksignale in den Neben-Latchen bleiben und auf Verarbeitung warten.
  • Daten, die über die serielle Diagnoseleitung zugeführt werden, werden über einen Eingangspuffer 154 an einen zweiten Eingang des ersten Abtast-Latch 150a übermittelt. Es sei angemerkt, daß die seriellen Daten, die dem zweiten Eingang des Abtast-Latch 150a dargeboten werden, erst im Abtast-Latch 150a gespeichert werden, wenn das Abtasttaktsignal der Phase A ebenfalls vom Latch 150a empfangen wird. Das Abtasttaktsignal der Phase A wird vom CD 104 über einen Eingangspuffer 156 an einen Eingang eines UND-Gatters 158 mit drei Eingängen geliefert. Ein zweiter Eingang des UND-Gatters 158 ist über einen Eingangspuffer 160 mit dem Auswahl-Ausgang des CD 104 verbunden. Das Ausgangssignal des UND-Gatters 158 ist ein Abtasttaktsignal der Phase A, das an den Takteingang jedes des Abtast-Latche 150a, 150b, 150c abgegeben wird. Damit serielle Daten durch die Abtast-Latche 150a, 150b, 150c übermittelt werden, muß der CD 104 dementsprechend sowohl das Auswahl-Signal als auch das Abtasttaktsignal A aktivieren.
  • Das Auswahl-Signal führt die Zweitfunktion durch, auch zu bewirken, daß serielle Daten den MCA 110 umgehen. Ein Multiplexer 162 empfängt zwei Eingangssignale, eines vom Eingangspuffer 154 und das zweite vom Ausgang des End- Neben-Latch 152c. Man sieht somit, daß der Status des Auswahl-Signals vom CD 104 bestimmt, welches der Eingangssignale an die Datenausgangsleitung des MCA 110 abgegeben wird. Wünscht zum Beispiel der CD 104, den MCA 110 zu umgehen, so wird das Auswahl-Signal deaktiviert, wodurch der Nulleingang in den Multiplexer 162 ausgewählt wird und die Daten direkt vom Eingangspuffer 154 zur Datenausgangsleitung geleitet werden. Wird umgekehrt die Auswahl-Leitung aktiviert, so übermittelt der Multiplexer 162 sein entgegengesetztes Eingangssignal, das dem seriellen Transfer von Daten durch die Abtast- und Neben-Latch- Paare 150, 152 entspricht, an die Datenausgangsleitung des MCA 110.
  • Die nichtüberlappende Natur der Signale des Abtasttakts A und des Abtasttakts B führt zu einem wettlauffreien Transfer von Daten durch die Latch-Paare. Über den Eingangspuffer 154 an den Eingang des Abtast-Latch 150a abgegebene Daten werden als Antwort auf einen Übergang im Abtasttaktssignal A in das Latch 150a hineingetaktet. Das Neben-Latch 152a wird jedoch vom Abtasttaktsignal B aus dem CD 104 gesteuert. Daher wird der Inhalt des Abtast-Latch 150a erst in das Neben-Latch 152a transferiert, wenn das Abtasttaktsignal B aktiviert wird. Da sich die Signale des Abtasttakts A und des Abtasttakts B nicht überlappen, erfolgt die Datenspeicherung im Abtast-Latch 150a und im Neben-Latch 152a zu verschiedenen Zeiten, wodurch ein Wettlaufeffekt durch die Abtast-Latche 150a, 150b, 150c verhindert wird. Das Abtasttaktsignal B wird über einen Eingangspuffer 164 an das ODER-Gatter 174 und dann an die Takteingänge jedes der Neben-Latche 152a, 152b, 152c abgegeben. Während des zulässigen Betriebs der Abtasttakte werden die Ausgänge des Taktgenerators 170 deaktiviert gehalten.
  • Außer daß die serielle Diagnoseleitung imstande ist, auf die CPU-Latche 150a- 150c, 152a-152c zuzugreifen, wird bevorzugt, daß auch CPU-Speicherstellen zur Verfügung stehen, um von der seriellen Diagnoseleitung gelesen zu werden. Dementsprechend kann der CD 104 bewirken, daß aus einer Speicherstelle gelesene Daten gelatcht werden, indem das Abtastladesignal über den Eingangspuffer 166 abgegeben wird. Um den Inhalt des CPU-Speichers tatsächlich zu lesen, müssen die Speicheradressen-Latche mit der Adresse gefüllt werden, die der gewünschten Speicherstelle entspricht, und darauf muß das Taktsignal des Speichers zyklisch wiederholt werden, um zu bewirken, daß der Speicher auf die identifizierte Speicherstelle zugreift und den Inhalt dieser Speicherstelle an die Speicherausgangs-Latche abgibt. Diese Speicherausgangs-Latche können dann mittels der seriellen Diagnoseleitung seriell herausgeschoben werden, um den Inhalt der spezifizierten Speicherstelle zu prüfen.
  • Da der Systemtakt während der seriellen Diagnose gesperrt ist, kann der Systemtakt natürlich nicht benutzt werden, um zu bewirken, daß der CPU- Speicher den spezifizierten Inhalt an die Datenausgangs-Latche abgibt. Dementsprechend muß ein Ersatz-Systemtakt aus dem verfügbaren Abtasttaktsignal A erzeugt werden, jedoch nur während Abtastladeoperationen. Daher empfängt ein UND-Gatter 168 mit drei Eingängen Eingangssignale von dem Auswahl-Signal, dem Abtastsignal A und dem Abtastladesignal, so daß ein Ersatz-Systemtaktsignal erzeugt wird, wenn alle diese drei Signale aktiviert werden, und über ein ODER- Gatter 172 an die Systemtakt-Eingänge der Abtast-Latche 150a, 150b, 150c abgegeben wird. Außerdem wird das Abtastladesignal an die Ladefreigabe des CPU-Speichers abgegeben, um zu bewirken, daß der CPU-Speicher den Inhalt der spezifizierten Speicherstelle an seine Ausgangs-Latche abgibt.
  • Gewöhnlich wird der Systemtakt an einen Taktgenerator 170 für die Phasen A und B innerhalb des MCA 110 abgegeben. Die Taktsignale der Phasen A und B werden an ein Paar ODER-Gatter 172 bzw. 174 abgegeben. Die Ausgänge dieser ODER- Gatter 172, 174 sind mit den Abtast- bzw. Nebentakteingängen der Latche 150a- 150c, 152a-152c verbunden, und die zweiten Eingänge in diese ODER-Gatter 172, 174 sind mit dem Ausgang des UND-Gatters 168 bzw. dem Ausgang des Eingangspuffers 164 verbunden. Dementsprechend ist während des Normalbetriebs der Systemtakt nicht gesperrt und erzeugt der Taktgenerator 170 die Taktsignale der Phasen A und B, die die Abtast- und Neben-Latche 150a-150c, 152a-152c betreiben. Während des seriellen Diagnosebetriebs ist der Systemtakt jedoch gesperrt und erzeugt der Taktgenerator 170 die Taktsignale der Phasen A und B nicht.

Claims (8)

1. Verfahren zur Behandlung von Hardware-Fehlern in einer nach dem Pipeline- Verfahren arbeitenden Zentraleinheit (12) eines Computersystems (10), wobei die Zentraleinheit eine Befehlseinheit (18) zum Abrufen und Decodieren von Befehlen, eine Ausführungseinheit (20) zum Ausführen von Befehlen und einen Systemtakt zum Takten der Befehlseinheit und der Ausführungseinheit aufweist, und wobei das Verfahren die Verfahrensschritte umfaßt, jeden Fehler durch Nachweisen des Fehlers in der Zentraleinheit und Abgeben eines Fehlersignals an die Ausführungseinheit zu behandeln, den Systemtakt der Zentraleinheit anzuhalten, den Inhalt von ausgewählten Latchen (150, 152) der Zentraleinheit seriell aus der Zentraleinheit heraus zu verschieben, die Zentraleinheit auf einen geeigneten Status zurückzusetzen und den Systemtakt neu zu starten,
DADURCH GEKENNZEICHNET, daß das Verfahren umfaßt, die Befehlsausführung als Antwort aufjedes Fehlersignal vor dem Anhalten des Systemtakts zu kontrollieren, indem:
auf synchrone Fehler, die in irgendeiner Pipeline-Stufe der Zentraleinheit auftreten, geantwortet wird durch
Abschließen der Ausführung eines gegenwärtig in der Ausführungseinheit befindlichen Befehls für einen Fall, in dem der gegenwärtig in der Ausführungseinheit befindliche Befehl eine Register- oder Cache- Speicherstelle geändert hat und nicht neu gestartet werden kann und der Fehler als Folge eines nachfolgenden Befehls in einer früheren Pipeline- Stufe aufgetreten ist, und
Anhalten der ganzen weiteren Ausführung in der Ausführungseinheit für Fälle, in denen ein gegenwärtig in der Ausführungseinheit befindlich er Befehl keine Register- oder Cache-Speicherstelle geändert hat oder der Fehler durch den gegenwärtig in der Ausführungseinheit befindlichen Befehl verursacht wurde; und auf asynchrone Fehler, die in einem Schaltungsteil auftreten, die sich nicht in einer Pipeline-Stufe der Zentraleinheit befindet, geantwortet wird, indem der Abschluß eines gegenwärtig in der Ausführungseinheit befindlichen Befehls durch alle Pipeline-Stufen zugelassen wird, ohne zuzulassen, daß ein anderer Befehl die Ausführungs-Stufe betritt.
2. Verfahren, wie im Anspruch 1 angegeben, das weiterhin den Verfahrenschritt umfaßt, einem Speicher in der Zentraleinheit ein Speichertaktsignal zuzuführen, um Speicherdaten von dem Speicher an die ausgewählten Latche der Zentraleinheit zu transferieren, so daß die Speicherdaten seriell aus den Latchen und aus der Zentraleinheit heraus verschoben werden.
3. Verfahren, wie im Anspruch 1 oder Anspruch 2 angegeben, wobei der Verfahrensschritt, den Inhalt von ausgewählten Latchen der Zentraleinheit zu verschieben, umfaßt, die Daten als Antwort auf einen einzigen Übergang in jedem Paar von nichtüberlappenden Abtasttaktsignalen durch ein einziges Paar von Haupt-/Neben-Latchen (150a, 152a) zu verschieben.
4. Verfahren, wie im Anspruch 3 angegeben, wobei der Verfahrensschritt, Daten zu verschieben, umfaßt, ein ausgewähltes Signal der nichtüberlappenden Abtasttaktsignale an einen Takteingang des Haupt-Latch abzugeben, das andere nichtüberlappende Abtasttaktsignal an einen Takteingang des Neben-Latch abzugeben, den Inhalt des Haupt-Latch als Antwort darauf, daß das Haupt-Latch das ausgewählte Signal der nichtüberlappenden Abtasttaktsignale empfängt, an das Neben-Latch abzugeben und den Inhalt des Haupt-Latch als Antwort darauf, daß das Neben-Latch das andere nichtüberlappende Abtasttaktsignal empfängt, in das Neben-Latch aufzunehmen.
5. Vorrichtung zur Behandlung von Hardware-Fehlern in einer nach dem Pipeline- Verfahren arbeitenden Zentraleinheit (12) eines Computersystems (10), wobei die Zentraleinheit eine Befehlseinheit (18) zum Abrufen und Decodieren von Befehlen, eine Ausführungseinheit (20) zum Ausführen von Befehlen und einen Systemtakt zum Takten der Befehlseinheit und der Ausführungseinheit aufweist, und wobei die Vorrichtung Mittel zum Nachweisen jedes Fehlers in der Zentraleinheit und zum Abgeben eines Fehlersignals an die Ausführungseinheit, Mittel zum Anhalten des Systemtakts der Zentraleinheit, Mittel zum seriellen Verschieben des Inhalts von ausgewählten Latchen (150, 152) der Zentraleinheit aus der Zentraleinheit heraus, Mittel zum Zurücksetzen der Zentraleinheit auf einen geeigneten Status und Mittel für einen Neustart des Systemtakts umfaßt,
DADURCH GEKENNZEICHNET, daß die Vorrichtung Mittel für eine Kontrolle der Befehlsausführung als Antwort auf jedes Fehlersignal vor dem Anhalten des Systemtakts umfaßt, welche umfassen:
Mittel, um auf synchrone Fehler zu antworten, die in irgendeiner Pipeline-Stufe der Zentraleinheit auftreten, einschließlich
Mitteln zum Abschließen der Ausführung eines gegenwärtig in der Ausführungseinheit befindlichen Befehls für einen Fall, in dem der gegenwärtig in der Ausführungseinheit befindliche Befehl eine Register- oder Cache-Speicherstelle geändert hat und dicht neu gestartet werden kann und der Fehler als Folge eines nachfolgenden Befehls in einer früheren Pipeline-Stufe aufgetreten ist, und
Mitteln zum Anhalten der ganzen weiteren Ausführung in der Ausführungseinheit für Fälle, in denen ein gegenwärtig in der Ausführungseinheit befindlicher Befehl keine Register- oder Cache-Speicherstelle geändert hat oder der Fehler durch den gegenwärtig in der Ausführungseinheit befindlichen Befehlverursachtwurde; und
Mittel, um auf asynchrone Fehler zu antworten, die in einem Schaltungsteil auftreten, die sich nicht in einer Pipeline-Stufe der Zentraleinheit befindet, indem der Abschluß eines gegenwärtig in der Ausführungseinheit befindlichen Befehls durch alle Pipeline-Stufen zugelassen wird, ohne zuzulassen, daß ein anderer Befehl die Ausführungs-Stufe betritt.
6. Vorrichtung, wie im Anspruch 5 angegeben, die weiterhin Mittel umfaßt, um einem Speicher in der Zentraleinheit ein Speichertaktsignal zuzuführen, um Speicherdaten von dem Speicher an die ausgewählten Latche der Zentraleinheit zu transferieren, so daß die Speicherdaten seriell aus den Latchen und aus der Zentraleinheit heraus verschoben werden.
7. Vorrichtung wie im Anspruch 5 oder Anspruch 6 angegeben, wobei die Mittel zum Verschieben des Inhalts von ausgewählten Latchen der Zentraleinheit Mittel zum Verschieben der Daten durch ein einziges Paar von Haupt-/Neben-Latchen (150a, 152a) als Antwort auf einen einzigen Übergang in jedem Paar von nichtüberlappenden Abtasttaktsignalen umfassen.
8. Vorrichtung, wie im Anspruch 7 angegeben, wobei die Mittel zum Verschieben von Daten Mittel, um ein ausgewähltes Signal der nichtüberlappenden Abtasttaktsignale an einen Takteingang des Haupt-Latch abzugeben und das andere nichtüberlappende Abtasttaktsignal an einen Takteingang des Neben-Latch abzugeben, Mittel, um den Inhalt des Haupt-Latch als Antwort darauf, daß das Haupt-Latch das ausgewählte Signal der nichtüberlappenden Abtasttaktsignale empfängt, an das Neben-Latch abzugeben, und Mittel umfassen, um den Inhalt des Haupt-Latch als Antwort darauf, daß das Neben-Latch das andere nichtüberlappende Abtasttaktsignal empfängt, in das Neben-Latch aufzunehmen.
DE68919069T 1989-02-03 1989-09-22 Verfahren und Gerät zur Fehlererkennung und -korrektur in einem nach dem überlappten Steuerungsverfahren arbeitenden Rechnersystem. Expired - Fee Related DE68919069T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/306,828 US4982402A (en) 1989-02-03 1989-02-03 Method and apparatus for detecting and correcting errors in a pipelined computer system

Publications (2)

Publication Number Publication Date
DE68919069D1 DE68919069D1 (de) 1994-12-01
DE68919069T2 true DE68919069T2 (de) 1995-06-08

Family

ID=23187045

Family Applications (1)

Application Number Title Priority Date Filing Date
DE68919069T Expired - Fee Related DE68919069T2 (de) 1989-02-03 1989-09-22 Verfahren und Gerät zur Fehlererkennung und -korrektur in einem nach dem überlappten Steuerungsverfahren arbeitenden Rechnersystem.

Country Status (6)

Country Link
US (1) US4982402A (de)
EP (1) EP0380858B1 (de)
JP (1) JPH02232737A (de)
AT (1) ATE113399T1 (de)
AU (1) AU628163B2 (de)
DE (1) DE68919069T2 (de)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8828817D0 (en) * 1988-12-09 1989-01-18 Int Computers Ltd Data processing apparatus
US5197133A (en) * 1988-12-19 1993-03-23 Bull Hn Information Systems Inc. Control store addressing from multiple sources
JPH07113898B2 (ja) * 1989-05-09 1995-12-06 株式会社日立製作所 障害検出方式
US5490262A (en) * 1989-09-01 1996-02-06 Oki Electric Industry Co., Ltd. Dual cache memory device with cache monitoring
US5355503A (en) * 1990-05-31 1994-10-11 National Semiconductor Corporation Event driven scanning of data input equipment using multi-input wake-up techniques
AU644160B2 (en) * 1990-09-18 1993-12-02 Bull Hn Information Systems Inc. Error handling in a VLSI central processor unit employing a pipelined address and execution module
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
US5339399A (en) * 1991-04-12 1994-08-16 Intel Corporation Cache controller that alternately selects for presentation to a tag RAM a current address latch and a next address latch which hold addresses captured on an input bus
US5321698A (en) * 1991-12-27 1994-06-14 Amdahl Corporation Method and apparatus for providing retry coverage in multi-process computer environment
US5423025A (en) * 1992-09-29 1995-06-06 Amdahl Corporation Error handling mechanism for a controller having a plurality of servers
JP3338488B2 (ja) * 1992-11-18 2002-10-28 富士通株式会社 データ処理装置の検証方法及び装置
US5561761A (en) * 1993-03-31 1996-10-01 Ylsi Technology, Inc. Central processing unit data entering and interrogating device and method therefor
US5701479A (en) * 1993-06-15 1997-12-23 Xerox Corporation Pipelined image processing system for a single application environment
US5995996A (en) * 1993-06-15 1999-11-30 Xerox Corporation Pipelined image processing system for a single application environment
US5557795A (en) * 1993-06-15 1996-09-17 Xerox Corporation Pipelined image processing system for a single application environment
US5602990A (en) * 1993-07-23 1997-02-11 Pyramid Technology Corporation Computer system diagnostic testing using hardware abstraction
JP3373607B2 (ja) * 1993-09-01 2003-02-04 富士通株式会社 プロセッサの制御機構検証用命令列の自動生成方法及び装置
US5996062A (en) * 1993-11-24 1999-11-30 Intergraph Corporation Method and apparatus for controlling an instruction pipeline in a data processing system
US5550988A (en) * 1994-03-01 1996-08-27 Intel Corporation Apparatus and method for performing error correction in a multi-processor system
US5630055A (en) * 1995-05-05 1997-05-13 Digital Equipment Corporation Autonomous pipeline reconfiguration for continuous error correction for fills from tertiary cache or memory
US5699506A (en) * 1995-05-26 1997-12-16 National Semiconductor Corporation Method and apparatus for fault testing a pipelined processor
US5924125A (en) * 1995-08-01 1999-07-13 Arya; Siamak Method and apparatus for parallel access to consecutive TLB entries
US5678003A (en) * 1995-10-20 1997-10-14 International Business Machines Corporation Method and system for providing a restartable stop in a multiprocessor system
US6202174B1 (en) 1996-09-16 2001-03-13 Advanced Micro Devices Inc Method for identifying and correcting errors in a central processing unit
US6016543A (en) * 1997-05-14 2000-01-18 Mitsubishi Denki Kabushiki Kaisha Microprocessor for controlling the conditional execution of instructions
KR100230454B1 (ko) * 1997-05-28 1999-11-15 윤종용 다중처리 시스템의 캐시메모리 검사방법
US6044456A (en) * 1998-01-05 2000-03-28 Intel Corporation Electronic system and method for maintaining synchronization of multiple front-end pipelines
US6543026B1 (en) * 1999-09-10 2003-04-01 Lsi Logic Corporation Forward error correction apparatus and methods
US6493819B1 (en) * 1999-11-16 2002-12-10 Advanced Micro Devices, Inc. Merging narrow register for resolution of data dependencies when updating a portion of a register in a microprocessor
EP1359485B1 (de) * 2002-05-03 2015-04-29 Infineon Technologies AG Steuer- und Überwachungssystem
US20040117587A1 (en) * 2002-12-12 2004-06-17 International Business Machines Corp. Hardware managed virtual-to-physical address translation mechanism
US7017024B2 (en) * 2002-12-12 2006-03-21 International Business Machines Corporation Data processing system having no system memory
US20040117589A1 (en) * 2002-12-12 2004-06-17 International Business Machines Corp. Interrupt mechanism for a data processing system having hardware managed paging of disk data
US20040117588A1 (en) * 2002-12-12 2004-06-17 International Business Machines Corporation Access request for a data processing system having no system memory
US20050055528A1 (en) * 2002-12-12 2005-03-10 International Business Machines Corporation Data processing system having a physically addressed cache of disk memory
US20040117583A1 (en) * 2002-12-12 2004-06-17 International Business Machines Corporation Apparatus for influencing process scheduling in a data processing system capable of utilizing a virtual memory processing scheme
US20040117590A1 (en) * 2002-12-12 2004-06-17 International Business Machines Corp. Aliasing support for a data processing system having no system memory
US7370243B1 (en) * 2004-06-30 2008-05-06 Sun Microsystems, Inc. Precise error handling in a fine grain multithreaded multicore processor
US7308605B2 (en) * 2004-07-20 2007-12-11 Hewlett-Packard Development Company, L.P. Latent error detection
JP2006039678A (ja) * 2004-07-22 2006-02-09 Fujitsu Ltd 情報処理装置およびエラー検出方法
US7380169B2 (en) * 2004-09-24 2008-05-27 Intel Corporation Converting merge buffer system-kill errors to process-kill errors
US20070294588A1 (en) * 2006-05-09 2007-12-20 Coulson Richard L Performing a diagnostic on a block of memory associated with a correctable read error
WO2008040073A1 (en) * 2006-10-05 2008-04-10 Waratek Pty Limited Contention resolution with counter rollover
US20080130631A1 (en) * 2006-10-05 2008-06-05 Holt John M Contention detection with modified message format
US8095616B2 (en) 2006-10-05 2012-01-10 Waratek Pty Ltd. Contention detection
US20080126503A1 (en) * 2006-10-05 2008-05-29 Holt John M Contention resolution with echo cancellation
US7949837B2 (en) * 2006-10-05 2011-05-24 Waratek Pty Ltd. Contention detection and resolution
US20080140982A1 (en) * 2006-10-05 2008-06-12 Holt John M Redundant multiple computer architecture
US20080250221A1 (en) * 2006-10-09 2008-10-09 Holt John M Contention detection with data consolidation
US20090150653A1 (en) * 2007-12-07 2009-06-11 Pedro Chaparro Monferrer Mechanism for soft error detection and recovery in issue queues
US8230269B2 (en) 2008-06-17 2012-07-24 Microsoft Corporation Monitoring data categorization and module-based health correlations
US8896610B2 (en) * 2011-02-18 2014-11-25 Texas Instruments Incorporated Error recovery operations for a hardware accelerator
US8880668B2 (en) * 2011-02-28 2014-11-04 Verizon Patent And Licensing Inc. Method and system for integrating data from multiple sources
WO2014032610A1 (zh) * 2012-09-03 2014-03-06 东南大学 一种面向cpu流水线的错误恢复电路
US9053025B2 (en) 2012-12-28 2015-06-09 Intel Corporation Apparatus and method for fast failure handling of instructions
US9417873B2 (en) 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US9361116B2 (en) 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US10346195B2 (en) 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
CN113407239B (zh) * 2021-06-09 2023-06-13 中山大学 一种基于异步单轨的流水线处理器

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4293919A (en) * 1979-08-13 1981-10-06 International Business Machines Corporation Level sensitive scan design (LSSD) system
US4500958A (en) * 1982-04-21 1985-02-19 Digital Equipment Corporation Memory controller with data rotation arrangement
JPS59123058A (ja) * 1982-12-29 1984-07-16 Fujitsu Ltd マシンチエツク処理方式
US4757445A (en) * 1983-09-12 1988-07-12 Motorola, Inc. Method and apparatus for validating prefetched instruction
US4583222A (en) * 1983-11-07 1986-04-15 Digital Equipment Corporation Method and apparatus for self-testing of floating point accelerator processors

Also Published As

Publication number Publication date
ATE113399T1 (de) 1994-11-15
JPH02232737A (ja) 1990-09-14
AU5394590A (en) 1991-12-19
EP0380858A2 (de) 1990-08-08
EP0380858B1 (de) 1994-10-26
AU628163B2 (en) 1992-09-10
DE68919069D1 (de) 1994-12-01
EP0380858A3 (de) 1991-08-28
US4982402A (en) 1991-01-01

Similar Documents

Publication Publication Date Title
DE68919069T2 (de) Verfahren und Gerät zur Fehlererkennung und -korrektur in einem nach dem überlappten Steuerungsverfahren arbeitenden Rechnersystem.
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE68924223T2 (de) Mechanismus zum Prüfpunktwiederversuch.
DE68927371T2 (de) Verfahren und Vorrichtung zur Verarbeitung von mehreren Zustandscodes wie für einen Parallel-Pipeline-Rechner
DE69028138T2 (de) Mechanismus zur präzisen Behandlung von Ausnahmebedingungen in einem Prozessor mit gepaarten Befehlen
DE69031139T2 (de) Verfahren und Vorrichtung zum Ordnen und in Warteschlangesetzen mehrerer Speicherzugriffsanforderungen
DE3650651T2 (de) Fehlertolerantes Datenverarbeitungssystem
DE68927415T2 (de) Kontextumschaltungsverfahren und -anordnung zur Verwendung in einem Vektorverarbeitungssystem
DE3751474T2 (de) Verzweigungsstrom-Koprozessor.
DE2317870C2 (de) Schaltungsanordnung zur Steuerung der Datenübertragung zwischen dem Hauptspeicher und mindestens einem E/A-Gerät in einer digitalen Datenverarbeitungsanlage
DE3851488T2 (de) Registerverwaltungssystem mit Ausführung von Befehlen in Unordnung in einem Computerprozessor.
DE68928360T2 (de) Hochleistungsrechnersystem mit fehlertoleranter Fähigkeit; Verfahren zum Betrieb desselben
DE69031433T2 (de) Speicherzugriffsausnahmebehandlung bei vorausgelesenen Befehlswörtern in dem Befehlsfliessband eines Rechners mit virtuellem Speicher
DE3116100C2 (de) Datenverarbeitungseinheit
DE69126166T2 (de) Programmierbare Steuerungsvorrichtung
US6052774A (en) Apparatus and method for identifying exception routines indicated by instruction address issued with an instruction fetch command
DE3210816C2 (de)
DE69030931T2 (de) Mehrfachsequenzprozessorsystem
DE3750236T2 (de) Gerät zur In-line-Abfragesteuerung für Datenprozessorprüfung.
DE68927029T2 (de) Pipelineprozessor
DE4313594A1 (de) Mikroprozessor
DE19527031A1 (de) Verbesserte Vorrichtung zum Reduzieren von Verzögerungen aufgrund von Verzweigungen
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE4311441C2 (de) Verfahren zum Betreiben eines Mikroprozessors mit einem externen Anschluß
DE68927292T2 (de) Mikrorechner, geeignet zur Schnellverarbeitung eines Verzweigungsbefehlskodes

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee