DE69831732T2 - Verfahren und gerät zum korrigieren von fehlern in einem rechnersystem - Google Patents

Verfahren und gerät zum korrigieren von fehlern in einem rechnersystem Download PDF

Info

Publication number
DE69831732T2
DE69831732T2 DE69831732T DE69831732T DE69831732T2 DE 69831732 T2 DE69831732 T2 DE 69831732T2 DE 69831732 T DE69831732 T DE 69831732T DE 69831732 T DE69831732 T DE 69831732T DE 69831732 T2 DE69831732 T2 DE 69831732T2
Authority
DE
Germany
Prior art keywords
reference system
external events
test system
comparable
test
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69831732T
Other languages
English (en)
Other versions
DE69831732D1 (de
Inventor
Alex Klaiber
Robert Bedichek
David Keppel
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.)
Intellectual Ventures Holding 81 LLC
Original Assignee
Transmeta Inc
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 Transmeta Inc filed Critical Transmeta Inc
Application granted granted Critical
Publication of DE69831732D1 publication Critical patent/DE69831732D1/de
Publication of DE69831732T2 publication Critical patent/DE69831732T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3668Testing of software
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Radar Systems Or Details Thereof (AREA)
  • Detection And Correction Of Errors (AREA)

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Diese Erfindung betrifft Computersysteme und insbesondere Systeme für die schnelle und akkurate Fehlerbeseitigung in Computersystemen.
  • Geschichte des Standes der Technik
  • Es ist oft wünschenswert, Fehler in einem Computerprozess oder einem Computersystem zu erkennen. Zu diesem Zweck wird in der Regel das Verhalten des konstruierten Systems (das "Testsystem") mit Modellen eines Systems (das "Referenzsystem") verglichen, von denen man weiß, dass sie korrekt funktionieren. Wenn das Verhalten des Testsystems mit dem Verhalten des Referenzsystems übereinstimmt, so wird davon ausgegangen, dass das Testsystem richtig funktioniert. Wenn das Verhalten der Systeme sich unterscheidet, so wurde ein Fehler festgestellt.
  • Es gibt viele Möglichkeiten, das Verhalten zweier Systeme zu vergleichen. Eine davon ist, jedes System zu veranlassen, einen Strom interner oder externer Ereignisse, wie beispielsweise Vorgangsaufrufe, Zustandsübergänge oder Bussignale, zu erzeugen und die beiden Ströme miteinander zu vergleichen. Es kann aber sein, dass einige Ereignisströme zu schwierig zu erfassen sind, als dass ein Vergleich der Ereignisströme praktikabel wäre. Bei anderen Ereignisströmen kann das Erfassen zu teuer sein. Wieder andere Ereignisströme sind vielleicht zu grob strukturiert, um Fehler in brauchbarer Weise orten zu können. Bei einigen Ereignisströmen hängen die Ereignisse möglicherweise zu sehr von den Systemimplementierungen ab und können damit unvergleichbar sein.
  • Eine weitere Vergleichstechnik besteht darin, beide Systeme arbeiten zu lassen, den Zustand der Systeme während des Betriebes aufzuzeichnen und dann den Zustand der Systeme zu vergleichen. Beim Zustandsvergleich können sich die gleichen Arten von Problemen einstellen wie beim Vergleich von Ereignisströmen. Der Zugriff auf einige Zustände kann teuer oder unmöglich sein oder zu sehr von den Implementierungsdetails der beiden Systeme abhängen.
  • Es können verschiedene Verfahren verwendet werden, um den Vergleich von Zuständen oder Ereignissen zu bewerkstelligen. Wenn das Referenzsystem vom informalen oder nicht-ausführbaren Typ ist, so war das Verfahren üblicherweise eine Ad-hoc-Suche nach verschiedenen Testzuständen oder Ereignissen, die nicht mit Zuständen oder Ereignissen übereinstimmen, die vom Referenzsystem erzeugt wurden. Natürlich besteht bei diesem Verfahren die große Gefahr, wichtige Probleme, die im Testsystem vorliegen, zu übersehen.
  • Wenn es sich bei dem Referenzsystem um eine ausführbare Spezifikation handelt, so wäre es wünschenswert, wenn man die beiden Systeme einfach gleichzeitig laufen lassen und den Zustand in jedem Augenblick vergleichen könnte, um Unterschiede festzustellen. Die oben angesprochenen Probleme erschweren dies noch.
  • Der exakte Vergleich des Systemzustands nach jedem Schritt ist nicht generell möglich. Erstens unterscheiden sich das Testsystem und das Referenzsystem zwangsläufig auf die eine oder andere Weise (wie beispielsweise Funktion, Implementierung oder Leistung), so dass der Gesamtzustand der Systeme sich nicht jederzeit vergleichen lässt. Bei einigen Systemen ist der Gesamtzustand möglicherweise niemals vergleichbar. Beispielsweise ist es oft wünschenswert, den Zustand eines Testsystems, das sich vom Referenzsystem erheblich unterscheidet, so zu vergleichen, als würde man ein Anwendungsprogramm von einem Typ von Prozessor, der ein erstes Betriebssystem ablaufen lässt, zu einem anderen Typ von Prozessor, der ein zweites Betriebssystem ablaufen lässt, übertragen. Worauf es ankommt, ist, dass das Testsystem die gleichen Endergebnisse hervorbringt wie das Referenzsystem. Da sich die Prozessoren und Betriebssysteme voneinander unterscheiden, unterscheiden sich wahrscheinlich auch die Operationen, die in jedem Augenblick des Betriebes der beiden Systeme ausgeführt werden (und damit auch der Zustand).
  • Zweitens kann es in einem unvertretbar hohen Maße teuer sein, den Zustand nach jeder Operation durch jedes System wiederholt zu vergleichen. Um den Zustand der beiden Systeme zu vergleichen, müssen der gesamte Speicher (eventuell einschließlich des Speichers der zweiten Ebene) und alle Register der beiden Systeme verglichen werden, um zu sehen, ob sie einander gleichen. Die bloße Größe des Zustandsvergleichs macht dies teuer.
  • Schließlich kann es sein, dass einige Zustandsinformationen nicht verfügbar sind, beispielsweise ein Zustand in nicht-lesbaren Prozessorregistern oder ein Zustand, der implizit in einem der Systeme dargestellt ist. Darum muss der Vergleich oft selektiv erfolgen.
  • Doch obgleich der Zustandsvergleich an allen Punkten während der Ausführung schwierig ist, ist es möglich, Punkte auszuwählen, an denen die Ergebnisse des Test- und des Referenzsystems sich gleichen sollten. An diesen Punkten kann ein Zustandsvergleich erfolgen. Bis heute wurde aber noch kein automatisiertes oder schnelles Verfahren zum Vergleichen von Systemen ersonnen.
  • Es ist wünschenswert, ein Verfahren und eine Vorrichtung zum schnellen Erkennen von Fehlern in einem Testsystem bereitzustellen.
  • Insbesondere ist es wünschenswert, ein Verfahren und eine Vorrichtung zum Erkennen von Fehlern in einem Computerprozess oder einem Computersystem bereitzustellen.
  • Terayama, F. und Mitarbeiter, "Self-checking and recovering microprocessor G100FTS for fault-tolerant systems", Custom Integrated Circuits Conference, 1993, Tagungsbericht der IEEE 1993, San Diego, CA, USA, 9.–12. Mai 1993, New York, NY, USA, IEEE, 9. Mai 1993, Seiten 421 bis 424, offenbart einen anwendungsspezifischen Prozessor, der zwei Mikroprozessoren integriert, von denen einer die Master-Operation und der andere die Prüfoperation ausführt. Es werden Zustände der beiden Mikroprozessoren verglichen, und wenn ein Fehler festgestellt wird, so wird der Betrieb angehalten, zu einem zuvor gespeicherten Zustand zurückgefahren und erneut ausgeführt. Auf diese Weise werden fehlerhafte Mikroprozessoren entdeckt.
  • Kurzdarstellung der Erfindung
  • Aspekte der Erfindung sind in den begleitenden Ansprüchen dargestellt.
  • Bei einer besonderen Ausführungsform wird die Ausführung von Abschnitten der Befehlsfolge zwischen auswählbaren vergleichbaren Punkten auf dem Referenzsystem und auf dem Testsystem automatisch wiedergegeben, wenn ein Unterschied bei dem verglichenen Zustand der Systeme entdeckt wird.
  • Diese und weitere Merkmale der Erfindung werden anhand der folgenden detaillierten Beschreibung in Verbindung mit den Zeichnungen, bei denen in den verschiedenen Ansichten gleiche Elemente mit gleichen Bezugszahlen versehen sind, besser verstanden.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist ein Blockschaubild eines Systems, das gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung konstruiert wurde.
  • 2 ist ein Blockschaubild einer Ausführungsform eines Systems, das gemäß der vorliegenden Erfindung konstruiert wurde.
  • 3 ist ein Schaubild, das einen Prozess gemäß der vorliegenden Erfindung veranschaulicht.
  • Detaillierte Beschreibung
  • Wenden wir uns nun 1 zu, wo ein Blockschaubild einer Vorrichtung veranschaulicht ist, die gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung konstruiert wurde. Bevorzugte Ausführungsformen der vorliegenden Erfindung verwenden einen Steuermechanismus 10, der Befehle von einem Programm 12 empfängt, das er auf einem Testsystem 15 ausführen soll, und ein oder mehrere Referenzsysteme 16, die Eingabe-/Ausgabe-Geräte oder Modelle 18 verwenden. Das Programm 12 kann eine Hardware oder ein Softwareprogramm oder -prozess oder eine Variation davon sein. Das Testsystem 15 und das Referenzsystem 16 können jeweils Hardware, Software oder eine Kombination daraus sein. Der Steuermechanismus 10 steuert die Ausführung des Programms 12 sowohl durch das Testsystem 15 als auch durch das Referenzsystem 16. Das Programm 12 ist in der Figur zwar als separate Entität gezeigt, doch es kann auch in die Systeme eingebettet sein oder von außerhalb des Systeme eingespeist werden. Das Programm 12 kann für jedes der Systeme unterschiedliche Darstellungen aufweisen, muss aber auf irgend einer Stufe die gleichen Ergebnisse errechnen. Bei dem Steuermechanismus 10 kann es sich um eine beliebige Steuerung handeln, die geeignet ist, das Programm 12 in Schritten ablaufen zu lassen und den Zustand der beiden Systeme in Schritten zu lesen oder zu verifizieren.
  • Prinzipiell wäre es möglich, das Programm 12 dergestalt auszuführen, dass es in einzelnen Schritten ausgeführt wird, und den Zustand der Systeme bei jedem Schritt zu vergleichen. Es ist aber oft unvertretbar teuer, eine große Menge an Zustandsdaten bei jedem Schritt zu vergleichen. Außerdem ist ein einfaches schrittweises Voranschreiten vielleicht gar nicht möglich. Beispielsweise können einige Ergebnisse durch ein System in einer bestimmten Reihenfolge errechnet werden und durch ein anderes System in einer anderen Reihenfolge. Statt dessen verwenden Ausführungsformen der vorliegenden Erfindung den Steuermechanismus 10 zur Ausführung mehrerer oder vieler Schritte in dem Test- und dem Referenzsystem. Somit kann der Steuermechanismus eine bekannte und oftmals große Anzahl von Schritten des Programms 12 in dem Testsystem 15 ausführen und dann die Ausführung der Schritte in dem Referenzsystem 16 wiederholen. Dann kann ein Zustandsvergleich vorgenommen werden. Durch Ausführen einer Anzahl von Schritten vor dem Vergleich amortisieren sich die Kosten des Vergleichs über mehrere Schritte, und Ausführungsformen der vorliegenden Erfindung sind ebenso in der Lage, Fehler in Systemen zu finden, die keine identischen Berechnungen bei jedem Schritt ausführen.
  • Der Steuermechanismus 10 führt ein Vergleichsprädikat (einen zu bewertenden Ausdruck) aus, der eine Bewertung hinsichtlich wahr oder falsch vornimmt. Das Vergleichsprädikat braucht nicht in der Steuerung 10 eingebettet zu sein und kann je nach den zu testenden Systemen, der Art der analysierten Fehler und Kompromissen zwischen der Leistung und der Genauigkeit der Fehlerortung variieren. Außerdem kann sich das Vergleichsprädikat während der Ausführung ändern. Wenn beispielsweise das Referenzsystem und das Testsystem beides Prozessoren sind, so kann das Vergleichsprädikat häufig eine Schnellprüfung der vom Benutzer einsehbaren Register beider Prozessoren ausführen und kann ebenfalls periodisch eine teurere, aber auch umfassender Prüfung versteckter Register und Speicher ausführen.
  • Es ist zu beachten, dass sowohl das Testsystem als auch das Referenzsystem einen Zustand haben können, der nie für einen Vergleich verwendet wird und der darum im Vergleich ignoriert wird. Gleichermaßen kann jedes System einen Zustand auf verschiedene Weise darstellen, dergestalt, dass das Vergleichsprädikat oder sein Surrogat eine Zustandsumwandlung vornehmen müssen, um den Vergleich auszuführen. Der Begriff des "Zustandes" kann dahingehend ausgeweitet werden, dass er den Zustand eines Ereignisprotokolls beinhaltet, um sich des Ereignisstrom-Debugging bedienen zu können. Beispielsweise kann das Prädikat Elemente in einem zeitgestempelten Eingangs-/Ausgangs-Protokoll vergleichen, um zu gewährleisten, dass das externe Verhalten beider Systeme das gleiche ist. Schließlich kann das Prädikat genäherte Informationen errechnen, beispielsweise eine Prüfsumme und eine zyklische Redundanzprüfung (ZRP) einer Gruppe von Werten, anstatt alle Werte explizit zu vergleichen.
  • Das Steuerprogramm 10 steuert die Ausführung auf der Grundlage einer Anzahl von Prämissen. Zunächst wird man erkennen, dass, wenn das gleiche Programm 12 durch zwei Systeme korrekt ausgeführt wird, die einzelnen Befehle, die durch die beiden Systeme ausgeführt werden, verschieden sein können, es aber Punkte gibt, wo bestimmte Teile der Zustände der beiden Systeme äquivalent sein müssen, wenn das Testsystem und das Referenzsystem jeweils korrekt funktionieren, so dass sie zu den gleichen Ergebnissen kommen. Diese Punkte werden in der vorliegenden Spezifikation als "vergleichbare Punkte in virtueller Zeit" oder einfach als "vergleichbare Punkte" bezeichnet. Ein Referenzsystem kann beispielsweise ein einfacher Prozessor (wie beispielsweise ein RISC-Prozessor) in Kombination mit einem Simulator sein, der dafür verwendet wird, einen komplexen Prozessor (wie beispielsweise einen CISC-Prozessor) zu emulieren, während ein Testsystem ein solcher komplexer Prozessor sein kann. Das Referenzsystem führt in der Regel mehrere Befehle aus, um das Verhalten eines einzelnen Befehls im Testsystem zu imitieren. Folglich ist der Zustand des Referenzsystems nur zu Zeiten vergleichbar, die ganzen Befehlen entsprechen, die in dem Testsystem ausgeführt werden.
  • Ausführungsformen der vorliegenden Erfindung basieren außerdem auf der Erkenntnis, dass – auf einer bestimmten Stufe – die Operationen korrekt funktionierender Computersysteme deterministisch sind. Wenn also eine Befehlsfolge in einem Prozessor abzulaufen begonnen hat, so werden die Ergebnisse dieser Befehle durch den anfänglichen Maschinenzustand determiniert, mit Ausnahme von Ereignissen, die außerhalb der Befehlsfolge liegen, wie beispielsweise Interrupts und Eingabe-/Ausgabe-Operationen. Nur diese externen Operationen können eine Änderung der Art und Weise bewirken, in der das Programm im System ausgeführt wird. Um bei einigen Ausführungsformen diese Änderungen auszuschalten, nutzen das Referenzsystem und das Testsystem das Verhalten einer einzelnen Gruppe von Vorrichtungsmodellen gemeinsam. Das vereinfacht eine Vielzahl von Zustandsvergleichsproblemen. Ein weiterer Vorteil ist, dass die Fehlerbeseitigung mit einer einzelnen Gruppe von Vorrichtungen beträchtlich schneller sein kann als mit separaten Vorrichtungen für beide Systeme. Ausführungsformen der vorliegenden Erfindung nehmen externe Ereignisse von den Vorrichtungsmodellen 18 und lassen sie durch das Testsystem und das Referenzsystem gemeinsam nutzen. Der Steuermechanismus 10 gewährleistet, dass die externen Ereignisse dem Testsystem und dem Referenzsystem an den gleichen vergleichbaren Punkten in virtueller Zeit dargeboten werden, so dass externe Ereignisse die gleichen Auswirkungen haben. Folglich führen die beiden Systeme 15 und 16 theoretisch Programme aus, die bei identischen externen Ereignissen identische Ergebnisse erbringen. Es sollte jedoch klar sein, dass zwischen jeweils zwei vergleichbaren Punkten, an denen externe Ereignisse geschehen, eine große Anzahl vergleichbarer Punkte vorhanden sein kann.
  • Die Erkenntnis, dass bei korrekt funktionierenden Computersystemen – sobald der Ablauf einer Befehlsfolge in einem Prozessor begonnen hat – die Ergebnisse dieser Befehle determiniert werden (mit Ausnahme von Ereignissen, die außerhalb der Befehlsfolge liegen, und der Ausschaltung asynchroner externer Ereignisse), erlaubt Vergleiche an vergleichbaren Punkten in virtueller Zeit während der Ausführung des Programms durch die beiden Systeme. Der Steuermechanismus 10 vergleicht periodisch einen Abschnitt des Zustands des Referenzsystems und des Testsystems. Wenn Teile des Zustands der Systeme an einem vergleichbaren Punkt variieren (gemäß dem Vergleichsprädikat nicht kompatibel sind), so ist man auf einen Fehler (eine "Divergenz" genannt) gestoßen. Zu der Divergenz kann es an einem beliebigen Punkt seit dem letzten Zustandsvergleich gekommen sein. Das Erkennen einer Divergenz unter Verwendung vergleichbarer Punkte, an denen genügend Zustandsdaten in sinnvoller Weise zur Verfügung stehen, um Systemfehler zu erkennen, stellt merkliche Fortschritte gegenüber Fehlererkennungssystemen nach dem Stand der Technik dar.
  • Ausführungsformen der vorliegenden Erfindung können außerdem automatisch den Fehlerbereich verkleinern, indem sie über eine virtuelle Zeit seit dem letzten Zustandsvergleich, bei dem Zustandsidentität angezeigt wurde, sucht. Zu diesem Zweck wird die Ausführung des Programms am frühesten vergleichbaren Punkt, an dem eine Abweichung der Zustände festgestellt wird, angehalten. Dank der Fähigkeit, externe Ereignisse, die während Ausführung und Wiedergabe gemeinsam genutzt werden können, aufzuzeichnen und wiederzugeben, ist es möglich, an einen früheren vergleichbaren Punkt zurückzukehren und anschließend eine Ausführung in Vorwärtsrichtung zu wiederholen und zu den gleichen Ergebnissen zu gelangen. Dies ermöglicht die "Wiedergabe" eines Abschnitts des Programms, der ausgeführt wurde und in dem ein Fehler geschah. Um die Wiedergabe zu unterstützen, prüft der Steuermechanismus 10 periodisch das Test- und das Referenzsystem an zuvor ausgewählten vergleichbaren Punkten während der Ausführung des Programms durch die Systeme oder zeichnet den Zustand des Test- und des Referenzsystems an zuvor ausgewählten vergleichbaren Punkten während der Ausführung des Programms durch die Systeme auf. Der Betrieb der Systeme kann dann an einen älteren Prüfpunkt zurückgeführt werden, wo eine Abweichung erkannt wurde, und das Programm 12 kann dann vorwärts zum gewünschten vergleichbaren Punkt ausgeführt werden.
  • Ein Prüfpunkt braucht nicht den gesamten Systemzustand zu erfassen, er muss aber genügend Zustandsdaten liefern, um die Ausführung erneut zu starten. Den Zustand an mehr Stellen zu prüfen, führt im Allgemeinen zu einer höheren Fehlerbeseitigungsgenauigkeit. Das punktuelle Prüfen kann mit beliebigen Perioden von "niemals" bis "bei jedem Schritt" erfolgen. Das Ändern des Prüfpunktintervalls wirkt sich auf die Leistung sowohl der Vorwärtsausführung als auch der Wiedergabe aus. Die Wiedergabe stützt sich außerdem auf ein Protokoll externer Ereignisse. Wenn die Ausführung für eine Wiedergabe gestartet wird, so werden die externen Ereignisse dem Protokoll entnommen, um ein deterministisches Verhalten bei der Wiedergabe zu gewährleisten.
  • Es sind viele Suchtechniken möglich. Welche man am besten wählt, kann beispielsweise von den Relativgeschwindigkeiten von Vorwärtsausführung und Wiedergabe, des Zustandsvergleichs und dergleichen abhängen. Des Weiteren kann, wenn ein Fehler erkannt wird, der Steuermechanismus 10 zur Verwendung eines umfassenderen oder genaueren Zustandsvergleichsprädikats umschalten. Bei einer Ausführungsform kann der Steuermechanismus 10 eine binäre Suche in virtueller Zeit wie folgt ausführen. Der Steuermechanismus 10 kann den Beginn der Wiedergabe auf einen früheren vergleichbaren Punkt einstellen, an dem ein Zustandsvergleich erfolgreich war, wahrscheinlich der letzte Vergleich auf einem strengsten Niveau. Die große Anzahl an vergleichbaren Punkten, die es zwischen jeweils zwei vergleichbaren Punkten geben kann, an denen es zu externen Ereignissen kommt, erlaubt eine relativ fein strukturierte Isolation von Fehlern, nachdem eine Abweichung erkannt wurde. Der Steuermechanismus 10 kann das Ende der Wiedergabe auf den vergleichbaren Punkt setzen, an dem der Zustandsvergleich nicht erfolgreich war, und kann dann die Wiedergabe des Programms zu einem vergleichbaren Zwischenpunkt auf halbem Weg zwischen Anfang und Ende ausführen. Der Zustand der Systeme wird dann an diesem Zwischenpunkt erneut verglichen. Wenn der Zustandsvergleich an dem Zwischenpunkt nicht erfolgreich ist, so wird das Ende der Wiedergabe auf den vergleichbaren Zwischenpunkt gesetzt, und die Suche geht weiter, wobei die Wiedergabe an demselben Anfangspunkt beginnt und zu einem zweiten vergleichbaren Zwischenpunkt auf halbem Weg zwischen dem Anfang und dem neuen Endpunkt fortgeführt wird. Der Zustand der Systeme wird dann an dem Zwischenpunkt erneut verglichen. Wenn der Zustandsvergleich erfolgreich ist, so wird der Beginn auf den vergleichbaren Zwischenpunkt gesetzt, und die Suche geht weiter. Auf diese Weise wird die Suche nach einem Fehler rasch eingegrenzt.
  • Es gibt verschiedene Umstände, die die Suche beenden können. Beispielsweise kann der Steuermechanismus 10 die Divergenzsuche beenden, wenn der Suchbereich so klein wird, dass er nicht weiter verkleinert werden kann. An diesem Punkt wird die Divergenz als "gefunden" betrachtet. Der kleinste Bereich hängt von dem Test- und dem Referenzsystem und von dem ausgeführten Programm ab. Der Fehler kann dem Benutzer gemeldet werden.
  • Die Art und Weise, in der der Steuermechanismus 10 das Test- und das Referenzsystem von asynchronen externen Ereignissen isoliert, indem sowohl dem Test- als auch dem Referenzsystem dieselben externen Ereignisse dargeboten werden, bietet eine Reihe von Vorteilen neben der Fähigkeit, eine Übereinstimmung zu gewährleisten und die Wiedergabeausführung des Programms 12 zu ermöglichen. Beispielsweise kann der Steuermechanismus über beliebige Segmente der Ausführung des Programms 12 selektiv die Rate und die Verteilung externer Ereignisse über beliebige Segmente der Ausführung des Programms 12 verändern. Dadurch kann der Steuermechanismus Testsituationen wie beispielsweise ungewöhnlich hohe Eintreffraten für externe Ereignisse erzeugen.
  • Der Steuermechanismus 10 kann des Weiteren eine "Störungsanalyse" ausführen, indem er ein Ausführungssegment, in dem ein erfolgreicher Zustandsvergleich stattgefunden hat, wiederholt. Jedes Mal, wenn die Ausführung wiederholt wird, kann der Anfangszustand oder die Einspeisung externer Ereignisse geändert werden, jedoch in solcher Weise, dass sich das Endergebnis der Ausführung nicht ändert. Wenn der Endzustand sich von Durchgang zu Durchgang doch ändert, so wurde ein Fehler entdeckt. Die oben angesprochenen Fehlerisolationstechniken können dafür verwendet werden, die Fehlerstelle zeitlich anhand eines Vergleichs mit Referenzsystemen einzugrenzen. Beispielsweise kann man einen kritischen Abschnitt des Programms 12 mehrere Male ablaufen lassen, und jedes Mal kann der Steuermechanismus 10 einen Interrupt bei einem anderen Befehl in der Folge ausgeben oder den anfänglichen Inhalt von Caches im Test- oder im Referenzsystem ändern.
  • Ausführungsformen der Erfindung sind dafür beschaffen, mit Systemen unterschiedlicher Komplexitätsgrade zu funktionieren. Beispielsweise kann das Testsystem Registerumbenennungs- oder ähnliche Techniken zur Leistungssteigerung verwenden. Einige Daten können sich bei einem System in einem Hardware- oder Software-Cache und bei einem anderen System im Hauptspeicher befinden, oder sie können implizit in einem einzigen System dargestellt sein (was die Rekonstruktion der betreffenden Daten erfordert, um einen Zustandsvergleich zu bewirken). Um den Zustand zu vergleichen, ruft das Vergleichsprädikat Surrogate im Referenzsystem und im Testsystem auf, um den Zustand anhand des Namens anstatt anhand des Ortes zu vergleichen.
  • Es gibt viele Ausführungsformen der vorliegenden Erfindung. Bei einer Ausführungsform ist das Referenzsystem 16 ein einfacher Decodier- und Abfertigungsinterpretierer, während das Testsystem die gleichen Eingabeprogramme unter Verwendung dynamischer Kompilierung von virtuellem Maschinencode zu nativem Maschinencode ausführt. Um vergleichbare Punkte in virtueller Zeit beizubehalten, inkrementiert das Referenzsystem die virtuelle Zeit für jeden eingeholten Befehl, während das Testsystem die virtuelle Zeit unter Verwendung von Instrumentierungscode inkrementiert, der in jeden dynamisch kompilierten Block eingefügt wurde. Das Vergleichsprädikat vergleicht nur den Zustand für die virtuelle Maschine, die von jedem System ausgeführt wird.
  • Eine besonders brauchbare Ausführungsform der vorliegenden Erfindung, die in 2 gezeigt ist, verwendet ein Softwaresteuerungsprogramm 20, das über ein Debuggerprogramm 14 Befehle von einem Programm 12 erhält, das es auf den zwei verschiedenen Systemen ausführen soll. Bei dem Debuggerprogramm 14 kann es sich um ein beliebiges brauchbares Programm handeln, das in der Lage ist, ein Mittel bereitzustellen, mit dem das Programm in Schritten abgearbeitet werden kann und der Zustand des Systems, auf dem das Programm läuft, in gewünschten Inkrementen getestet werden kann. Das Steuerprogramm 20 steuert die Operationen sowohl eines Referenzsystems 16 als auch des Testsystems 15 bei der Ausführung des Programms 12.
  • Bei dieser Ausführungsform der Erfindung simuliert das Testsystem 15 einen Prozessor, der ein Übersetzungsprogramm 13 verarbeitet, das Befehle des Programms 12 dynamisch in Befehlsreihen übersetzt, die der Prozessor ausführen kann, um Ergebnisse der Befehle des Programms 12 zu erbringen. Bei der Ausführung des Programms 12 mittels des Debuggers 14 veranlasst das Steuerprogramm 20 das System 16, eine bekannte und oft große Anzahl der ursprünglichen Befehle des Programms 12 auszuführen, und wiederholt dann die Ausführung dieser Befehle unter Verwendung des Systems 15.
  • Das Steuerprogramm 20 steuert die gesamte Ausführung durch die beiden Systeme 15 und 16. In 2 empfängt die Debuggersoftware 14 eine Befehlsfolge von dem Programm 12, von dem man weiß, dass es auf einem bestimmten Computersystem läuft, wie beispielsweise einem Computer, der mit einem Intel X86-Mikroprozessor arbeitet. Ein Steuerprogramm 20, das gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung geschrieben ist, bildet eine typische Computersystemschnittstelle zur Debuggersoftware 14 und steuert die Anwendung der Befehle auf das Test- und das Referenzsystem 15 bzw. 16. Das Steuerprogramm 20 stellt die gleiche Schnittstelle für die Debuggersoftware 14 dar wie die Systeme 15 und 16 für das Steuerprogramm 20. Das Steuerprogramm 20 setzt sich auch zwischen die Systeme 15 und 16 und deren Vorrichtungen 18, um das Protokollieren und Wiedergeben von externen Ereignissen zu besorgen.
  • Es gibt viele Möglichkeiten, vergleichbare Punkte in virtueller Zeit beizubehalten. Bei einer Ausführungsform wird das Programm 12 durch ein Übersetzungsprogramm 13 in Befehle für einen Befehlssatz übersetzt, der auf dem Testsystem 15 ausgeführt wird. Das Testsystem 15, das einen Mikroprozessor, der mit diesem Übersetzungsprogramm 13 kombiniert ist, beinhaltet, ist dafür konstruiert, Programme eines Befehlssatzes auszuführen, der ursprünglich dafür vorgesehen ist, in einem Mikroprozessor ausgeführt zu werden, der durch das Referenzsystem 16 definiert wird. Um die Festlegung von vergleichbaren Punkten in virtueller Zeit zu ermöglichen, an denen der Zustand der Ursprungsprogramms 12 und die Befehle, die von dem Übersetzungsprogramm 13 übersetzt wurden, die gleichen sind, bildet das Übersetzungsprogramm 13 die Punkte in der Übersetzung ab, die mit dem Ende jedes Befehls des Programms 12 übereinstimmen und die somit die vergleichbaren Punkte anzeigen, die zum Vergleichen der beiden Simulationsmodelle 15 und 16 verwendet werden können. Das Steuerprogramm 20 hält nach diesen vergleichbaren Punkten Ausschau, wenn es bestimmt, wann und wo es die Ausführung der Befehlsfolgen auf den Systemen 15 und 16 beginnt und beendet.
  • Zusätzlich zur Verwendung dieser Zeitbereichsabbildung stellt das Steuerprogramm 20 ein Mittel zum Erkennen der Abbildung des Adressraumes der beiden Simulationsmodelle 15 und 16 an den vergleichbaren Punkten in der Ausführung des Programms 12 durch die beiden Systeme 15 und 16 bereit. Beispielsweise kann das eine oder das andere der Systeme Registerumbenennungs- oder ähnliche Techniken verwenden, um die Verarbeitung zu beschleunigen. Um die Übereinstimmung der Zustände mittels der beiden Systeme 15 und 16 zu testen, müssen die Register ermittelt werden, die tatsächlich Daten enthalten, die die gleichen sein müssen. Gleichermaßen können in einem System Speicherdaten in einem Prozessorcache, aber noch nicht im Speicher gespeichert werden, während in dem anderen System die gleichen Daten vielleicht schon im Hauptspeicher gespeichert wurden. Auch hier muss wieder der richtige Speicher verglichen werden, um brauchbare Ergebnisse zu erhalten. Bei einer Ausführungsform fragt das Steuerprogramm 20 die von ihm kontrollierten Systeme nach abstrakten Registern oder Speichernamen ab. Surrogate im Test- und im Referenzsystem verwenden private Abbildungen von abstrakten Namen zu Speicherorten, um die gewünschten Daten bereitzustellen.
  • Nachdem sie mit diesen beiden Abbildungen versehen wurde, wird eine ausgewählte Befehlsfolge vom Programm 12 durch die Debuggersoftware 14 an das Steuerprogramm 20 zur Ausführung gesandt. Die Debuggersoftware 14 ermöglicht in der Regel die Fähigkeit, ein Programm in Folgen auszuführen, die von einem Nutzer festgelegt wurden, und Zustände des ausführenden Modells zu ausgewählten Zeiten zu ermitteln, aber ist nicht in der Lage, Vergleiche zwischen der Ausführung eines Programms auf einem System oder einem anderen anzustellen. Die Debuggersoftware 14 sendet die Befehlsfolge an das Steuerprogramm 20. Das Steuerprogramm 20 sendet die Befehlsfolge an das Referenzsystem 16, das die Befehlsfolge abarbeitet. Das Steuerprogramm 20 zeichnet den Zustand des Systems 16 am Anfang der Folge auf, bevor es die Ausführung der Folge auf dem System 16 beginnt. Während die Befehlsfolge auf dem System ausgeführt wird, zeichnet das Steuerprogramm 20 jedes externe Ereignis auf und versieht es mit einem Zeitstempel. Somit zeichnet das Steuerprogramm 20 jede Eingabe-/Ausgabe-Operation auf, einschließlich der Befehle, Adressen und Daten, die zu einer simulierten Eingabe-/Ausgabevorrichtung 18 übertragen wurden, und der Antworten, die von den simulierten Vorrichtungen 18 zu dem System 16 zurückgesandt wurden. Das Steuerprogramm 20 zeichnet außerdem jede Ausnahme auf, auf die das System 16 während der Folge reagiert.
  • Als nächstes führt das Steuerprogramm 20 die gleiche Befehlsfolge auf dem Testsystem 15 bis zum abschließenden vergleichbaren Punkt der Folge aus. Bei der Ausführung der Befehlsfolge werden die externen Operationen (Eingabe/Ausgabe oder Ausnahme), die für das Referenzsystem 16 aufgezeichnet wurden, aus dem Protokoll der Ergebnisse verwendet, die aus der Ausführung der Folge durch das System 16 gewonnen wurden. Wenn also das System 16 eine Eingabe-/Ausgabeoperation veranlasst hat, so wird die extern erzeugte Reaktion auf diese Operation dem System 15 zugeleitet. Auf diese Weise sind die Rücklaufwerte mit jenen identisch, die dem Referenzsystem 16 zugeführt wurden, so dass das Ergebnis innerhalb des Testsystems 15 das gleiche sein sollte wie das Ergebnis innerhalb des Systems 16. Gleichermaßen wird, wenn das System 16 einen Interrupt erhalten hat, der Interrupt durch das Steuerprogramm 20 aufgezeichnet und wird später dem Testsystem 15 zugeleitet, so dass seine Reaktion die gleiche sein sollte wie die Reaktion des Referenzsystems 16, wenn das Testsystem 15 korrekt arbeitet. Durch die Verwendung der externen Ereignisse, die bei der Ausführung des Programms 12 durch das System 16 protokolliert wurden, wird der Aufwand des Simulierens von Vorrichtungen vermieden, die mit dem zweiten Modell korrekt funktionieren; es wird gewährleistet, dass die externen Ereignisse, welche die Simulationen beeinflussen, identisch sind; und es wird dadurch die Möglichkeit ausgeschaltet, dass die Programmausführung infolge asynchroner externer Ereignisse schwankt.
  • Die Folge wird auf diese Weise auf dem System 15 vollendet. Dann wird der Zustand der beiden Systeme verglichen. Wenn der Zustand der beiden Systeme am Ende der Folge der gleiche ist, so wird eine zweite Befehlsfolge vom Programm 12 an den Debugger 14 zur Ausführung auf den beiden Systemen 15 und 16 geschickt.
  • Wenn die Ausführung einer Befehlsfolge von dem Programm 12 zu verschiedenen Zuständen am vergleichbaren Punkt im Test- und im Referenzsystem führt, so wird das Programm 12 ab einem früheren vergleichbaren Prüfpunkt in der Ausführung, an dem der Vergleich einen identischen Zustand ergab, erneut abgespielt. Bei der im vorliegenden Text beschriebenen konkreten Ausführungsform lässt man den Prozess in einem binären Suchmodus in der oben erläuterten Weise erneut ablaufen. Bei der Wiedergabe der Ausführung einer vorangegangenen Befehlsfolge ist es nützlich, das Protokoll der externen Ereignisse, die zuvor während der Ausführung durch das Referenzsystem aufgezeichnet wurden, zu verwenden, um Veränderungen bei den externen Ereignissen für die Ausführung auf beiden Systemen auszuschalten. Wenn eine erste Hälfte der Folge zum gleichen Zustand an einem mittleren vergleichbaren Punkt führt, so wird eine erste Hälfte der zweiten Hälfte der Befehlsfolge für das Test- und das Referenzsystem wiedergegeben. Dieses binäre Testen von Abschnitten der Folge wird so fortgesetzt, dass der Divergenzpunkt der beiden Simulationen rasch isoliert wird.
  • Wie zu erkennen ist, ermöglicht dieses binäre Testen auf Fehler in der Ausführung einer Befehlsfolge ein sehr schnelles Isolieren des Fehlerpunktes. Die Suche zur Isolierung von Fehlern braucht keine binäre Suche zu sein. Wenn beispielsweise das Ausführen des Programms weniger zeitaufwändig ist als die Umkehrung des Programms, um einen jüngsten vergleichbaren Punkt zu finden, an dem die Zustände übereinstimmten, so kann es schneller sein, kleinere Abschnitte des Programms wiederzugeben und dadurch die Anzahl der Male zu verringern, die erforderlich sind, um das Programm zur Fehlerisolierung umzukehren. In jedem Fall gestattet die Fähigkeit, die beiden Modelle im Wesentlichen parallel durch eine lange Befehlsfolge, die in der Länge variieren kann, unter der Steuerung des Bedieners oder des Steuerprogramms ablaufen zu lassen, eine sehr schnelle und präzise Fehlerbeseitigung in dem Slave-Simulationsmodell ohne den mühsamen Schritt-für-Schritt-Prozess, den der Stand der Technik verlangt.
  • Obgleich Ausführungsformen der vorliegenden Erfindung anhand einer bevorzugten Ausführungsform beschrieben wurden, versteht es sich, dass der Fachmann verschiedene Modifikationen und Änderungen vornehmen könnte.

