DE10312264A1 - Verfahren und Vorrichtung zum Hervorrufen von Unterschieden bei mit Verriegelungsschritten versehenen Prozessoren - Google Patents

Verfahren und Vorrichtung zum Hervorrufen von Unterschieden bei mit Verriegelungsschritten versehenen Prozessoren Download PDF

Info

Publication number
DE10312264A1
DE10312264A1 DE10312264A DE10312264A DE10312264A1 DE 10312264 A1 DE10312264 A1 DE 10312264A1 DE 10312264 A DE10312264 A DE 10312264A DE 10312264 A DE10312264 A DE 10312264A DE 10312264 A1 DE10312264 A1 DE 10312264A1
Authority
DE
Germany
Prior art keywords
processor
processors
steps
code sequence
differences
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
DE10312264A
Other languages
English (en)
Inventor
Kevin David Fort Collins Safford
Jeremy P. Fort Collins Petsinger
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE10312264A1 publication Critical patent/DE10312264A1/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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1641Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Hardware Redundancy (AREA)

Abstract

Es werden eine Vorrichtung und ein entsprechendes Verfahren verwendet, um Unterschiede bei mit Verriegelungsschritten versehenen Prozessoren hervorzurufen, wobei die Vorrichtung, die an zwei oder mehr Prozessoren implementiert ist, in einem Verriegelungsschrittmodus operiert, wobei jeder der zwei oder mehr Prozessoren eine prozessorspezifische Ressource, die wirksam ist, um die Unterschiede hervorzurufen, eine Prozessorlogik zum Ausführen einer Codesequenz, wobei eine identische Codesequenz durch die Prozessorlogik jedes der zwei oder mehr Prozessoren ausgeführt wird, und eine Ausgabe zum Bereitstellen eines Ergebnisses der Ausführung der Codesequenz aufweist. Auf der Basis der Ausführung der Codesequenz werden die Prozessorausgaben einer Verriegelungsschrittlogik bereitgestellt, die wirksam ist, um die Ausgabe jedes der zwei oder mehr Prozessoren zu lesen und zu vergleichen.

