DE112005002370T5 - Ausführung von Kontrollbefehlen in redundanten Multithreadingumgebungen - Google Patents

Ausführung von Kontrollbefehlen in redundanten Multithreadingumgebungen Download PDF

Info

Publication number
DE112005002370T5
DE112005002370T5 DE112005002370T DE112005002370T DE112005002370T5 DE 112005002370 T5 DE112005002370 T5 DE 112005002370T5 DE 112005002370 T DE112005002370 T DE 112005002370T DE 112005002370 T DE112005002370 T DE 112005002370T DE 112005002370 T5 DE112005002370 T5 DE 112005002370T5
Authority
DE
Germany
Prior art keywords
thread
last
command
commands
control commands
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.)
Withdrawn
Application number
DE112005002370T
Other languages
English (en)
Inventor
Shubhendu Framingham Mukherjee
Joel Acton Emer
Steven Ann Arbor Reinhardt
Christopher Marlborough Weaver
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of DE112005002370T5 publication Critical patent/DE112005002370T5/de
Withdrawn 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1492Generic software techniques for error detection or fault masking by run-time replication performed by the application software
    • G06F11/1494N-modular type
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Hardware Redundancy (AREA)

Abstract

Verfahren, umfassend:
Erzeugen von Kontrollbefehlen in einem ersten Thread und in einem letzten Thread;
Warten auf einen Counterpart-Kontrollbefehl vom ersten Thread und vom letzten Thread; und
Vergleichen der Counterpart-Kontrollbefehle vom ersten Thread und vom letzten Thread.

