DE112004002576T5 - Management externer Speicheraktualisierung zur Fehlererfassung in redundanten Multithreading-Systemen unter Verwendung einer spekulativen Speicherunterstützung - Google Patents

Management externer Speicheraktualisierung zur Fehlererfassung in redundanten Multithreading-Systemen unter Verwendung einer spekulativen Speicherunterstützung Download PDF

Info

Publication number
DE112004002576T5
DE112004002576T5 DE112004002576T DE112004002576T DE112004002576T5 DE 112004002576 T5 DE112004002576 T5 DE 112004002576T5 DE 112004002576 T DE112004002576 T DE 112004002576T DE 112004002576 T DE112004002576 T DE 112004002576T DE 112004002576 T5 DE112004002576 T5 DE 112004002576T5
Authority
DE
Germany
Prior art keywords
threads
thread
epoch
memory
instruction
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
DE112004002576T
Other languages
English (en)
Inventor
Steven K. Vancouver Reinhardt
Shubhendu Framingham Mukherjee
Joel S. Acton Emer
Christopher T. Marlboro 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 DE112004002576T5 publication Critical patent/DE112004002576T5/de
Withdrawn legal-status Critical Current

Links

Classifications

    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1497Details of time redundant execution on a single processing unit
    • 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Hardware Redundancy (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Verfahren, umfassend:
– paralleles Ausführen korrespondierender Anweisungs-Threads als voreilenden Thread und nacheilenden Thread;
– Speichern des Ergebnisses der Anweisung, die in dem voreilenden Thread ausgeführt wird, und des Ergebnisses der Anweisung, die in dem nacheilenden Thread ausgeführt wird, in einem Speicher;
– Vergleichen der Ergebnisse, die in dem Speicher gespeichert sind;
– Festhalten eines einzelnen Anweisungssatzes in einem Speicherzustand auf der Basis des verglichenen Ergebnisses; und
– Verschieben externer Aktualisierungen, bis der Schritt des Festhaltens beendet ist.

Description

  • VERWANDTE ANMELDUNGEN
  • Diese US Patentanmeldung ist mit der folgenden US Patentanmeldung verwandt:
    BUFFFERING UNCHECKED STORES FOR FAULT DETECTION IN RMS USING SPECULATIVE MEMORY SUPPORT, Anmeldung Nummer 10/749,618 , eingereicht am 30. Dezember 2003.
  • HINTERGRUNDINFORMATIONEN
  • Prozessoren werden zunehmend für vorübergehende Fehler anfällig, die durch Alpha-Teilchen und Belastung mit kosmischer Strahlung verursacht werden. Diese Fehler können zu Betriebsfehlern führen, die als "leichte" Fehler bezeichnet werden, da diese Fehler nicht zu einer dauerhaften Fehlfunktion des Prozessors führen. Belastungen mit kosmischen Strahlenpartikeln, wie Neutronen, sind besonders kritisch, da dem Prozessor ein wirksamer Schutz fehlt. Vorübergehende Fehler machen derzeit mehr als 90% der Fehler in Vorrichtungen auf Prozessorbasis aus.
  • Wenn Transistoren kleiner sind, werden die einzelnen Transistoren für Belastungen mit kosmischen Strahlenpartikeln weniger anfällig. Sinkende Spannungspegel, die die verringerte Transistorgröße begleiten und die entsprechende Transistorvergrößerung führen jedoch dazu, daß Prozessoren einen exponentialen Anstieg in der gesamten Prozessoranfälligkeit für Belastungen mit kosmischen Strahlenpartikeln oder andere Ursachen leichter Fehler zeigen. Zur Lösung des Problems erfordert das Erreichen einer bestimmten Fehlerrate für ein Multiprozessorsystem eine noch geringere Fehlerrate für die einzelnen Prozessoren. Infolge dieser Trends werden Fehlererfassungs- und -behebungstechniken, die gewöhnlich missionskritischen Anwendungen vorbehalten sind, zunehmend bei anderen Prozessoranwendungen anwendbar.
  • Eine Silent Data Corruption (SDC) tritt ein, wenn keine Fehler erfaßt werden, und kann zu korrupten Datenwerten führten, die bestehen bleiben, bis der Prozessor zurückgestellt wird. Die SDC-Rate ist die Rate, bei der SDC-Ereignisse eintreten. Leichte Fehler sind Fehler, die zum Beispiel unter Verwendung einer Paritätsprüfung erfaßt, aber nicht korrigiert werden können.
  • Eine Fehlererfassungsunterstützung kann die SDC-Rate eines Prozessors verringern, indem der Rechenvorgang angehalten wird, bevor sich Fehler in den permanenten Speicher fortpflanzen können. Parität zum Beispiel ist ein allgemein bekannter Fehlererfassungsmechanismus, der eine Silent Date Corruption für Einzelbit-Fehler in Speicherstrukturen verhindert. Leider kann das Hinzufügen einer Parität zu Zwischenspeichern oder einer Logik in Hochleistungsprozessoren die Zykluszeit und Gesamtleistung allgemein negativ beeinflussen. Folglich haben Prozessordesigner auf redundante Ausführungsmechanismus zurückgegriffen, um Fehler in Prozessoren zu erfassen.
  • Gegenwärtige redundante Ausführungssysteme verwenden allgemein eine Technik, die als "Lockstepping" bekannt ist, die Prozessorfehler erfaßt, indem sie identische Kopien desselben Programms auf zwei identischen "lockstepped" (zyklussynchronisierten) Prozessoren laufen läßt. In jedem Zyklus werden beiden Prozessoren identische Eingänge zugeleitet und eine Prüfschaltung vergleicht die Ausgänge. Bei einer fehlenden Übereinstimmung der Ausgänge, zeigt die Prüfschaltung einen Fehler an und kann eine Behebungssequenz einleiten. Lockstepping kann das SDC FIT der Prozessoren verringern, indem jeder Fehler erfaßt wird, der sich bei der Prüfschaltung zeigt. Leider verbraucht das Lockstepping Prozessor-Ressourcen, die sonst zur Verbesserung der Leistung verwendet werden könnten.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Verschiedene Merkmale der Erfindung gehen aus der folgenden Beschreibung bevorzugter Ausführungsformen hervor, wie in den beiliegenden Zeichnungen dargestellt, in welchen sich gleiche Bezugszeichen im Allgemeinen auf dieselben Teile in allen Zeichnungen beziehen. Die Zeichnungen sind nicht unbedingt maßstabgetreu, sondern der Schwerpunkt liegt vielmehr auf der Veranschaulichung der Prinzipien der Erfindung.
  • 1 ist ein Blockdiagramm einer Ausführungsform einer redundanten Multithreading-Architektur mit den redundanten Threads.
  • 2 ist ein Blockdiagramm einer Ausführungsform einer simultanen und redundanten Threading-Architektur.
  • 3 zeigt minimale und maximale Pufferzeit-Verhältnisse für eine Ausführungsform einer simultanen und redundanten Multithreading-Architektur.
  • 4 ist ein Flußdiagramm von Speichersystemerweiterungen zum Managen interepochaler Speicherdatenabhängigkeiten.
  • 5 ist ein Blockdiagramm einer Ausführungsform externer Speicheraktualisierungen zur Fehlererfassung in einer redundanten Multithreading-Architektur.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden Beschreibung sind spezifische Einzelheiten zur Erklärung und nicht zur Einschränkung dargelegt, wie besondere Strukturen, Architekturen, Schnittstellen, Techniken usw., um ein umfassendes Verständnis verschiedener Aspekte der Erfindung zu bieten. Für den Fachmann ist jedoch offensichtlich, daß angesichts der vorliegenden Offenbarung die verschiedenen Aspekte der Erfindung in anderen Beispielen ausgeführt werden können, die von diesen spezifischen Einzelheiten abweichen. In bestimmten Fällen werden Beschreibungen allgemein bekannter Vorrichtungen, Schaltungen und Methoden unterlassen, damit die Beschreibung der vorliegenden Erfindung nicht wegen unnötiger Details undeutlich wird.
  • Replikationssphäre
  • 1 ist ein Blockdiagramm einer Ausführungsform einer redundanten Multithreading-Architektur. In einer Multithreading-Architektur können Fehler erfaßt werden, indem zwei Kopien eines Programms als separate Threads ausgeführt werden. Jeder Thread ist mit identischen Eingängen bereitgestellt und die Ausgänge werden verglichen, so daß festgestellt werden kann, ob ein Fehler aufgetreten ist. Redundantes Multitheading kann im Bezug auf ein Konzept be schrieben werden, das hierin als "Replikationssphäre" bezeichnet wird. Die Replikationssphäre ist die Grenze einer logisch oder physikalisch redundanten Operation.
  • Komponenten innerhalb der Replikationssphäre 130 (z.B. ein Prozessor, der einen voreilenden Thread 110 ausführt, und ein Prozessor, der einen nacheilenden Thread 120 ausführt) unterliegen einer redundanten Ausführung. Im Gegensatz dazu unterliegen Komponenten außerhalb der Replikationssphäre 130 (z.B. Speicher 150, RAID 160) keiner redundanten Ausführung. Ein Fehlerschutz wird durch andere Techniken bereitgestellt, zum Beispiel eine Fehlerkorrekturcode für Speicher 150 und eine Parität für RAID 160. Andere Vorrichtungen können außerhalb der Replikationssphäre 130 liegen und/oder andere Techniken können verwendet werden, um einen Fehlerschutz für Vorrichtungen außerhalb der Replikationssphäre 130 bereitzustellen.
  • Daten, die in die Replikationssphäre 130 gelangen, treten durch eine Eingangs-Replikationseinrichtung 170 ein, die Daten repliziert und eine Kopie der Daten zu einem voreilenden Thread 110 und einem nacheilenden Thread 120 sendet. Ebenso treten Daten, die die Replikationssphäre 130 verlassen, durch eine Ausgangsvergleichseinrichtung 180 aus, die die Daten vergleicht und bestimmt, ob ein Fehler aufgetreten ist. Bei einer Änderung der Grenze der Replikationssphäre 130 werden Leistung und Menge an Hardware gegenseitig aufgewogen. Zum Beispiel würde ein replizierender Speicher 150 einen schnelleren Speicherzugriff ermöglichen, indem ein Ausgangsvergleich von Speicheranweisungen vermieden wird, aber gleichzeitig die Systemkosten durch eine Verdopplung der Speichermenge in dem System erhöhen.
  • Im Allgemeinen gibt es zwei Replikationssphären, die als "SoR-Register" und SoR-Cache" bezeichnet werden können. In der SoR-Registerarchitektur befinden sich die Registerdatei und Caches außerhalb der Replikationssphäre. Ausgänge von der SoR-Register-Replikationssphäre enthalten Registereinträge und Speicheradresse und Daten, die auf Fehler verglichen werden. In der SoR-Cache-Architektur befinden sich die Anweisungs- und Daten-Cache-Speicher außerhalb der Replikationssphäre, so daß alle Speicheradressen und Daten, nicht aber Registereinträge, auf Fehler verglichen werden.
  • Die SoR-Cache-Architektur hat den Vorteil, daß nur Speicherungen (und möglicherweise eine begrenzte Anzahl anderer gewählter Anweisungen) auf Fehler verglichen werden, wodurch die Prüfschaltung-Bandbreite verringert und die Leistung erhöht wird, indem die Speicheropera tionen nicht verzögert werden. Im Gegensatz dazu erfordert die SoR-Registerarchitektur einen Vergleich der meisten Anweisungen auf Fehler, was eine größere Prüfschaltung-Bandbreite erfordert und Speicheroperationen verzögern kann, bis die Prüfschaltung bestimmt, daß alle Anweisungen vor dem Speichervorgang fehlerfrei sind. Der SoR-Cache kann dasselbe Abdekkungsmaß für vorübergehende Fehler bereitstellen wie das SoR-Register, da Fehler, die sich nicht als Fehler an der Grenze der Replikationssphäre manifestieren, den Systemzustand nicht korrumpieren, und daher effektiv maskiert werden.
  • Zur Bereitstellung einer Fehlerbehebung sollte jedes Anweisungsergebnis verglichen werden, um einen Prüfpunkt bereitzustellen, der jeder Anweisung entspricht. Daher wird die SoR-Register-Architektur hier ausführlicher beschrieben.
  • Überblick über die simultane und redundante Threading-Architektur
  • 2 ist ein Blockdiagramm einer Ausführungsform einer simultanen und redundanten Threading-Architektur. Die Architektur von 2 ist eine SoR-Register-Architektur, in der der Ausgang, oder das Ergebnis, von jeder Anweisung zur Fehlererfassung verglichen wird.
  • Ein voreilender Thread 210 und ein nacheilender Thread 210 stellen korrespondierende Threads dar, die mit einer Zeitdifferenz ausgeführt werden, so daß der voreilende Thread 210 Anweisungen ausführt, bevor der nacheilende Thread 220 dieselbe Anweisung ausführt. In einer Ausführungsform ist der voreilende Thread 210 mit dem nacheilenden Thread 220 identisch. Als Alternative können der voreilende Thread 210 und/oder der nacheilende Thread 200 eine Steuerung oder andere Informationen enthalten, die nicht in dem Thread-Gegenstück enthalten sind. Der voreilende Thread 210 und der nacheilende Thread 220 können von demselben Prozessor ausgeführt werden, oder der voreilende Thread 120 und der nacheilende Thread 220 können von verschiedenen Prozessoren ausgeführt werden.
  • Anweisungsadressen werden vom voreilenden Thread 210 über eine Anweisungsreplikationsschlange 230 zum nacheilenden Thread 220 geleitet. Wenn Anweisungen durch die Anweisungsreplikationsschlange 230 geleitet werden, ist eine Kontrolle der Zeitdifferenz oder der "Pufferzeit" ("slack") zwischen der Ausführung einer Anweisung im voreilenden Thread 210 und der Ausführung einer Anweisung im nacheilenden Thread 220 möglich.
  • Eingangsdaten werden durch die Quellenregisterwertschlange 240 vom voreilenden Thread 210 zum nacheilenden Thread 220 geleitet. In einer Ausführungsform repliziert die Quellenregisterwertschlange 240 Eingangsdaten sowohl für den voreilenden Thread 210 wie auch für den nacheilenden Thread 220. Ausgangsdaten werden durch eine Zielortregisterwertschlange 250 vom voreilenden Thread 220 zum nacheilenden Thread 210 geleitet. In einer Ausführungsform vergleicht die Zielortregisterwertschlange 250 Ausgangsdaten sowohl vom voreilenden Thread 210 wie auch vom nacheilenden Thread 220.
  • In einer Ausführungsform läuft der voreilende Thread 210 Hunderte Anweisung vor dem nacheilenden Thread 220. Es kann jede Anzahl von "Pufferzeit"-Anweisungen verwendet werden. In einer Ausführungsform wird die Pufferzeit durch eine Verlangsamung/oder Verzögerung des Anweisungsabrufs des nacheilenden Threads 220 verursacht. In einer anderen Ausführungsform kann die Pufferzeit durch eine Anweisungsreplikationsschlange 230 oder einen Anweisungsreplikationsmechanismus verursacht werden, wenn eine Anweisungsreplikation nicht von der Anweisungsreplikationsschlange 230 ausgeführt wird.
  • Weitere Einzelheiten für Techniken, die eine Pufferzeit in einer simultanen und redundanten Threading-Architektur erzeugen, finden sich in "Detailed Design and Evaluation of Redundant Multithreading Alternatives", von Shubhendu S. Mukherjee, Michael Kontz und Steven K. Reinhardt, in Proc. 29th Int'l Symp. on Computer Architecture, Mai 2002, und in "Transient Fault Detection via Simultaneous Multithreading", von Stefen K. Reinhardt und Shubhendu S. Mukherjee, in Proc. 27th Int'l Symp. on Computer Architecture, Juni 2000.
  • 3 zeigt minimale und maximale Pufferzeit-Verhältnisse für eine Ausführungsform einer simultanen und redundanten Threading-Architektur. Die Ausführungsform von 3 ist eine SoR-Register-Architektur, wie zuvor beschrieben. Die minimale Pufferzeit ist die Gesamtlatenzzeit eines Cache-Miss, die Latenzzeit von der Ausführung bis zur Rückordnung, und der Latenzzeit, die zum Befördern der Lastadresse und des Wertes zu dem nacheilenden Thread verstreicht. Wenn der voreilende Thread ein Cache-Miss erführt, und die entsprechende Last vom voreilenden Thread vor der Minimalpufferzeit beim Ausführungspunkt eintrifft, wird der voreilende Thread verzögert.
  • Ebenso ist die maximale Pufferzeit die Latenzzeit von der Rückordnung bis zur Fehlererfassung im voreilenden Thread. Im Allgemeinen gibt ein gewisses Puffermaß, so daß rückgeordnete Anweisungen von dem voreilenden Thread nach der Rückordnung in dem Prozessor verbleiben können. Dies definiert die maximale Pufferzeit zwischen dem voreilenden und nacheilenden Thread. Wenn sich der Pufferspeicher füllt, wird der voreilende Thread verzögert, so daß der nacheilende Thread zusätzliche Anweisungen vom Pufferspeicher aufnehmen kann. Wenn daher die Pufferzeit zwischen den beiden Threads größer als die maximale Pufferzeit ist, wird die gesamte Leistung schlechter.
  • Spekulative Speicherunterstützung
  • In einem spekulativen Multithreading-System ist ein sequentielles Programm in logisch sequentielle Segmente geteilt, die als Epochen oder Tasks bezeichnet werden. Mehrere Epochen werden parallel ausgeführt, entweder auf separaten Prozessorkernen oder als separate Threads in einem SMT-Prozessor. Zu jedem bestimmten Zeitpunkt entspricht nur die älteste Epoche der Ausführung des ursprünglichen sequentiellen Programms. Die Ausführung aller anderer Epochen beruht auf einer Spekulation über Potentialsteuerung und Datenkonflikte. Im Falle einer interepochalen Fehlspekulation werden die fehlspekulierten Epochen verworfen. Wenn eine Epoche eine Ausführung beendet und zur ältesten Epoche wird, werden ihre Ergebnisse in dem sequentiellen Architekturzustand der Berechnung festgehalten.
  • In einer Ausführungsform eines spekulativen Multithreading-Systems kann der Kompiler den Code auf heuristischer Basis statisch in Epochen teilen. Zum Beispiel werden Schleifenkörper häufig zur Bildung von Epochen verwendet. In diesem Fall würden mehrfache Iterationen der Schleife mehrfache Epochen zur Ausführungszeit erzeugen, die parallel ausgeführt werden.
  • Das System muß interepochale Datenkonflikte durchsetzen, um die Semantik des sequentiellen Programms über diese parallele Ausführung aufrechtzuerhalten. In einer Ausführungsform ist der Kompiler für die Epochenbildung verantwortlich, so daß er eine interepochale Kommunikation auf Registerbasis explizit managen kann (möglicherweise mit Hardware-Unterstützung). Datenkonflikte auf Speicherbasis sind (im Allgemeinen) statisch nicht vorhersagbar, und müssen somit zur Ausführungszeit bearbeitet werden. Speichersystemerweiterungen zum Managen interepochaler Speicherdatenabhängigkeiten, zur Erfüllung dieser, wenn möglich, und sonst zum Erfassen von Verletzungen und Verwerfen von Epochen, sind eine Schlüsselkomponente jedes spekulativen Multithreading-Systems.
  • 4 zeigt Speichersystemerweiterungen zum Managen interepochaler Speicherdatenabhängigkeiten. Das Erfassen von Verletzungen und Verwerfen von Epochen ist ein wesentliches Merkmal eines spekulativen Multithreading-Systems. In einer Ausführungsform muß eine Last den Wert einer Speicherung zu derselben Adresse zurückleiten, die in einer logischen sequentiellen Ausführung eines Programms unmittelbar zuvor liegt, Schritt 400. Zum Beispiel muß das System Folgendes in der Reihenfolge der Priorität zurückleiten. Zuerst den Wert von der jüngsten vorangehenden Speicherung innerhalb derselben Epoche, falls vorhanden. Zweitens den Wert von der letzten Speicherung in der am nächsten liegenden, logisch vorangehenden Epoche, falls vorhanden. Schließlich den Wert von dem festgehaltenen sequentiellen Speicherzustand. Ferner darf die Last nicht durch logisch nachfolgende Speicherungen beeinträchtigt werden, die bereits ausgeführt wurden. Hier wird angenommen, daß der Prozessor garantiert, daß Speicherreferenzen scheinbar in einer Epoche sequentiell arbeiten, und somit alle logisch nachfolgenden Speicherungen zu logisch nachfolgenden Epochen gehören.
  • Anschließend muß ein Speicher erfassen, ob logisch nachfolgende Lasten bereits ausgeführt sind, 410. Wenn dies zutrifft, verletzen sie die Datenabhängigkeit. Dann muß jede Epoche, die eine solche Last enthält, und möglicherweise auch jede spätere Epoche, verworfen werden. Eine Commit-Operation nimmt den Satz exponierter Speicherungen, der während einer Epoche ausgeführt wurde, und wendet diesen atomar bei dem festgehaltenen sequentiellen Speicherzustand an, 420. Eine exponierte Speicherung ist die letzte Speicherung an einer bestimmten Stelle innerhalb einer Epoche. Nicht exponierte Speicherungen, d.h., jene, deren Werte innerhalb derselben Epoche überschrieben werden, sind außerhalb der Epoche, in der sie arbeiten, nicht erkennbar. Schließlich nimmt eine Abort-Operation den Satz von Speicherungen, der während einer Epoche ausgeführt wurde, und verwirft diesen, 430.
  • 5 ist ein Blockdiagramm zur Isolierung redundanter Ausführungen externer Speicheraktualisierungen zur Fehlererfassung in redundanten Multithreading-Systemen unter Verwendung einer spekulativen Speicherunterstützung. Die Isolierung von Ausführungen externer Speicheraktualisierungen bietet eine präzise Replikation von Lasteingängen.
  • In dieser Ausführungsform führen der voreilende Thread 510 und der nacheilende Thread 520 Epochen parallel aus. Eine Anweisungsreplikationsschlange 530 sendet die Epoche vom voreilenden Thread 510 zum nacheilenden Thread 520. Sowohl der voreilende Thread 510 als auch der nacheilende Thread 520 haben eine Replikationssphäre 500.
  • Individuelle Ausführungen einer bestimmten Epoche sind als "Epocheninstanz" bekannt. Die beiden Epocheninstanzen werden von dem voreilenden Thread 510 und dem nacheilenden Thread 520 des RMT-Systems parallel ausgeführt. Sobald sie ausgeführt sind, werden die Speicherungen zu einem Speichersystem 540 gesendet. Speichermodifizierungen von externen Einrichtungen, die Stellen modifizieren können, auf die bereits während der laufenden Epoche zugegriffen wurde, werden nicht angewendet. Vielmehr werden sie in den Speicher 540 gestellt. Da sie in den Speicher gestellt werden, haben alle Stellen, die von dem voreilenden Thread während der Epoche gelesen werden, denselben Wert, wenn die entsprechende Last des nacheilenden Threads auftritt. Die Speicherungen werden in dem Speichersystem als spekulative Speicherungen gehalten, wobei die zuvor beschriebene spekulative Speicherunterstützung verwendet wird. Sobald beide Instanzen der Epoche vollendet sind, werden die exponierten Speicherungen verglichen, 550. Wenn die verglichenen Speicherungen übereinstimmen, wird ein einziger Satz exponierter Speicherungen im Architektur-Speicherzustand festgehalten, 560.
  • In dieser Ausführungsform ist, wie zuvor beschrieben, der erfaßte Zustand ein externer Schreibvorgang an einer Stelle, die in einer gegenwärtigen Ausführungsepoche gelesen wurde. In spekulativen Speichersystemen würde ein Eintreten dieser Bedingung eine inkorrekte Spekulation anzeigen, und dazu führen, daß die gegenwärtige Ausführungsepoche verworfen wird. Das Verwerfen beider Instanzen der gegenwärtigen Epoche in einem RMT-System würde ebenso eine divergente Ausführung verhindern, und eine adäquate Lösung darstellen, solange ein Fortschreiten garantiert werden kann. In einem RMT-System mit einem Relaxed Memory Consistency Modell muß dieses Ereignis jedoch nicht zu einem Verwerfen führen. Wenn der vorhergehende Wert der extern geschriebenen Stelle bis zum Ende der Epoche beibehalten werden kann, und zu folgenden Lasten innerhalb beider Epocheninstanzen geleitet werden kann, werden beide Instanzen entlang demselben Ausführungspfad fortgesetzt. Der externe Schreibvorgang kann für die lokalen Threads bei Beendigung der laufenden Epoche sichtbar gemacht werden, 570.
  • Der Detektionsmechanismus für einen konfliktbereitenden Zugriff eines spekulativen Speichersystems kann einen Supersatz der Ereignisse identifizieren, die eine divergente Ausführung in einem RMT-System verursachen könnten. Insbesondere können drei verschiedene Situationen eintreten, in welchen ein externer Schreibvorgang an einer Stelle in einem Block auftritt, die bereits lokal während der laufenden Epoche gelesen wurde, von welchen alle von dem spekulativen Speichersystem mit einem Flag versehen worden wären.
  • In der ersten Situation unterscheidet sich die extern beschriebene Stelle, während sie sich in demselben Cache-Block befindet, von der oder den Stellen, die von dem örtlichen Prozessor gelesen werden. In diesem Fall zeigt das spekulative Speichersystem einen "falschen Konflikt". Diese Situation kann vermieden werden, indem zusätzliche Zustandsbits verwendet werden, um präzise anzugeben, auf welche Worte innerhalb des Blocks zugegriffen wurde.
  • In einer zweiten Situation erfolgt der externe Schreibvorgang, sobald sowohl der voreilende wie auch der nacheilende Thread ihre korrespondierenden Zugriffe beendet haben (aber vor dem Ende der Epoche). Die zwei redundanten Threads haben bereits denselben Wert erfaßt, so daß es zu keiner Divergenz kommt.
  • In einer dritten Situation erfolgt der externe Schreibvorgang, sobald ein Thread seinen Zugriff beendet, aber bevor der andere Thread seinen korrespondierenden Zugriff beendet hat. Nur in diesem Fall kann das Anwenden des externen Schreibvorgangs zum Zeitpunkt seines Entreffens zu einer divergenten Ausführung führen.
  • Wenn erfaßte Zugriffskonflikte ein Verwerfen der laufenden Epoche verursachen, kann in vorteilhafter Weise die Unterscheidung der ersten zwei Fälle von dem dritten lohnend sein, um ein unnötiges Verwerfen zu vermeiden. Wenn konfliktbereitende externe Schreibvorgänge nur bis zu einer Epochengrenze aufgeschoben werden, sollte der Mehraufwand für das Anwenden dieser Politik bei allen Fällen minimal sein.
  • Ein weiterer Vorteil der spekulativen Speichermethode im Bezug auf das ursprüngliche LVQ-Design ist, daß auf das Speichersystem zweimal zugegriffen wird, wodurch der Cache-Zugriffspfad in die Replikationssphäre gebracht und die RMT Fehlerabdeckung erweitert wird. Dieser Vorteil geht jedoch auf Kosten einer Erhöhung der Speichersystem-Bandbreitenanforderungen.
  • Zusätzlich gruppiert die gegenwärtige spekulative Speichermethode alle Lasten gemeinsam in einer Epoche. Da externe Invalidationen dazu gezwungen werden, nur zwischen Epochen wirksam zu werden, wird garantiert, daß beide Instanzen jeder Last innerhalb der vorangehenden Epoche beendet sind, und keine Instanz einer Last innerhalb der nachfolgenden Epoche eingetreten ist.
  • In der folgenden Beschreibung sind spezifische Einzelheiten zur Erklärung und nicht Einschränkung dargelegt, wie besondere Strukturen, Architekturen, Schnittstellen, Techniken usw., um ein umfassendes Verständnis der verschiedenen Aspekte der Erfindung zu ermöglichen. Für den Fachmann ist jedoch angesichts der vorliegenden Offenbarung offensichtlich, daß die verschiedenen Aspekte der Erfindung in anderen Beispielen ausgeführt werden können, die von diesen spezifischen Details abzuweichen. In gewissen Fällen fehlen Beschreibungen allgemein bekannter Vorrichtungen, Schaltungen und Verfahren, um die Beschreibung der vorliegenden Erfindung nicht wegen unnötiger Details undeutlich zu machen.
  • Zusammenfassung
  • Es wird eine Multithreading-Architektur zum Managen externem Speicheraktualisierungen zur Fehlererfassung in redundanten Multithreading-Systemen unter Verwendung einer spekulativen Speicherunterstützung offenbart. Insbesondere stellt eine Methode eine Eingangsreplikation von Lastwerten an einem SRT-Prozessor unter Verwendung einer spekulativen Speicherunterstützung zur Isolierung redundanter Threads aus externen Aktualisierungen bereit. Diese Methode macht daher für zweckbestimmte Strukturen die Bereitstellung einer Eingangsreplikation unnötig.

Claims (10)

  1. Verfahren, umfassend: – paralleles Ausführen korrespondierender Anweisungs-Threads als voreilenden Thread und nacheilenden Thread; – Speichern des Ergebnisses der Anweisung, die in dem voreilenden Thread ausgeführt wird, und des Ergebnisses der Anweisung, die in dem nacheilenden Thread ausgeführt wird, in einem Speicher; – Vergleichen der Ergebnisse, die in dem Speicher gespeichert sind; – Festhalten eines einzelnen Anweisungssatzes in einem Speicherzustand auf der Basis des verglichenen Ergebnisses; und – Verschieben externer Aktualisierungen, bis der Schritt des Festhaltens beendet ist.
  2. Verfahren nach Anspruch 1, wobei das gespeicherte Ergebnis als Spekulation gespeichert wird.
  3. Verfahren nach Anspruch 1, wobei die Anweisungen Epochenanweisungen sind.
  4. Verfahren nach Anspruch 3, wobei die korrespondierenden Anweisungen, die von dem voreilenden Thread während der Epoche gelesen werden, denselben Wert enthalten, wenn die korrespondierenden Lasten des nacheilenden Threads auftreten.
  5. Vorrichtung, umfassend: – Mittel zum Ausführen paralleler Threads als voreilenden Thread und nacheilenden Thread; – Mittel zum Speichern der ausgeführten Threads in einem Speicher; – Mittel zum Vergleichen der Ergebnisse, die in dem Speicher gespeichert sind; – Mittel zum Festhalten eines einzelnen Thread-Satzes in einem Speicherzustand auf der Basis des verglichenen Ergebnisses; und – Mittel zum Verschieben externer Aktualisierungen, bis der Schritt des Festhaltens beendet ist.
  6. Vorrichtung nach Anspruch 5, wobei die ausgeführten Threads Epochen-Threads sind.
  7. Vorrichtung nach Anspruch 6, wobei jede Epoche zweimal ausgeführt wird.
  8. Vorrichtung nach Anspruch 5, wobei die korrespondierenden Anweisungen, die von dem voreilenden Thread während der Epoche gelesen werden, denselben Wert enthalten, wenn die korrespondierenden Lasten des nacheilenden Threads auftreten.
  9. Vorrichtung nach Anspruch 8, wobei die gepufferten Threads als Spekulation gespeichert werden.
  10. Vorrichtung nach Anspruch 9, wobei der einzelne Satz festgehalten wird, wenn das Vergleichsergebnis übereinstimmt.
DE112004002576T 2003-12-30 2004-12-22 Management externer Speicheraktualisierung zur Fehlererfassung in redundanten Multithreading-Systemen unter Verwendung einer spekulativen Speicherunterstützung Withdrawn DE112004002576T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/750,039 2003-12-30
US10/750,039 US7444497B2 (en) 2003-12-30 2003-12-30 Managing external memory updates for fault detection in redundant multithreading systems using speculative memory support
PCT/US2004/043649 WO2005066780A2 (en) 2003-12-30 2004-12-22 Managing external memory updates for fault detection in redundant multithreading systems using speculative memory support

Publications (1)

Publication Number Publication Date
DE112004002576T5 true DE112004002576T5 (de) 2008-03-06

Family

ID=34739092

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112004002576T Withdrawn DE112004002576T5 (de) 2003-12-30 2004-12-22 Management externer Speicheraktualisierung zur Fehlererfassung in redundanten Multithreading-Systemen unter Verwendung einer spekulativen Speicherunterstützung

Country Status (5)

Country Link
US (1) US7444497B2 (de)
JP (1) JP4531060B2 (de)
CN (1) CN100480996C (de)
DE (1) DE112004002576T5 (de)
WO (1) WO2005066780A2 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7166847B2 (en) * 2004-06-30 2007-01-23 Intel Corporation System with response to cosmic ray detection
US7581152B2 (en) 2004-12-22 2009-08-25 Intel Corporation Fault free store data path for software implementation of redundant multithreading environments
US7818744B2 (en) * 2005-12-30 2010-10-19 Intel Corporation Apparatus and method for redundant software thread computation
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
US8397052B2 (en) * 2009-08-19 2013-03-12 International Business Machines Corporation Version pressure feedback mechanisms for speculative versioning caches
US8521961B2 (en) * 2009-08-20 2013-08-27 International Business Machines Corporation Checkpointing in speculative versioning caches
US20110099439A1 (en) * 2009-10-23 2011-04-28 Infineon Technologies Ag Automatic diverse software generation for use in high integrity systems
US8250395B2 (en) * 2009-11-12 2012-08-21 International Business Machines Corporation Dynamic voltage and frequency scaling (DVFS) control for simultaneous multi-threading (SMT) processors
US20110208948A1 (en) * 2010-02-23 2011-08-25 Infineon Technologies Ag Reading to and writing from peripherals with temporally separated redundant processor execution
US8516356B2 (en) 2010-07-20 2013-08-20 Infineon Technologies Ag Real-time error detection by inverse processing
US8745440B1 (en) * 2010-09-21 2014-06-03 F5 Networks, Inc. Computer-implemented system and method for providing software fault tolerance
JP5850774B2 (ja) 2012-03-22 2016-02-03 ルネサスエレクトロニクス株式会社 半導体集積回路装置及びそれを用いたシステム
JP2014063258A (ja) 2012-09-20 2014-04-10 Renesas Electronics Corp 半導体集積回路装置及びマイクロコントローラ
CN103092714A (zh) * 2012-12-31 2013-05-08 哈尔滨工业大学 用于容错系统的处理器瞬时故障检测方法
GB2565338B (en) * 2017-08-10 2020-06-03 Mips Tech Llc Fault detecting and fault tolerant multi-threaded processors
US11443820B2 (en) * 2018-01-23 2022-09-13 Microchip Technology Incorporated Memory device, memory address decoder, system, and related method for memory attack detection

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5415835A (en) 1992-09-16 1995-05-16 University Of New Mexico Method for fine-line interferometric lithography
JP2970553B2 (ja) * 1996-08-30 1999-11-02 日本電気株式会社 マルチスレッド実行方法
JP3139392B2 (ja) * 1996-10-11 2001-02-26 日本電気株式会社 並列処理システム
US6567839B1 (en) * 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
JP3101594B2 (ja) 1997-11-06 2000-10-23 キヤノン株式会社 露光方法及び露光装置
JP4065468B2 (ja) 1998-06-30 2008-03-26 キヤノン株式会社 露光装置及びこれを用いたデバイスの製造方法
US6625749B1 (en) * 1999-12-21 2003-09-23 Intel Corporation Firmware mechanism for correcting soft errors
US20020023202A1 (en) 2000-04-19 2002-02-21 Mukherjee Shubhendu S. Load value queue input replication in a simultaneous and redundantly threaded processor
US7752423B2 (en) * 2001-06-28 2010-07-06 Intel Corporation Avoiding execution of instructions in a second processor by committing results obtained from speculative execution of the instructions in a first processor
JP2003015900A (ja) * 2001-06-28 2003-01-17 Hitachi Ltd 追走型多重化システム、及び追走により信頼性を高めるデータ処理方法
JP3702815B2 (ja) * 2001-07-12 2005-10-05 日本電気株式会社 プロセッサ間レジスタ継承方法及びその装置

Also Published As

Publication number Publication date
JP2007519101A (ja) 2007-07-12
CN100480996C (zh) 2009-04-22
US20050154944A1 (en) 2005-07-14
WO2005066780A2 (en) 2005-07-21
JP4531060B2 (ja) 2010-08-25
US7444497B2 (en) 2008-10-28
CN1902581A (zh) 2007-01-24
WO2005066780A3 (en) 2006-05-04

Similar Documents

Publication Publication Date Title
DE112004002576T5 (de) Management externer Speicheraktualisierung zur Fehlererfassung in redundanten Multithreading-Systemen unter Verwendung einer spekulativen Speicherunterstützung
DE112010003492B4 (de) Transaktionsspeichersystem mit wirksamerZwischenspeicherunterstützung
DE19882853B3 (de) Verfahren und Steuereinrichtung zum automatischen Korrigieren von in einem Speichersubsystem erfassten Fehlern und Computersystem, das eine solche Steuereinrichtung aufweist
DE19781995C2 (de) Prozessor mit einer Wiederhol-Architektur
DE112010003330B4 (de) Einrichten von Prüfpunkten bei Cachespeichern für die spekulative Versionierung
DE112005003874B3 (de) Transaktionsgestützter Verarbeitungsbetrieb mit gemeinsam genutzten Daten in einer Multiprozessorumgebung
DE112005002370T5 (de) Ausführung von Kontrollbefehlen in redundanten Multithreadingumgebungen
DE10297856B4 (de) Verfahren und Vorrichtung zum Suspendieren der Ausführung eines Threads, bis ein spezifizierter Speicherzugriff auftritt
DE69434728T2 (de) Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel
DE112007000812B4 (de) Vorrichtung mit einer speichereinheit und drei logiken, verfahren zum durchführen der verfahrensschritte der vorrichtung undsystem mit einem speicher und einem prozessor zur bereitstellung eines effizienten mechanismus‘ für transaktionalspeicherausführungen in out-of-order-prozessoren
DE69829693T2 (de) Prozessor mit mehrfachprogrammzählern und ablaufverfolgungspuffern ausserhalb einer ausführungspipeline
DE112005002403B4 (de) Prozessor-Pipeline mit konstantem Durchsatz
DE60115976T2 (de) Rechnersystem und Interruptvorgang
DE112010004322T5 (de) Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge
DE112018000848T5 (de) Registerkontextwiederherstellung auf der Grundlage der Wiedergewinnung von Umbenennungsregistern
DE102016219651A1 (de) Für Vorabzugriff unempfindlicher transaktionsgebundener Speicher
DE112005001338T5 (de) Verfahren und Vorrichtung zur Reduzierung falscher Fehlererkennung in einem Mikroprozessor
DE112011101364T5 (de) Fehlerbehebung in Multithread-Code
DE102013206423A1 (de) Multithread-transaktionale-Speicherkohärenz
DE112011100258T5 (de) Durchführen von aggressiven Codeoptimierungen mit einer Fähigkeit zum Annulieren derdurch die aggressiven Optimierungen vorgenommenen Änderungen
DE202007019502U1 (de) Globaler Überlauf für virtualisierten Transaktionsspeicher
DE112005002402T5 (de) Hybride Hardware-/Software-Implementierung eines Transaktionsspeicherzugriffs
DE112007001245T5 (de) Fehlererkennung mit redundanten virtuellen Maschinen
DE112006001652T5 (de) Verringerung der Häufigkeit unkorrigierbarer Fehler in einem im Lockstep-Modus arbeitenden doppelt modularen Redundanzsystem
DE10304447A1 (de) Prüfpunktgebung einer Registerdatei

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
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20140701