Description

  • Das technische Gebiet sind Computersysteme, die mit Verriegelungsschritten versehene Prozessoren verwenden.
  • Hochentwickelte Computerarchitekturen verwenden eventuell mehrere Prozessoren. Manche hochentwickelten Computerarchitekturen verwenden eventuell mehrere Mikroprozessoren auf einem Siliziumchip. Bei einer typischen Anwendung können zwei Mikroprozessoren auf einem einzigen Siliziumchip implementiert sein, und die Implementierung kann als Dualkernprozessor bezeichnet werden. Zwei oder mehr der mehreren Mikroprozessoren können in einem Verriegelungsschrittmodus (lock step mode) operieren, was bedeutet, daß jeder der mit Verriegelungsschritten versehenen (lock stepped) Mikroprozessoren dieselben Codesequenzen verarbeitet und daher identische Ausgaben erzeugen sollte. 1A veranschaulicht eine typische Implementierung eines Dualkernprozessors. Ein Dualkernprozessor 10 umfaßt einen Siliziumchip 11, der einen Mikroprozessorkern 12 (Kern 0) und einen Mikroprozessorkern 14 (Kern 1) aufweist. Die Mikroprozessorkerne 12 und 14 sind mit einer Schnittstellenlogik 16 gekoppelt, die externe Kommunikationen von den Mikroprozessorkernen 12 und 14 überwacht. Bei dem Dualkernprozessor 10 operieren die Mikroprozessorkerne 12 und 14 als unabhängige Entitäten. Während der Dualkernprozessor 10 Vorteile in Bezug auf Größe und Verarbeitungsgeschwindigkeit aufweist, ist die Zuverlässigkeit des Dualkernprozessors 10 nicht höher als die von Prozessoren mit zwei Einzelkernen.
  • Um die Zuverlässigkeit zu erhöhen, kann der Dualkernprozessor bzw. können andere mit mehreren Mikroprozessoren gebaute Computersysteme Verriegelungsschrittmerkmale verwenden. 1B ist ein Diagramm eines Dualkernprozessors des Standes der Technik, der Verriegelungsschrittechniken verwendet, um die Gesamtzuverlässigkeit zu verbessern. Bei 1B umfaßt ein Computersystem 18 einen Dualkernprozessor 20, der einen einzigen Siliziumchip 21 aufweist, auf dem ein Mikroprozessorkern 22 und ein Mikroprozessorkern 24 implementiert sind. Um einen Verriegelungsschritt zu verwenden, verarbeitet jeder der Mikroprozessorkerne 22 und 24 dieselben Codeströme. Um einen zuverlässigen Betrieb des Dualkernprozessors 20 zu gewährleisten, kann jeder der Mikroprozessoren 22 und 24 in einem „Verriegelungsschritt" operieren. Ein Ereignis, das einen Verlust eines Verriegelungsschritts bewirkt, kann an einem oder an beiden der Mikroprozessorkerne 22 und 24 auftreten. Ein Beispiel eines derartigen Ereignisses ist ein Datencachefehler. Wenn ein Verlust eines Verriegelungsschritts nicht sofort korrigiert wird, kann er bewirken, daß das Computersystem 18 „abstürzt". Das heißt, daß ein Ausfall eines Mikroprozessorkerns ein Verarbeiten des Dualkernprozessors 20 und des Computersystems 18 auch dann anhalten kann, wenn der andere Mikroprozessorkern nicht auf einen Fehler stößt.
  • Um einen Verlust eines Verriegelungsschritts zu erfassen, vergleicht eine Verriegelungsschrittlogik 26, die sich außerhalb des Chips 21 befinden kann, Ausgaben von den Mikroprozessorkernen 22 und 24. Ein Fehler bei der Verarbeitung kann durch die Verriegelungsschrittlogik 26 erfaßt werden und gibt einen Verlust eines Verriegelungsschritts an.
  • Um eine zeitgerechte und genaue Identifizierung von Verriegelungsschrittfehlern zu gewährleisten und um eine ordnungsgemäße Ausführung von Verrieglungsschrittfunktionen zu gewährleisten, kann es sein, daß ein System-(oder Test-) entwerfer den Dualkernprozessor 20 testen möchte. Jedoch muß der Systementwerfer zunächst präzise einen Unterschied zwischen den Mikroprozessorkernen 22 und 24 induzieren und anschließend den Unterschied sich durch die Mikroprozessorkerne 22 und 24 bis zu der Verriegelungsschrittlogik 26 fortsetzen lassen, wo der Verriegelungsschrittfehler erfaßt werden kann.
  • Es ist die Aufgabe der vorliegenden Erfindung, eine Vorrichtung und Verfahren zu schaffen, die ein Hervorrufen von Unterschieden bei mit Verriegelungsschritten versehenen Prozessoren erleichtern.
  • Diese Aufgabe wird durch eine Vorrichtung gemäß Anspruch 1 sowie durch Verfahren gemäß Anspruch 8 oder 17 gelöst.
  • Eine hochentwickelte Multikernprozessorarchitektur und ein entsprechendes Verfahren werden verwendet, um die Zuverlässigkeit zu erhöhen und die Verarbeitungsleistung zu verbessern. Bei einem Ausführungsbeispiel werden eine Vorrichtung und ein entsprechendes Verfahren verwendet, um Unterschiede bei mit Verriegelungsschritten versehenen Prozessoren hervorzurufen (seed), wobei die Vorrichtung, die an zwei oder mehr Prozessoren implementiert ist, in einem Verriegelungsschrittmodus operiert, wobei jeder der zwei oder mehr Prozessoren eine prozessorspezifische Ressource, die wirksam ist, um die Unterschiede hervorzurufen, eine Prozessorlogik zum Ausführen einer Codesequenz, wobei eine identische Codesequenz durch die Prozessorlogik jedes der zwei oder mehr Prozessoren ausgeführt wird, und eine Ausgabe zum Bereitstellen eines Ergebnisses der Ausführung der Codesequenz aufweist. Auf der Basis der Ausführung der Codesequenz werden die Prozessorausgaben einer Verriegelungsschrittlogik bereitgestellt, die wirksam ist, um die Ausgabe jedes der zwei oder mehr Prozessoren zu lesen und zu vergleichen.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
  • 1A und 1B Multiprozessor-Computersysteme;
  • 2 ein Diagramm einer Vorrichtung zum Hervorrufen von Unterschieden zwischen zwei Verriegelungsschrittprozessoren;
  • 3 eine repräsentative Codesequenz, die verwendet werden kann, um einen Verriegelungsschrittfehler zu erzeugen; und
  • 4 ein Flußdiagramm eines Betriebs der Vorrichtung der 2.
  • Es werden eine Vorrichtung und ein entsprechendes Verfahren zum Testen einer Verriegelungsschrittfunktionalität während eines Chipentwurfsprozesses offenbart. Definitionsgemäß betreiben Verriegelungsschrittprozessoren identische Codeströme und erzeugen identische Ausgaben. Eine Verriegelungsschrittlogik, die in die Prozessoren integriert ist oder den Prozessoren auf andere Weise zugeordnet ist, wird verwendet, um einen Unterschied bei Ausgaben der Verriegelungsschrittprozessoren zu erfassen. Ein Unterschied bei den Ausgaben (d. h. Verlust eines Verriegelungsschritts) weist auf eine Fehlerbedingung in zumindest einem der Prozessoren hin. Ohne einen direkten Zugriff auf die einzelnen Prozessoren (beispielsweise mittels eines Testports) ist ein Systementwerfer nicht in der Lage, in einen oder mehrere der Verriegelungsschrittprozessoren Unterschiede (d. h. Fehlerbedingungen) einzuführen, um den Verlust eines Verriegelungsschritts zum Testen zu erzeugen. Um verschiedene Mechanismen der Verriegelungsschrittlogik zu testen, können die hierin beschriebene Vorrichtung und das hierin beschriebene Verfahren verwendet werden, um in den Prozessoren Unterschiede hervorzurufen.
  • 2 veranschaulicht ein Ausführungsbeispiel einer Vorrichtung zum Hervorrufen von Unterschieden, um ein Testen der Verriegelungsschrittlogik zu ermöglichen. In 2 umfaßt ein Testsystem 100 einen Prozessor 110 (der als Kern 0 bezeichnet ist) und einen Prozessor 120 (der als Kern 1 be zeichnet ist). Die Prozessoren 110 und 120 können auf einem einzigen Siliziumchip (nicht gezeigt) implementiert sein. Alternativ dazu können die Prozessoren 110 und 120 auf separaten Chips implementiert sein. Obwohl 2 zwei Prozessoren 110 und 120 zeigt, können die bzw. das hierin beschriebene Vorrichtung und Verfahren verwendet werden, um Unterschiede in einer beliebigen Anzahl von Prozessoren hervorzurufen.
  • Die Prozessoren 110 und 120 können Einrichtungen zum Hervorrufen von Unterschieden umfassen. Derartige Einrichtungen können eine prozessor-eindeutige Ressource umfassen. Beispiele von prozessor-eindeutigen Ressourcen sind maschinenspezifische Nur-Lese-Register (MSRs = machine-specific registers) und programmierbare Register. Es können auch andere Mechanismen, die sich in den Prozessoren 110 und 120 befinden, verwendet werden, um Informationen zu speichern, die eindeutig für einen spezifischen Prozessor bestimmt sind. Bei einem Ausführungsbeispiel umfaßt der Prozessor 110 MSR 111, und der Prozessor 120 umfaßt MSR 121. Die Funktion der MSRs 111 und 121 wird später beschrieben. Alternativ oder zusätzlich dazu kann der Prozessor 110 ein programmierbares Register 115 umfassen, und der Prozessor 120 kann ein programmierbares Register 125 umfassen. Die Funktion der programmierbaren Register 115 und 125 wird später beschrieben. Der Prozessor 110 umfaßt eine Prozessorlogik 117, um eine Ausführung von Codesequenzen zu ermöglichen, und einen Ausgang 119, um die Ergebnisse der Ausführung einer Vorrichtung zu liefern, die sich außerhalb des Prozessors 110 befindet. Desgleichen umfaßt der Prozessor 120 eine Prozessorlogik 127 und einen Ausgang 129.
  • Mit den Prozessoren 110 und 120 ist eine externe Verriegelungsschrittlogik 130 gekoppelt. Wenn die Prozessoren 110 und 120 auf einem einzigen Siliziumchip implementiert sind, kann die externe Verriegelungsschrittlogik 130 ebenfalls auf demselben Siliziumchip implementiert sein. Die externe Verriegelungsschrittlogik 130 vergleicht Ausgaben 112 und 122 von den Prozessoren 110 bzw. 120, um zu ermitteln, ob ein Verlust eines Verriegelungsschritts (Verriegelungsschrittfehler) stattgefunden hat, wie es durch einen Unterschied bei den Ausgaben 112 und 122 angezeigt würde. Die externe Verriegelungsschrittlogik 130 kann dann den Verriegelungsschrittfehler signalisieren (132).
  • Bei einem Ausführungsbeispiel sind die Prozessoren 110 und 120 identisch, mit der Ausnahme, daß der Prozessor 110 und der Prozessor 120 verschiedene Adreßidentifikationen (d. h. verschiedene Kern-Identifizierungen (core_ids)) aufweisen. Die core_ids können in den jeweiligen MSRs 111 und 121 der Prozessoren 110 und 120 gespeichert sein. Der Unterschied bei den core_ids kann dann verwendet werden, um einen Verlust von Verriegelungsschrittfunktionen zu testen. Insbesondere kann der Testentwerfer Codesequenzen erstellen, die an den Prozessoren 110 und 120 zu betreiben sind, derart, daß sich die jeweiligen Ausgaben 112 und 122 unterscheiden, wobei der erzeugte bzw. hervorgerufene Unterschied auf den verschiedenen core_ids basiert. Bei dem veranschaulichten Ausführungsbeispiel wird, wenn die Prozessoren 110 und 120 den core_id-Wert von ihren jeweiligen MSRs 111 und 121 lesen, zwischen den Prozessoren 110 und 120 ein Unterschied von einem Bit erzeugt. Bei anderen Ausführungsbeispielen können andere Merkmale der Prozessoren 110 und 120 verwendet werden, um die Unterschiede hervorzurufen. Solange die Merkmale zumindest einen Unterschied von einem Bit zwischen den Prozessoren 110 und 120 umfassen oder erzeugen, sollten die durch die Prozessoren 110 und 120 ausgeführten Codesequenzen unterschiedliche Ergebnisse hervorbringen. Durch ein sorgfältiges Entwerfen von Codesequenzen kann der Testentwerfer verschiedene Aspekte der Verriegelungsschrittlogik testen. Beispielsweise können Codesequenzen aufgebaut sein, um die Verriegelungsschrittlogik auf der Basis von Fehlern bei Übersetzungsvorgriffspuffern (TLBs – translation lookaside buffers), Caches und anderen Komponenten der Prozessoren 110 und 120 zu testen.
  • 3 ist ein Beispiel einer Codesequenz, die verwendet werden kann, um eine Verriegelungsschrittlogik zu testen. Bei 3 betreibt der Prozessor 110 (Kern 0) eine Codesequenz 140, und der Prozessor 120 (Kern 1) betreibt die Codesequenz 150. Die Codesequenzen 140 und 150 sind identisch. Jedoch sind die Prozessor-IDs (core_id) zwischen den Prozessoren 110 und 120 unterschiedlich. Bei den Codesequenzen 140 und 150 besteht der erste Schritt darin, die core_id in den MSRs 111 und 121 zu lesen. Als nächstes ermöglichen Prädikatenwerte P1 und P2 eine bedingte Ausführung einer Ladeoperation, wobei der Kern 0 eine Ladung auf der Basis der Adresse 1 durchführt und der Kern 1 eine Ladung auf der Basis der Adresse 2 durchführt, wobei die Adresse 1 nicht gleich der Adresse 2 ist und die Daten an diesen Adressen unterschiedlich sind. Das heißt, daß der Prozessor 110 die Adresse 1 liest und der Prozessor 120 die Adresse 2 liest. Der Schritt (P1)r5 wird nur ausgeführt, wenn der Wert von P1 1 ist, und der Schritt (P2)r6 wird nur ausgeführt, wenn der Wert von P2 1 ist. Da der Prozessor 110 seine core_id in r1 als 0 liest, ist der Prädikatenwert P1 1 (wahr), und der Prädikatenwert P2 ist 0 (falsch). Dementsprechend führt der Prozessor 110 (P1)r5 aus. Auf ähnliche Weise führt der Prozessor 120 (P2)r6 aus. Anschließend empfängt ein Register r5 eine Ladung der Adresse 1, und ein Register r6 empfängt eine Ladung der Adresse 2. Somit führt der Prozessor 110 die erste Ladeanweisung ((P1)r5) aus, und der Prozessor 120 führt die zweite Ladeanweisung ((P2)r6) aus.
  • Zusätzlich zu Prädikatenwerten stehen für eine bedingte Ausführung auch andere Mechanismen zur Verfügung. Beispielsweise kann der Prozessor 120 auf der Basis von in dem Register r5 gespeicherten Werten eine bedingte Zweiganweisung ausführen.
  • Eine sorgfältige Auswahl der Codesequenzen verhindert ferner eine frühe Ausbreitung des Verriegelungsschrittfehlers zu der externen Verriegelungsschrittlogik 130. Beispiels weise kann eine Codesequenz, die einen Verriegelungsschrittfehler in einem TLB hervorrufen soll, den Verriegelungsschrittfehler in dem TLB eventuell nicht hervorrufen, wenn der aus den MSRs 111 und 121 gelesene Wert durch die Verriegelungsschrittlogik 130 auf einen externen Speicher ausgeschrieben werden sollte. In dieser Situation würde die externe Verriegelungsschrittlogik 130 den Unterschied bei den Ausgaben 112 und 122 sehen und kann einen Verriegelungsschrittfehler auf der Basis der auf einen Speicher ausgeschriebenen Daten signalisieren, ohne daß das beabsichtigte Merkmal (der TLB) tatsächlich getestet wird.
  • Als Alternative zum Verwenden eines Nur-Lese-MSR als die eindeutige Prozessorressource, mit der Unterschiede hervorzurufen sind, kann der Testentwerfer ein programmierbares Merkmal, beispielsweise die programmierbaren Register 115 und 125 in den Prozessoren 110 bzw. 120, verwenden, um Unterschiede hervorzurufen. Die programmierbaren Register 115 und 125 können dann dazu gebracht werden, verschiedene Werte zu lesen (d. h. die Register 115 und 125 können fest mit verschiedenen Werten verdrahtet sein).
  • 4 ist ein Flußdiagramm, das eine Testoperation 200 der Vorrichtung 100 der 2 veranschaulicht. Die Operation beginnt bei Block 205. Bei Block 210 lädt der Testentwerfer eine Codesequenz, um die Verriegelungsschrittfunktionen der Prozessoren 110 und 120 zu testen. Die Codesequenz kann entworfen sein, um mehrere unterschiedliche Komponenten der Prozessoren 110 und 120 zu testen. Das heißt, daß die Codesequenz mehrere verschiedene Teilsequenzen aufweisen kann. Bei Block 220 führen beide Prozessoren 110 und 120 identische Versionen einer ersten Codeteilsequenz aus. Der Block 220 wird als erstes ausgeführt, wenn die Prozessoren 110 und 120 Adreßinformationen (core id) lesen, die in den MSRs 111 bzw. 121 enthalten sind, Block 222. Als nächstes werden bedingte Werte ermittelt, Block 224, und Anweisungen ausgeführt, Block 226. Beispielsweise werden die Prädikatenwerte P1 und P2 entweder als 0 oder als 1 ermittelt, Block 224.
  • Anschließend werden Ladeanweisungen auf der Basis des Prädikatenwerts ausgeführt, Block 226.
  • Bei Block 230 hat sich der hervorgerufene Unterschied durch die Prozessoren 110 und 120 fortgesetzt und wird an den Kernausgängen gelesen. Bei Block 235 ermittelt die externe Verriegelungsschrittlogik 130, ob ein Unterschied bei den Ausgaben zwischen den Prozessoren 110 und 120 vorhanden ist. Falls kein Unterschied existiert, bewegt sich die Operation 200 zu Block 245 und endet entweder oder kehrt zu Block 220 zurück, um eine weitere Codeteilsequenz auszuführen. Falls bei Block 235 ein Unterschied erfaßt wird, signalisiert die externe Verriegelungsschrittlogik einen Verriegelungsschrittfehler. Die Operation 200 bewegt sich dann zu Block 245. Alternativ dazu kann die Operation 200 in einer Schleife zu Block 210 zurückkehren, und es kann ein weiteres Testen durchgeführt werden.