Description

  • STAND DER TECHNIK
  • Aktuelle Systeme mit redundanter Ausführung verwenden häufig eine Kontrollschaltung, die sich selbst prüft und in Hardware implementiert ist. Der Kontrollschaltung ähnlich ist der Vergleichsbefehl, der die Ergebnisse aus zwei Threads (z.B. Speicheradresse und Daten) vergleicht. Es ist möglich, den Vergleichsbefehl in beiden Threads zu duplizieren, um den Effekt der Selbstprüfung durch Verdoppelung zu erhalten.
  • Leider verliert die Architektur durch Duplizieren des Vergleichsbefehls den Leistungsvorteil des redundanten Multithreading (RMT). Der Leistungsvorteil von RMT stammt daraus, daß der erste und der letzte Thread ausreichend weit voneinander entfernt sind, so daß der erste Thread Cachefehlgriffe und Fehler in der Sprungvorhersage für den ersten Thread vorher abrufen kann. Wenn der Vergleichsbefehl dupliziert wird, werden nicht nur zusätzliche Warteschlangen benötigt, die zu größeren Verwaltungsaufgaben führen, sondern die Architektur ist wegen der Synchronisation, die in beiden Richtungen erforderlich ist, auch nicht in der Lage, die zwei Threads ausreichend weit voneinander zu halten. Daher wird ein Befehl benötigt, der eine niedrigere Ausfallrate erreichen kann, ohne den Leistungsvorteil des RMT zu opfern.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Verschiedene Merkmale der Erfindung sind aus der folgenden Beschreibung der bevorzugten Ausführungsformen zu erkennen, wie in den begleitenden Zeichnungen illustriert, wobei gleiche Bezugszahlen im allgemeinen sich auf dieselben Teile in allen Zeichnungen beziehen. Die Zeichnungen sind nicht unbedingt maßstabsgerecht, da die Betonung statt dessen auf der Erläuterung der Prinzipien der Erfindungen liegt.
  • 1 ist ein Blockdiagramm einer Ausführungsform einer Multithread-Archtitektur.
  • 2 ist ein Flußdiagramm, das ein Verfahren zur Erzeugung eines Kontrollbefehls erläutert.
  • 3 ist ein Flußdiagramm, das eine Implementierung eines Kontrollbefehls in jedem Thread erläutert.
  • 4 ist ein Blockdiagramm einer Ausführungsform eines Kontrollbefehls.
  • 5 ist ein Blockdiagramm eines Systems, das eine Umgebung für Multithread-Prozessoren bereitstellen kann.
  • 6 ist ein Blockdiagramm eines alternativen Systems, das eine Umgebung für Multithread-Prozessoren bereitstellen kann.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden Beschreibung werden spezielle Details für Zwecke der Erklärung, und nicht zur Einschränkung, dargelegt, wie zum Beispiel besondere Strukturen, Architekturen, Schnittstellen, Verfahren usw., um für ein gründliches Verständnis der verschiedenen Erscheinungsformen der Erfindung zu sorgen. Für Fachleute auf diesem Gebiet, die den Vorteil der aktuellen Offenbarung haben, ist jedoch erkennbar, daß die verschiedenen Erscheinungsformen der Erfindung in anderen Beispielen ausgeführt werden können, die von diesen speziellen Details abweichen. In bestimmten Fällen werden Beschreibungen der bekannten Vorrichtungen, Schaltungen und Verfahren weggelassen, um die Beschreibung der vorliegenden Erfindung nicht durch unnötige Details unverständlich zu machen.
  • Es werden Vorrichtungen und ein Verfahren für einen Kontrollbefehl in einer redundanten Multithreading-Umgebung beschrieben. In der folgenden Beschreibung werden zahlreiche spezielle Details zum Zweck der Erklärung dargelegt, um für ein gründliches Verständnis der Erfindung zu sorgen. Für Fachleute auf dem Gebiet ist jedoch erkennbar, daß die Erfindung ohne diese speziellen Details ausgeführt werden kann.
  • 1 ist ein Blockdiagramm einer Ausführungsform einer redundanten Multithread-Archtitektur. In einer redundanten Multithread-Archtitektur können Fehler durch Ausführen von zwei Kopien eines Programms als getrennte Threads festgestellt werden.
  • Jeder Thread wird mit identischen Eingaben versehen, und die Ausgaben werden verglichen, um festzustellen, ob ein Fehler aufgetreten ist. Redundantes Multithreading kann in Bezug auf einen Begriff beschrieben werden, der hierin als "Bereich der Replikation" bezeichnet wird. Der Bereich der Replikation ist die Grenze einer logisch oder physisch redundanten Operation.
  • Komponenten im Bereich der Replikation 100 (z.B. ein Prozessor, der den ersten Thread 105 ausführt, und ein Prozessor, der den letzten Thread 110 ausführt) unterliegen der redundanten Ausführung. Im Gegensatz dazu unterliegen Komponenten außerhalb des Bereichs der Replikation 100 (z.B. Speicher 100) nicht der redundanten Ausführung. Fehlerschutz wird durch andere Verfahren bereitgestellt, zum Beispiel durch einen Fehlerkorrekturcode für einen Speicher 115. Andere Geräte können außerhalb des Bereichs der Replikation 100 liegen, und/oder andere Verfahren können dazu verwendet werden, einen Fehlerschutz für Geräte außerhalb des Bereichs der Replikation 100 bereitzustellen.
  • Daten, die in den Bereich der Replikation 100 gelangen, gelangen durch den Eingangsreplikationsagenten 120 dorthin, der die Daten repliziert und eine Kopie der Daten an den ersten Thread 105 und an den letzten Thread 110 sendet. Analog treten Daten, die den Bereich Replikation 100 verlassen, durch den Ausgangsvergleichsagenten 125 aus, der die Daten vergleicht und feststellt, ob ein Fehler aufgetreten ist. Das Ändern der Grenze des Bereichs der Replikation 100 führt zu einer Abwägung zwischen Leistung und Umfang der Hardware. Zum Beispiel würde das Replizieren von Speicher 115 einen schnelleren Zugriff auf den Speicher dadurch ermöglichen, daß der Ausgabevergleich von Speicherbefehlen vermieden wird, würde aber die Systemkosten durch Verdoppeln des Speichers im System erhöhen.
  • Eine Ausführungsform der vorliegenden Erfindung schlägt einen Mechanismus zum Kontrollieren einer Kontrollschaltung in einer Softwareimplementierung von RMT vor. Da RMT die Ausgaben von ausgeführten Befehlen vergleicht (was einen Vergleich Befehl für Befehl erfordert), kann es auch in Software implementiert werden. Wenn die Softwareimplementierung von RMT jeden Befehl vergleichen würde, würde dies zu einem beträchtlichen Verwal tungsaufwand führen. Statt dessen ermöglicht RMT jedoch den Vergleich nur der Speicherbefehle und Replizierung nur der Ladebefehle, was den Software-Verwaltungsaufwand einer RMT-Implementierung beträchtlich verringert.
  • 2 illustriert ein Verfahren zur Erzeugung eines Kontrollbefehls. Zu Anfang erzeugt ein Compiler Befehle, wie in den meisten Computern. Aus dem Compiler erhält der Computer nun ein Binärprogramm, das eine Folge von Speicherbefehlen 200 sein kann, aber nicht darauf beschränkt ist. Als Nächstes kann ein binärer Übersetzer einen Kontrollbefehl vor jedem Speicherbefehl in das Binärprogramm 205 einfügen. Das binäre Übersetzungsprogramm kann irgendein binäres Übersetzungsprogramm sein, das im Fachgebiet bekannt ist. Beim Übersetzen des Binärprogramms erzeugt das System ein Binärprogramm sowohl für den ersten Thread als auch für den letzten Thread. Das Binärprogramm für den ersten Thread fügt den Kontrollbefehl zum Speicherbefehl 210 hinzu. Das Binärprogramm für den letzten Thread ersetzt den Speicherbefehl durch den äquivalenten Kontrollbefehl des letzten Threads 215.
  • 3 illustriert eine Ausführungsform des Kontrollbefehls. Wenn RMT einen Vergleich erfordert, kann ein Prozessor sowohl im ersten Thread aus auch im letzten Thread 300 einen Kontrollbefehl ausgeben. Jeder Kontrollbefehl kann eine Menge von 64 Bit aus jedem Thread tragen. Der Kontrollbefehl kann für jeden Thread unabhängig 305 die einzelnen Pipelines durchlaufen, bis er einen Puffer am Ende jeder Pipeline erreicht. Der Kontrollbefehl wartet auf seinen Counterpart-Kontrollbefehl im Puffer 310. Diese beiden Kontrollbefehle können sie dann einen Vergleich der 64-Bit-Mengen vornehmen, die sie mit sich führen 315. Bei einer Nichtübereinstimmung können sie beide Fehler melden. Bei einer Übereinstimmung können sie die Prozessoren den Kontrollbefehl 320 ausführen lassen. Die Pipelines können von verschiedenen Prozessoren in einem CMP oder vom selben Multithread-Prozessor, wie in einem SMT-Prozessor, sein.
  • Bei dieser Implementierung bewahrt der Kontrollbefehl nicht den ersten Befehl aus der Verarbeitung der Befehle aus der Befehlsschlange auf. Vielmehr bewahrt er den Retire-Zeiger auf, bis der entsprechende Kontrollbefehl vom letzten Thread erscheint. Wenn außerdem die Umgebung keine RMT-Umgebung ist, dann kann der Kontrollbefehl als NOP (Nulloperation) behandelt werden.
  • 4 ist ein Blockdiagramm eines Beispiels für einen Kontrollbefehl, der durch zwei Pipelines läuft. Nehmen wir an, ein Speicherbefehl R1 -> [R2] speichert den Wert in Register R1 auf dem Speicherplatz ab, auf den mit der Adresse in Register R2 gezeigt wird. Dieser Speicherbefehl kann sowohl im ersten als auch im letzten Thread mit dem Kontrollbefehl repliziert werden. Der Speicherbefehl im ersten Thread kann sowohl den Kontrollbefehl als auch den Speicherbefehl umfassen, wie unten gezeigt.
    Checkerinst (Kontrollbefehl) R1
    Checkerinst R2
    Speichern: R1 -> [R2]. Der erste Thread kann also den Kontrollbefehl zusammen mit dem Speicherbefehl enthalten, wenn er durch seine Pipeline 400 läuft.
  • Der Speicherbefehl im letzten Thread kann nur den Kontrollbefehl umfassen, wie unten gezeigt.
    Checkerinst R1
    Checkerinst R2.
  • Der letzte Thread hat also keinen Speicherbefehl, der durch die Pipeline 405 läuft.
  • Der Kontrollbefehl Checkerinst R1 vom ersten Thread in Pipeline 400 wartet auf seinen Counterpart-Kontrollbefehl im Puffer 410. Der Kontrollbefehl Checkerinst R1 vom letzten Thread in Pipeline 405 wartet auf seinen Counterpart-Kontrollbefehl im Puffer 415. Der Kontrollbefehl sucht immer nach seinem Counterpart oder Peer oder wartet auf ihn. Wenn es einen gespiegelten Thread gibt, sucht der Kontrollbefehl nach dem Thread in den Puffern 410, 405 oder wartet auf ihn, um sicherzustellen, daß der Spiegel-Thread da ist, und vergleicht dann die Kontrollbefehle.
  • Der Kontrollbefehl Checkerinst R1 vom ersten Thread und Checkerinst R1 vom letzten Thread können auf Grund eines Ausführungsbefehls eine Zweiergruppe bilden und das Registerspezifikationselement und den Wert von R1 vergleichen, um sicherzustellen, daß die Register keine Fehler enthalten. Wenn keine Fehler gefunden werden, werden die Kontrollbefehle ausgeführt 420. Sobald die Kontrollbefehle ausgeführt werden, wird der Wert von R1 gespeichert. Der Wert von R1 wird bis zum Ausführungspunkt mitgenommen und dann gespeichert. So ist das System in der Lage, alle Speicher gleichzeitig zu kontrollieren, statt Speicher für Speicher, wie dies vorher getan wurde.
  • 5 ist ein Blockdiagramm eines Systems, das eine Umgebung für Multithread-Prozessoren bereitstellen kann. Das System, das in 5 illustriert wird, soll einen Bereich von Systemen repräsentieren. Alternative Systeme können mehr, weniger und/oder andere Komponenten umfassen.
  • Ein System 500 umfaßt einen Bus 510 oder eine andere Kommunikationsvorrichtung zum Kommunizieren von Informationen und einen Prozessor(en) 520, der/die an den Bus 510 zum Verarbeiten von Informationen angeschlossen ist/sind. System 500 umfaßt ferner einen Direktzugriffsspeicher (RAM) oder anderen dynamischen Speicher sowie einen statischen Speicher, wie zum Beispiel eine Festplatte, oder ein anderes Speichergerät 535 (das als Speicher bezeichnet wird), das mit dem Bus 510 über den Speichercontroller 530 zum Speichern von Informationen und Befehlen, die vom Prozessor(en) 520 ausgeführt werden sollen, verbunden ist. Speicher 535 kann auch zum Speichern von temporären Variablen oder anderen Zwischeninformationen während der Ausführung von Befehlen durch den Prozessor(en) 520 verwendet werden. Der Speichercontroller 530 kann eine oder mehrere Komponenten zum Steuern von einer oder mehreren Arten von Speicher und/oder zugehörigen Speichergeräten umfassen. Das System 500 umfaßt auch Nur-Lese-Speicher (ROM) und/oder ein anderes statisches Speichergerät 540, das an Bus 510 angeschlossen ist, um statische Informationen und Befehle für den Prozessor(en) 520 zu speichern.
  • Das System 500 kann auch über einen Bus 510 an die Eingabe/Ausgabe (E/A)-Schnittstelle 550 angeschlossen sein. Die E/A-Schnittstelle 550 stellt eine Schnittstelle für E/A-Geräte 555 bereit, die zum Beispiel eine Katodenstrahlröhre (CRT) oder eine Flüssigkristallanzeige (LCD) umfassen kann, um Informationen für einen Computerbenutzer anzuzeigen, und ein alphanumerisches Eingabegerät, das alphanumerische und andere Tasten und/oder ein Cursorsteuergerät, wie zum Beispiel eine Maus, einen Trackball oder Cursorrichtungstasten umfaßt, umfassen kann. Das System 500 umfaßt ferner eine Netzschnittstelle 560 für einen Zugang zu einem Netzwerk, wie zum Beispiel ein lokales Netz, das verdrahtet oder drahtlos ist.
  • Befehle werden für den Speicher 535 aus einem Speichergerät bereitgestellt, wie zum Beispiel einer Magnetplatte, einer integrierten Nur-Lese-Speicher (ROM)-Schaltung, CD-ROM, DVD, über eine Fernverbindung (z.B. über ein Netz mittels einer Netzschnittstelle 860), die entweder verdrahtet oder drahtlos ist, usw.
  • Wendet man sich nun 6 zu, so zeigt das System 600 allgemein ein System, in dem Prozessoren, Speicher und E/A-Geräte durch eine Reihe von Punkt-zu-Punkt-Schnittstellen miteinander verbunden sind. Das System 600 kann auch mehrere Prozessoren umfassen, von denen aus Gründen der Übersichtlichkeit nur zwei, die Prozessoren 605, 610, gezeigt werden. Die Prozessoren 605, 610 können jeweils einen lokalen Speichercontrollerhub (MCH) 615, 620 zur Verbindung mit dem Speicher 625, 630 umfassen. Die Prozessoren 605, 610 können Daten über eine Punkt-zu-Punkt-Schnittstelle 635 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 640, 645 austauschen. Die Prozessoren 605, 610 können jeweils Daten mit einem Chipsatz 650 über einzelne Punkt-zu-Punkt-Schnittstellen 655, 660 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 665, 670, 675, 680 austauschen. Der Chipsatz 650 kann auch Daten mit einer Hochleistungs-Grafikschaltung 685 über eine Hochleistungs-Grafikschnittstelle 690 austauschen.
  • Der Chipsatz 650 kann Daten mit einem Bus 616 über eine Busschnittstelle 695 austauschen. Bei jedem der beiden Systems kann es verschiedene Eingabe/Ausgabe-Geräte 614 auf dem Bus 616 geben, einschließlich von, in einigen Ausführungsformen, Grafikcontrollern niedriger Leistung, Videocontrollern und Netzcontrollern. Eine weitere Busbrücke 618 kann in einigen Ausführungsformen verwendet werden, um einen Datenaustausch zwischen Bus 616 und Bus 620 zu ermöglichen. Der Bus 620 kann in einigen Ausführungsformen ein Kleincomputersystemschnittstellen(SCSI)-Bus, ein IDE-Bus oder ein USB-Bus sein. Zusätzliche E/A-Geräte können mit dem Bus 620 verbunden sein. Sie können eine Tastatur und Cursorsteuergeräte 622, einschließlich einer Maus, einer Audio-E/A 624, Kommunikationsgeräten 626, umfaßend Modems und Netzschnittstellen und Datenspeichergeräte 628 umfassen. Ein Softwarecode 630 kann auf dem Datenspeichergerät 628 gespeichert werden. In einigen Ausführungsformen kann das Datenspeichergerät 628 eine feste Magnetplatte, ein Diskettenlaufwerk, ein optisches Plattenlaufwerk, ein magnetooptisches Plattenlaufwerk, ein Magnetband oder ein nichtflüchtiger Speicher, einschließlich Flash-Speicher, sein.
  • In der ganzen Beschreibung wird der Begriff "Befehl" allgemein verwendet, um Befehle, Makro-Befehle, Befehlsgruppen oder eine beliebige Zahl von anderen Mechanismen zum Codieren von Prozessoroperationen zu bezeichnen.
  • In der folgenden Beschreibung werden spezielle Details für Zwecke der Erklärung, und nicht zur Einschränkung, dargelegt, wie zum Beispiel besondere Strukturen, Architekturen, Schnittstellen, Verfahren usw., um für ein gründliches Verständnis der verschiedenen Gesichtspunkte der Erfindung zu sorgen. Für Fachleute auf diesem Gebiet, die Vorteil aus der aktuellen Offenbarung ziehen, ist jedoch erkennbar, daß die verschiedenen Erscheinungsformen der Erfindung in anderen Beispielen ausgeführt werden können, die von diesen speziellen Details abweichen. In bestimmten Fällen werden Beschreibungen der bekannten Vorrichtungen, Schaltungen und Verfahren weggelassen, um die Beschreibung der vorliegenden Erfindung nicht durch unnötige Details unverständlich zu machen.
  • ZUSAMMENFASSUNG
  • Es wird ein Verfahren und eine Vorrichtung für einen Kontrollbefehl in einer redundanten Multithreading (RMT)-Umgebung beschrieben. In einer Ausführungsform kann ein Prozessor, wenn es das RMT erfordert, einen Kontrollbefehl sowohl im ersten Thread aus auch im letzten Thread ausgeben. Der Kontrollbefehl kann für jeden Thread unabhängig die einzelnen Pipelines durchlaufen, bis er einen Puffer am Ende jeder Pipeline erreicht. Dann sucht der Kontrollbefehl, vor dem Ausführen des Kontrollbefehls, nach seinem Gegenstück und nimmt einen Vergleich der Befehle vor. Wenn die Kontrollbefehle übereinstimmen, werden sie ausgeführt und ausgeschieden. Anderenfalls wird ein Fehler gemeldet.

