-
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.
-
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.