Claims (19)

  1. Vorrichtung zum Hervorrufen von Unterschieden bei mit Verriegelungsschritten versehenen Prozessoren, die folgende Merkmale aufweist: zwei oder mehr Prozessoren (110, 120), die in einem Verriegelungsschrittmodus operieren, wobei jeder der zwei oder mehr Prozessoren folgende Merkmale aufweist: eine prozessorspezifische Ressource, die wirksam ist, um die Unterschiede hervorzurufen, eine Prozessorlogik (117, 127) zum Ausführen einer Codesequenz, wobei eine identische Codesequenz durch die Prozessorlogik jedes der zwei oder mehr Prozessoren ausgeführt wird, und einen Ausgang (119, 124) zum Bereitstellen eines Ergebnisses der Ausführung der Codesequenz; und eine Verriegelungsschrittlogik (130), die wirksam ist, um die Ausgabe jedes der zwei oder mehr Prozessoren zu lesen und zu vergleichen.
  2. Vorrichtung gemäß Anspruch 1, bei der die prozessorspezifische Ressource ein maschinenspezifisches Nur-Lese-Register (MSR) (111, 121) ist.
  3. Vorrichtung gemäß Anspruch 2, bei der das MSR eine eindeutige Kernidentifikation aufweist.
  4. Vorrichtung gemäß Anspruch 3, bei der eine Ausführung der Codesequenz bewirkt, daß die eindeutige Kernidentifikation aus dem MSR gelesen wird.
  5. Vorrichtung gemäß einem der Ansprüche 1 bis 4, bei der die prozessorspezifische Ressource ein programmierbares Register (115, 125) aufweist.
  6. Vorrichtung gemäß Anspruch 5, bei der das programmierbare Register (115, 125) mit einem prozessoreindeutigen Wert fest verdrahtet ist.
  7. Vorrichtung gemäß einem der Ansprüche 1 bis 6, bei der die Unterschiede in einem Übersetzungsvorgriffspuffer, einem Register, einem Cache, einem internen Prozessorspeicher oder anderen internen Prozessorstrukturen hervorgerufen werden.
  8. Verfahren zum Hervorrufen von Unterschieden bei mit Verriegelungsschritten versehenen Prozessoren, das folgende Schritte aufweist: Laden (210) einer Codesequenz; und bei jedem der zwei oder mehr Prozessoren, die in einem Verriegelungsschritt operieren, Ausführen (220) der Codesequenz, was folgende Schritte aufweist: Lesen (222) einer prozessoreindeutigen Ressource, Ermitteln (224) eines Bedingungszustands, und Ausführen (226) einer Anweisung auf der Basis des Bedingungszustands.
  9. Verfahren gemäß Anspruch 8, das ferner folgende Schritte aufweist: Lesen (230) einer Ausgabe jedes der zwei oder mehr Prozessoren; Vergleichen (235) der gelesenen Ausgaben; und falls sich die Leseausgaben unterscheiden, Signalisieren (240) eines Fehlers aufgrund eines Verlustes des Verriegelungsschritts.
  10. Verfahren gemäß Anspruch 8 oder 9, bei dem die prozessoreindeutige Ressource ein maschinenspezifisches Nur-Lese-Register (MSR) (111, 121) ist.
  11. Verfahren gemäß Anspruch 10, bei dem das MSR eine eindeutige Kernidentifikation aufweist.
  12. Verfahren gemäß Anspruch 11, bei dem das Lesen der prozessoreindeutigen Ressource den Schritt des Lesens der eindeutigen Kernidentifikation umfaßt.
  13. Verfahren gemäß einem der Ansprüche 8 bis 12, bei dem die prozessoreindeutige Ressource ein programmierbares Register (115, 125) aufweist.
  14. Verfahren gemäß Anspruch 13, bei dem das programmierbare Register (115, 125) mit einem prozessoreindeutigen Wert fest verdrahtet ist.
  15. Verfahren gemäß einem der Ansprüche 8 bis 14, bei dem die Unterschiede in einem Übersetzungsvorgriffspuffer, einem Register, einem Cache, einem internen Prozeßspeicher oder anderen internen Prozessorstrukturen hervorgerufen werden.
  16. Verfahren gemäß einem der Ansprüche 8 bis 15, bei dem der Bedingungszustand durch zwei oder mehr Prädikatenwerte ermittelt wird.
  17. Verfahren zum Hervorrufen von Unterschieden bei mit Verriegelungsschritten versehenen Prozessoren, das folgende Schritte aufweist: Identifizieren eines ersten mit Verriegelungsschritten versehenen Prozessors auf der Basis eines Wertes, der für den ersten mit Verriegelungsschritten versehenen Prozessor eindeutig ist; Ausführen einer ersten Anweisung auf der Basis des Identifizierungsschritts, wodurch eine erste Ausgabe erzeugt wird; und Vergleichen der ersten Ausgabe mit einer oder mehr nachfolgenden Ausgaben, die durch eine Ausführung von nachfolgenden Anweisungen an nachfolgenden mit Verriegelungsschritten versehenen Prozessoren erzeugt werden, wobei ein Verlust eines Verriegelungsschritts angegeben wird, falls sich eine oder mehrere der ersten und der nachfolgenden Ausgaben unterscheiden.
  18. Verfahren gemäß Anspruch 17, bei dem der für den ersten mit Verriegelungsschritten versehenen Prozessor eindeutige Wert eine Adresse des ersten mit Verriegelungsschritten versehenen Prozessors ist.
  19. Verfahren gemäß Anspruch 17 oder 18, bei dem der für den ersten mit Verriegelungsschritten versehenen Prozessor eindeutige Wert ein Wert ist, der mit dem ersten mit Verriegelungsschritten versehenen Prozessor fest verdrahtet ist.