Claims (31)

  1. Verfahren, umfassend: Erzeugen von Kontrollbefehlen in einem ersten Thread und in einem letzten Thread; Warten auf einen Counterpart-Kontrollbefehl vom ersten Thread und vom letzten Thread; und Vergleichen der Counterpart-Kontrollbefehle vom ersten Thread und vom letzten Thread.
  2. Verfahren nach Anspruch 1, wobei der erste Thread den Kontrollbefehl und einen ausgewählten Befehl umfaßt und der letzte Thread den Kontrollbefehl umfaßt.
  3. Verfahren nach Anspruch 2, wobei das Erzeugen des Kontrollbefehls im ersten Thread ferner das Einfügen des Kontrollbefehls vor dem ausgewählten Befehl umfaßt.
  4. Verfahren nach Anspruch 1, wobei die Kontrollbefehle durch entsprechende Pipelines für den ersten Thread und den letzten Thread laufen.
  5. Verfahren nach Anspruch 1, das ferner das Erzeugen eines Kontrollbefehls umfaßt.
  6. Verfahren nach Anspruch 2, das ferner das Ausführen der Kontrollbefehle umfaßt.
  7. Verfahren nach Anspruch 6, das ferner ein Speichern des ausgewählten Befehls für den ersten Thread umfaßt, wenn der Vergleich der entsprechenden Kontrollbefehle vom ersten Thread und vom letzten Thread Übereinstimmung ergibt.
  8. Verfahren nach Anspruch 1, wobei der erste Thread und der letzte Thread von einem einzigen Prozessor ausgeführt werden.
  9. Verfahren nach Anspruch 1, wobei der erste Thread und der letzte Thread von mehreren Prozessoren ausgeführt werden.
  10. Vorrichtung, umfassend: eine Schaltung für den ersten Thread zum Ausführen eines ersten Threads von Befehlen; ein Schaltung für den letzten Thread zum Ausführen eines letzten Threads von Befehlen; und eine Ausführungseinheit zum Ausführen von entsprechenden Kontrollbefehlen vom ersten Thread und letzten Thread.
  11. Vorrichtung nach Anspruch 10, wobei der erste Thread von Befehlen Kontrollbefehle und ausgewählte Befehle umfaßt.
  12. Vorrichtung nach Anspruch 11, wobei der letzte Thread von Befehlen Kontrollbefehle umfaßt.
  13. Vorrichtung nach Anspruch 10, wobei die Schaltung für den ersten Thread und Schaltung für den letzten Thread eine Pipeline umfassen.
  14. Vorrichtung nach Anspruch 13, wobei der erste Thread und der letzte Thread von einem einzigen Prozessor ausgeführt werden.
  15. Vorrichtung nach Anspruch 13, wobei der erste Thread und der letzte Thread von mehreren Prozessoren ausgeführt werden.
  16. Vorrichtung nach Anspruch 12, die ferner Puffer umfaßt, die mit der Schaltung für den ersten Thread und der Schaltung für den letzten Thread verbunden sind.
  17. Vorrichtung nach Anspruch 16, wobei der Kontrollbefehl des ersten Threads und der Kontrollbefehl des letzten Threads auf entsprechende Kontrollbefehle im Puffer warten.
  18. Vorrichtung nach Anspruch 2, wobei der ausgewählte Befehl gespeichert ist, wenn die entsprechenden Kontrollbefehle übereinstimmen.
  19. Vorrichtung nach Anspruch 2, wobei die Ausführungseinheit einen Fehler erzeugt, wenn die entsprechenden Kontrollbefehle nicht übereinstimmen.
  20. Vorrichtung nach Anspruch 11, wobei der Kontrollbefehl von einem binären Übersetzunger vor den ausgewählten Befehl gesetzt ist.
  21. Vorrichtung nach Anspruch 11, wobei der ausgewählte Befehl ein Speicherbefehl ist.
  22. System, umfassend: einen ersten Prozessor, umfassend: eine Schaltung für den ersten Thread zum Ausführen eines ersten Threads von Kontrollbefehlen; eine Schaltung für den letzten Thread zum Ausführen eines letzten Threads von Kontrollbefehlen; und eine Retire-Einheit zum Ausscheiden entsprechender Kontrollbefehle vom ersten Thread und vom letzten Thread, eine erste Schnittstelle zu einem zweiten Prozessor; eine zweite Schnittstelle zu Eingabe/Ausgabe-Vorrichtungen; und eine Audio-Eingabe/Ausgabe-Vorrichtung, die mit der zweiten Schnittstelle verbunden ist.
  23. System nach Anspruch 22, wobei der erste Thread von Befehlen Kontrollbefehle und ausgewählte Befehle umfaßt.
  24. System nach Anspruch 23, wobei der letzte Thread von Befehlen Kontrollbefehle umfaßt.
  25. System nach Anspruch 22, wobei die Schaltung für den ersten Thread und Schaltung für den letzten Thread eine Pipeline umfassen.
  26. System nach Anspruch 24, wobei die ausgewählten Befehle gespeichert sind, wenn die entsprechenden Kontrollbefehle vom ersten Thread und vom letzten Thread übereinstimmen.
  27. System nach Anspruch 26, das ferner Puffer umfaßt, die mit der Schaltung für den ersten Thread und der Schaltung für den letzten Thread verbunden sind.
  28. System nach Anspruch 26, wobei die Retire-Einheit einen Fehler erzeugt, wenn die entsprechenden Kontrollbefehle nicht übereinstimmen.
  29. System nach Anspruch 23, wobei der Kontrollbefehl von einem binären Übersetzer vor den ausgewählten Befehl gesetzt ist.
  30. System nach Anspruch 23, wobei der ausgewählte Befehl ein Speicherbefehl ist.
  31. System nach Anspruch 22, wobei die erste und zweite Schnittstelle Punkt-zu-Punkt-Schnittstellen sind.