Claims (17)

  1. System zum Korrigieren von Fehlern in einem Computersystem, umfassend: ein Testsystem (15), in dem Fehler korrigiert werden sollen; ein Referenzsystem (16); und einen Steuermechanismus (20) zum Ausführen eines Programms (12) auf dem Referenzsystem und dem Testsystem, wobei der Steuermechanismus Folgendes beinhaltet: ein Mittel zum Ausführen von Befehlsfolgen des Programms auf dem Referenzsystem und auf dem Testsystem; ein Mittel zum Erkennen und Aufzeichnen von Zuständen des Referenzsystems und des Testsystems an vergleichbaren Punkten bei der Ausführung des Programms; und ein Mittel zum Vergleichen des erkannten Zustands des Referenzsystems und des Testsystems an auswählbaren vergleichbaren Punkten in der Befehlsfolge, einschließlich des Endes der Befehlsfolge; wobei das System dadurch gekennzeichnet ist, dass es des Weiteren Folgendes umfasst: ein Mittel zum Wiedergeben der Ausführung von Abschnitten der Befehlsfolge zwischen auswählbaren vergleichbaren Punkten sowohl auf dem Referenzsystem als auch auf dem Testsystem, wenn ein Unterschied bei verglichenen Zuständen der Systeme erkannt wird, wobei das Wiedergabemittel auf das Erkennen eines Unterschieds bei verglichenen Zuständen in der Weise reagiert, dass es einen Abschnitt der Befehlsfolge, der wiedergegeben werden soll, zurücksetzt, und wobei das Wiedergabemittel eine Suche zwischen einem letzten vergleichbaren Punkt, an dem die Zustände zu einem korrekten Vergleich im Test- und im Referenzsystem führten, und dem vergleichbaren Punkt, an dem der Unterschied bei den verglichenen Zuständen entdeckt wurde, ausführt.
  2. System nach Anspruch 1, wobei es sich bei der ausgeführten Suche um eine binäre Suche handelt.
  3. System nach Anspruch 1 oder Anspruch 2, wobei der Steuermechanismus (20) des Weiteren ein Mittel zum Einspeisen von externen Ereignissen in das Referenzsystem (16) umfasst, das des Weiteren ein Mittel zum Aufzeichnen von externen Ereignissen, die durch das Mittel zum Einspeisen von externen Ereignissen in das Referenzsystem (16) eingespeist wurden, umfasst; und wobei der Steuermechanismus (20) ein Mittel zum Verwenden von aufgezeichneten externen Ereignissen des Referenzsystems (16) als externe Ereignisse für das Testsystem (15) bei der Ausführung von Befehlsfolgen umfasst.
  4. System nach Anspruch 3, wobei der Steuermechanismus (20) ein Mittel zum Abändern der externen Ereignisse und der vergleichbaren Punkte, an denen externe Ereignisse eingespeist werden, umfasst.
  5. System nach Anspruch 1, wobei der Steuermechanismus (20) des Weiteren ein Mittel zum Einspeisen von externen Ereignissen in das Referenzsystem (16) umfasst, das des Weiteren ein Mittel zum Aufzeichnen von externen Ereignissen, die durch das Mittel zum Einspeisen von externen Ereignissen in das Referenzsystem eingespeist wurden, umfasst; und wobei der Steuermechanismus (20) ein Mittel zum Verwenden von aufgezeichneten externen Ereignissen des Referenzsystems als externe Ereignisse für das Referenzsystem (16) und das Testsystem (15) bei der Wiedergabe der Ausführung von Befehlsfolgen umfasst.
  6. System nach einem der vorangehenden Ansprüche, wobei das Mittel zum Erkennen und Aufzeichnen von Zuständen des Referenzsystems (16) und des Testsystems (15) an vergleichbaren Punkten bei der Ausführung des Programms Surrogatwerte erkennt und aufzeichnet, die Zustände in dem Referenzsystem (16) und dem Testsystem (15) repräsentieren.
  7. System nach Anspruch 1, wobei der Steuermechanismus (20) ein Mittel zum Wiedergeben der Ausführung von Abschnitten zwischen auswählbaren vergleichbaren Punkten der Befehlsfolge sowohl auf dem Referenzsystem als auch auf dem Testsystem, während die Anwendung von externen Ereignissen verändert wird, umfasst.
  8. System nach einem der vorangehenden Ansprüche, wobei das Mittel zum Vergleichen des erkannten Zustands des Referenzsystems und des Testsystems an auswählbaren vergleichbaren Punkten in der Befehlsfolge, einschließlich des Endes der Befehlsfolge, in der Lage ist, einen anderen Zustand auszuwählen.
  9. Computergestütztes Verfahren zum Erkennen von Fehlern in Computersystemen, das folgende Schritte umfasst: – Ausführen von Befehlsfolgen eines Softwareprogramms sowohl auf einem Referenzsystem (16) als auch auf einem Testsystem (15); – Erkennen und Aufzeichnen von Zuständen des Referenzsystems (16) und des Testsystems (15) an vergleichbaren Punkten bei der Ausführung des Programms; – Vergleichen des erkannten Zustands des Referenzsystems (16) und des Testsystems (15) an auswählbaren vergleichbaren Punkten in der Befehlsfolge, einschließlich des Endes der Befehlsfolge, gekennzeichnet durch: – Wiedergeben der Ausführung von Abschnitten der Befehlsfolge zwischen auswählbaren vergleichbaren Punkten sowohl auf dem Referenzsystem (16) als auch auf dem Testsystem (15) in Reaktion auf das Erkennen eines Unterschieds bei verglichenen Zuständen der Systeme, und – Durchführen einer Suche zwischen einem letzten vergleichbaren Punkt, an dem die Zustände zu einem korrekten Vergleich im Testsystem (15) und im Referenzsystem (16) führten, und dem vergleichbaren Punkt, an dem der Unterschied bei den verglichenen Zuständen entdeckt wurde.
  10. Computergestütztes Verfahren nach Anspruch 9, wobei der Schritt des Wiedergebens der Ausführung von Abschnitten zwischen auswählbaren vergleichbaren Punkten der Befehlsfolge sowohl auf dem Referenzsystem (16) als auch auf dem Testsystem (15), wenn ein Unterschied bei einem verglichenen Zustand der Systeme erkannt wird, das Ausführen einer binären Suche zwischen einem letzten vergleichbaren Punkt, an dem ein Zustand in dem Testsystem (15) und in dem Referenzsystem (16) korrekt verglichen wurde, und dem vergleichbaren Punkt, an dem der Unterschied bei dem verglichenen Zustand entdeckt wurde, beinhaltet.
  11. Computergestütztes Verfahren nach Anspruch 9, wobei der Schritt des Wiedergebens der Ausführung von Abschnitten zwischen auswählbaren vergleichbaren Punkten der Befehlsfolge sowohl auf dem Referenzsystem (16) als auch auf dem Testsystem (15), wenn ein Unterschied bei einem verglichenen Zustand der Systeme erkannt wird, das Ausführen einer binären Suche zwischen einem letzten vergleichbaren Punkt, an dem ein Zustand in dem Test- und dem Referenzsystem korrekt verglichen wurde, und dem vergleichbaren Punkt, an dem der Unterschied bei dem verglichenen Zustand entdeckt wurde, beinhaltet, wobei die Suchtechnik so ausgewählt wird, dass die Suchgeschwindigkeit erhöht wird.
  12. Computergestütztes Verfahren nach einem der Ansprüche 9 bis 11, wobei der Schritt des Erkennens und Aufzeichnens eines Zustands des Referenzsystems (16) und des Testsystems (15) an vergleichbaren Punkten bei der Ausführung des Programms das Erkennen und Aufzeichnen von Surrogatwerten beinhaltet, die Zustände in dem Referenzsystem (16) und dem Testsystem (15) repräsentieren.
  13. Computergestütztes Verfahren nach einem der Ansprüche 9 bis 12, das des Weiteren folgende Schritte enthält: Einspeisen von externen Ereignissen in das Referenzsystem (16); Aufzeichnen von externen Ereignissen, die von dem Mittel zum Einspeisen von externen Ereignissen in das Referenzsystem (16) eingespeist wurden; und Verwenden von aufgezeichneten externen Ereignissen des Referenzsystems als externe Ereignisse für das Testsystem (15) bei der Ausführung von Befehlsfolgen.
  14. Computergestütztes Verfahren nach Anspruch 13, das des Weiteren den Schritt des Abänderns der externen Ereignisse und der vergleichbaren Punkte, an denen externe Ereignisse eingespeist werden, umfasst.
  15. Computergestütztes Verfahren nach einem der Ansprüche 9 bis 12, das des Weiteren folgende Schritte umfasst: Einspeisen von externen Ereignissen in das Referenzsystem (16); Aufzeichnen von externen Ereignissen, die in das Referenzsystem (16) eingespeist wurden; und Verwenden von aufgezeichneten externen Ereignissen des Referenzsystems (16) als externe Ereignisse für das Referenzsystem (16) und das Testsystem (15) beim Wiedergeben der Ausführung von Befehlsfolgen.
  16. Computergestütztes Verfahren nach Anspruch 9, wobei der Schritt des Wiedergebens der Ausführung der Folge von Abschnitten zwischen auswählbaren vergleichbaren Punkten der Befehlsfolge sowohl auf dem Referenzsystem (16) als auch auf dem Testsystem (15) das Verändern der Anwendung von externen Ereignissen beinhaltet.
  17. Computergestütztes Verfahren nach einem der Ansprüche 9 bis 16, wobei der Schritt des Vergleichens des erkannten Zustands des Referenzsystems und des Testsystems an auswählbaren vergleichbaren Punkten in der Befehlsfolge, einschließlich des Endes der Befehlsfolge, das Auswählen des zu vergleichenden Zustands beinhaltet.