DE10312264A 2002-06-28 2003-03-19 Verfahren und Vorrichtung zum Hervorrufen von Unterschieden bei mit Verriegelungsschritten versehenen Prozessoren Withdrawn DE10312264A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/183,561 US7003691B2 (en) 2002-06-28 2002-06-28 Method and apparatus for seeding differences in lock-stepped processors
US10-183,561 2002-06-28

Publications (1)

Publication Number Publication Date
DE10312264A1 true DE10312264A1 (de) 2004-01-22

Family

ID=29779150

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10312264A Withdrawn DE10312264A1 (de) 2002-06-28 2003-03-19 Verfahren und Vorrichtung zum Hervorrufen von Unterschieden bei mit Verriegelungsschritten versehenen Prozessoren

Country Status (2)

Country Link
US (2) US7003691B2 (de)
DE (1) DE10312264A1 (de)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6625756B1 (en) * 1997-12-19 2003-09-23 Intel Corporation Replay mechanism for soft error recovery
US6625749B1 (en) * 1999-12-21 2003-09-23 Intel Corporation Firmware mechanism for correcting soft errors
US7003691B2 (en) * 2002-06-28 2006-02-21 Hewlett-Packard Development Company, L.P. Method and apparatus for seeding differences in lock-stepped processors
US7155721B2 (en) * 2002-06-28 2006-12-26 Hewlett-Packard Development Company, L.P. Method and apparatus for communicating information between lock stepped processors
JP2004046455A (ja) * 2002-07-10 2004-02-12 Nec Corp 情報処理装置
JP3774826B2 (ja) * 2002-07-11 2006-05-17 日本電気株式会社 情報処理装置
US7587763B2 (en) * 2002-12-12 2009-09-08 Finite State Machine Labs, Inc. Systems and methods for detecting a security breach in a computer system
DE10317650A1 (de) * 2003-04-17 2004-11-04 Robert Bosch Gmbh Programmgesteuerte Einheit und Verfahren
US7287184B2 (en) * 2003-09-16 2007-10-23 Rockwell Automation Technologies, Inc. High speed synchronization in dual-processor safety controller
US20050120278A1 (en) * 2003-11-19 2005-06-02 Smith Zachary S. Systems and methods for verifying lockstep operation
US20050114735A1 (en) * 2003-11-20 2005-05-26 Smith Zachary S. Systems and methods for verifying core determinacy
US7328371B1 (en) * 2004-10-15 2008-02-05 Advanced Micro Devices, Inc. Core redundancy in a chip multiprocessor for highly reliable systems
US7356733B2 (en) * 2004-10-25 2008-04-08 Hewlett-Packard Development Company, L.P. System and method for system firmware causing an operating system to idle a processor
US7516359B2 (en) * 2004-10-25 2009-04-07 Hewlett-Packard Development Company, L.P. System and method for using information relating to a detected loss of lockstep for determining a responsive action
US7624302B2 (en) * 2004-10-25 2009-11-24 Hewlett-Packard Development Company, L.P. System and method for switching the role of boot processor to a spare processor responsive to detection of loss of lockstep in a boot processor
DE102005037222A1 (de) * 2004-10-25 2007-02-15 Robert Bosch Gmbh Verfahren und Vorrichtung zur Auswertung eines Signals eines Rechnersystems mit wenigstens zwei Ausführungseinheiten
US7818614B2 (en) * 2004-10-25 2010-10-19 Hewlett-Packard Development Company, L.P. System and method for reintroducing a processor module to an operating system after lockstep recovery
US7627781B2 (en) * 2004-10-25 2009-12-01 Hewlett-Packard Development Company, L.P. System and method for establishing a spare processor for recovering from loss of lockstep in a boot processor
US7502958B2 (en) * 2004-10-25 2009-03-10 Hewlett-Packard Development Company, L.P. System and method for providing firmware recoverable lockstep protection
US7366948B2 (en) * 2004-10-25 2008-04-29 Hewlett-Packard Development Company, L.P. System and method for maintaining in a multi-processor system a spare processor that is in lockstep for use in recovering from loss of lockstep for another processor
US8082425B2 (en) * 2009-04-29 2011-12-20 Advanced Micro Devices, Inc. Reliable execution using compare and transfer instruction on an SMT machine
TWI441515B (zh) * 2010-09-15 2014-06-11 Altek Corp 具有光學防手振模組的攝像裝置及具有周邊驅動晶片的光學防手振攝像裝置
US8930752B2 (en) 2011-02-15 2015-01-06 International Business Machines Corporation Scheduler for multiprocessor system switch with selective pairing
US8635492B2 (en) 2011-02-15 2014-01-21 International Business Machines Corporation State recovery and lockstep execution restart in a system with multiprocessor pairing
US8671311B2 (en) 2011-02-15 2014-03-11 International Business Machines Corporation Multiprocessor switch with selective pairing

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE25779T1 (de) * 1981-10-01 1987-03-15 Stratus Computer Inc Digitale datenverarbeitungsanlage mit zuverlaessigkeits-bus-protokoll.
IT1213344B (it) * 1986-09-17 1989-12-20 Honoywell Information Systems Architettura di calcolatore a tolleranza di guasto.
JPH0314033A (ja) * 1989-06-12 1991-01-22 Fujitsu Ltd マイクロプロセッサ比較チェック機能の検査方式
US5157780A (en) * 1990-06-12 1992-10-20 Advanced Micro Devices, Inc. Master-slave checking system
US5493687A (en) * 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5434997A (en) * 1992-10-02 1995-07-18 Compaq Computer Corp. Method and apparatus for testing and debugging a tightly coupled mirrored processing system
US5915082A (en) 1996-06-07 1999-06-22 Lockheed Martin Corporation Error detection and fault isolation for lockstep processor systems
ATE215244T1 (de) * 1997-11-14 2002-04-15 Marathon Techn Corp Verfahren zur erhaltung von synchronisierter ausführung bei fehler-betriebssicheren/ fehlertoleranten rechnersystemen
US6064135A (en) * 1998-04-07 2000-05-16 David H. Rush Electromechanical machine and armature structure therefor
US7155721B2 (en) * 2002-06-28 2006-12-26 Hewlett-Packard Development Company, L.P. Method and apparatus for communicating information between lock stepped processors
US7003691B2 (en) * 2002-06-28 2006-02-21 Hewlett-Packard Development Company, L.P. Method and apparatus for seeding differences in lock-stepped processors