DE112005002370T 2004-09-29 2005-09-29 Ausführung von Kontrollbefehlen in redundanten Multithreadingumgebungen Withdrawn DE112005002370T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/953,887 2004-09-29
US10/953,887 US7353365B2 (en) 2004-09-29 2004-09-29 Implementing check instructions in each thread within a redundant multithreading environments
PCT/US2005/035375 WO2006039595A2 (en) 2004-09-29 2005-09-29 Executing checker instructions in redundant multithreading environments

Publications (1)

Publication Number Publication Date
DE112005002370T5 true DE112005002370T5 (de) 2007-09-20

Family

ID=36001038

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112005002370T Withdrawn DE112005002370T5 (de) 2004-09-29 2005-09-29 Ausführung von Kontrollbefehlen in redundanten Multithreadingumgebungen

Country Status (7)

Country Link
US (1) US7353365B2 (de)
JP (1) JP4691105B2 (de)
CN (1) CN101031887B (de)
DE (1) DE112005002370T5 (de)
GB (1) GB2430520B (de)
TW (1) TWI317063B (de)
WO (1) WO2006039595A2 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7581152B2 (en) * 2004-12-22 2009-08-25 Intel Corporation Fault free store data path for software implementation of redundant multithreading environments
US7321989B2 (en) * 2005-01-05 2008-01-22 The Aerospace Corporation Simultaneously multithreaded processing and single event failure detection method
US7818744B2 (en) * 2005-12-30 2010-10-19 Intel Corporation Apparatus and method for redundant software thread computation
GB0602641D0 (en) * 2006-02-09 2006-03-22 Eads Defence And Security Syst High speed data processing system
US7444544B2 (en) * 2006-07-14 2008-10-28 International Business Machines Corporation Write filter cache method and apparatus for protecting the microprocessor core from soft errors
US9081688B2 (en) * 2008-12-30 2015-07-14 Intel Corporation Obtaining data for redundant multithreading (RMT) execution
US9594648B2 (en) * 2008-12-30 2017-03-14 Intel Corporation Controlling non-redundant execution in a redundant multithreading (RMT) processor
CN101551764B (zh) * 2009-02-27 2010-11-10 北京时代民芯科技有限公司 基于同步冗余线程与编码技术的抗单粒子效应***及方法
EP2537091A4 (de) 2010-02-16 2014-08-06 Freescale Semiconductor Inc Datenverarbeitungsverfahren, datenprozessor und vorrichtung mit einem datenprozessor
US9361104B2 (en) * 2010-08-13 2016-06-07 Freescale Semiconductor, Inc. Systems and methods for determining instruction execution error by comparing an operand of a reference instruction to a result of a subsequent cross-check instruction
JP2012208662A (ja) * 2011-03-29 2012-10-25 Toyota Motor Corp マルチスレッド・プロセッサ
WO2014080245A1 (en) 2012-11-22 2014-05-30 Freescale Semiconductor, Inc. Data processing device, method of execution error detection and integrated circuit
AT515341B1 (de) * 2014-01-23 2015-12-15 Bernecker & Rainer Ind Elektronik Gmbh Verfahren zur Überprüfung der Abarbeitung von Software
US9823983B2 (en) 2014-09-25 2017-11-21 Nxp Usa, Inc. Electronic fault detection unit
US10013240B2 (en) 2016-06-21 2018-07-03 Advanced Micro Devices, Inc. Fingerprinting of redundant threads using compiler-inserted transformation code
US10042687B2 (en) * 2016-08-08 2018-08-07 Advanced Micro Devices, Inc. Paired value comparison for redundant multi-threading operations

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19625195A1 (de) 1996-06-24 1998-01-02 Siemens Ag Synchronisationsverfahren
JPH1115661A (ja) * 1997-06-26 1999-01-22 Toshiba Corp Cpuの自己診断方法
US6463579B1 (en) * 1999-02-17 2002-10-08 Intel Corporation System and method for generating recovery code
US6625749B1 (en) * 1999-12-21 2003-09-23 Intel Corporation Firmware mechanism for correcting soft errors
US6640313B1 (en) 1999-12-21 2003-10-28 Intel Corporation Microprocessor with high-reliability operating mode
US6854075B2 (en) 2000-04-19 2005-02-08 Hewlett-Packard Development Company, L.P. Simultaneous and redundantly threaded processor store instruction comparator
US6854051B2 (en) 2000-04-19 2005-02-08 Hewlett-Packard Development Company, L.P. Cycle count replication in a simultaneous and redundantly threaded processor