DE69831732T 1997-02-28 1998-02-13 Verfahren und gerät zum korrigieren von fehlern in einem rechnersystem Expired - Lifetime DE69831732T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US807542 1997-02-28
US08/807,542 US5905855A (en) 1997-02-28 1997-02-28 Method and apparatus for correcting errors in computer systems
PCT/US1998/002673 WO1998038575A1 (en) 1997-02-28 1998-02-13 Method and apparatus for correcting errors in computer systems

Publications (2)

Publication Number Publication Date
DE69831732D1 DE69831732D1 (de) 2006-02-09
DE69831732T2 true DE69831732T2 (de) 2006-06-29

Family

ID=25196627

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69831732T Expired - Lifetime DE69831732T2 (de) 1997-02-28 1998-02-13 Verfahren und gerät zum korrigieren von fehlern in einem rechnersystem

Country Status (9)

Country Link
US (1) US5905855A (de)
EP (1) EP0961972B1 (de)
JP (1) JP3654910B2 (de)
KR (1) KR100463809B1 (de)
CN (1) CN1229726C (de)
AT (1) ATE305633T1 (de)
CA (1) CA2276494C (de)
DE (1) DE69831732T2 (de)
WO (1) WO1998038575A1 (de)

Families Citing this family (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6393490B1 (en) * 1997-12-18 2002-05-21 Ian James Stiles Method and system for a programmatic feedback process for end-user support
US6795966B1 (en) * 1998-05-15 2004-09-21 Vmware, Inc. Mechanism for restoring, porting, replicating and checkpointing computer systems using state extraction
US6141635A (en) * 1998-06-12 2000-10-31 Unisys Corporation Method of diagnosing faults in an emulated computer system via a heterogeneous diagnostic program
US6205537B1 (en) 1998-07-16 2001-03-20 University Of Rochester Mechanism for dynamically adapting the complexity of a microprocessor
US8631066B2 (en) 1998-09-10 2014-01-14 Vmware, Inc. Mechanism for providing virtual machines for use by multiple users
US7516453B1 (en) * 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6978462B1 (en) 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US7013456B1 (en) 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US7275246B1 (en) 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US8121828B2 (en) * 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US6826748B1 (en) 1999-01-28 2004-11-30 Ati International Srl Profiling program execution into registers of a computer
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
WO2000054385A1 (en) * 1999-03-10 2000-09-14 Preview Systems, Inc. User transparent software malfunction detection and reporting
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
US6405326B1 (en) * 1999-06-08 2002-06-11 International Business Machines Corporation Limited Timing related bug detector method for detecting data races
US6549959B1 (en) 1999-08-30 2003-04-15 Ati International Srl Detecting modification to computer memory by a DMA device
WO2001028179A2 (en) * 1999-10-14 2001-04-19 Bluearc Uk Limited Apparatus and method for hardware implementation or acceleration of operating system functions
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US6295612B1 (en) * 2000-04-11 2001-09-25 Visteon Global Technologies, Inc. Method and system for independent monitoring of multiple control systems
US7389208B1 (en) * 2000-06-30 2008-06-17 Accord Solutions, Inc. System and method for dynamic knowledge construction
US6829719B2 (en) 2001-03-30 2004-12-07 Transmeta Corporation Method and apparatus for handling nested faults
DE10158317B4 (de) * 2001-11-28 2009-06-18 Siemens Ag Verfahren zur Generierung und Ausführung eines diversitären Programmablaufs
US6928509B2 (en) * 2002-08-01 2005-08-09 International Business Machines Corporation Method and apparatus for enhancing reliability and scalability of serial storage devices
CN100377097C (zh) * 2002-08-26 2008-03-26 联发科技股份有限公司 除错装置
US7457822B1 (en) 2002-11-01 2008-11-25 Bluearc Uk Limited Apparatus and method for hardware-based file system
US8041735B1 (en) 2002-11-01 2011-10-18 Bluearc Uk Limited Distributed file system and method
GB0225649D0 (en) * 2002-11-04 2002-12-11 Transitive Technologies Ltd Incremental validation
CN100424653C (zh) * 2003-01-17 2008-10-08 财团法人工业技术研究院 应用于分布式网际网络的Java脚本语言程序错误处理方法
US7921333B2 (en) * 2003-03-19 2011-04-05 Jds Uniphase Corporation Method and systems for providing data replay, reprocess and retrigger functions in an analyzer
CN100403273C (zh) * 2003-07-10 2008-07-16 中国科学院计算技术研究所 基于双向信息流的分布式监控方法
US20050144528A1 (en) * 2003-08-29 2005-06-30 Tim Bucher Computing device configuration manager
US7529897B1 (en) * 2003-12-31 2009-05-05 Vmware, Inc. Generating and using checkpoints in a virtual computer system
US7395468B2 (en) * 2004-03-23 2008-07-01 Broadcom Corporation Methods for debugging scan testing failures of integrated circuits
US7581150B2 (en) 2004-09-28 2009-08-25 Broadcom Corporation Methods and computer program products for debugging clock-related scan testing failures of integrated circuits
US7500165B2 (en) 2004-10-06 2009-03-03 Broadcom Corporation Systems and methods for controlling clock signals during scan testing integrated circuits
US7797684B2 (en) * 2005-11-04 2010-09-14 Oracle America, Inc. Automatic failure analysis of code development options
US8136101B2 (en) * 2005-11-04 2012-03-13 Oracle America, Inc. Threshold search failure analysis
US7774761B2 (en) * 2005-12-27 2010-08-10 International Business Machines Corporation Use of memory watch points and a debugger to improve analysis of runtime memory access errors
CN100435114C (zh) * 2006-01-18 2008-11-19 北京大学 基于截取器的软件在线校验方法
KR100800999B1 (ko) 2006-02-17 2008-02-11 삼성전자주식회사 프로그램의 실행흐름을 검사하는 방법 및 장치
US7587663B2 (en) 2006-05-22 2009-09-08 Intel Corporation Fault detection using redundant virtual machines
US7478226B1 (en) * 2006-09-29 2009-01-13 Transmeta Corporation Processing bypass directory tracking system and method
US7774583B1 (en) 2006-09-29 2010-08-10 Parag Gupta Processing bypass register file system and method
WO2008053709A1 (fr) * 2006-11-02 2008-05-08 Nec Corporation Dispositif et procédé de test de sélection de circuit intégré semi-conducteur
WO2008053723A1 (en) * 2006-11-02 2008-05-08 Nec Corporation Semiconductor integrated circuit and method for detecting fault in operation unit
US20090177866A1 (en) * 2008-01-08 2009-07-09 Choate Michael L System and method for functionally redundant computing system having a configurable delay between logically synchronized processors
JP4610623B2 (ja) * 2008-01-24 2011-01-12 日本電信電話株式会社 設定内容照合装置
CA2655507A1 (en) * 2008-02-22 2009-08-22 Pmt Pig Manure Treatment Limited Water treatment apparatus
US20090249303A1 (en) * 2008-03-31 2009-10-01 International Business Machines Corporation Random access to historical program state for enhanced debugging
JP5400873B2 (ja) * 2008-06-05 2014-01-29 インターナショナル・ビジネス・マシーンズ・コーポレーション ソフトウェア問題を識別するための方法、システム、およびコンピュータ・プログラム
US7958398B2 (en) * 2008-07-16 2011-06-07 International Business Machines Corporation Reference state information generation
JP5414292B2 (ja) * 2009-01-29 2014-02-12 ルネサスエレクトロニクス株式会社 不良解析装置と方法及びプログラム
US8081003B2 (en) * 2009-02-02 2011-12-20 Infineon Technologies Ag Circuit arrangement with a test circuit and a reference circuit and corresponding method
CN101493790B (zh) * 2009-02-27 2015-08-05 北京中星微电子有限公司 记录回放系统和记录回放方法
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US9052967B2 (en) * 2010-07-30 2015-06-09 Vmware, Inc. Detecting resource deadlocks in multi-threaded programs by controlling scheduling in replay
US8677355B2 (en) * 2010-12-17 2014-03-18 Microsoft Corporation Virtual machine branching and parallel execution
US9122873B2 (en) 2012-09-14 2015-09-01 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
CN103913694B (zh) * 2013-01-09 2018-03-27 恩智浦美国有限公司 用于检测集成电路的劣化的监视系统
US9251022B2 (en) * 2013-03-01 2016-02-02 International Business Machines Corporation System level architecture verification for transaction execution in a multi-processing environment
CN105895619B (zh) 2015-01-23 2021-06-25 恩智浦美国有限公司 用于监测集成电路上金属退化的电路
US9563541B2 (en) * 2015-04-27 2017-02-07 Sap Se Software defect detection identifying location of diverging paths
US9959197B2 (en) * 2015-08-31 2018-05-01 Vmware, Inc. Automated bug detection with virtual machine forking
US10031833B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10031834B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10042737B2 (en) * 2016-08-31 2018-08-07 Microsoft Technology Licensing, Llc Program tracing for time travel debugging and analysis
US10310977B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using a processor cache
US10324851B2 (en) 2016-10-20 2019-06-18 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using way-locking in a set-associative processor cache
US10489273B2 (en) 2016-10-20 2019-11-26 Microsoft Technology Licensing, Llc Reuse of a related thread's cache while recording a trace file of code execution
US10310963B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using index bits in a processor cache
US10540250B2 (en) 2016-11-11 2020-01-21 Microsoft Technology Licensing, Llc Reducing storage requirements for storing memory addresses and values
US10318332B2 (en) 2017-04-01 2019-06-11 Microsoft Technology Licensing, Llc Virtual machine execution tracing
US10296442B2 (en) 2017-06-29 2019-05-21 Microsoft Technology Licensing, Llc Distributed time-travel trace recording and replay
US10459824B2 (en) 2017-09-18 2019-10-29 Microsoft Technology Licensing, Llc Cache-based trace recording using cache coherence protocol data
US10558572B2 (en) 2018-01-16 2020-02-11 Microsoft Technology Licensing, Llc Decoupling trace data streams using cache coherence protocol data
US11907091B2 (en) 2018-02-16 2024-02-20 Microsoft Technology Licensing, Llc Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches
US10642737B2 (en) 2018-02-23 2020-05-05 Microsoft Technology Licensing, Llc Logging cache influxes by request to a higher-level cache
US10496537B2 (en) 2018-02-23 2019-12-03 Microsoft Technology Licensing, Llc Trace recording by logging influxes to a lower-layer cache based on entries in an upper-layer cache
US11074153B2 (en) 2019-04-01 2021-07-27 Microsoft Technology Licensing, Llc Collecting application state in a runtime environment for reversible debugging
US11113182B2 (en) * 2019-04-01 2021-09-07 Microsoft Technology Licensing, Llc Reversible debugging in a runtime environment
CN112612692B (zh) * 2020-12-07 2024-01-26 中标软件有限公司 一种linux系统性能调优的方法
JP7343197B2 (ja) * 2021-03-15 2023-09-12 Necプラットフォームズ株式会社 情報処理装置、情報処理システム、情報処理方法及びプログラム
US11852676B2 (en) * 2022-02-15 2023-12-26 Stmicroelectronics S.R.L. Integrated circuit with reference sub-system for testing and replacement

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3377541D1 (en) * 1982-06-03 1988-09-01 Lucas Ind Plc Control system primarily responsive to signals from digital computers
JPS58221453A (ja) * 1982-06-17 1983-12-23 Toshiba Corp 多重系情報処理装置
US4814971A (en) * 1985-09-11 1989-03-21 Texas Instruments Incorporated Virtual memory recovery system using persistent roots for selective garbage collection and sibling page timestamping for defining checkpoint state
US5434998A (en) * 1988-04-13 1995-07-18 Yokogawa Electric Corporation Dual computer system
US5086499A (en) * 1989-05-23 1992-02-04 Aeg Westinghouse Transportation Systems, Inc. Computer network for real time control with automatic fault identification and by-pass
US5138708A (en) * 1989-08-03 1992-08-11 Unisys Corporation Digital processor using current state comparison for providing fault tolerance
EP0455922B1 (de) * 1990-05-11 1996-09-11 International Business Machines Corporation Verfahren und Gerät zur Ableitung des Zustandes einer gespiegelten Einheit bei Reinitialisierung eines Systems
US5590277A (en) * 1994-06-22 1996-12-31 Lucent Technologies Inc. Progressive retry method and apparatus for software failure recovery in multi-process message-passing applications
US5737531A (en) * 1995-06-27 1998-04-07 International Business Machines Corporation System for synchronizing by transmitting control packet to omit blocks from transmission, and transmitting second control packet when the timing difference exceeds second predetermined threshold
US5729554A (en) * 1996-10-01 1998-03-17 Hewlett-Packard Co. Speculative execution of test patterns in a random test generator

Also Published As

Publication number Publication date
JP2001519939A (ja) 2001-10-23
CA2276494C (en) 2004-05-04
KR20000075835A (ko) 2000-12-26
EP0961972B1 (de) 2005-09-28
EP0961972A1 (de) 1999-12-08
CN1252875A (zh) 2000-05-10
JP3654910B2 (ja) 2005-06-02
US5905855A (en) 1999-05-18
WO1998038575A1 (en) 1998-09-03
CA2276494A1 (en) 1998-09-03
EP0961972A4 (de) 2002-12-04
ATE305633T1 (de) 2005-10-15
CN1229726C (zh) 2005-11-30
DE69831732D1 (de) 2006-02-09
KR100463809B1 (ko) 2004-12-29

Similar Documents

Publication Publication Date Title
DE69831732T2 (de) Verfahren und gerät zum korrigieren von fehlern in einem rechnersystem
DE3787431T2 (de) Verfahren zur Generierung einer Kandidatenliste von fehlerhaften Schaltungselementen und Verfahren zur Isolierung von Fehlern in einer logischen Schaltung unter Verwendung dieser Kandidatenliste.
DE60010420T2 (de) Automatisches Regressionstesten von Arbeitsplatz-Software
DE69033360T2 (de) Simulation von ausgewählten Logik-Schaltungsentwürfen
DE69021659T2 (de) Verfahren und Vorrichtung zur reihenweisen Parallelprogrammfehlersuche.
DE60313652T2 (de) Verfahren und gerät zur kontrolle der umwandlung von programm-kodes
DE2735397C2 (de) Überwachungseinrichtung für eine programmgesteuerte Maschine
DE10039538B4 (de) Vorrichtung und Verfahren zum Analysieren der Leistung eines Computerprogramms
DE3001557A1 (de) Abstandssimulation durch fernsteuerung an einem pult einer datenverarbeitungsanlage
DE3903835A1 (de) Verfahren und vorrichtung zum pruefen von mikroprozessorsystemen unter verwendung von speicheremulationstechniken
DE2515297A1 (de) Pruefsystem fuer logische netzwerke mit simulatororientiertem fehlerpruefgenerator
DE3508291A1 (de) Realzeit-datenverarbeitungssystem
DE69107476T2 (de) Vorrichtung für eine in-circuit-prüfung mit einem minimalspeicher.
DE2244402A1 (de) Datenverarbeitungsanlage
DE10127170A1 (de) Fehlersuchverfahren und Fehlersuchvorrichtung
EP0368190A1 (de) Verfahren zur Beobachtung des zeitlichen Ablaufs eines von einem Rechnersystem ausgeführten Objektprogrammes und Beobachtungswerkzeug zur Durchführung dieses Verfahrens
DE19983098B4 (de) Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren
DE102012224276B4 (de) Verzögerte Ausführung auf mehreren Prozessoren
DE102014102551A1 (de) Maschine und Verfahren zum Evaluieren von fehlschlagenden Softwareprogrammen
WO1992018944A1 (de) Verfahren zur verifikation datenverarbeitender systeme
DE69128908T2 (de) Verfahren zum Durchführen von erlässlichen Befehlen in einem Rechner
DE69219662T2 (de) Verfahren zur On-Line-Modifizierung von komprimierten digitalen Prüfvektoren
DE3587620T2 (de) Logikanalysator.
WO2011047901A1 (de) Verfahren und vorrichtung zum testen eines systems mit zumindest einer mehrzahl von parallel ausführbaren softwareeinheiten
DE68924507T2 (de) Verfahren und Gerät zur Markierung von Emulationsanalysezuständen.

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: INTELLECTUAL VENTURE FUNDING LLC, CARSON CITY,, US