Also Published As

Publication number Publication date
US20040078651A1 (en) 2004-04-22
US7398419B2 (en) 2008-07-08
US20060085677A1 (en) 2006-04-20
US7003691B2 (en) 2006-02-21

Similar Documents

Publication Publication Date Title
DE10312264A1 (de) Verfahren und Vorrichtung zum Hervorrufen von Unterschieden bei mit Verriegelungsschritten versehenen Prozessoren
DE69714472T2 (de) Verfahren zum überprüfen eines integrierten speichers mit hilfe einer integrierten dma-schaltung
DE2714805C2 (de)
DE69131956T2 (de) Verarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher
DE69032635T2 (de) Verfahren und Vorrichtung zur Erkennung von Betriebsmittelkonflikten in einer Pipeline-Verarbeitungseinheit
DE69115344T2 (de) Vorverarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher
DE60224774T2 (de) Datenverarbeitungssystem mit Lese-, Änderungs- und Schreibeinheit
DE102015112202A1 (de) Kombinieren von Pfaden
DE112010004963T5 (de) Synchronisieren von SIMD Vektoren
DE10297166T5 (de) Mechanismus zur Interrupt-Abwicklung in Computersystemen, welche die gleichzeitige Ausführung mehrerer Threads unterstützen
DE69519070T2 (de) Datenprozessor mit Haltepunktschaltung
DE112005001515T5 (de) Verfahren und Vorrichtung zur spekulativen Ausführung von nicht kollisionsbehafteten Sperrbefehlen
DE4329336A1 (de) Einrichtung und Verfahren zur Identifizierung eines Computer-Mikroprozessors
DE69231174T2 (de) Verfahren und Vorrichtung für Register zum atomaren Zugriff mit Einzelbit-Setzen und -Rücksetzen ohne programmierte gegenseitige Verriegelung
DE112016006297T5 (de) Testfall-Erzeugungsvorrichtung und Testfall-Erzeugungsprogramm
DE19983098B4 (de) Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren
DE69622301T2 (de) Konsistenzprüfung einer Instruktionsverarbeitungsfolge für ein Multiprozessorsystem
DE102004034766A1 (de) Fehlererfassungsverfahren und System für Prozessoren, das verriegelungsschrittweise betriebene gleichzeitige Teilprozesse verwendet
DE102005037222A1 (de) Verfahren und Vorrichtung zur Auswertung eines Signals eines Rechnersystems mit wenigstens zwei Ausführungseinheiten
DE102011011333B4 (de) Lesen in Peripheriegeräte und schreiben aus Peripheriegeräten mit zeitlich getrennter, redundanter Prozessorausführung
DE4430195A1 (de) Computersystem und Verfahren zur Auswertung von Vorhersagen und Booleschen Ausdrücken
DE102005037213A1 (de) Verfahren und Vorrichtung zur Umschaltung zwischen Betriebsmodi eines Multiprozessorsystems durch wenigstens ein externes Signal
DE69626282T2 (de) Programmierbare vorrichtung und verfahren zum befehlsauffang
DE10063644A1 (de) Lokales Anhalten und Gefahrerfassung in einem superskalaren Pipeline-Mikroprozessor zum Vermeiden eines erneuten Lesens einer Registerdatei
DE69322800T2 (de) Verfahren zur Leistungsverbesserung in einem automatischen Testsystem

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8127 New person/name/address of the applicant

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8139 Disposal/non-payment of the annual fee