DE19781620B4 - Bus-Patcher - Google Patents

Bus-Patcher Download PDF

Info

Publication number
DE19781620B4
DE19781620B4 DE19781620T DE19781620T DE19781620B4 DE 19781620 B4 DE19781620 B4 DE 19781620B4 DE 19781620 T DE19781620 T DE 19781620T DE 19781620 T DE19781620 T DE 19781620T DE 19781620 B4 DE19781620 B4 DE 19781620B4
Authority
DE
Germany
Prior art keywords
bus
patcher
coupled
event
protocol
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE19781620T
Other languages
English (en)
Other versions
DE19781620T1 (de
Inventor
Gerald A. Portland Budelman
William A. Beaverton Hobbs
Stephen J. Aloha Peters
Tsvika Kurts
Nitin V. Portland Sarangdhar
Kenneth B. Hillsboro Oliver
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE19781620T1 publication Critical patent/DE19781620T1/de
Application granted granted Critical
Publication of DE19781620B4 publication Critical patent/DE19781620B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/349Performance evaluation by tracing or monitoring for interfaces, buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/004Error avoidance
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0631Management of faults, events, alarms or notifications using root cause analysis; using analysis of correlation between notifications, alarms or events based on decision criteria, e.g. hierarchy, tree or time analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0811Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking connectivity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0823Errors, e.g. transmission errors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/12Network monitoring probes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/18Protocol analysers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/221Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test buses, lines or interfaces, e.g. stuck-at or open line faults
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/25Testing of logic operation, e.g. by logic analysers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/83Indexing scheme relating to error detection, to error correction, and to monitoring the solution involving signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Environmental & Geological Engineering (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Small-Scale Networks (AREA)

Abstract

Bus-Patcher zum Vermeiden eines bevorstehenden Störereignisses (bug), welches ein Versagen (failure) wenigstens eines Elements eines Bus-Kommunikationssystems bewirken würde, wobei das Bus-Kommunikationssystem wenigstens einen Bus und wenigstens zwei mit dem Bus gekoppelte und in Übereinstimmung mit einem Busprotokoll kommunizierende Busteilnehmer aufweist, wobei das bevorstehende Störereignis durch das Auftreten einer Bus-Störereignis-Signatur auf dem Bus gekennzeichnet ist, wobei der Bus-Patcher aufweist:
einen mit dem Bus gekoppelten Bus-Überwacher zum Überwachen einer laufenden Kommunikation auf dem Bus, um die Bus-Störereignis-Signatur zu erkennen, und
einen mit dem Bus gekoppelten Störer zum Modifizieren der Buskommunikation derart, daß das Störereignis vermieden wird.

Description

  • Die vorliegende Erfindung bezieht sich allgemein auf Verbesserungen in Buskommunikationssystemen. Insbesondere bezieht sich die Erfindung auf ein Verfahren und eine Einrichtung zum Verhindern des Auftretens von Fehlern in einem Computersystem durch Hinzufügen eines Patchers (Fehlerkorrektors) zu dem System, welcher den Bus bezüglich des Auftretens eines Busereignisses überwacht, welches möglicherweise ein Fehler in dem System bewirken würde, und welcher dann in das normale Busverhalten eingreift, wodurch er das Ereignis daran hindert, aufzutreten oder von anderen Teilnehmern an dem Bus beobachtet zu werden.
  • Computersysteme oder andere logische Systeme können Bauelemente oder Kombinationen von Elementen enthalten, welche bei Auftreten eines speziellen Satzes von Bedingungen verschiedenen Fehlermechanismen unterworfen sein können. Jede derartige Bedingung kann als "bug" ("Fehler") bezeichnet werden. Jeder Fehler hat eine "Fehler-Signatur" (Kennzeichnung) , welche den Satz von Umständen definiert, welche ein Auftreten des Fehlers bewirken.
  • Beispielsweise kann es sein, daß eine Systemkomponente fehlerhaft arbeitet, wenn ein erstes spezielles Ereignis unmittelbar von einem zweiten speziellen Ereignis gefolgt wird, aber es kann sein, daß es nicht fehlerhaft arbeitet, wenn irgendein weiteres Ereignis zwischen dem ersten und dem zweiten Ereignis auftritt. Oder es kann sein, daß eine erste Komponente ihr Verhalten ändert oder möglicherweise sogar abstürzt, wenn eine zweite Komponente ein spezielles Ereignis dann ausgibt, wenn sich die erste Komponente in einem speziellen Zustand befindet. Derartige Ausfallmechanismen sind im Stand der Technik gut bekannt.
  • In Computersystemen oder anderen logischen oder Kommunikationssystemen, die im folgenden grundsätzlich als Computersysteme bezeichnet werden, können zahlreiche dieser Fehler-Signaturen sich um Ereignisse drehen, die auf einem Bus auftreten, welcher eine Mehrzahl von Teilnehmern verbindet. Beispielsweise kann ein Computersystem einen Prozessor, einen Chipsatz und andere Teilnehmer enthalten, die sämtlich miteinander über einen Systembus gekoppelt sind. Es ist klar, daß es Fehler-Signaturen geben kann, welche spezielle Kommunikationen zwischen diesen Teilnehmern über den Bus einschließen.
  • Andererseits können Fehler-Signaturen innerhalb einer gedrängteren Umgebung vorhanden sein, in welcher ein spezielles Ereignis oder eine Serie von Bedingungen vollständig innerhalb eines einzigen Chips oder eines anderen Teilnehmers einen internen oder externen Fehler bewirken kann. Diese Arten von Fehlern können eine Vielzahl von Funktionseinheiten einschließen, die miteinander durch einen Intra-Chip-Bus gekoppelt sind, oder sie können sogar eine Sequenz von Zuständen innerhalb einer einzigen Einheit einschließen.
  • Die GB 2 292 470 A beschreibt eine Einrichtung für ein Rom-patching. Zwei Teilnehmer sind über einen Bus verbunden, ein Breakpoint-Detektor ist mit dem Bus gekoppelt und überwacht das Auftreten bestimmter Breakpoint-Adressen.
  • Aus der US 5179696 ist ein Debugging-Mikroprozessor bekannt, der auf ein Signal hin einen Bus-Zyklus verlängern kann. Der bekannte Mikroprozessor wird in Mikroprozessor-Entwicklungssystemen verwendet.
  • Die EP 453 268 B1 beschreibt einen Mikroprozessor, der Bus-Zyklen einfügen kann, um interne Informationen des Prozessors auszugeben. Diese Informationen werden für eine Analyse einer Emulation neuer Systeme verwendet.
  • Bisher wurden Logikanalysatoren und In-Circuit-Emulatoren verwendet, um den Computerbusverkehr zu überwachen, um die Quelle und die Ursache eines beobachteten Systemfehlers festzustellen. Unglücklicherweise liefern diese Werkzeuge nur Informationen, welche verwendet werden können, um eine Neudefinition und Neuherstellung (ein neues Stepping) des den Fehler aufweisenden Bauelements derart auszuführen, daß dieses neue Stepping des Bauelements den Fehler nicht zeigt. Sie können aber nicht verwendet werden, um das Auftreten des Fehlers in vorhandenen Bauelementen zu verhindern.
  • Außerdem ist es klar, daß spezielle Arten von "blockierenden Fehlern" andere Fehler "verstecken" können. Die versteckten Fehler treten nur dann auf und können zur ihrer Beseitigung nur dann entdeckt werden, sobald die blockierenden Fehler beseitigt worden sind. Oder es kann sein, daß sie derart selten auftreten, daß sie von anderen Fehlern maskiert werden können. Wenn es eine Reihe dieser blockierenden Fehler gibt, kann die alleinige Verwendung von Logik-analysatoren und In-Circuit-Emulatoren eine große Anzahl von Steppings erfordern, um ein funktionell korrektes, fehlerfreies Bauelement zu erreichen. Dies kann eine beträchtliche Menge an Zeit, Geld und Ingenieurleistungen erfordern. Schließlich neigen die Logikanalysatoren und In-Circuit-Emulatoren dazu, teuer zu sein, und sie sind vollständig ungeeignet zur Verwendung bei der Fehlerbeseitigung in einer großen Anzahl installierter Systeme auf der Basis eines laufenden Betriebs.
  • Es ist folglich erwünscht, ein verbessertes Mittel zum Erfassen des Auftretens oder eines bevorstehenden Auftretens eines Fehlers entsprechend seiner Fehler-Signatur und zum Verhindern des Auftretens des Fehlers zur Verfügung zu stellen. Es ist wünschenswert, daß diees kein Stepping des r Bauelements erfordert. Es ist ferner erwünscht, daß dies unaufwendig bei Bauelementen in Produktionsstückzahlen zu implementieren ist. Es ist darüber hinaus erwünscht, daß es programmierbar ist, so daß es verwendet werden kann, um später entdeckte Fehler in einer installierten Basis von Systemen zu beseitigen.
  • Die vorliegende Erfindung stellt zur Lösung der oben genannten Aufgaben einen Bus-Patcher mit den Merkmalen des Anspruchs 1 zur Verfügung. Die Erfindung stellt außerdem ein Verfahren zum Vermeiden eines Störereignisses mit den Merkmalen des Anspruch 39 sowie ein Verfahren zum Analysieren der funktionellen Richtigkeit eines elektronischen Bauelements nach Anspruch 40 zur Verfügung.
  • Der Bus-Patcher (busorientierte Fehlerkorrektureinrichtung) enthält ein Protokollüberwacher, welcher mit dem Bus verwendet werden kann, eine Zustandmaschine, welche das Auftreten bekannter Fehler-Signaturen auf dem Bus überwachen kann, und einen Störer, welcher auf dem Bus eingreifen kann, um das Auftreten derjenigen Fehler zu verhindern, welche diese Signaturen aufweisen. Der Protokollüberwacher, die Zustandsmaschine und/oder der Störer können programmierbar sein.
  • Der Bus-Patcher kann während der Fehlerbeseitigung auf Silizium-Ebene verwendet werden, um blockierende Fehler zu verhindern und Fehler aufzufinden, die hinter diesen versteckt sind, um es zu ermöglichen, daß die blockierenden und versteckten Fehler in weniger Steppings des Siliziums beseitigt werden.
  • 1 ist ein Blockschaltbild der Hauptkomponenten des Bus-Patchers.
  • 2 veranschaulicht ein vereinfachtes Computersystem gemäß dem Stand der Technik, das zwei mit einem Bus gekoppelte Teilnehmer enthält.
  • 3 veranschaulicht ein durch den Bus-Patcher erweitertes Computersystem, in welchem der Bus-Patcher direkt mit dem Bus gekoppelt ist.
  • 4 veranschaulicht ein Computersystem, bei welchem der Bus-Patcher zwischen einen Teilnehmer und dem Bus eingefügt ist.
  • 5 veranschaulicht ein Computersystem etwas detaillierter, wobei ein Prozessor und eine Speichersteuereinrichtung als mit einer Busbrücke gekoppelte Teilnehmer gezeigt sind, und wobei ferner dargestellt ist, daß der Bus-Patcher an einem anderen Bus verwendet werden kann, als an dem Hauptprozessor- oder Systembus.
  • 6 veranschaulicht, daß der Bus-Patcher sich in einer Vielzahl von Systemteilnehmern aufhalten kann.
  • 7 ist eine Seitenansicht einer physischen Implementierung des Bus-Patchers, bei welcher sich der Bus-Patcher auf einer zwischengeschalteten Platine aufhält, welche zwischen einen Teilnehmer, wie beispielsweise einen Prozessor, und den herkömmlichen Steckplatz des Teilnehmers auf der Mutterplatine oder Tochterkarte installiert ist.
  • 8 ist ein modifiziertes physisches Ausführungsbeispiel, bei welchem die zwischengeschaltete Platine eine Mehrzahl von verbundenen Karten aufweist.
  • 9 ist ein Zeitdiagramm, daß das Verhalten verschiedener Signale gemäß einer beispielhaften Fehler-Signatur, welche einen Fehler in dem System verursachen wird, veranschaulicht.
  • 10 ist ein Zeitdiagramm, das veranschaulicht, wie das Verhalten bestimmter dieser Signale von dem Bus-Patcher modifiziert werden kann, um den Fehler zu vermeiden.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • 1 veranschaulicht ein Ausführungsbeispiel des Bus-Patchers der vorliegenden Erfindung. Der Bus-Patcher enthält einen Empfänger zum Ankoppeln an den Bus oder das Bauelement, welches einen Fehler zeigt. Bei einem Ausführungsbeispiel dient der Empfänger dem Koppeln des Bus-Patchers mit einem Systembus oder einem Prozessorbus eines Computersystems.
  • Es ist klar, daß verschiedene Bauelemente in einem Computersystem vorteilhafterweise ein vordefiniertes Busprotokoll benutzen können, um sich gegenseitig über den Bus Signale auszutauschen. Folglich umfaßt der Bus-Patcher einen mit dem Empfänger gekoppelten Protokollüberwacher, welcher die Signale, Ereignisse, Transaktionen oder anderen Elemente des Protokolls, wie sie auf dem Bus erscheinen, überwacht.
  • Der Bus-Patcher umfaßt ferner eine Zustandsmaschine oder eine andere logische Einrichtung, die mit dem Protokollüberwacher gekoppelt ist. Die Zustandsmaschine kennt die Fehler-Signaturen (bug signatures) der zu korrigierenden und dadurch zu vermeidenden Fehler.
  • Ein Störer (perturber) ist mit der Zustandsmaschine gekoppelt und von dieser abhängig. Sobald die Zustandsmaschine das Auftreten oder das bevorstehende Auftreten eines Fehlers entsprechend der Fehler-Signatur erkennt, unternimmt der Störer eine geeignete Aktion, um den Fehler zu vermeiden. Der Störer ist über einen Treiber wiederum mit dem Computersystembus gekoppelt.
  • Jedes der Grundelemente des Bus-Patchers kann programmierbar sein. Um programmierbar zu sein, kann ein Element eine Programmiereinrichtung aufweisen, wie beispielsweise eine programmierbare Gatter-Matrix, eine programmierbare Matrixlogik, eine programmierbare logische Matrix, einen Kundenwunschschaltkreis, einen Nur-Lese-Speicher, einen Speicher mit wahlfreiem Zugriff oder eine andere programmierbare Einrichtung. Bei Ausführungsbeispielen, bei denen eines oder mehrere der Elemente programmierbar ist, umfaßt der Bus-Patcher eine Programmiereingabeeinrichtung zum Aufnehmen eines Programms. Beispielsweise kann der Bus-Patcher eine JTAG-Abtastkette, einen speziellen I/O-Port, den Bus selbst oder eine andere geeignete Einrichtung zum Empfangen der Programmierinformationen verwenden.
  • Alternativ kann auch eine fest codierte Logik verwendet werden, sofern es nicht erforderlich ist, daß die Elemente programmierbar sind.
  • Der Protokollüberwacher kann eine Programmiereinrichtung enthalten, sofern es gewünscht ist, den Bus-Patcher mit einem Busprotokoll zusammenarbeiten zu lassen, welches Änderungen unterworfen ist, oder sofern der Bus-Patcher mit zwei oder mehreren Arten von Computersystemen mit unterschiedlichen Bussen zusammenarbeiten soll.
  • Noch mehr erwünscht ist es, daß die Zustandsmaschine eine Programmiereinrichtung umfaßt, um bestimmen zu können, welche Fehler-Signaturen korrigiert werden sollen. Durch Eingabe zusätzlicher Fehler-Signaturen in die Programmiereinrichtung der Zustandsmaschine wird der Bus-Patcher in die Lage versetzt, zusätzliche Fehler überwachen und verhindern zu können. Dies gestattet es, daß der Bus-Patcher aktualisiert wird, wenn neue Fehler entdeckt werden. Es ist außerdem möglich, den Bus-Patcher auf ein spezielles System zuzuschneiden, in welchem er installiert wird. Beispielsweise könnte ein Anwendungsprogramm eine Identifizierung des Systems bestimmen und selektiv bestimmte Fehler-Signaturen dementsprechend laden.
  • Schließlich kann auch der Störer eine Programmiereinrichtung enthalten. Dies gestattet eine Neufestlegung der bei Erfassung eines bestimmten Fehlers zu unternehmenden Aktionen und das Hinzufügen neuer Aktionen bei der Entdeckung neuer Fehler-Signaturen. Die Zustandsmaschine und der Störer können grundsätzlich gemeinsam aktualisiert oder umprogrammiert werden, weil eine Fehler-Signatur und die zum Verhindern ihres Auftretens zu unternehmende Aktion üblicherweise ein Paar bilden.
  • Bei einem Ausführungsbeispiel können die Programmierbarkeit sowohl der Fehler-Signaturen als auch der Störaktionen gemeinsam in einem einzigen Bauelement, beispielsweise der Zustandsmaschine, gespeichert werden. In verschiedenen Ausführungsbeispielen können die Zustandsmaschine und der Störer als ein einziges Element oder andererseits als eine Unterkomponente des jeweils anderen Elements implementiert werden.
  • Es ist klar, daß die Fähigkeit des Bus-Patchers, Fehler zu verhindern, um so stabiler wird, je vollständiger die Kenntnis des Bus-Patchers über das Gesamtsystem ist. Beispielsweise kann es wünschenswert sein, daß der Bus-Patcher mit vollständigen Informationen über die Adreßabbildungen des Computersystems versehen wird. Dies würde es dem Bus-Patcher gestatten, systemabhängige Fehler einzufangen. Zusätzlich kann es wünschenswert sein, daß der Bus-Patcher Informationen über den I/O-Bus (wie beispielsweise einen PCI-Bus) hat.
  • Es kann darüber hinaus dem Patcher ermöglichen, unnötiges Patching zu vermeiden, indem Fehler-Signaturen feiner strukturiert erfaßbar sind. Beispielsweise kann es sein, daß ein Fehler bei der sequentiellen Ausgabe von zwei Bustransaktionen, die ein spezielles Attribut haben, auftritt, aber nur in dem Falle, wenn sie von dem gleichen Teilnehmer kommen. Indem die zusätzliche Information vorhanden ist, daß der Fehler nur dann auftritt, wenn der gleiche Teilnehmer die beiden Transaktionen ausgibt, ist der Bus-Patcher in der Lage, dann ein Patching zu vermeiden, wenn die beiden Transaktionen von unterschiedlichen Teilnehmern herrühren. Dieses unnötige Patching könnte einerseits dazu führen, daß eine geringfügige Leistungsverschlechterung des Systems auftritt, oder es könnte tatsächlich einen Fehler, einen Absturz oder ein Aufhängen verursachen.
  • Die Programmierinformationen können beispielsweise Informationen darüber umfassen, welche Busleitungen, Ereignisse oder Transaktionen zu überwachen sind, ferner spezielle zu überwachende Datenwerte, vorgegebene Adreßabbildungen, spezielle Sequenzen von Ereignissen, bestimmte Ausgabesignale oder Ergebnisse oder dergleichen. Diese definieren die Fehler-Signatur. Es ist klar, daß die Fehler-Signaturen eine große Vielzahl von Daten, Bedingungen, Zuständen, Ereignissen und dergleichen umfassen können.
  • Die Störaktionen oder Eingriffe können ebenfalls eine große Vielzahl von Aktionen umfassen. Grundsätzlich können sie das Busprotokoll, das Bus-Pipelining, elektrische Größen des Systems, die direkten Kommunikationen mit den Teilnehmern, dem I/O-Bus, Seitenbandsignale oder dergleichen einschließen.
  • Beispiele von Busprotokolleingriffen umfassen: die Verzögerung eines Bussignals oder einer Transaktion für eine Zeitdauer, wie beispielsweise eine vorgegebene Anzahl von Takten, das Anlegen oder das Wegnehmen eines Signals, das Erweitern eines Buszyklus, das Unterbrechen einer Buszuteilung, die Annullierung einer abgeschlossenen Transaktion, die Ausgabe eines Interrupts oder selbst das Ausgeben eines Rücksetzsignals, um den gesamten Computer neu zu starten, oder andere derartige gültige Verwendungen des Busprotokolls selbst. In diesen Fällen wird die Störung beziehungsweise der Eingriff innerhalb der Grenzen des Busprotokolls ausgeführt, um die Integrität und Bestimmtheit des Systems aufrechtzuerhalten.
  • Alternativ kann die Störaktion/der Eingriff eine Verletzung des Busprotokolls einschließen. Beispiele umfassen: Die Ausgabe eines Signals zu einem verbotenen Zeitpunkt, die Ausgabe eines Signals in einer verbotenen Kombination in Bezug auf andere Signale oder dergleichen. Grundsätzlich sind solche verletzenden Störungen weniger wünschenswert als solche, welche innerhalb des Busprotokolls liegen, weil sie einen geringeren Determinismus und größere Möglichkeiten für die tatsächliche Erzeugung eines Fehlers bieten.
  • Einige Störungen, welche das Busprotokoll verletzen, können jedoch akzeptabel sein, sofern sie es in einer Weise verletzen, die bekannte Ergebnisse erzeugt, aus welchen das System sich regenerieren kann. Beispielsweise ist das Erzwingen eines Paritätsfehlers durch Änderung des Werts eines einzelnen Datensignals oder einer Bitleitung grundsätzlich gut regenerierbar, und es kann ausreichend sein, um einige Fehler-Signaturen zu überwinden.
  • In einigen Fällen kann es ein Nebeneffekt der Störaktion anstelle des direkten Einwirkens der Störaktion selbst sein, welcher den Fehler tatsächlich vereitelt. Beispielsweise kann es sein, daß ein erzwungener Paritätsfehler nicht direkt den Fehler vermeidet, aber die korrigierende Aktion, welche das System unternimmt, um einen Paritätsfehler zu korrigieren, kann bewirken, daß die Signatur des Fehlers vermieden wird, damit seine unerwünschten Wirkungen annulliert oder korrigiert werden.
  • Elektrische Störungen, wie beispielsweise das Injizieren eines Rauschens, das Übersteuern eines Signals oder das Anlegen einer illegalen Signalspannung, sind grundsätzlich weniger erwünscht als Protokollstörungen, können aber in einigen System oder bei einigen Bussen geeignet sein. Beispielsweise erfassen einige Daten-Sendeempfänger aktuelle logische Werte und erkennen das Vorhandensein eines Wettbewerbs, was zu Neuversuchen führen kann.
  • Bei der Ausführungsform, bei welcher das Computersystem ein System mit einer Intel-Architektur ist, kann die Störung das Anlegen oder das Wegnehmen beispielsweise eines der folgenden Signale umfassen: HIT#, HITM#, AERR#, BNR#, BPRI#, BINIT#, BERR#, INIT#, RESET# und DBSY#.
  • Schließlich kann der Bus-Patcher irgendeine herkömmliche Einrichtung zum Freigeben und Sperren seiner Schaltung aufweisen. Zur Vereinfachung ist die Verbindung zwischen der Freigabe/Sperr-Einheit und den anderen Einheiten nicht gezeigt. Für den Fachmann ist es klar, daß es diese Einheit einer externen Logik gestattet, den Bus-Patcher herunterzuschalten, so daß der Bus-Patcher in einen Zustand geringen Energieverbrauchs eintritt, wenn er nicht gebraucht wird. In diesem Modus schaltet die Freigabe/Sperr-Einheit den Bus-Patcher in Abhängigkeit von dem externen Freigabesignal wieder hoch. Alternativ kann die Freigabe/Sperr-Einheit intern ohne das Erfordernis eines externen Eingangssignals ausgelöst werden, um den Bus-Patcher automatisch in einen Schlaf-Modus zu versetzen, wenn er nicht in Benutzung ist. In diesen Modus kann die Freigabe/Sperr-Einheit in einer dem Fachmann bekannten herkömmlichen Weise erfassen, wenn der Bus-Patcher wieder benötigt wird.
  • 2 veranschaulicht ein Computersystem gemäß dem Stand der Technik, bei welchem ein erster Teilnehmer (A) und ein zweiter Teilnehmer (B) über einen Bus miteinander gekop pelt sind, um miteinander zu kommunizieren. Der Einfachheit halber zeigt 2 nur zwei Teilnehmer. Es ist klar, daß eine beliebige Anzahl von Teilnehmern in einem gegebenen Computersystem vorhanden sein kann. In verschiedenen Ausführungsbeispielen, von denen keines speziell in 2 gezeigt ist, kann ein Teilnehmer ein Prozessor oder ein Co-Prozessor oder ein Signalprozessor oder eine Busbrücke, wie beispielsweise eine Brücke zwischen einem Prozessorbus und einem zum Verbinden von Zusatzplatinen verwendeten Bus (beispielsweise einem PCI-Bus oder einem ISA-Bus), oder eine Speichersteuereinrichtung oder eine Cache-Steuereinrichtung oder eine DMA-Einrichtung oder ein anderer derartiger Teilnehmer sein.
  • 3 veranschaulicht ein einfaches System wie in 2, allerdings mit dem Zusatz des Bus-Patchers. Wie in 3 gezeigt ist, kann der Bus-Patcher direkt und unabhängig mit dem gleichen Bus gekoppelt sein, mit welchem die anderen Teilnehmer gekoppelt sind. In diesem Modus ist der Patcher eine selbstständige Komponente in Bezug auf die anderen Teilnehmer.
  • Alternativ kann 3 so verstanden werden, daß sie ein System veranschaulicht, welches sich im wesentlichen innerhalb der Begrenzungen eines einzelnen Chips, wie beispielsweise eine Mikroprozessor, befindet, bei welchem die verschiedenen Teilnehmer einfach die verschiedenen internen Einheiten des Chips sind und der Bus ein interner Bus ist, über welchen die Einheiten miteinander kommunizieren. Bei diesem alternativen Ausführungsbeispiel ist es nicht erforderlich, daß der Bus für die Außenwelt sichtbar ist.
  • 4 veranschaulicht ein geringfügig unterschiedliches Ausführungsbeispiel, bei welchem der Bus-Patcher zwischen einem Teilnehmer und dem Bus angeordnet ist. Es ist erwünscht, aber nicht erforderlich, daß der Teilnehmer, bei dem der Bus-Patcher eingekoppelt ist, derjenige ist, welcher entweder den Fehler verursacht oder infolge des Fehlers ausfällt.
  • 5 veranschaulicht etwas detaillierter ein besonders nützliches Ausführungsbeispiel der Erfindung, bei welchem die Teilnehmer einen Prozessor, eine Busbrücke und eine Speichersteuereinrichtung mit zugehörigem Speicher umfassen. Bei einem derartigen Ausführungsbeispiel ist der Prozessor ein Pentium-Pro-Prozessor der Intel Corporation und die Busbrücke koppelt den Prozessorbus mit einem PCI-Bus.
  • 5 veranschaulicht ferner, daß der Bus-Patcher nicht direkt mit dem Prozessorbus gekoppelt sein muß. Bei dem gezeigten Ausführungsbeispiel ist der Bus-Patcher mit dem PCI-Bus gekoppelt, um solche Fehler zu korrigieren, die auf diesem Bus auftreten, wie beispielsweise in Kommunikationen zwischen einer PCI-Zusatzkarte (nicht gezeigt) und entweder einer weiteren PCI-Zusatzkarte (nicht gezeigt) oder dem PCI-Brücken-Chip. Bei einem anderen (nicht gezeigten) Ausführungsbeispiel könnte der Bus-Patcher mit dem Bus zwischen der Speichersteuereinrichtung und dem Speicher gekoppelt sein, um dort auftretende Fehler zu korrigieren. In noch einem anderen (nicht gezeigten) Ausführungsbeispiel könnte der Bus-Patcher mit mehr als einem Bus, beispielsweise mit dem Prozessorbus und dem PCI-Bus gekoppelt sein, um Fehler in einer ebenfalls mit den Bussen gekoppelten Busbrücke zu beseitigen.
  • 6 veranschaulicht, daß der Patcher nicht eine selbständige Einrichtung zu sein braucht. Statt dessen kann der Bus-Patcher direkt in einem oder mehreren Teilnehmern eingeschlossen sein. Es wird angenommen, daß der Bus-Patcher grundsätzlich eine sehr kleine Fläche irgendeines Teilnehmerchips einnimmt, und daß es folglich vorteilhaft sein kann, ihn in einen Teilnehmer oder gar in sämtlichen Teilnehmern standardmäßig vorsichtshalber einzuschließen. In diesem Modus kann es wünschenswert sein, den Patcher mit einer Einrichtung (nicht gezeigt) zum Freigeben und Sperren des Patchers auszustatten, so daß der Patcher keine Aktivität unternimmt und keine Energie verbraucht, solange er nicht erforderlich ist und freigegeben wurde. Irgendeine geeignete herkömmliche Freigabeeinrichtung kann für diesen Zweck verwendet werden.
  • 6 veranschaulicht ferner, daß die Funktionalität eines einzelnen Patchers über verschiedene Teilnehmer verteilt werden könnte. Beispielsweise könnte der Protokollüberwacher in den Prozessor aufgenommen werden, da der Prozessor im allgemeinen das Bauelement darstellt, welches das Busprotokoll definiert, an welches sich alle anderen Teilnehmer anpassen. Der Störer könnte in die Busbrücke aufgenommen werden, sofern dies der Teilnehmer ist, der bei Auftreten eines zu korrigierenden Fehlers einem Ausfall unterworfen wäre. Die Zustandsmaschine kann überall dort angeordnet werden, wo es sich anbietet. In einem solchen verteilten Ausführungsbeispiel kann der Systembus selbst verwendet werden, um Signale zwischen den Elementen des Bus-Patchers auszutauschen. In einigen Fällen kann die bloße Tatsache, daß der Systembus für diesen Verkehr verwendet wird, der Notwendigkeit eines Störers zuvorkommen; die Zwischen-Element-Signalisierung selbst kann eine ausreichende Störung darstellen, um die Fehler-Signatur zu überwinden. Alternativ kann ein spezieller Patcher-Bus (nicht gezeigt) die Patcher-Komponenten miteinander koppeln.
  • Es ist klar, daß die Auswahl eines der Ausführungsbeispiele, d.h., an welcher Stelle der Bus-Patcher eingekoppelt wird, teilweise von der Natur des Busses selbst bestimmt werden kann. Beispielsweise kann sich ein Verdrahtetes-ODER-Bus vorteilhafterweise zur Verwendung bei dem Ausführungsbeispiel gemäß 3 eignen. Ein Verdrahtetes-ODER-Bus ist vorteilhaft, weil er es einem beliebigen unabhängigen Teilnehmer – einschließlich einem Teilnehmer, für welchen das System nicht speziell konstruiert worden ist, wie beispielsweise einem Bus-Patcher – gestattet, ein Signal anzulegen, welches von sämtlichen anderen Teilnehmern an den Bus erkannt wird.
  • 7 zeigt eine mögliche physische Implementierung des Bus-Patchers zur Verwendung in einem Computersystem, wie es in 4 gezeigt ist, bei welchem der Bus-Patcher zwischen einem Teilnehmer und dem Bus, mit welchem der Teilnehmer andernfalls gekoppelt wäre, zwischengeschaltet ist. 7 veranschaulicht dem Teilnehmer als den Prozessor, vor welchen der Bus-Patcher eingekoppelt ist, aber es ist klar, daß der Bus-Patcher ebenso vor andere Teilnehmer eingeschaltet werden kann.
  • Anstelle einer direkten Verbindung des Prozessors mit seiner Mutterplatine oder mit einem Prozessor-Tochterkartensteckplatz zur Verbindung mit dem Chipsatz und der anderen Platinenlogik ist der Prozessor mit einem Zwischenschaltsteckplatz auf einer Zwischenschaltplatine verbunden. Ein Adapter verbindet dann die Zwischenschaltplatine mit der Mutterplatine bzw. der Tochterkarte. Bei dem gezeigten Ausführungsbeispiel ist der Prozessor mit einen Steckplatz ankoppelbar, aber es ist klar, daß die Zwischenschalttechnik auch an andere gut bekannte Montagetechniken angepaßt werden kann.
  • Der Bus-Patcher ist mit der Zwischenschaltplatine gekoppelt und elektrisch mit dem Zwischenschaltsteckplatz und dem Adapter durch nicht gezeigte, aber im Stand der Technik bekannte Einrichtungen gekoppelt. Bei dem gezeigten Ausführungsbeispiel sind die Empfänger und/oder Treiber des Bus-Patchers, insgesamt als Puffer bezeichnet, physisch von den Logikabschnitten des Patchers entfernt angeordnet. Bei einer Ausführungsform können die Puffer oder eine Untermenge von ihnen unter dem Zwischenschaltersteckplatz oder innerhalb eines (nicht in dieser Seitenansicht gezeigten) äußeren Pin-Umfangs des Zwischenschaltersteckplatzes angeordnet sein. Eine solche Anordnung ist insbesondere geeignet, wenn der Prozessor ein Intel-Pentium-Pro-Prozessor ist, welcher mit seinem Cache der zweiten Ebene in einem Dual-Vertiefungs-Pin-Gitter-Array-Gehäuse verkapselt ist, welches Pins entlang seines Umfangs, aber nicht direkt unter dem Mittelabschnitt des Gehäuses aufweist.
  • 8 veranschaulicht eine alternative Ausführungsform der Konstruktion der Zwischenschaltplatine, bei welcher der Prozessor oder ein anderer Teilnehmer mit der Hauptzwischenschaltkarte gekoppelt ist und zumindest Abschnitte des Bus-Patchers mit einer separaten Platine, wie beispielsweise einer hochgestellten Platine, welche mit der Hauptzwischenschaltplatine durch einen Steckverbinder, wie beispielsweise einen Kantenverbinder, gekoppelt ist, verbunden sind. Wahlweise können einige Elementen des Bus-Patchers, wie beispielsweise die Puffer, auf der Hauptzwischenschaltplatine angeordnet sein. Dies ergibt typischerweise eine bessere Rauschentkopplung und andere elektrische Wirkungen.
  • Diese Ausführungsform bietet verschiedene unterschiedliche Vorteile. Das spezielle Computersystem, in welches der Bus-Patcher eingesetzt werden soll, kann spezielle räumliche Begrenzungen aufweisen, welche die Verwendung eines einheitlichen Zwischenschalters verhindern. Darüber hinaus kann die Benutzung einer separaten, koppelbaren Platine für Abschnitte des Bus-Patchers, wie beispielsweise insbesondere die logischen und programmierbaren Abschnitte, die Verwendung einer einzigen Hauptzwischenschalterplatine mit einer Vielzahl von logischen Zusatzplatinen, einfach durch Koppeln unterschiedlicher hochgestellter Platinen, ermöglichen.
  • Obwohl die hochgestellte Platine als in einem Winkel in Bezug auf die Hauptzwischenschaltplatine montiert gezeigt ist, ist es klar, daß dies eine wählbare Ausführungsform ist. Sie kann in irgendeiner geeigneten Weise angekoppelt werden.
  • 8 ist in Bezug auf das, was in 7 gezeigt ist, aus Gründen der Klarheit und des einfachen Verständnisses vereinfacht und veranschaulicht den Prozessor und die Puffer als mit der Zwischenschalterplatine gekoppelt, die Patcher-Logik als mit der hochgestellten Platine gekoppelt und die hochgestellte Platine und die Zwischenschalterplatine als durch einen Steckverbinder verbunden.
  • 9 veranschaulicht einen beispielhaften Fehler, welcher in einem System auftreten kann. Zu Erläuterungszwecken sei angenommen, daß das beschriebene System auf einem Intel-Architektur-Mikroprozessor, wie beispielsweise dem Pentium-Pro-Prozessor, basiert.
  • Das Zeitdiagramm beschreibt drei von einem Busteilnehmer an den Bus ausgegebene Lesetransaktionen, von welchen R1 eine Transaktion zum Lesen einer Zeile, R2 eine Transaktion zum Lesen einer partiellen Zeile und R3 eine Transaktion zum Lesen einer Zeile ist. Die Datenrückgabe für R1 tritt bei R11-14, und die Datenrückgabe für R2 bei R21 auf.
  • Die Fehler-Signatur für den veranschaulichten Fehler ist ein Fehler in der Puffer-Zuweisungsaufhebungspolitik in dem Busteilnehmer (Chipsatz), welcher die Daten zurückgibt, wobei der Fehler unter den folgenden Bedingungen auftritt: 1) die letzte Datenübertragung R14 für die Lesetransaktion R1 und die Snoop-Phase für die Lesetransaktion R3 bei Anlegen von HITM# treten im gleichen Takt (11) auf, was eine Anforderung für eine Puffer-Zuweisungsrücknahme für die Lesetransaktionen R1 und R3 verursacht, und 2) die Einzeldatenübertragung R21 tritt im unmittelbar nächsten Takt (12) auf, was das Auftreten einer Puffer-Zuweisungsrücknahme für die Transaktion R2 verursacht. Dieser Fehler tritt auf, weil die Logik nicht dafür konstruiert war, drei Zuweisungsrücknahmen in zwei aufeinanderfolgenden Takten zu behandeln. Im Ergebnis geht die Zuweisungsrücknahme für die Transaktion R2 verloren,. so daß dann, wenn der gleiche Puffer nachfolgend für eine spätere Transaktion zugewiesen wird, die Transaktion falsche Daten empfängt.
  • 10 veranschaulicht die Verwendung des Bus-Patchers, um den Fehler gemäß 9 zu überwinden. Weil der Fehler nur dann auftritt, wenn drei Puffer-Zuweisungsrücknahmen in zwei aufeinanderfolgenden Takten auftreten, und weil dies erfordert, daß zwei unabhängige Datenübertragungsabschlüsse, wie beispielsweise R14 und R21, in zwei aufeinanderfolgenden Takten auftreten, kann die Fehler-Signatur vermieden werden, indem R21 um einen oder mehrere Takte verzögert wird. Ein Patch, welcher den Fehler verhindert, besteht daring, den Snoop-Phasenabschluß der Transaktion R2 zu verzögern. Das Pentium-Pro-Bus-Protokoll gestattet es einem unabhängigen Busteilnehmer, wobei der Bus-Patcher ein solcher ist, ein Snoop-Anhalten (snoop stall) bei irgendeiner Transaktion auf den Bus auszugeben.
  • In diesem Fall ist die Zustandsmaschine des Bus-Patchers so programmiert, daß sie die Back-to-Back-Sequenz eines Zeilenlesens, das unmittelbar von einem partiellen Lesen gefolgt wird, erfaßt, und der Störer ist so programmiert, daß er ein Snoop-Anhalten (durch gleichzeitiges Anlegen von HIT# und HITM# in der Snoop-Phase) für das partielle Lesen ausgibt, bis die Datenübertragung für das Zeilenlesen abgeschlossen ist. Dies garantiert, daß R21 stets gegenüber R14 um zumindest einen Takt verzögert wird, wodurch der Fehler vermieden wird, indem das Auftreten seiner Signatur verhindert wird.
  • Alternativ zur Verwendung eines Snoop-Anhaltens durch den Störer, könnte der Störer das (nicht gezeigte) BNR#-Signal (ein Signal, welches die nächste Anforderung blockiert) bei Erfassen einer Fehler-Signatur ausgeben, die eine Back-to-Back-Sequenz von drei Transaktionen umfaßt, was ein Anhalten beim Ausgeben der dritten Transaktion bewirkt. BNR# wird dann freigegeben, wenn das geeignete Fenster der Fehler-Signatur abgelaufen ist. Bei Fehlern, welche eine Back-to-Back-Sequenz von nur zwei Transaktionen erfordern, kann BNR# verwendet werden, um eine Befehlsausgabe abzuwürgen, wobei BNR# bei jeder Transaktion weggenommen wird, welche nicht die erste Transaktion in der Back-to-Back-Sequenz der Fehler-Signatur ist.
  • Weil HIT#, HITM# und BNR# in dem Beispielsystem Verdrahtete-ODER-Signale sind, sind sie exzellente Kandidaten für eine Verwendung in der Störanordnung des Bus-Patchers. Wenn die Störrestriktionen des Verdrahtes-ODER-Protokolls gelockert werden und der Bus bei einer niedrigen Frequenz be trieben wird, werden zusätzliche Signale zu möglichen Kandidaten. Beispielsweise kann die Wegnahme des Signals BPRI# nach Abschluß der letzten Transaktion von einem Bus-Brückenteilnehmer verzögert werden, um irgendwelche Fehler zu vermeiden, die der Änderung des Busbesitzes zwischen einem priorisierten Teilnehmer und einem symmetrischen Teilnehmer zugeordnet sind. Einige Transaktionsarten treten nur von einem Brückenteilnehmer ausgehend auf. Die Verzögerung der Wegnahme von BPRI# hindert die letzte Transaktion von dem Brückenteilnehmer daran, in eine Pipeline mit anderen Transaktionen von einem symmetrischen Teilnehmer eingereiht zu werden.
  • Ein weiteres Beispiel stellt die Ausdehnung des Anlegens des DBSY#-Signals dar, welche die Datenübertragungsbusbelegung von einem Teilnehmer erweitert, was einen anderen Teilnehmer daran hindert, die nächste Datenübertragung sofort danach in die Pipeline einzureihen.
  • Ein weiteres Beispiel stellt das Anlegen von AERR# dar, was eine Transaktion veranlaßt, einmal erneut ausgegeben zu werden. Diese Technik kann in einer sehr begrenzten Weise verwendet werden, um exakt einen weiteren Versuch einer gegebenen Transaktion zu bekommen. Dies kann sich beispielsweise für einen vorläufigen (obwohl nicht mit Sicherheit erfolgreichen) Versuch beim Korrigieren eines Fehlers, dessen garantierter Patch signifikante Nachteile hat, wie beispielsweise eine schwerwiegende Leistungsverschlechterung oder dergleichen als nützlich herausstellen.
  • Als ein weiteres Beispiel wurde der Bus-Patcher verwendet, um einen Fehler zu korrigieren, der aus einem Puffer-Zuweisungsrücknahme-Problem eines Datenpuffers der Speichersteuereinrichtung des Pentium-Pro-Prozessor-Chipsatzes ergibt, bei welchem das Siliziumchip ausfiel, wenn ein Lese-Nach-Schreiben-Zugriff freigegeben wurde. Der Patch für diesen Fehler ist in Tabelle 1 in einem Pseudo-Befehlscodeformat veranschaulicht.
  • Figure 00190001
    TABELLE 1 – Beispiel-Patch
  • Diese obigen Beispiele wurden angegeben, um dem Leser eine Lehre über die Verwendung des Patchers zu geben. Der Leser versteht, daß dies keineswegs eine umfassende Auflistung darstellt, und daß der Patcher in der Lage ist, eine Unzahl anderer Patcher auf einer großen Vielzahl von Bussen, Prozessoren und Computerarchitekturen auszuführen.
  • Es wird wiederum auf 1 Bezug genommen. Bei Ausführungsbeispielen, bei denen der Patcher beispielsweise auf dem Chip ausgeführt ist, und bei welchem der Patcher in Wirklichkeit nicht mit einem Bus sondern direkt mit einer oder mehreren Funktionseinheiten gekoppelt ist, kann die Störung einfach darin bestehen, daß der Patcher ein Signal zu einer oder zu mehreren Einheiten sendet, was diese verlaßt, irgendwelche vorgegebenen Aktivitäten auszuführen.
  • Bei einem alternativen Ausführungsbeispiel enthält der Bus-Patcher keinen Störer. Anstelle zu versuchen, einen Fehler zu korrigieren, unternimmt der Bus-Patcher irgendwelche anderen Aktivitäten bei der Unterstützung beispielsweise der Chip- oder System-Validierung. Beispielsweise kann er einen (nicht gezeigten) Zähler anstelle eines Störers enthalten. Dieses Ausführungsbeispiel kann insbesondere zum Überprüfen, ob zuvor identifizierte und annehmbar fixierte Fehler nicht länger auftreten nützlich sein. D.h., es kann verwendet werden, um zu bestätigen, daß ein Stepping tatsächlich den Fehler vermeidet. Wenn bekannt ist, daß ein bestimmter Fehler (bug) einen beobachtbaren Fehler (error), wie beispielsweise ein Aufhängen des Systems, in nichtfehlerkorrigierten Systemen erzeugt, und sofern der Zähler überprüft hat, daß die Fehler-Signatur einmal oder mehrmals beobachtet worden ist, der Fehler aber nicht beobachtet wurde, so kann mit einem höheren Grad des Vertrauens festgestellt werden, daß der Fehler tatsächlich beseitigt wurde.
  • Während die Erfindung unter Bezugnahme auf spezielle Ausführungsbeispiele, die anhand der speziellen Zeichnungen veranschaulicht wurden, und unter spezieller Bezugnahme auf Intel-Architektur-Prozessor-Bussignale beschrieben worden ist, ist es für den Fachmann klar, daß die Erfindung in zahlreichen anderen Konfigurationen und mit verschiedenen anderen Bussen ausgeführt werden kann, welche innerhalb des Umfangs der Lehren dieser Offenbarung liegen.

Claims (42)

  1. Bus-Patcher zum Vermeiden eines bevorstehenden Störereignisses (bug), welches ein Versagen (failure) wenigstens eines Elements eines Bus-Kommunikationssystems bewirken würde, wobei das Bus-Kommunikationssystem wenigstens einen Bus und wenigstens zwei mit dem Bus gekoppelte und in Übereinstimmung mit einem Busprotokoll kommunizierende Busteilnehmer aufweist, wobei das bevorstehende Störereignis durch das Auftreten einer Bus-Störereignis-Signatur auf dem Bus gekennzeichnet ist, wobei der Bus-Patcher aufweist: einen mit dem Bus gekoppelten Bus-Überwacher zum Überwachen einer laufenden Kommunikation auf dem Bus, um die Bus-Störereignis-Signatur zu erkennen, und einen mit dem Bus gekoppelten Störer zum Modifizieren der Buskommunikation derart, daß das Störereignis vermieden wird.
  2. Bus-Patcher nach Anspruch 1, wobei der Patcher aufweist: eine programmierbare Einrichtung zum Speichern einer Bus-Störereignis-Signatur des Ereignisses, gemäß welcher der Patcher das Ereignis identifiziert.
  3. Bus-Patcher nach Anspruch 2, wobei die programmierbare Einrichtung eine Bus-Störereignis-Signatur in sich gespeichert hat.
  4. Bus-Patcher nach Anspruch 2, wobei der Patcher ferner aufweist: einen mit dem Bus und mit der programmierbaren Einrichtung zum Speichern gekoppelten Protokollüberwacher und einen mit der programmierbaren Einrichtung zum Speichern und mit dem Bus gekoppelten Störer.
  5. Bus-Patcher nach Anspruch 4, wobei der Patcher eine einheitliche selbständige Komponente ist.
  6. Bus-Patcher nach Anspruch 4, wobei zwei oder mehrere Komponenten des Patchers unter zwei oder mehreren Teilnehmern aufgeteilt sind.
  7. Bus-Patcher nach Anspruch 4, wobei der Protokollüberwacher eine programmierbare Einrichtung zum Speichern des Protokolls enthält.
  8. Bus-Patcher nach Anspruch 7, wobei die programmierbare Einrichtung des Protokollüberwachers das Protokoll speichert.
  9. Bus-Patcher nach Anspruch 4, wobei der Störer eine programmierbare Einrichtung zum Speichern einer auszuführenden Störung enthält, wobei die auszuführende Störung von der Identifikation der Bus-Störereignis-Signatur durch die programmierbare Einrichtung zum Speichern abhängig ist.
  10. Bus-Patcher nach Anspruch 9, wobei die programmierbare Einrichtung zum Speichern einer Störung in sich eine Störung speichert.
  11. Bus-Patcher nach Anspruch 2, wobei die programmierbare Einrichtung zum Speichern eine Zustandsmaschine aufweist.
  12. Bus-Patcher nach Anspruch 1, wobei der erste Teilnehmer, der zweite Teilnehmer und der Patcher mit dem Bus gekoppelt sind.
  13. Bus-Patcher nach Anspruch 12, wobei der Patcher und einer der Teilnehmer eine einheitliche Einrichtung sind, die mit dem Bus über eine einzelne Verbindung gekoppelt ist.
  14. Bus-Patcher nach Anspruch 1, ferner aufweisend eine Mehrzahl von Patchern.
  15. Bus-Patcher nach Anspruch 1, wobei einer der Teilnehmer mit dem Bus gekoppelt ist, und wobei, der andere Teilnehmer mit dem Bus indirekt über den Patcher gekoppelt ist.
  16. Bus-Patcher nach Anspruch 15, wobei einer der Teilnehmer ein Prozessor ist und der andere ein Chipsatz.
  17. Bus-Patcher nach Anspruch 1, wobei der Patcher mit dem Bus indirekt über einen der Teilnehmer gekoppelt ist.
  18. Bus-Patcher nach Anspruch 17, wobei einer der Teilnehmer eine Busbrücke zwischen dem Bus und einem Peripheriebus ist, und wobei der Patcher mit einem der Teilnehmer über den Peripheriebus gekoppelt ist.
  19. Bus-Patcher nach Anspruch 18, wobei die Busbrücke der Bildung einer Brücke zwischen dem Pentium-Pro-Prozessor-Bus und dem PCI-Bus dient.
  20. Bus-Patcher nach Anspruch 1, wobei zumindest ein Abschnitt des Busses ein Verdrahtetes-ODER-Bus ist.
  21. Bus-Patcher nach Anspruch 1, wobei die Einrichtung ein einziges monolithisches Chip ist und wobei der Bus-Patcher der Korrektur von Fehlern auf einem internen Bus innerhalb des Chips dient.
  22. Bus-Patcher nach Anspruch 1, dadurch gekennzeichnet, daß der Bus-Vberwacher einen Protokollüberwacher zum Überwachen eines einem Busprotokoll folgenden Busverkehrs und eine mit dem Protokollüberwacher gekoppelte Zustandsmaschine zum Erfassen des Auftretens einer Bus-Störereignis-Signatur in dem Busverkehr aufweist; und daß der Störer mit der Zustandsmaschine gekoppelt ist.
  23. Bus-Patcher nach Anspruch 22, wobei der Protokollüberwacher eine erste programmierbare Einrichtung zum Speichern des Busprotokolls enthält.
  24. Bus-Patcher nach Anspruch 23, wobei die erste programmierbare Einrichtung das Busprotokoll in sich speichert.
  25. Bus-Patcher nach Anspruch 22, wobei die Zustandsmaschine eine zweite programmierbare Einrichtung zum Speichern zumindest einer Bus-Störereignis-Signatur enthält, welche die Zustandsmaschine erfaßt.
  26. Bus-Patcher nach Anspruch 25, wobei die zweite programmierbare Einrichtung ferner dem Speichern einer Mehrzahl von Bus-Störereignis-Signaturen, welche die Zustandsmaschine erfaßt, dient.
  27. Bus-Patcher nach Anspruch 26, wobei die zweite programmierbare Einrichtung zumindest eine Bus-Störereignis-Signatur in sich gespeichert hat.
  28. Bus-Patcher nach Anspruch 22, wobei der Störer eine dritte programmierbare Einrichtung zum Speichern zumindest einer Störung enthält.
  29. Bus-Patcher nach Anspruch 28, wobei die dritte programmierbare Einrichtung ferner dem Speichern einer Mehrzahl von Störungen dient.
  30. Bus-Patcher nach Anspruch 28, wobei die Einrichtung ferner eine zweite programmierbare Einrichtung zum Speichern einer Mehrzahl von Bus-Störereignis-Signaturen, welche die Zustandsmaschine erfaßt, aufweist; und die dritte programmierbare Einrichtung ferner zum Speichern einer Störung für jede der in der zweiten programmierbaren Einrichtung gespeicherten Bus-Störereignis-Signaturen dient.
  31. Bus-Patcher nach Anspruch 30, wobei die zweite programmierbare Einrichtung zumindest eine Bus-Störereignis-Signatur in sich gespeichert hat; und die dritte programmierbare Einrichtung zumindest eine Störung in sich gespeichert hat.
  32. Bus-Patcher nach Anspruch 22, ferner aufweisend: eine Einrichtung zum Freigeben und Sperren des Bus-Patchers.
  33. Bus-Patcher nach Anspruch 22, mit einer Zwischenschaltplatine und Puffern zum Koppeln der Zwischenschaltplatine mit dem Bus, wobei der Protokollüberwacher, die Zustandsmaschine und der Störer in einer mit den Puffern gekoppelten Patcher-Logik enthalten sind.
  34. Bus-Patcher nach Anspruch 33, ferner aufweisend eine Einrichtung zum Zwischenschalten des Bus-Patchers zwischen ein elektronisches Bauelement und ein elektronisches System, das das elektronische Bauelement aufnehmen kann.
  35. Bus-Patcher nach Anspruch 34, wobei die Einrichtung zum Zwischenschalten aufweist: einen Zwischenschalter-Steckplatz der mit der Zwischenschaltplatine und den Puffern gekoppelt ist und das elektronische Bauelement aufnehmen kann; und einen Adapter zum Koppeln mit dem elektronischen System.
  36. Bus-Patcher nach Anspruch 35, wobei die Patcher-Logik auf der Zwischenschaltplatine montiert ist.
  37. Bus-Patcher nach Anspruch 33, ferner aufweisend: eine zweite Karte, mit welcher die Patcher-Logik gekoppelt ist; und eine Einrichtung zum Koppeln der zweiten Karte mit der Zwischenschaltplatine.
  38. Bus-Patcher nach Anspruch 37, wobei die Einrichtung zum Koppeln der zweiten Karten mit der Zwischenschaltplatine diese in einem im wesentlichen rechten Winkel zueinander koppelt.
  39. Verfahren zum Vermeiden eines bevorstehenden Störereignisses, welches ein Versagen wenigstens eines Elements eines Bus-Kommunikationssystems bewirken würde, wobei das Bus-Kommunikationssystem wenigstens einen Bus und wenigstens zwei mit dem Bus gekoppelte und in Übereinstimmung mit einem Bus-Protokoll kommunizierende Busteilnehmer aufweist, wobei das bevorstehende Störereignis durch das Auftreten einer Bus-Störereignis-Signatur auf dem Bus gekennzeichnet ist, wobei: eine Bus-Störereignis-Signatur in einer Kommunikation auf dem Bus von einer Überwachereinrichtung beobachtet wird und die Kommunikation auf dem Bus von einer mit der Überwachungseinrichtung und mit dem Bus gekoppelten Störeinrichtung derart modifiziert wird, daß das Störereignis vermieden wird.
  40. Verfahren zum Analysieren der funktionellen Richtigkeit eines Bauelements durch Vermeiden eines durch das Bauelement hervorgerufenen ersten Störereignisses, welches ein Versagen wenigstens eines Elements eines Bus-Kommunikationssystems bewirken würde, wobei das Bus-Kommunikationssystem neben dem Bauelement wenigstens einen Bus und wenigstens ein weiteres, mit dem Bus gekoppeltes und in Übereinstimmung mit einem Bus-Protokoll kommunizierendes Bauelement aufweist, wobei das Störereignis durch das Auftreten einer Bus-Störereignis-Signatur auf dem Bus gekennzeichnet ist, wobei: das erste Störereignis in einer Bus-Kommunikation beobachtet wird; eine zugehörige Bus-Störereignis-Signatur des Störereignisses in eine programmierbare Speichereinrichtung eines Bus-Patchers gespeichert wird; wobei bei einer Wiederholung der Kommunikation das Verfahren nach Anspruch 39 ausgeführt wird; wobei anschließend verifiziert wird, daß das Störereignis in der gestörten Bus-Kommunikation nicht mehr auftrat.
  41. Verfahren nach Anspruch 40, wobei anschließend außerdem überprüft wird, ob ein anderes Störereignis, welches ohne den Störschritt durch das erste Störereignis versteckt worden wäre, auftrat.
  42. Verfahren nach Anspruch 41, wobei nach mehreren Iterationen des Herausfindens von Störereignissen, die sich hinter blockierenden Störereignissen verstecken, das zu analysierende elektronische Bauelement einem erneuten Stepping unterzogen wird, um ein blockierendes Störereignis und wenigstens ein von dem blockierenden Störereignis verstecktes Störereignis zu korrigieren.
DE19781620T 1996-02-28 1997-02-26 Bus-Patcher Expired - Fee Related DE19781620B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/607,943 1996-02-28
US08/607,943 US5819027A (en) 1996-02-28 1996-02-28 Bus patcher
PCT/US1997/003044 WO1997032255A1 (en) 1996-02-28 1997-02-26 Bus patcher

Publications (2)

Publication Number Publication Date
DE19781620T1 DE19781620T1 (de) 1999-03-18
DE19781620B4 true DE19781620B4 (de) 2005-09-08

Family

ID=24434359

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19781620T Expired - Fee Related DE19781620B4 (de) 1996-02-28 1997-02-26 Bus-Patcher

Country Status (6)

Country Link
US (2) US5819027A (de)
CN (1) CN1105359C (de)
AU (1) AU2058297A (de)
DE (1) DE19781620B4 (de)
GB (2) GB2325382B (de)
WO (1) WO1997032255A1 (de)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5819027A (en) * 1996-02-28 1998-10-06 Intel Corporation Bus patcher
US5951661A (en) * 1997-08-15 1999-09-14 Compaq Computer Corporation Bus protocol violation monitor systems and methods
US6904480B1 (en) 1997-12-17 2005-06-07 Intel Corporation Testing a bus using bus specific instructions
JP3991590B2 (ja) * 1999-02-24 2007-10-17 株式会社日立製作所 計算機システム及び計算機システムにおける障害処理方法
GB2367646B (en) * 2000-10-03 2002-11-20 Sun Microsystems Inc Resource access control
GB2367648B (en) * 2000-10-03 2002-08-28 Sun Microsystems Inc Multiple trap avoidance mechanism
GB2367645B (en) * 2000-10-03 2002-11-20 Sun Microsystems Inc Memory access control
GB2367647B (en) * 2000-10-03 2002-11-20 Sun Microsystems Inc Resource access control for a processor
US6826639B2 (en) * 2001-07-27 2004-11-30 Computer Access Technology Corporation Hierarchical display of multilevel protocol for communication data
US7000065B2 (en) * 2002-01-02 2006-02-14 Intel Corporation Method and apparatus for reducing power consumption in a memory bus interface by selectively disabling and enabling sense amplifiers
GB0228960D0 (en) * 2002-12-11 2003-01-15 Mirada Solutions Ltd Improvements in or relating to processing systems
US7216240B2 (en) * 2002-12-11 2007-05-08 Intel Corporation Apparatus and method for address bus power control
US7152167B2 (en) * 2002-12-11 2006-12-19 Intel Corporation Apparatus and method for data bus power control
US20040230188A1 (en) * 2003-05-12 2004-11-18 Iulian Cioanta Treatment catheters with thermally insulated regions
US20050228926A1 (en) * 2004-04-05 2005-10-13 Smith Zachary S Virtual-bus interface and associated system and method
WO2006125066A2 (en) * 2005-05-18 2006-11-23 Richard Paschke System and method for dynamic control of ultrasonic magnetostrictive dental scaler
US7529955B2 (en) * 2005-06-30 2009-05-05 Intel Corporation Dynamic bus parking
FR2888433A1 (fr) * 2005-07-05 2007-01-12 St Microelectronics Sa Protection d'une quantite numerique contenue dans un circuit integre comportant une interface jtag
CN100511162C (zh) * 2006-09-29 2009-07-08 华为技术有限公司 一种隔离总线故障的方法、装置与一种单板
US7970971B2 (en) * 2007-01-30 2011-06-28 Finisar Corporation Tapping systems and methods
WO2009067496A1 (en) * 2007-11-19 2009-05-28 Rambus Inc. Scheduling based on turnaround event
US8949545B2 (en) * 2008-12-04 2015-02-03 Freescale Semiconductor, Inc. Memory interface device and methods thereof
US9018887B2 (en) 2010-04-01 2015-04-28 Westdale Holdings, Inc. Ultrasonic system controls, tool recognition means and feedback methods
US8363418B2 (en) 2011-04-18 2013-01-29 Morgan/Weiss Technologies Inc. Above motherboard interposer with peripheral circuits
JP5932146B2 (ja) * 2013-05-20 2016-06-08 華為技術有限公司Huawei Technologies Co.,Ltd. ピーシーアイエクスプレスのエンドポイントデバイスにアクセスするための方法、コンピューターシステム、および、装置
WO2017131694A1 (en) * 2016-01-28 2017-08-03 Hewlett Packard Enterprise Development Lp Printed circuit boards

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179696A (en) * 1987-07-24 1993-01-12 Nec Corporation Generator detecting internal and external ready signals for generating a bus cycle end signal for microprocessor debugging operation
WO1995032475A1 (en) * 1994-05-20 1995-11-30 Intel Corporation Method and apparatus for maintaining transaction ordering and arbitrating in a bus bridge
GB2292470A (en) * 1994-08-19 1996-02-21 Advanced Risc Mach Ltd Rom patching
EP0453268B1 (de) * 1990-04-20 1997-10-22 Hitachi, Ltd. Mikroprozessor zur Buszykluseinfügung zwecks Informationslieferung für eine Emulation

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US527218A (en) 1894-10-09 Erford
US5086500A (en) 1987-08-07 1992-02-04 Tektronix, Inc. Synchronized system by adjusting independently clock signals arriving at a plurality of integrated circuits
US5142673A (en) * 1989-12-22 1992-08-25 Bull Hn Information Systems Inc. Bus monitor with dual port memory for storing selectable trigger patterns
US5319776A (en) * 1990-04-19 1994-06-07 Hilgraeve Corporation In transit detection of computer virus with safeguard
US5271020A (en) * 1990-12-21 1993-12-14 Intel Corporation Bus stretching protocol for handling invalid data
US5220662A (en) * 1991-03-28 1993-06-15 Bull Hn Information Systems Inc. Logic equation fault analyzer
US5423050A (en) 1991-11-27 1995-06-06 Ncr Corporation Intermodule test across system bus utilizing serial test bus
US5555382A (en) * 1992-04-24 1996-09-10 Digital Equipment Corporation Intelligent snoopy bus arbiter
US5504689A (en) 1993-12-16 1996-04-02 Dell Usa, L.P. Apparatus and method for testing computer bus characteristics
US5548733A (en) * 1994-03-01 1996-08-20 Intel Corporation Method and apparatus for dynamically controlling the current maximum depth of a pipe lined computer bus system
US5535345A (en) * 1994-05-12 1996-07-09 Intel Corporation Method and apparatus for sequencing misaligned external bus transactions in which the order of completion of corresponding split transaction requests is guaranteed
US5555372A (en) * 1994-12-21 1996-09-10 Stratus Computer, Inc. Fault-tolerant computer system employing an improved error-broadcast mechanism
KR0149891B1 (ko) 1994-12-22 1999-05-15 윤종용 버스상태분석기 및 그 내부버스시험방법
US5701409A (en) 1995-02-22 1997-12-23 Adaptec, Inc. Error generation circuit for testing a digital bus
US5752035A (en) 1995-04-05 1998-05-12 Xilinx, Inc. Method for compiling and executing programs for reprogrammable instruction set accelerator
US5621900A (en) * 1995-05-17 1997-04-15 Intel Corporation Method and apparatus for claiming bus access from a first bus to a second bus prior to the subtractive decode agent claiming the transaction without decoding the transaction
US5748983A (en) 1995-06-07 1998-05-05 Advanced Micro Devices, Inc. Computer system having a dedicated multimedia engine and multimedia memory having arbitration logic which grants main memory access to either the CPU or multimedia engine
US5696910A (en) 1995-09-26 1997-12-09 Intel Corporation Method and apparatus for tracking transactions in a pipelined bus
US5819027A (en) * 1996-02-28 1998-10-06 Intel Corporation Bus patcher
US5802317A (en) 1996-09-04 1998-09-01 Motorola, Inc. Electronic circuit having phased logic busses for reducing electromagnetic interference
US5892962A (en) 1996-11-12 1999-04-06 Lucent Technologies Inc. FPGA-based processor
US5938777A (en) 1997-07-31 1999-08-17 Advanced Micro Devices, Inc. Cycle list based bus cycle resolution checking in a bus bridge verification system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179696A (en) * 1987-07-24 1993-01-12 Nec Corporation Generator detecting internal and external ready signals for generating a bus cycle end signal for microprocessor debugging operation
EP0453268B1 (de) * 1990-04-20 1997-10-22 Hitachi, Ltd. Mikroprozessor zur Buszykluseinfügung zwecks Informationslieferung für eine Emulation
WO1995032475A1 (en) * 1994-05-20 1995-11-30 Intel Corporation Method and apparatus for maintaining transaction ordering and arbitrating in a bus bridge
GB2292470A (en) * 1994-08-19 1996-02-21 Advanced Risc Mach Ltd Rom patching

Also Published As

Publication number Publication date
CN1220746A (zh) 1999-06-23
GB2351424B (en) 2001-02-07
GB2325382A (en) 1998-11-18
US6463554B1 (en) 2002-10-08
GB0023821D0 (en) 2000-11-08
US5819027A (en) 1998-10-06
WO1997032255A1 (en) 1997-09-04
GB2351424A (en) 2000-12-27
AU2058297A (en) 1997-09-16
CN1105359C (zh) 2003-04-09
GB9817415D0 (en) 1998-10-07
GB2325382B (en) 2000-11-22
DE19781620T1 (de) 1999-03-18

Similar Documents

Publication Publication Date Title
DE19781620B4 (de) Bus-Patcher
EP1248198B1 (de) Programmgesteuerte Einheit mit Emulations-Einheiten
DE69523549T2 (de) Mikroprozessor mit Fehlersuchsystem
EP1720100B1 (de) Verfahren und Vorrichtung zur Emulation einer programmierbaren Einheit
EP1101163B1 (de) Programmgesteuerte einheit
DE102009054701B4 (de) Detektion von und Regeneration von einem elektrischen-schnellen-Störsignal/Burst (EFT/B) auf einem Universal Serial Bus-(USB)-Gerät
DE4017902A1 (de) Zusatzkarte mit automatischer anpassung an die schlitzposition
DE69815006T2 (de) Datenverarbeitungseinheit mit Fehlerbeseitungsmöglichkeiten
DE2842548A1 (de) Programmierbare speicherschutzlogik fuer mikroprozessorsysteme
DE4027510A1 (de) Ic mit testfunktion
EP1019819B1 (de) Programmgesteuerte einheit und verfahren zum debuggen derselben
DE3739993C2 (de)
DE102008004205A1 (de) Schaltungsanordnung und Verfahren zur Fehlerbehandlung in Echtzeitsystemen
DE102005054587A1 (de) Programmgesteuerte Einheit und Verfahren zum Betreiben derselbigen
DE4429764C2 (de) Zeitgebereinrichtung für einen Mikrocomputer
DE10340411B4 (de) Vorrichtung und Verfahren zur sicheren Ausführung eines Programms
WO2019081308A1 (de) Verfahren und halbleiterschaltkreis zum schützen eines betriebssystems eines sicherheitssystems eines fahrzeugs
DE10139660A1 (de) Programmgesteuerte Einheit
EP2287742B1 (de) Programmgesteuerte Einheit
DE10132313A1 (de) Programmgesteuerte Einheit
WO1999044135A1 (de) Synchronisations- und/oder datenaustauschverfahren für sichere, hochverfügbare rechner und hierzu geeignete einrichtung
DE10324384B3 (de) Behandlung eines Fehlerereignisses bei der Installation eines Anwendungsprogramms in einem tragbaren Datenträger
EP1224547B1 (de) Integrierter elektronischer baustein mit duplizierter kernlogik und hardware-fehlereinspeisung für prüfzwecke
DE102009009730B4 (de) Lokale Timer-Zelle deren Verwendung und Verfahren zum Betreiben eines Moduls
EP1224480B1 (de) Programmgesteuerte einheit und verfahren zum erkennen und/oder analysieren von fehlern in programmgesteuerten einheiten

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8125 Change of the main classification

Ipc: G06F 13/42

8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20130903