-
Die Erfindung bezieht sich auf diagnostische Vorrichtungen
und Verfahren für
komplexe integrierte Schaltungen und auf Systeme, die komplexe integrierte
Schaltungen verkörpern.
-
Der Industriezweig der integrierten
Schaltungen (ICs – integrated
circuits) entwickelt sich rasch weiter. Viele der im Jahre 2002
auf den Markt gebrachten prozessorintegrierten Schaltungen sind mindestens
zehnmal so leistungsfähig
wie die Prozessoren des Jahres 1992. Speicher wurden viel schneller,
dichter und viel kostengünstiger
als sie es noch vor wenigen Jahren waren. Auch andere Arten von
integrierten Schaltungen entwickelten sich rasch weiter. Deshalb
ist es für
jeden Hersteller erforderlich, ständig neue Produkte zu entwerfen,
wenn er weiterhin wettbewerbsfähige
Bauelemente erzeugen möchte.
-
Neuere IC-Prozesse ermöglichen
kleinere Bauelemente als ältere
Prozesse. Kleine Bauelemente erfordern eine geringere Ladungsinjektion
als große
Bauelemente, um einen vorübergehenden Fehler
(„Soft-Error")
zu bewirken. Eine Ionisierungsstrahlung, einschließlich kosmischer
Strahlen und Alphapartikel von Verpackungsmaterialien, können eine
Ladung injizieren und dadurch Soft-Errors bewirken. Soft-Errors sind in der
Regel zufällige,
nicht wiederholbare Fehler. Bei diesen Prozessen ist eine Fehlererfassung
und/oder -korrektur wichtig, jedoch sind Soft-Errors immer noch
selten, und eine Nach-Silizium-Überprüfung der
Erfassungs- und Korrekturhardware ist schwierig.
-
Fehlerfenster
-
Komplexe integrierte Schaltungen
(ICs) weisen oft mehrere Funktionseinheiten auf, die mit einer externen
Schaltungsanordnung und anderen Funktionseinheiten interagieren.
Diese Interaktionen sind oft sensibel in Bezug auf Zeitgebungsbeziehungen zwischen
Ereignissen.
-
Man betrachte eine prozessorintegrierte Schaltung.
Prozessoren liefern allgemein einen Unterbrechungsmechanismus. Ein
Unterbrechungsmechanismus ermöglicht,
daß Ereignisse
in peripheren Einheiten, die sich auf derselben IC befinden können, aber
nicht müssen,
eine Ausführung
eines an dem Prozessor ablaufenden Prozesses anhalten, wobei sie
kritische Prozessorzustandsinformationen sichern, und eine Ausführung eines
anderen Prozesses starten. Konstruktionsfehler könnten bewirken, daß die Prozessorzustandsinformationen
ordnungsgemäß gesichert
werden, falls die Unterbrechung in den meisten Zuständen einer
Maschine geschieht, falls die Unterbrechung jedoch in einem bestimmten Zustand
bzw. in einem Fehlerfenster geschieht, kann es sein, daß die Informationen
auf unkorrekte Weise gesichert werden.
-
Es gibt viele andere Gelegenheiten,
bei denen Konstruktionsfehler oder Herstellungsprobleme zu einer
Sensibilität
einer komplexen integrierten Schaltung bezüglich der exakten Beziehung
zwischen sowohl internen als auch externen Ereignissen führen. Beispielsweise
ist es möglich,
daß ein
Fehlerfenster bei einer Datenlieferung an eine Ausführungspipeline
in einem Prozessor von einem internen Cache-Speicher existiert. Desgleichen könnte ein Fehlerfenster
existieren, bei dem ein Fehler in einem Cache-Speicher nicht ordnungsgemäß korrigiert wird,
falls bestimmte andere Ereignisse genau zur richtigen Zeit geschehen.
-
Ein Fehlerfenster ist ein Zeitraum,
während dessen
ein bestimmtes Stimulusereignis auf unkorrekte Weise verarbei tet
wird. Der Zeitraum eines Fehlerfensters ist relativ zu anderen Ereignissen
in der Schaltung.
-
Wenn eine Konstruktion für eine neue
integrierte Schaltung vorbereitet wird, ist es notwendig, durch
einen Prozeß,
der als Konstruktionsüberprüfung bezeichnet
wird, zu überprüfen, daß die Konstruktion
korrekt ist. Es ist bekannt, daß eine
Konstruktionsüberprüfung ein
teurer und zeitaufwendiger Prozeß ist. Es ist ferner bekannt,
daß Konstruktionsfehler,
die während
einer Vor-Silizium-Simulation gefunden werden, allgemein kostengünstig zu
reparieren sind, daß diejenigen,
die während
einer Nach-Silizium-Konstruktion gefunden werden, teurer zu reparieren
sind, und daß diejenigen,
die entdeckt werden, nachdem ein Versand an Kunden begonnen hat, äußerst teure
Produktrückrufe
mit sich bringen können.
-
Es ist äußerst wünschenswert, IC-Prototypen
auf so viele Fehlerfenster wie möglich
zu testen, so daß Behelfslösungen gefunden
werden können oder
die IC-Konstruktion repariert werden kann, bevor große Mengen
von ICs gebaut werden.
-
Neben einem Identifizieren von Konstruktionsfehlern
in der IC ist es ferner notwendig, Konstruktionsmängel bei
anderen Systemkomponenten zu identifizieren, einschließlich anderer
ICs und einer Betriebssystemsoftware. Es ist bekannt, daß „Programmfehler"
(„Bugs")
bei Seltenes-Ereignis-Verarbeitungsroutinen
einer derartigen Software oft schwierig zu finden sind. Insbesondere
ist es wünschenswert,
bei einer Betriebssystem-Fehlerhandhabung, -protokollierung und
-erholungssoftware Fehlerhandhabungsroutinen auszuführen, bevor
die Systeme den Kunden erreichen, so daß diese Routinen einer Programmfehlerbehebung
(Debugging) unterzogen werden können.
-
Testschaltungsanordnung
-
Komplexe ICs bieten allgemein eine
begrenzte Sichtbarkeit in Bezug auf Interaktionen ihrer internen
Funktionseinheiten. Eine begrenzte Sichtbarkeit bedeutet, daß Signale,
die sich auf diese Interaktionen beziehen, oft nicht an Chip-Pins oder anderen
leicht zugänglichen
Stellen, einschließlich
Registerbits, verfügbar
sind.
-
Es ist bekannt, daß einer
IC-Konstruktion eine Testschaltungsanordnung hinzugefügt werden kann,
um die Sichtbarkeit während
einer Programmfehlerbehebungs- und Konstruktionsüberprüfung zu erhöhen. Eine Testschaltungsanordnung
kann interne Ereignisse zu Analysezwecken aufzeichnen oder kann
eines oder mehrere von vielen Signalen auswählen, die zum Zweck einer Analyse
auf Chip-Anschlüssen
bzw. Chip-Pins herausgebracht werden sollen.
-
Während
es bekannt ist, daß seltene
Ereignisse durch ein Aufheben von Simulationswerten während einer
Simulation injiziert werden können,
erfordert eine Injektion von seltenen Ereignissen in konkrete integrierte
Schaltungen eine auf einem Chip befindliche Hardwareunterstützung bzw. On-Chip-Hardwareunterstützung.
-
Cache-Speicher
-
Viele moderne Hochleistungsprozessoren implementieren
eine Speicherhierarchie, die mehrere Speicherebenen aufweist. Jede
Ebene weist in der Regel unterschiedliche Charakteristika auf, wobei niedrigere
Ebenen in der Regel kleiner und schneller sind als höhere Ebenen.
-
Ein Cache-Speicher ist in der Regel
eine niedrigere Ebene einer Speicherhierarchie. Es gibt oft mehrere
Ebenen eines Cache-Speichers, von denen eine oder mehrere in der
Regel auf der prozessorintegrierten Schaltung angeordnet sind. Der
Cache-Speicher ist in der Regel mit einer Abbildungshardware zum
Einrichten einer Korrespondenz zwischen Cache-Speicherstellen und Stellen auf höheren Ebenen
der Speicherhierarchie ausgestattet. Die Abbildungshardware liefert
in der Regel eine automatische Ersetzung (oder Zwangsräumung) von
alten Cache-Inhalten durch Stellen, auf die neu Bezug genommen wird
und die von Baugliedern einer höheren Ebene
der Speicherhierarchie abgerufen werden. Diese Abbildungshardware
verwendet oft einen Cache-Kennung-Speicher (Cache-Tag-Speicher).
Für die
Zwecke dieser Anmeldung wird eine Cache-Abbildungshardware als ein
Kennungsteilsystem bezeichnet.
-
Viele Programme greifen auf Speicherstellen zu,
auf die entweder kürzlich
zugegriffen wurde oder die sich in der Nähe von Stellen befinden, auf
die kürzlich
zugegriffen wurde. Diese Stellen findet man sehr wahrscheinlich
in einem schnellen Cache-Speicher, und es wird deshalb schneller
auf sie zugegriffen als auf andere Stellen. Aus diesen Gründen ist
es bekannt, daß ein
Cache-Speicher oft beträchtliche Leistungsvorteile
bietet.
-
Fehlererfassung
und -korrektur
-
Moderne Prozessor-ICs können große Cache-Speichereinheiten
aufweisen, die manchmal sogar die Hälfte der gesamten IC-Fläche einnehmen.
-
Es ist bekannt, daß große, schnelle
Speichereinheiten, einschließlich
Cache-Speichereinheiten, gelegentlich Fehler entwickeln. Viele dieser
Fehler sind „vorübergehende
Fehler" („Soft-Errors"),
Fehler, die durch zufällige
Ereignisse, wie beispielsweise ein Auftreffen von kosmischer Strahlung
oder Alphapartikeln von radioaktiven Elementen in Verpackungsmaterialien,
bewirkt werden. Manche modernen Speichereinheiten, einschließlich mancher
Cache- Speichereinheiten,
liefern eine Fehlererfassungs- und -korrekturlogik, bei der Einbit-Fehler
erfaßt
werden, während
Daten gelesen werden. Erfaßte
Fehler werden anschließend
repariert, so daß korrekte
Daten anderen Einheiten auf der IC bereitgestellt werden. Manche
Bauelemente sehen auch eine Erfassung und/oder Korrektur von Mehrbitfehlern
vor.
-
Es ist bekannt, daß, während Cache-Speicher-Soft-Errors
seltene Ereignisse sind, eine auf einem Chip befindliche Fehlererfassungs-
und -korrekturlogik beträchtliche
Verbesserungen in Bezug auf die insgesamte Zuverlässigkeit
des Systems liefern kann.
-
Eine Fehlererfassungs- und -korrekturlogik bewirkt
oft eine Verzögerung,
um eine Korrektur zu ermöglichen,
wenn Fehler erfaßt
werden. Während diese
Verzögerung
oft kurz ist, wenn die Korrektur unter Verwendung von in dem Speicher
gespeicherten Informationen durchgeführt werden kann, kann eine
Korrektur von manchen Fehlern auf niedrigen Ebenen einer Speicherhierarchie
ein Zugreifen auf einen Speicher einer höheren Ebene beinhalten. Bei IC-Konstruktionen,
die eine derartige Korrekturverzögerung
aufweisen, ist es notwendig, während
der Konstruktionsüberprüfung zu überprüfen, daß die Verzögerung keinen
fehlerhaften Betrieb anderer Schaltungsanordnungen in der IC bewirkt.
-
Sperren von
Testmodi in Kundensystemen
-
Wenn Testmodi, die einen normalen
Betrieb unterbrechen können,
einschließlich
Testmodi, die Fehler in Cache-Speicher
injizieren, bei einer IC-Konstruktion vorliegen, ist es oft wünschenswert, eine
unerwünschte
Aktivierung der Testmodi in dem System eines Kunden zu verhindern.
-
Es ist die Aufgabe der vorliegenden
Erfindung, eine Vorrichtung und ein Verfahren zu schaffen, die eine
Verbesserung einer Überprüfungsqualität ermöglichen.
-
Diese Aufgabe wird durch einen Injektor
von seltenen Ereignissen gemäß Anspruch
1 sowie durch ein Verfahren gemäß Anspruch
13 gelöst.
-
Eine integrierte Schaltung ist mit
einer internen Testschaltungsanordnung gebaut, die in der Lage ist,
bestimmte Ereignisse in der integrierten Schaltung zu erfassen.
-
Ein Ausgangssignal der Testschaltungsanordnung
liefert einen Auslöser
an einen On-Chip-Injektor. Der On-Chip-Injektor bewirkt, daß ein Ereignis zu einem deterministischen,
jedoch pseudozufälligen Zeitpunkt
in bezug auf den Auslöser
stattfindet. Der On-Chip-Injektor ist zusätzlich in der Lage, wiederholte
Ereignisse in einem pseudozufälligen
Intervall hiernach zu erzeugen.
-
Bei einem bestimmten Ausführungsbeispiel beinhaltet
der On-Chip-Injektor
ein Linearrückkopplungsschieberegister
(LFSR – linear-feedback
shift register), um zu bestimmten Zeiten eine pseudozufällige Abfolge
von Ereignissen zu bewirken.
-
Bei einem bestimmten Ausführungsbeispiel ist
der Injektor in der Lage, eine Vielzahl von Ereignissen zu injizieren,
einschließlich
eines Einfügens
von Einbit-Cache-Lesefehlern,
vor einer Fehlererfassungs- und -korrekturlogik. Bei diesem Ausführungsbeispiel
ist der Injektor ferner in der Lage, Doppelbitlesefehler in einen
Cache-Speicher, Paritätsfehler
in TLB-Stellen (TLB = translation lookaside buffer = Übersetzungsvorgriffspuffer)
und Paritätsfehler
in andere paritätsgeschützte On-Chip-Strukturen, wie beispielsweise
eine Verzweigungsvoraussageschaltungsanordnung, zu injizieren.
-
Bei einem anderen Ausführungsbeispiel
ist der Injektor in der Lage, als Antwort auf eine Leseoperation
eines Cache-Speichers
Verzögerungen
zu bewirken.
-
Bei einem anderen Ausführungsbeispiel
ist der Injektor in der Lage, Prozessorpipeline-Blockierungen oder
Prozessorpipeline-Säuberungsoperationen
zu erzwingen. Bei diesem Ausführungsbeispiel ist
der Injektor ferner in der Lage, Verzweigungsfehlvorhersaqen zu
bewirken.
-
Das bestimmte Ausführungsbeispiel
des On-Chip-Injektors wird während
einer Konstruktionsüberprüfung verwendet,
um zu gewährleisten,
daß Ereignisse,
die ähnlich
den Injizierten sind, nicht einen unkorrigierten fehlerhaften Betrieb
der IC bewirken. Der Injektor wird ferner verwendet, um eine Fehlerhandhabungs-,
Fehlerprotokollierungs- und Fehlererholungssoftware zu überprüfen.
-
Bevorzugte Ausführungsbeispiele der vorliegenden
Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden
Zeichnungen näher
erläutert.
Es zeigen:
-
1 ein
Blockdiagramm einer Testschaltungsanordnung zum Injizieren seltener
Ereignisse, mit einer Logik zum Injizieren von Fehlern in einen Cache-Speicher-Leseweg;
-
2 ein
Blockdiagramm einer komplexen prozessorintegrierten Schaltung, die
mehrere Ereignisinjektoren aufweist;
-
3 ein
Blockdiagramm eines Ereignissynchronisierers für die vorliegende Erfindung;
-
4 ein
Blockdiagramm eines Ereignisgenerators für die vorliegende Erfindung;
und
-
5 ein
Flußdiagramm
eines Abschnitts einer Konstruktionsüberprüfung einer komplexen integrierten
Schaltung, wobei ein Injektor von pseudozufälligen Ereignissen verwendet
wird, um einen korrekten Betrieb der integrierten Schaltung und
eines Betriebssystems, die bzw. das Fehlererholungsmerkmale aufweist,
zu überprüfen.
-
In einer komplexen integrierten Schaltung
ist ein Injektor 100 von pseudozufälligen seltenen Ereignissen
vorgesehen. Der Injektor von pseudozufälligen seltenen Ereignissen
umfaßt
ein Linearrückkopplungsschieberegister
(LFSR) 102. Bei einem bestimmten Ausführungsbeispiel ist das LFSR
ein 15-Bit-LFSR, andere Ausführungsbeispiele
weisen jedoch andere Längen
auf.
-
Das LFSR 102 ist mit einem
Auslöserereignis 104 gekoppelt,
derart, daß es
auf das Auslöserereignis
hin mit einem Inhalt eines programmierbaren Anfangswertregisters 106 geladen
wird. Bei einem bestimmten Ausführungsbeispiel
wird das Auslöserereignis 104 durch
einen Prozessor der integrierten Schaltung, der auf eine bestimmte
Stelle Bezug nimmt, erzeugt, es wird jedoch vorweg erwähnt, daß auch andere
Auslöserereignisse,
einschließlich
Ereignissen, die auf einem Pin gebracht werden, verwendet werden
können.
-
Das LFSR 102 erzeugt ein
pseudozufälliges Muster,
das bitweise mit einem Inhalt eines programmierbaren Vergleichswertregisters 110 einer UND-Verknüpfung 108 unterzogen
wird. Diese bitweise UND-Verknüpfung 108 wählt effektiv
einen bestimmten Teilsatz von Bits des LFSR als Bits, die für eine Ereigniserzeugung
wichtig sind, aus; übrige
Bits werden effektiv ignoriert.
-
Als nächstes werden Ergebnisse der
bitweisen UND-Verknüpfung 108 einem
Reduktions-ODER-Gatter 112 bereitgestellt. Das Reduktions-ODER-Gatter 112 überprüft effektiv,
daß sich
alle relevanten Bits des LFSR 102 in einem be stimmten Zustand
befinden. Die bitweise UND-Logik 108 und die Reduktions-ODER-Logik 112,
wie sie gezeigt sind, erfordern, daß sich alle Bits des LFSR,
die von Bedeutung sind, in einem bestimmten Zustand befinden, um
ein Ereignis zu erzeugen. Es wird vorweg erwähnt, daß das bitweise UND 108 und
das Reduktions-ODER 112 durch ein bitweises ODER und ein Reduktions-UND
ersetzt werden können,
um Ereignisse zu erzeugen, wenn sich relevante Bits des LFSR in
einem bestimmten Zustand befinden.
-
Ein Ausgangssignal einer Pseudozufallspulsfolge 113 des
Reduktions-ODER wird zu einem Ereignissynchronisierer 114 gebracht,
in 3 detailliert gezeigt.
Der Ereignissynchronisierer 114 ist durch den Multiplexer 302 konfigurierbar,
um eine nicht-synchronisierte Injektion von Ereignissen zu ermöglichen
oder um Ereignisse in einem Synchronisationsmodus mit Synchronisationsereignissen
zu synchronisieren. In dem Synchronisationsmodus setzt jeder Puls
der Pseudozufallspulsfolge 113 ein SR-Flip-Flop 304.
Synchronisationsereignisse bei einem bestimmten Ausführungsbeispiel
werden aus Ereignissen ausgewählt,
die in der integrierten Schaltung auftreten können, einschließlich der
folgenden:
-
- a. von einer CPU stammender Cache-Lese-Bezugnahmen, die
in einem Cache-Speicher „treffen";
- b. TLB-gelesener Operationen; und
- c. einer Zweigbetriebsanweisungsdecodierung.
-
Diese Synchronisationsereignisse
werden durch einen Multiplexer 306 ausgewählt, mit
einem SR-Flip-Flop 304 einer UND-Verknüpfung 308 unterzogen
und durch ein D-Flip-Flop 310 zwischengespeichert. Das
D-Flip-Flop 310 stellt das SR-Flip-Flop 304 neu ein.
-
Pulse von dem Ereignissynchronisierer 114 werden
einem Ereignisgenerator 115 zugeführt, in 4 ausführlich gezeigt. Der Ereignisgenerator 115 verwendet
ein Verzögerungsregister 400,
einen Verzögerungsrückwärtszähler 402 und
einen Nulldetektor 404, um Ereignispulse um eine konfigurierbare Zeit
zu verzögern.
Der Ereignisgenerator 115 verwendet ferner ein Breitenregister 410,
einen Breitenrückwärtszähler 412 und
einen Nulldetektor 414, um Ereignispulse zu einer konfigurierbaren
Länge zu strecken.
-
Synchronisierte, gestreckte und verzögerte Ereignisse
werden einer Freigabelogik und einem Decodierer 420 zugeführt.
-
Der Injektor 100 pseudozufälliger seltener Ereignisse
arbeitet unter einer Steuerung der Steuerlogik 116 und
wird über
einen Testbus 118 konfiguriert. Bei einem Ausführungsbeispiel
ist der Testbus 118 durch I/0-Operationen, die durch einen
Prozessor der IC durchgeführt
werden, zugänglich,
bei einem anderen Ausführungsbeispiel
ist der Testbus 118 von außerhalb der integrierten Schaltung
durch eine serielle Schnittstelle zugänglich.
-
Bei einem bestimmten Ausführungsbeispiel, bei
dem die komplexe integrierte Schaltung eine prozessorintegrierte
Schaltung ist, wird ein Ereignisgeneratorausgang 130 des
Injektors pseudozufälliger seltener
Ereignisse zu einem Seltenes-Ereignis-Stimuluseingang eines exklusiven
ODER-Gatters 132 gebracht.
Bei diesem Ausführungsbeispiel
werden Daten durch Spaltenmultiplexoren 136 aus einem Cache-Speicher 134 gelesen.
Die meisten Bits der Daten gelangen zu einer Fehlererfassungs- und -steuerschaltungsanordnung 138,
ein ausgewähltes Bit,
oder, bei einem Mehrbitmodus, zwei Bits der Daten gelangen durch
das exklusive ODER-Gatter 132 zu
der Fehlererfassungs- und -korrekturschaltungsanordnung 138.
Der Ereignisgeneratorausgang 130 des Seltenes-Ereignis-Injektors 100 bewirkt
dadurch eine Einbitkorruption der Daten, während sie in die Fehlererfassungs-
und -korrekturschaltungsanordnung 138 gelesen werden, was ein Anwenden
der Fehlererfassungs- und -korrektur schaltungsanordnung und anderer
zugeordneter Schaltungen ermöglicht.
Der Ereignisinjektor simuliert dadurch Soft-Errors in dem Cache-Speicher.
-
Bei dem bestimmten Ausführungsbeispiel
ist der Seltenes-Ereignis-Injektor 100 in
der Lage, eine Abfolge von seltenen Ereignissen in einen Seltenes-Ereignis-Stimuluseingang
zu injizieren, der aus einer Vielzahl von möglichen Seltenes-Ereignis-Stimuluseingängen ausgewählt ist.
Die Seltenes-Ereignis-Stimuluseingänge umfassen Ein- und Doppelbit-Cache-Lesefehler
vor einer Fehlererfassungs- und -korrekturlogik, wie oben beschrieben
wurde. Bei diesem Ausführungsbeispiel
ist der Injektor ferner in der Lage, Seltenes-Ereignis-Stimuluseingänge zum Bewirken
von Paritätsfehlern
an TLB-Stellen und Paritätsfehlern
in einer paritätsgeschützten Verzweigungsvorhersageschaltungsanordnung
zu injizieren.
-
Bei einem anderen Ausführungsbeispiel
einer komplexen Prozessor-IC ist der Injektor in der Lage, in der
Lage, als Antwort eines Cache-Speichers auf eine Leseoperation Verzögerungen
zu bewirken. Bei diesem Ausführungsbeispiel
ist der Injektor ferner in der Lage, Cache-Schnüffeloperationen zu bestimmten
Cache-Adressen auszulösen.
-
Bei einem anderen Ausführungsbeispiel
ist der Injektor in der Lage, Prozessorpipeline-Blockierungen oder
Prozessorpipeline-Säuberungsoperationen
zu erzwingen.
-
Eine Vorrichtung ist an der IC vorgesehen, um
einen versehentlichen Betrieb des Injektors von pseudozufälligen seltenen
Ereignissen in Kundensystemen zu verhindern. Bei einem Ausführungsbeispiel
wird der Seltenes-Ereignis-Injektor
durch eine Bindungsoption freigegeben, wobei Produktionsbauelemente
gebunden an Kunden verkauft werden, so daß der Injektor gesperrt ist.
Bei einem anderen Ausführungsbeispiel
wird ein Betrieb des Seltenes-Ereignis-Injektors in Kundensystemen durch eine schmelzbare
Verknüp fung
gesperrt. Bei einem weiteren Ausführungsbeispiel erfordert ein
Betrieb des Seltenes-Ereignis-Injektors ein Schreiben eines komplexen
Musters in ein Schlüsselregister,
um einen Zugriff auf den Seltenes-Ereignis-Injektor zu entsperren.
-
Bei einem alternativen Ausführungsbeispiel sind
mehrere Injektoren 202, 204, 206 von
pseudozufälligen
seltenen Ereignissen in einer komplexen Prozessor-IC 200 eingebettet,
wie zuvor unter Bezugnahme auf 1 beschrieben
wurde. Jeder Injektor 202, 204, 206 von
pseudozufälligen
seltenen Ereignissen weist separate Anfangswertregister 106 und Vergleichswertregister 110 auf,
sowie ein LFSR 102, eine bitweise UND-Verknüpfung 108 und
eine Reduktions-ODER-Verknüpfung 112.
Dieses Ausführungsbeispiel
ermöglicht
eine Erzeugung von unabhängigen
Abfolgen von seltenen Ereignissen an mehr als einem Seltenes-Ereignis-Stimuluseingang. Mehrere
Injektoren von pseudozufälligen
seltenen Ereignissen zu haben, ermöglicht eine Erkundung einer
IC-Funktion, wobei beispielsweise Paritätsfehler an TLB-Orten mit oder
annähernd
mit korrigierbaren Einbit-Fehlern im Cache auftreten.
-
Die komplexe Prozessor-IC 200 weist
eine Busschnittstelle 208 auf, die einen Seltenes-Ereignis-Stimuluseingang
aufweist, um Busverzögerungs- und/oder
Busparitätsfehler
hinzuzufügen.
Es gibt auch mehrere Ebenen eines Cache-Speichers 210, 212,
wobei jeder Seltenes-Ereignis-Stimuluseingänge für eine Ein-
und Mehrbitfehlerinjektion aufweist, die durch Generatoren 202, 204, 206 von
pseudozufälligen
seltenen Ereignissen getrieben werden. Bei einem bestimmten Ausführungsbeispiel
ist jede Ebene des Cache-Speichers
mit einem separaten Seltenes-Ereignis-Injektor gekoppelt, um eine
Konstruktionsüberprüfung von
Cache-Fehlern fast
oder vollständig
zur selben Zeit in jeder Ebene des Cache-Speichers zu ermöglichen.
Es liegt auch eine Speicherabbildungseinheit 214 mit einem
TLB vor, die derart gekoppelt ist, daß ein Seltenes-Ereignis-Generator
206 Einbit-Lesefehler
injizieren kann. Die komplexe Prozessor-IC 200 weist ferner
Cache-Kennung-Speicher 216 und Ausführungspipelines 218 auf,
wie sie in der Technik bekannt sind.
-
Es liegt auch eine Verzweigungsvorhersageeinheit 220 vor,
wobei die Verzweigungsvorhersageeinheit einen Speicher aufweist,
der mit einem Generator 206 von pseudozufälligen seltenen
Ereignissen gekoppelt ist, der von dem Seltenes-Ereignis-Generator 204 separat
ist und der gekoppelt ist, um Ereignisse in einer niedrigeren Ebene
des Cache-Speichers 212 zu
erzeugen. Dies ermöglicht
eine Erzeugung von seltenen Ereignissen in der Verzweigungsvorhersageeinheit 220 fast
oder vollständig
zur selben Zeit wie Ereignisse in dem Cache-Speicher 212. Es
liegen auch Anweisungsdecodierungs- und Sendeeinheiten 222 und
Registerdateien 224 vor, wie sie für einen modernen Hochleistungsprozessor
erforderlich sind. Die Seltenes-Ereignis-Generatoren 202, 204, 206 werden über einen
Testbus 226 programmiert, der bei einem Ausführungsbeispiel
durch den Prozessor adressierbar ist.
-
Das bestimmte Ausführungsbeispiel
des auf einem Chip befindlichen Seltenes-Ereignis-Injektors wird
während
einer Konstruktionsüberprüfung verwendet,
um zu gewährleisten,
daß Ereignisse,
die ähnlich
den Injizierten sind, keinen fehlerhaften Betrieb der IC bewirken.
-
Während
des Konstruktionsüberprüfungsprozesses
der 5 ist der Seltenes-Ereignis-Injektor
konfiguriert 504, um die Fehlererfassungs- und -korrekturschaltungsanordnung
des Cache-Speichers der IC anzuwenden, indem er Fehler in Daten, die
aus dem Cache gelesen werden, injiziert. Ein Cache-Testprogramm
wird anschließend
geladen und ausgeführt
506, um zu überprüfen, daß alle Daten, die
in einen Prozessor der integrierten Schaltung von dem Cachesystem
gelesen werden, korrekt sind und daß alle Anweisungen des Prozessors
korrekt ausgeführt
werden. Das Cache-Testprogramm überprüft dadurch,
daß die
injizierten Fehler durch die Fehlererfassungs- und -korrekturlogik
138 korrekt erfaßt und
korrigiert wurden.
-
Der Injektor wird ferner verwendet,
um Fehlerhandhabungs-, Fehlerprotokollierungs- und Fehlererholungssoftwaremerkmale
eines Betriebssystems, das mit dem Teil verwendet werden soll, zu überprüfen. Dazu
wird der Pseudozufallsabfolgegenerator des Seltenes-Ereignis-Injektors
initialisiert 502, und sein Ereignisgenerator wird konfiguriert 504,
um Fehler in Daten, die aus dem Cache gelesen werden, zu injizieren.
Das Betriebssystem wird dann an einem System, das die IC beinhaltet,
geladen und ausgeführt
508. Eine korrekte Ausführung
von Testprogrammen an dem System wird überprüft 510, um zu überprüfen, daß injizierte
Fehler ordnungsgemäß korrigiert
wurden oder daß eine
ordnungsgemäße Erholung
in bezug auf dieselben stattfand. Fehlerprotokolle von dem Betriebssystem
werden inspiziert, um zu ermitteln, daß Ereignisse ordnungsgemäß injiziert und
protokolliert wurden. Die Schritte des Konfigurierens 504,
des Ladens und Ausführens 508 und
der Überprüfung 510 werden
für Fehler,
die in den TLB injiziert wurden, wiederholt. Jegliche angetroffenen Probleme
werden behoben, und der Prozeß wird nach
Bedarf wiederholt.