-
HINTERGRUND
-
1. Gebiet
-
Die
vorliegende Offenbarung betrifft das Gebiet der Datenverarbeitung
und insbesondere das Gebiet der Fehlerverminderung in Datenverarbeitungsvorrichtungen.
-
2. Beschreibung des Standes
der Technik
-
Da
die Verbesserungen der Herstellungstechnologien bezüglich integrierter
Schaltungen zunehmend kleinere Größen und geringere Betriebsspannungen
in Mikroprozessoren und anderen Datenverarbeitungsvorrichtungen
ermöglichen,
werden die Hersteller und Verwender derartiger Geräte zunehmend
mit dem Phänomen
von weichen Fehlern betroffen. Weiche Fehler treten auf, wenn Alphapartikel
und hochenergetische Neutronen integrierte Schaltungen treffen und
auf den Schaltknoten gespeicherte Ladungen ändern. Wenn die Ladungsänderung
ausreichend groß ist,
kann die Spannung auf einem Knoten von einem Bit-Wert, der einen logischen Zustand repräsentiert
auf einen Wert, der einen anderen logischen Zustand repräsentiert,
geändert
werden; in diesem Fall wird die Information, die auf dem Knoten
gespeichert ist, fehlerhaft. Allgemein nimmt die Rate weicher Fehler
(„SER") zu, wenn die Größe der Schaltung
abnimmt, da die Wahrscheinlichkeit, dass ein Auftreffen des Partikels
einen Spannungsknoten trifft, zunimmt, wenn die Schaltungsdichte
zunimmt. Ähnlich
nimmt die Differenz zwischen den Spannungswerten, die unterschiedliche logische
Zustände
darstellen, ab, wenn die Betriebsspannungen abnehmen, so dass weniger
Energie erforderlich ist, um die logischen Zustande auf Schaltungsknoten
zu verändern,
es treten mehr weiche Fehler auf.
-
Das
Abschirmen der Partikel, die weiche Fehler verursachen ist extrem
schwierig, so dass Datenverarbeitungsvorrichtungen oft Techniken
zum Erkennen und manchmal zum Korrigieren von weichen Fehlern aufweisen.
Diese Techniken zur Verminderung von Fehlern weisen Fehler-korrigierende-Codes auf
(„ECC"), Scrubbing Caches
und im Gleichschritt laufende Prozessoren auf. Die Verwendung von Techniken
zur Fehlerverminderung neigt jedoch zur Verringerung der Leistungsfähigkeit
und erhöht
den Leistungsverbrauch. Weiter kann die Notwendigkeit oder das Erwünschtsein
der Verwendung einer Fehlerverminderung entsprechend der Zeit und
dem Raum, in dem das Gerät
verwendet wird, variieren, da Umweltfaktoren wie Höhe, Magnetfeldstärke und Richtung
und Sonnenaktivität
SER beeinflussen kann.
-
Es
kann daher eine selektive Aktivierung der Fehlerminderung erwünscht sein.
-
KURZE ERLÄUTERUNG DER ZEICHNUNGEN
-
Die
vorliegende Erfindung wird beispielhaft und ohne Beschränkung in
den beiliegenden Figuren gezeigt.
-
1 zeigt
ein Ausführungsbeispiel
der vorliegenden Erfindung in einem Prozessor.
-
2 zeigt
einen Mehrkern-Prozessor nach einem Ausführungsbeispiel der vorliegenden
Erfindung.
-
3 zeigt
ein System nach einem Ausführungsbeispiel
der vorliegenden Erfindung.
-
4 zeigt
ein Ausführungsbeispiel
der vorliegenden Erfindung bei einem Verfahren zur selektiven Aktivierung
der Fehlerminderung basierend auf einer Fehlerzahl des Bit-Werts.
-
EINGEHENDE BESCHREIBUNG
-
Die
nachfolgende Beschreibung beschreibt Ausführungsbeispiele der selektiven
Aktivierung einer Fehlerverminderung basierend auf der Fehlerzahl
des Bit-Werts. In der nachfolgenden Beschreibung sind eine Anzahl
besonderer Einzelheiten, etwa Komponenten und Systemkonfigurationen
angegeben, um ein besseres Verständnis
der vorliegenden Erfindung zu erlauben. Es ergibt sich jedoch für den Fachmann,
dass die Erfindung ohne derartige besondere Einzelheiten verwirklicht
werden kann. Weiter werden einige allgemein bekannte Strukturen,
Schaltungen, Techniken und dergleichen nicht näher in Einzelheiten beschrieben,
um eine unnötige
Verundeutlichung der vorliegenden Erfindung zu vermeiden.
-
Aufgrund
der zufälligen
Natur des Partikelflusses der für
weiche Fehler verantwortlich ist, kann eine vernünftige Abschätzung des
SER einen relativ großen
Raum zur Fehlererkennung verlangen. Die vorliegende Erfindung kann
erwünscht
sein, weil sie eine Fehlererkennung unter Verwendung von Strukturen,
etwa Cache-Speicher und Abtastzellen schafft, die schon einen beträchtlichen
Bereich der Größe vieler
Prozessoren und anderer Geräte
einnehmen. Die vorliegende Erfindung kann daher verwendet werden
ohne zusätzliche
Fehlererkennungsstrukturen zu erfordern, die die Größe und damit
die Kosten erheblich erhöhen
würde.
-
1 zeigt
ein Ausführungsbeispiel
der vorliegenden Erfindung in einem Prozessor 100. Der Prozessor 100 kann
einer aus seiner Vielzahl von unterschiedlichen Prozessoren sein,
etwa ein Prozessor der Pentium®-Prozessor-Familie, der
Itanium®-Prozessor-Familie
oder einer anderen Prozessor-Familie der Intel Corporation und andere
Prozessoren einer anderen Firma. Die vorliegende Erfindung kann
weiter verwendet werden bei einer anderen Vorrichtung als einem
Prozessor, etwa einer Speichereinheit. Der Prozessor 100 weist
ein Speicherfeld 110, eine Speicherfehlerzählereinheit 120 und
eine Speicherfehlerminderungseinheit 130 auf.
-
Das
Speicherfeld 110 kann aus einer beliebigen Anzahl von Reihen
und einer beliebigen Anzahl von Spalten jeder Art von Speicherzellen
bestehen, etwa statischen Speicherzellen mit wahlfreiem Zugriff,
die für
jede beliebige Funktion verwendet wird, etwa als ein Cache- Speicher. Das Speicherfeld 110 weist
eine Fehlererkennungsschaltung 110 zum Erkennen von Bit-Wertfehlern
in einem Speicherfeld 110 unter Verwendung jeder bekannten
Technik, etwa der Parität
oder ECC, auf. Viele Prozessoren und andere Geräteausbildungen weisen einen
relativ großen
Raum für
ein Cache oder andere Speicherfelder auf und viele dieser Felder
weisen bereits Parität oder
ECC auf. Es kann daher ein erheblicher Bereich der Einheit zu geringen
Kosten zur Fehlererkennung nach der vorliegenden Erfindung verfügbar sein.
-
Die
Speicherfehlerzähleinheit 120 weist
einen Feldfehlerzähler 121,
einen Feldlesezähler 122 und
ein Feldzählerkontrollmodul 112 auf.
Der Feldfehlerzähler 121 kann
jede bekannte Zählerschaltung sein,
synchron oder asynchron, mit einem Zähleingang, einem Zählausgang
und einer Rückstellung. Der
Zählereingang
des Feldfehlerzählers 121 ist
mit der Fehlererkennungsschaltung 111 zum Empfangen eines
Signals gekoppelt das angibt, dass bei dem Lesen eines Fehlerfelds 110 ein
Bit-Wertfehler erkannt worden ist der Art, dass der Zählausgang
des Feldfehlerzählers 121 die
Gesamtanzahl von Fehlern des Bit-Werts, die bei Lesungen des Speicherfeldes 110 angibt,
seit der Feldfehlerzähler 121 zurückgestellt ist.
-
Der
Feldlesezähler 122 kann
jede bekannte Zählerschaltung
sein, synchron oder asynchron, mit einem Zählereingang, einem Zählerausgang
und einer Rückstellung.
Der Eingang des Feldlesezählers 122 ist
mit einem Speicherfeld 110 gekoppelt zum Empfangen eines
Signals, das angibt, dass das Speicherfeld 110 gelesen
ist, so dass der Zählerausgang des
Feldlesefehlers 122 die Anzahl der Male angibt, die das
Speicherfeld 110 gelesen worden ist, seit der Feldlesezähler rückgestellt
worden ist.
-
Im
Ausführungsbeispiel
werden der Feldlesezähler 121 und
der Feldlesezähler 122,
immer dann zurückgestellt,
wenn die Anzahl von Lesungen des Speicherfeldes 110, das
von dem Feldlesezähler 122 aufgezählt worden
ist, eine bestimmte Grenze erreicht, beispielsweise jede 1.000 Lesungen.
Der Feldlesegrenzwert kann fest oder programmierbar sein. Ein geeigneter
Feldlesegrenzwert kann basierend auf der Größe, der Anzahl von Bits und
der Fläche
eines Speicherfeldes 110, der Erwartung der Anzahl von
Lesungen, die für
eine vernünftigerweise
genaue Bestimmung des SER benötigt
wird und anderen Faktoren gewählt
werden. Der Feldlesezähler 121 und
der Feldlesezähler 122 werden
dann auch nach einer bestimmen Zeit rückgestellt, nachdem eine bestimmte
Zeit (beispielsweise gemessenen in Sekunden) verstrichen ist, so
dass Änderungen
in dem SER erkannt werden kann, auch wenn das Speicherfeld 110 relativ
inaktiv ist. Bei anderen Ausführungsbeispielen
kann der Zähler
auch oder stattdessen basierend auf einem anderen Ereignis oder
Signal zurückgestellt
werden.
-
Bei
diesem Ausführungsbeispiel
ist der Ausgang des Feldfehlerzählers 121 mit
dem Feldzählersteuermodul 123 gekoppelt,
so dass das Feldzählersteuermodul 123 die
Anzahl von Bit-Wertfehlern für den
Feldlesegrenzwert empfängt,
immer wenn der Feldfehlerzähler 121 und
der Feldlesezähler 122 zurückgestellt
werden. Bei anderen Ausführungsbeispielen
kann die Anzahl von Bit-Wertfehlern kontinuierlich für das Feldzählersteuermodul 123 verfügbar sein
oder es kann an das Feldzählerkontrollmodul 123 basierend
auf jedem anderen Ereignis oder Signal gesendet werden.
-
Das
Feldzählsteuermodul 123 weist
weiter ein Feldfehlerschwellenwertregister 124 auf, das
programmiert werden kann, um einen Feldfehlerschwellenwert zu erhalten.
In anderen Ausführungsbeispielen
kann der Feldfehlerschwellenwert fest sein. Wenn die Anzahl von
Bit-Wertfehlern
den Feldfehlerschwellenwert übersteigt,
ist die Fehlerminderung zu aktivieren oder zu erhöhen. Ein
geeigneter Feldfehlerschwellenwert kann basierend auf der Anzahl
von Bit-Wertfehlern pro Feldlesungsgrenzwert, der der gewünschten
SER-Schwelle entspricht, gewählt
werden. Andere Ausführungsbeispiele
können
eine Logik zum Berechnen des SER von den Ausgängen der Zähler 121 und 122 aufweisen.
Die Bestimmung, ob die Anzahl der Bit-Wertfehler den Feldfehlerschwellenwert übersteigt,
kann unter Verwendung jedes bekannten Ansatzes, etwa durch Verwendung
einer Komparatorschaltung, durchgeführt werden.
-
Jedes
Zählsteuermodul 123 gibt
der Speicherfehlerminderungseinheit 120 an, ob die Anzahl von
Bit-Wertfehlern den Feldfehlerschwellenwert übersteigt. Die Angabe kann
auf dem Zustand oder dem Übergang
eines Signals (einem "hohes
SER" Signal) oder
jedem anderen Ansatz. Wenn das Feldzählerkontrollmodul 123 angibt,
dass die Feldfehlerschwelle überschritten
worden ist, aktiviert die Speicherfehlerminderungseinheit 130 die
Fehlerminderung oder erhöht
diese durch eine oder mehrere aus einer Vielzahl von bekannten Ansätzen. Beispielsweise
kann die Speicherfehlerminderungseinheit 130 das Bereinigen
der Daten des Speicherfeldes 110 aktivieren oder kann die
Häufigkeit
des periodischen Bereinigens der Daten des Speicherfeldes 110 erhöhen.
-
Die
vorliegende Erfindung kann, wie in 2 gezeigt,
auch bei Verwendung einer sequentiellen Logik zur Fehlererkennung
statt eines Speicherfeldes genutzt werden. 2 zeigt
einen Mehrkern-Prozessor 200 entsprechend einem Ausführungsbeispiel
der vorliegenden Erfindung. Im allgemeinen ist ein Mehrkern-Prozessor
eine einzige integrierte Schaltung mit mehr als einem Ausführungskern.
-
Ein
Ausführungskern
weist eine Logik zum Ausführen
von Befehlen auf. Zusätzlich
zu den Ausführungskernen
kann ein Mehrkern-Prozessor wie jede Kombination von zugeordneten
oder geteilten Ressourcen innerhalb des Schutzbereiches der vorliegenden
Erfindung aufweisen. Eine zugewiesene Ressource kann eine Ressource
sein, die einem einzigen Kern zugewiesen ist, etwa als ein zugewiesener
Cache der Ebene Eins oder kann eine Ressource sein, die einem Untersatz
der Kerne zugewiesen ist. Eine geteilte Ressource kann eine Ressource
sein, die von allen Kernen geteilt wird, etwa ein geteilter Cache
der Ebene 2 oder eine geteilte externe Buseinheit, die eine Schnittstelle
zwischen dem Mehrkern-Prozessor und einer weiteren Komponente unterstützt, oder
kann eine Ressource sein, die von einem beliebigen Untersatz der
Kerne geteilt wird.
-
Der
Mehrkern-Prozessor 200 weist einen Ausführungskern 201 und
einen Ausführungskern 202 auf.
Der Ausführungskern 201 weist
eine Abtastkette 210, die sequentielle Fehlerzählereinheit 220 und
die sequentielle Fehlerminderungseinheit 230 auf.
-
Die
Abtastkette 210 kann eine beliebige Anzahl von Abtastzellen
sein, die in Reihe angeordnet sind, etwa als eine Verkettung oder
eine Schieberegisteranordnung. Abtastzellen sind sequentielle Elemente
wie Auffangregister oder Flip-Flops, die zu vielen integrierten
Schaltungen hinzugefügt
werden, um eine redundante statische Information zum Testen und
Fehlerbeseitigen der sequentiellen Logik hinzugefügt sind.
Die Abtastzellen sind in einer Kette angeordnet, die verwendet werden
kann, zum sequentiellen Verschieben von Daten aus einem Gerät oder zum
Anordnen eines Geräts
in einen bekannten Zustand durch sequentielles Übertragen von Daten in das
Gerät.
Typischerweise sind die Abtastzellen inaktiviert, bevor das Gerät die Fabrik
verlässt.
-
Viele
Prozessorausbildungen weisen Abtastzellen auf und viele weisen eine „Full Scan"-Fähigkeit auf,
was bedeutet, dass eine Abtastzelle für alle sequentiellen Zustände des
Prozessors vorhanden ist. Es kann daher ein signifikanter Bereich
der Prozessoreinheit, möglicherweise
etwa ein so großer
Bereich wie für
die sequentielle Schaltung des Prozessors, bei geringen Kosten zur
Fehlererkennung nach der vorliegenden Erfindung verfügbar sein.
Um weiter die Fähigkeit
zur Fehlererkennung zu erhöhen, können vorhandene
Abtastzellausbildungen zum Erhöhen
ihrer Empfindlichkeit gegenüber
weichen Fehlern modifiziert sein. Diese Ausbildungsmodifikationen
wie das Hinzufügen
oder Entfernen von Kapazität
oder das Erhöhen
der Kanallänge
kann ohne Behindern der Funktionalität für einen normalen Abtastvorgang
ausgeführt
werden und kann derart ausgeführt
werden, dass sie für
einen normalen Abtastvorgang inaktiviert werden und zur Erkennung
weicher Fehler aktiviert werden. Entsprechend können die Abtastzellen, die
auf einem Prozessor oder einem anderen Gerät zum Testen und zum Bereinigen
vorgesehen sind, auch alternativ zur Erkennung von weichen Fehlern
ausgebildet sein.
-
Die
Fehlererkennung kann durch ständiges Verschieben
eines bekannten Datenwerts in den Eingang der Abtastkette 202 unter
Beobachten des Ausgangs durchgerührt
werden. Fehler werden durch einen unterschiedlichen Wert, der an
dem Ausgang der Abtastkette 210 ankommt, angegeben. Beispielsweise
kann der Eingang der Abtastkette 210 auf binär Null eingestellt
werden. Jede binäre
Eins, die an dem Ausgang der Abtastkette 210 ankommt, gibt
einen Bit-Wertfehler an. Das Beobachten von Übergängen von Null auf Eins statt
von Eins auf Null kann in einem n-well-Prozess erwünscht sein,
indem ein Übergang von
Null auf Eins verursacht sein kann sowohl durch Alpha- als auch
durch Neutronenpartikeltreffer, Eins zu Null Übergänge dagegen nur durch Neutronen verursacht
sein können.
-
Eine
sequentielle Fehlerzählereinheit 220 weist
einen sequentiellen Fehlerzähler 221 und
ein sequentielles Zählersteuermodul 223 auf.
Der sequentielle Fehlerzähler 221 kann
jede bekannte Zählerschaltung
sein, synchron oder asynchron, mit einem Zählereingang, einem Zählerausgang
und einer Rückstellung.
Der Zählereingang
des sequentiellen Fehlerzählers 221 ist
mit dem Ausgang der Abtastkette 210 derart gekoppelt, dass
der Zählerausgang des
sequentiellen Fehlerzählers 221 die
gesamte Anzahl der Mitwertfehler angibt, die von der Abtastkette 210 erkannt
worden ist, seit der sequentielle Fehlerzähler 221 zurückgestellt
worden ist. Bei diesem Ausführungsbeispiel
wird der sequentielle Fehlerzähler 221 nach
jeder vollen Verschiebung der Abtastkette 210, das heißt die Anzahl
der Taktzyklen, die erforderlich ist für einen eingegeben Wert an
dem Eingang zum Erreichen des Ausgangs, zurückgestellt. Bei anderen Ausführungsbeispielen
kann der Zähler auch
oder stattdessen basierend auf jedem anderen Ereignis oder Signal
zurückgestellt
werden.
-
Bei
diesem Ausführungsbeispiel
ist der Ausgang des sequentiellen Fehlerzählers 221 mit dem sequentiellen
Zählersteuermodul 223 derart
gekoppelt, dass das sequentielle Zählersteuermodul 223 die
Anzahl von Bitwertfehlern pro voller Abtastung empfängt, immer
wenn der sequentielle Fehlerzähler 221 zurückgestellt
wird. Bei anderen Ausführungsbeispielen
kann die Anzahl von Bitwertfehlern kontinuierlich für das sequentielle
Zählersteuermodul 223 verfügbar sein
oder kann an das sequentielle Zählersteuermodul 223 basierend
auf jedem anderen Ereignis oder Signal ausgesendet werden.
-
Das
sequentielle Zählersteuermodul 223 weist
weiter ein sequentielles Fehlerschwellenwertregister 224 auf,
das zum Halten eines sequentiellen Fehlerschwellenwerts programmiert
sein kann. Bei anderen Ausführungsbeispielen
kann der Fehlerschwellenwert fest sein. Wenn die Anzahl von Bitwertfehlern
den sequentiellen Fehlerschwellenwert übersteigt, wird die Fehlerminderung
aktiviert oder erhöht.
Ein geeigneter sequentieller Fehlerschwellenwert kann basierend
auf der Anzahl von Abtastzellen in der Abtastkette 210 ausgewählt werden.
Andere Ausführungsbeispiele
können
einen Abtastzähler zum
Zählen
der Anzahl von teilweise oder vollen Abtastungen und eine Logik
zum Berechnen der SER aus den Ausgängen eines Fehlerzählers und
des Abtastzählers
aufweisen. Die Bestimmung, ob die Anzahl von Bitwertfehlern den
sequentiellen Fehlerschwellenwert übersteigt, kann unter Verwendung
jedes bekannten Ansatzes ausgeführt
werden, etwa der Verwendung einer Komparatorschaltung.
-
Das
sequentielle Zählersteuermodul 223 gibt der
sequentiellen Fehlerminderungseinheit 230 an, ob die Anzahl
von Bitwertfehlern den sequentiellen Fehlerschwellenwert übersteigt.
Die Angabe kann auf dem Status und in dem Übergang eines hohen SER-Signals
oder jedes anderen Ansatzes basieren. Wenn das sequentielle Zählersteuermodul 223 angibt,
dass die sequentielle Fehlerschwelle überstiegen worden ist, aktiviert
die sequentielle Fehlerminderungseinheit 230 die Fehlerminderung
oder erhöht diese
durch einen oder mehreren aus einer Vielzahl von geeigneten Modi.
Beispielsweise kann die sequentielle Fehlerminderungseinheit 230 den
Ausführungskern 202 aktivieren,
um im Gleichschritt mit dem Ausführungskern 201 zu
laufen.
-
Die
vorliegende Erfindung kann weiter bei einer Vorrichtung verwendet
werden, die eine Kombination von Speicherfeldern, Abtastketten oder
jede andere Struktur mit Statuselementen, bei dem Bitwertfehler
erkannt werden können,
einsetzt. Beispielsweise kann der Prozessor zwei oder mehrere Speicherfelder
aufweisen, jedes mit einer eigenen entsprechenden Fehlerzähleinheit
und Fehlerminderungseinheit oder zwei oder mehreren Ausführungskernen,
jedem mit einer eigenen entsprechenden Fehlerkette und Fehlerzähl- und
Minderungseinheiten. Jede Fehlerzähleinheit kann ein oder mehrere Schwellenwertregister
aufweisen zum Vorsehen von Schwellenwerten die zu kalibrieren sind
zum Berücksichtigen
von Faktoren wie der Prozess- und architekturalen Verwundbarkeit.
Die Schwellenwertregister können
programmierbar sein um ein Einstellen der Schwellenwerte zu erlauben.
-
Bei
einigen Ausführungsbeispielen
kann eine Fehlerzähleinheit
mehrere Zähler
für unterschiedliche
Quellen und Typen von Fehlern aufweisen und/oder hohe SER-Signale
von mehreren Fehlerzähleinheiten
können
gemeinsam zum Bestimmen ob, welche Art und an welchem Fehlerwert
und wo eine Fehlerwertminderung aktiviert ist verarbeitet werden.
Bei einem solchen Ausführungsbeispiel
können
die hohen SER-Signale gemeinsam OR verschaltet sein. Beispielsweise
kann die Fehlerminderung aktiviert werden, wenn eines oder beides
einer Feldfehlerschwelle und einer sequentielle Fehlerschwelle überschritten
sind. Bei einem anderen derartigen Ausführungsbeispiel kann die Bestimmung, ob
eine Fehlerschwelle überschritten
worden ist, basierend auf einer Kombination von Fehlerzahlen von mehr
als einem Zähler
erfolgen. Die Zahlen können direkt
aufeinander aufaddiert werden oder eine Zahl kann stärker gewichtet
werden als die anderen, da der eine Typ oder die eine Quelle des
Fehlers eine größere Zuverlässigkeit
repräsentiert.
Innerhalb des Schutzbereiches der vorliegenden Erfindung sind auch
andere Formen der Verarbeitung von Fehlerzahlen und/oder hohen SER-Signalen
möglich,
etwa das Vorsehen eines bestimmten hohen SER-Signals zum Negieren oder Vernachlässigen eines
anderen spezifischen hohen SER-Signals.
-
Bei
jedem dieser oder anderen Ausführungsbeispielen
können
verschiedene Niveaus oder Arten von Fehlerminderung aktiviert oder
erhöht
werden, abhängig
von der Quelle und/oder der Verarbeitung der hohen SER-Signale.
Beispielsweise kann bei einem Ausführungsbeispiel mit Fehlererkennung
sowohl für
ein Cache und eine sequentielle Logik ein hohes SER-Signal lediglich
von dem Cache das Cache-Bereinigen aktivieren, ein hohes SER-Signal
von lediglich der sequentiellen Logik kann den Gleichschritt aktivieren
und ein hohes SER-Signal von beiden kann eine Erhöhung der
Betriebsspannung aktivieren.
-
Weitere
Ausführungsbeispiele
können
mehrere Fehlerschwellenwerte für
eine einzige Fehlerzähleinheit
aufweisen, so dass der Typ oder das Niveau der Fehlerminderung gewählt werden
kann in Abhängigkeit
von der erkannten Größe des SER.
Bei einem derartigen Ausführungsbeispiel
sind beispielsweise mehrere Ebenen der Fehlerminderung verfügbar und
unterschiedliche Höhen
von SER-Signalen können
verwendet werden um anzugeben, welche Ebene der Fehlerminderung
zu wählen
ist basierend darauf, welche Fehlerschwelle überschritten worden ist. Diese
Ebenen können
unterschieden werden durch unterschiedliche Niveaus einer einzelnen Technik,
wie variierenden Häufigkeiten
der Cachebereinigung oder kann unterschieden werden durch die Verwendung
von unterschiedlichen Techniken, die der Cachebereinigung in eine
Ebene unter Erhöhen der
Betriebsspannung in einer anderen Ebene. In eine oder mehreren dieser
Ebenen kann eine oder können
mehrere Fehlerminderungstechniken inaktiviert werden oder in einem
ausgeschalteten Zustand sein. In jeder der anderen Ebenen kann derselbe Fehlerminderungszustand
eingeschaltet oder aktiviert sein in einer einzigen oder mehreren
Niveaus.
-
Ausführungsbeispiele
der vorliegenden Erfindung können
jede der obigen Kombinationen aufweisen. Ein Ausführungsbeispiel
kann mehrere Fehlerzähler
einschließen,
jeder mit mehreren Fehlerschwellen und mehrere Ebenen der Fehlerminderung
gewählt
werden basierend auf der Verarbeitung der hohen SER-Signale. Das
Verarbeiten kann ausgeführt
werden um mehr Gewicht auf bestimmte Arten oder Quellen von Fehlern
zu geben. Beispielsweise kann eine bestimmte Ebene der Fehlerminderung erreicht
werden, wenn ein hohes SER-Signal von einem großen Speicher gegeben ist oder
zwei hohe SER-Signale von zwei kleineren Speicherfeldern vorliegen.
Bei einem anderen Ausführungsbeispiel
kann eine bestimmte Ebene der Fehlerminderung erreicht werden, wenn
ein hohes SER-Signal von einer Abtastkette festgestellt wird und
ein noch höheres
Niveau oder Ebene der Fehlerminderung kann erreicht werden, wenn
ein hohes SER-Signal in einem Speicherfeld festgestellt wird, da
das Speicherfeld einen größeren Abschnitt
des räumlichen
Bereichs als die Abtastkette repräsentiert.
-
Bei
einigen Ausführungsbeispielen
ist das Timing der hohen SER-Signale, der Zählerausgänge und andere Signale nicht
kritisch, da das Ziel sein kann zum Erkennen von bleibenden Perioden
mit hohen SER statt kurzer Spikes. Die Signale können daher geleitet oder verzögert sein
und können
von unterschiedlichen Einheiten zu unterschiedlichen Zeiten ankommen.
Zusätzlich
kann eine Hysterese in dem hohen SER-Signal erwünscht sein und/oder wenige
Iterationen der Fehlererkennung können durchgeführt werden
vor dem Aktivieren, Erhöhen,
Deaktivieren oder Verringern der Fehlerminderung zum Vermeiden von
Kollisionen zwischen Fehlerminderungsweisen.
-
3 zeigt
das System 300 nach einem Ausführungsbeispiel der vorliegenden
Erfindung. Das System 300 weist einen Prozessor 310,
einen Systemkontroller 320, einen dauerhaften Speicher 330 und
einen Systemspeicher 340 auf. Der Prozessor 310 kann
jeder Prozessor wie oben beschrieben sein, einschließlich einer
funktionellen Einheit 311 und der Fehlerzählsteuereinheit 312.
Die funktionelle Einheit 311 weist ein Speicherfeld, eine
sequentielle Logik oder irgendeine andere Struktur auf, die Zustandselemente
hat, in denen Bitwertfehler erkannt werden können. Die Fehlerzählsteuereinheit 312 zählt die
Anzahl von Bitwertfehlern in der funktionellen Einheit 311 und
gibt an, ob die Anzahl von Bitwertfehlern in der funktionalen Einheit 311 einen
Fehlerschwellenwert übersteigt.
Bei diesem Ausführungsbeispiel
gibt die Steuereinheit 312 ein hohes SER-Signal 313 aus,
wenn die Anzahl von Bitwertfehlern in der funktionellen Einheit 311 den
Fehlerschwellenwert übersteigt.
-
Der
Systemkontrolle 320 kann irgendeine Chipset-Komponente
sein oder eine andere Komponente, die mit dem Prozessor 310 gekoppelt
ist um das hohe SER-Signal 313 zu empfangen. Bei diesem Ausführungsbeispiel,
bei dem ein hohes SER-Signal 313 vorliegt, aktiviert oder
erhöht
der Systemkontroller 320 die Fehlerminderung. Beispielsweise
kann der Systemkontroller 320 einen Spannungskontroller aufweisen
oder mit diesem gekoppelt sein, der das System, den Prozessor oder
einen anderen Spannungspegel anhebt, um weiche Fehler zu verringern.
-
Der
Systemkontroller 320 kann weiter aufweisen oder gekoppelt
sein mit einem dauerhaften Speicher 330 zum Speichern des
Zustandes des hohen SER-Signals 313 oder um auf andere
Modus eine Information bezüglich
des detektierten SER beizubehalten. Der dauerhafte Speicher 330 kann
jeder Speicher sein, der dazu in der Lage ist, Informationen beizubehalten,
während
das System 300 oder der Prozessor 310 ausgeschaltet
ist oder in einem anderen inaktiven Zustand ist. Beispielsweise
kann der dauerhafte Speicher 330 ein Flash-Speicher oder
ein nicht-flüchtiger
Speicher oder ein batteriegestützter Speicher
mit wahlfreiem Zugriff sein. In dem Fall, dass das System 300 abstürzt aufgrund
von weichen Fehlern oder auf sonstige Modus, kann der Systemkontroller 320 den
dauerhaften Speicher 330 bei einem neuen Booten lesen,
um zu bestimmen, ob das zuletzt erkannte SER hoch war und, falls
es ist, das System 300 mit einer aktivierten Fehlerminderung neu
zu starten.
-
Der
Systemspeicher 340 kann jede Art eines Speichers sein,
etwa ein statischer oder dynamischer Speicher mit wahlfreiem Zugriff
oder ein Speicher einer magnetischen oder optischen Disk. Der Systemspeicher 340 kann
zum Speichern von Befehlen verwendet werden, die durch den Prozessor 320 auszuführen sind
und von Daten, die auf dem Prozessor 320 zu verarbeiten,
oder jede Information in beliebiger Form, etwa eine Betriebssystemsoftware,
eine Applikationssoftware oder Verwenderdaten.
-
Der
Prozessor 310, der Systemkontroller 320, der dauerhafte
Speicher 330 und der Systemspeicher 340 können miteinander
in jeder Anordnung, mit beliebigen Kommunikationsbussen direkt oder
mit Punkt-zu-Punkt-Verbindungen oder über andere Komponenten verbunden
sein. Das System 300 kann weiter einen beliebigen Bus,
etwa einen Peripheriebus oder andere Komponenten, wie Eingangs-/Ausgangseinheiten,
die in 3 nicht gezeigt sind, aufweisen.
-
4 zeigt
ein Ausführungsbeispiel
der vorliegenden Erfindung bei einem Verfahren zum selektiven Aktivieren
einer Fehlerminderung basierend auf der Bitwertfehlerzahl. Bei dem
Ausführungsbeispiel von 4 kann
die Fehlerminderung eine von zwei Modi sein, hoch oder tief. Die
hohe Modus kann eine Ein-Modus sein und der tiefe Modus kann eine Aus-Modus sein oder die
Fehlerminderung kann ein sein bei beiden Betriebsmodi aber auf einem
höheren Niveau
oder Häufigkeit
in dem hohen Betriebsmodus als in dem tiefen Betriebsmodus arbeiten.
Die Fehlerminderung in dem Ausführungsbeispiel
von 4 kann jeden bekannten Ansatz verwirklichen. Beispielsweise
kann der hohe Betriebsmodus ein Cache bereinigen aufweisen, zwei
oder mehr Prozessorkerne im Gleichschritt laufen lassen oder eine
Einrichtung oder einen Abschnitt einer Einrichtung mit einer höheren von
zwei Betriebspannungen betreiben. Die tiefe Betriebsmodus kann eine
geringere Häufigkeit der
Cachebereinigung oder überhaupt
keine aufweisen, das Laufen eines einzelnen Kerns alleine oder zwei
oder mehrerer nicht im Gleichschritt oder das Betreiben eines Geräts mit der
tieferen von zwei Betriebsspannungen.
-
In
dem Kasten 410 ist eine Iterationsgrenze programmiert in
einem Iterationsgrenzregister für
einen funktionalen Block in einem Prozessor oder einem Gerät. Der funktionale
Block weist ein Speicherfeld, eine sequentielle Logik oder jede
andere Struktur mit Statuselementen auf. Die Iterationsgrenze kann
basieren auf der Anzahl der Zustandselemente in dem funktionalen
Block, der Größe, der
Fläche,
der Konfiguration, der Architektur oder der Funktion des funktionalen
Blocks, der Prozesstechnologie, die zum Herstellen des Gerätes verwendet
wird, der erwarteten Verwendung oder der Verwendungsumgebung für das Gerät oder beliebigen
anderen Faktoren.
-
In
dem Kasten 411 wird ein Schwellenwert in ein Fehlerschwellenwertregister
für den
funktionalen Block programmiert. Der Fehlerschwellenwert kann auf
denselben Faktoren wie die Iterationsgrenze basieren zuzüglich Faktoren
wie der Iterationsgrenze selbst und der erwarteten SER.
-
In
dem Kasten 420 wird die Anzahl von Iterationen eines Ereignisses
gezählt,
während
der funktionale Block in Verwendung ist. Das Ereignis kann ein beliebiges
Ereignis sein, das aufgezählt
wird als Zähler
bei der Kalkulation der Fehlerrate. Beispielsweise kann das Ereignis
Lesezugriffe auf ein Speicherfeld oder voller Abtastungen der Abtastkette
sein. Die Anzahl der Iterationen kann unter Verwendung jeder Art des
Zählers
berechnet werden.
-
In
dem Kasten 421 wird die Anzahl der Bitwertfehler in den
Zustandselementen berechnet, während
der funktionale Block in Verwendung ist. Die Bitwertfehler können unter
Verwendung jeder beliebigen Technik erkannt werden, etwa als Parität für ein Speicherfeld
oder Eingeben eines bekannten Werts in den Eingang einer Abtastkette
unter Beobachten des Ausgangs auf sequentielle Logik. Die Anzahl
von Bitwertfehlern kann unter Verwendung einer beliebigen Art des
Zählers
berechnet werden.
-
In
dem Kasten 430 wird bestimmt, ob die Anzahl von Iterationen,
die in dem Kasten 420 aufgezählt ist, die Iterationsgrenze
erreicht hat. Die Bestimmung kann mit jedem geeigneten Ansatz ausgeführt werden,
etwa basierend auf einem bestimmten Bit eines Iterationszählerausgangs
oder Vergleichen eines Iterationszählerausgangs mit den Inhalten
eines Iterationsgrenzregisters. Wenn die Anzahl von Iterationen
die Iterationsgrenze erreicht, schreitet das Verfahren zum dem Kasten 431 fort.
Bis dahin verbleibt das Verfahren in dem Kasten 420.
-
In
dem Kasten 431 wird bestimmt, ob die Anzahl der in dem
Kasten 421 aufgezählten
Fehler den Fehlerschwellenwert übersteigt.
Die Bestimmung kann erfolgen nach jedem bekannten Ansatz, etwa Vergleichen
eines Fehlerzählerausgangs
mit den Inhalten eines Fehlerschwellenregisters. Wenn die Anzahl
von aufgezählten
Fehlern den Schwellenwert übersteigt,
schreitet das Verfahren zu dem Kasten 440 fort. Falls nicht,
verbleibt das Verfahren in dem Kasten 441.
-
In
den Kasten 440 und 441 wird bestimmt, ob die Fehlerminderung
in einer hohen Modus oder einer niedrigen Modus ausgeführt wird.
In dem niedrigen Modus schreitet das Verfahren von dem Kasten 440 zu
dem Kasten 450 oder von dem Kasten 441 zum dem
Kasten 460 fort. In einem hohen Modus schreitet das Verfahren
von dem Kasten 440 zu dem Kasten 451 oder von
dem Kasten 441 zu dem Kasten 460 fort.
-
In
dem Kasten 450 wird die Fehlerminderung aktiviert oder
erhöht
von dem niedrigen Modus in den hohen Modus. In dem Kasten 451 wird
die Fehlerminderung deaktiviert oder verringert von dem hohen Modus
in den niedrigen Modus. Von den Kasten 450 und 451 schreitet
das Verfahren zu dem Kasten 460 fort. In dem Kasten 460 werden
die Iteration und die Fehlerzahl rückgestellt. Von dem Kasten 460 kehrte das
Verfahren zu dem Kasten 420 zurück.
-
Innerhalb
des Schutzbereichs der vorliegenden Erfindung kann das in 4 dargestellte
Verfahren in einer unterschiedlichen Reihenfolge ausgeführt werden,
wobei die dargestellten Schritte ausgelassen werden, mit zusätzlichen
Schritten oder mit einer Kombination von neu angeordneten, weggelassenen
oder zusätzlichen
Schritten. Beispielsweise können
der Kasten 410 und alle Bezugnahmen auf eine Iterationszahl
weggelassen werden bei einem Ausführungsbeispiel, in dem die
Fehlerzahl mit einem Schwellenwert verglichen wird basierend auf
einer vollständigen
Verschiebung durch eine Abtastkette. Ein weiteres Beispiel der Bestimmungen,
ob die Fehlerminderung in einem hohen oder einem niedrigen Modus
erfolgt, kann bei einem Ausführungsbeispiel
verzichtet werden, bei der kein Unterschied besteht zwischen der
Implementation des Verbleibens in einem hohen Modus und Implementation
des Wechsels von einem tiefen Modus in eine hohe Modus. Weiter kann
die vorliegende Erfindung ausgeführt
werden bei Verfahren, bei denen eine Bestimmung erfolgt, ob eine
Fehlerminderung aktiviert werden kann, basierend auf einem oder
mehreren Fehlerzahlen von mehr als einer funktionalen Einheit und
bei Verfahren einschließlich
mehr als zwei Fehlerminderungsmodi.
-
Der
Prozessor 100, der Prozessor 200 oder jede andere
Komponente oder ein Bereich einer Komponente, die ausgebildet ist
entsprechend einem Ausführungsbeispiel
der vorliegenden Erfindung kann ausgebildet sein in verschiedenen
Stufen von der Ausgestaltung zur Simulation bis zur Fabrikation. Daten,
die eine Ausgestaltung ausbilden, können die Ausbildung in einer
Anzahl von Modi repräsentieren. Zunächst, wie
dies bei Simulationen nützlich
ist, kann die Hardware repräsentiert
werden unter Verwendung einer Hardware-Beschreibungssprache oder einer anderen
funktionalen Beschreibungssprache. Zusätzlich oder alternativ kann
ein Schaltkreisniveaumodel mit logischen und/oder Transistorgattern
erzeugt werden an verschiedenen Stufen des Ausgestaltungsprozesses.
Weiter erreichen die meisten Ausbildungen bei einem gewissen Zustand
ein Niveau, wo sie modelliert werden können mit Daten, die die gegenständliche
Anordnung verschiedener Geräte
darstellen. In einem Fall, wo übliche
Halbleiterherstellungstechniken verwendet werden, können die Daten,
die das Geräteanordnungsmodell
repräsentieren,
Daten sein, die das Vorhandensein oder das Fehlen von verschiedenen
Merkmalen auf unterschiedlichen Maskenschichten für Masken
angeben, die zur Herstellung einer integrierten Schaltung verwendet
werden.
-
Bei
jeder Darstellung der Ausbildung können die Daten auf jede Art
eines maschinenlesbaren Mediums gespeichert werden. Eine optische
oder elektrische Welle, die moduliert wird oder anders erzeugt wird
zum Übertragen
derartiger Information, ein Speicher oder ein magnetisches oder
optischen Speichermedium, etwa eine Disk, kann das maschinenlesbare
Medium sein. Jedes dieser Medien kann die Ausbildung „tragen" oder „haben" oder andere Information,
die bei einem Ausführungsbeispiel
der vorliegenden Erfindung verwendet wird, etwa als Befehle in einer
Fehlerrückstellungsroutine.
Wenn eine elektrische Trägerwelle,
die eine Information angibt oder trägt, übertragen wird, in dem Ausmaß das ein
Kopieren, Puffer oder Rückübertragen
des elektrischen Signals erfolgt, wird eine neue Kopie erstellt.
Die Handlungen des Kommunikationsproviders oder Netzwerkproviders
können
Handlungen des Kopierens eines Artikels sein, beispielsweise einer
Trägerwelle unter
Ausführen
der Techniken des vorliegenden Verfahrens.
-
Die
Wahlweise Aktivierung der Fehlerminderung basierend auf der Bitwertfehlerzahl
ist offenbart worden. Obwohl bestimmte Ausführungsbeispiele beschrieben
worden sind und in den beiliegenden Zeichnungen dargestellt sind,
versteht es sich, dass diese Ausführungsbeispiele lediglich illustrativ
sind und die Breite der Erfindung nicht einschränken und dass diese Erfindung
durch bestimmte Konstruktionen und Anordnungen, die gezeigt und
beschrieben worden sind, nicht begrenzt wird, es sind verschiedene
Modifikationen dem Fachmann bei dem Studium dieser Offenbarung zugänglich.
Beispielsweise kann die Erhöhung
der Fehlerminderung das Erhöhen
der Fehlerminderung von einem Aus-Betrieb zu einem Ein-Betrieb beinhalten,
und das Erhöhen
der Fehlerminderung wenn eine Fehlerzahl einen Fehlerschwellenwert übersteigt,
kann das Verringern der Fehlerminderung wenn die Fehlerzahl gleich
ist oder den Fehlerschwellwert übersteigt,
einschließen.
-
In
einem Gebiet der Technologie wie vorliegend, wo die Entwicklung
schnell verläuft
und weitere Fortschritte nicht einfach vorherzusehen sind, können die
offenbarten Ausführungsbeispiele
in ihrer Anordnung oder in ihren Einzelheiten modifizierbar sein wie
es ermöglicht
wird durch den technischen Fortschritt ohne sich von den Grundlagen
der vorliegenden Offenbarung oder den Schutzbereich der beiliegenden
Ansprüche
zu lösen.
-
ZUSAMMENFASSUNG
-
Ausführungsbeispiele
von Vorrichtungen und Verfahren zur selektiven Aktivierung einer
Fehlerminderung basierend auf der Anzahl von Bitwertfehlern werden
offenbart. Bei einem Ausführungsbeispiel weist
die Vorrichtung eine Mehrzahl von Zustandselementen, einen Fehlerzähler und
eine Aktivierungslogik auf. Der Fehlerzähler dient zum Zählen der
Anzahl von Bitwertfehlern in den Zustandselementen. Die Aktivierungslogik
dient zum Erhöhen
der Fehlerminderung, wenn die Anzahl von Bitwertfehlern einen Schwellenwert übersteigt.