Also Published As

Publication number Publication date
US7353365B2 (en) 2008-04-01
JP2008515064A (ja) 2008-05-08
US20060095821A1 (en) 2006-05-04
CN101031887A (zh) 2007-09-05
GB2430520A (en) 2007-03-28
GB2430520B (en) 2008-10-22
GB0700979D0 (en) 2007-02-28
CN101031887B (zh) 2010-05-26
TW200634504A (en) 2006-10-01
TWI317063B (en) 2009-11-11
WO2006039595A2 (en) 2006-04-13
WO2006039595A3 (en) 2006-06-29
JP4691105B2 (ja) 2011-06-01

Similar Documents

Publication Publication Date Title
DE112005002370T5 (de) Ausführung von Kontrollbefehlen in redundanten Multithreadingumgebungen
DE2714805C2 (de)
DE19882853B3 (de) Verfahren und Steuereinrichtung zum automatischen Korrigieren von in einem Speichersubsystem erfassten Fehlern und Computersystem, das eine solche Steuereinrichtung aufweist
DE19914210B4 (de) Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE3686991T2 (de) Mechanismus fuer parallele speicherdatenabholung und befehlsausfuehrung in einem prozessor mit reduziertem befehlssatz.
DE112012000303B4 (de) Dynamische binäre Optimierung
DE112011101364B4 (de) Fehlerbehebung in Multithread-Code
DE69030931T2 (de) Mehrfachsequenzprozessorsystem
DE3687298T2 (de) Verfahren zur verarbeitung von adressenuebersetzungsausnahmen in einer virtuellen speicheranordnung.
DE1931966C3 (de) Datenverarbeitungsanlage mit Assoziativspeichern
DE60115976T2 (de) Rechnersystem und Interruptvorgang
DE10297624T5 (de) Steuerung von Kompatibilitätsgraden von Binärcode-Übersetzungen zwischen Befehlssatzarchitekturen
DE112007001171T5 (de) Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf
DE112006004005T5 (de) Kommunikation zwischen Mehrfach-Ausführungsfolgen in einem Prozessor
DE112010004963T5 (de) Synchronisieren von SIMD Vektoren
DE102007006190A1 (de) Techniken zur Verwendung von Speicher-Attributen
DE112006003632B4 (de) Dynamische selbstzerfallende Bauteilarchitektur
DE102006039747A1 (de) Verfahren für Kontextzustandsmanagement
DE112007001245T5 (de) Fehlererkennung mit redundanten virtuellen Maschinen
DE102013013137A1 (de) Mehrstufige registerumbenennung durch entfernen von abhängigkeiten
DE102013006396A1 (de) Eine grafikverarbeitungseinheit, in der eine standardverarbeitungseinheit verwendet ist, und ein verfahren zum aufbau einer grafikverarbeitungseinheit
DE112017003350T5 (de) Speicherauslesebefehle, prozessoren, verfahren und systeme, die bei defekten daten keine ausnahme annehmen
DE102014002510A1 (de) Präzise Ausnahmesignalisierung für Mehrfachdatenarchitektur
DE68924883T2 (de) Mikroprozessor mit Befehlspipeline.

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20140401