-
GEBIET
-
Diese
Erfindung bezieht sich auf das Feld der Cache-Speicher und insbesondere
auf Reparatur-Speicherstellen in einer Cache-Anordnung.
-
HINTERGRUND
-
Die
Bereitstellung von Designflexibilität in einem Cache durch das
Zulassen einer Vielzahl von Größen- und
Assoziierungsmöglichkeiten
bei gleichzeitiger Aufrechterhaltung der Geschwindigkeit, mit der
der Cache ein angefordertes Element ortet/speichert, kann für Cache
nutzende Architekturen höchst vorteilhaft
sein. Beim Umgang mit Halbleitertechnologie wird jedoch Energiesparen
zu einem zunehmend vordringlichen Anliegen, was häufig zur
Einschränkung
der Leistung oder einen Verzicht auf Zuverlässigkeit führt.
-
Eine
typische Stromsparmethode beim Umgang mit Cache-Anordnungen umfasst
das Betreiben der Cache-Anordnungen mit niedrigeren Spannungen als
den Rest des Gerätes
wie Prozessor, Chipsatz oder andere integrierte Schaltkreise. Niedrigere Spannungen
können
jedoch die Speicherstellen in einer Cache-Anordnung anfälliger für Soft-Fehler,
d. h. Flippen von Bits, machen, was in einem Fehler resultiert.
Außerdem
werden Cache-Speicherstellen
häufig
aufgrund von als harte Fehler bezeichneten Design-, Fertigungs- oder der Fertigung
folgende Ereignisse permanent beschädigt.
-
Traditionell
wird zur Korrektur von harten Fehlern ein den harten Fehler enthaltender
Cache-Block durch einen Ersatz-Block ersetzt. Im Gegensatz dazu
kann ein Soft-Fehler meist durch von der Cache-Anordnung eingesetzten
Fehlerkorrekturcode korrigiert werden. Fehlerkorrekturcode bezieht sich
typischerweise auf Logik, die Fehler ermitteln und potenziell orten
und auch beheben kann. Als Beispiel verwenden viele Cache-Anordnungen 1-Bitfehlerkorrekturcode
zur Korrektur von einzelnen Bitfehlern pro Wort oder Cache-Block.
-
1 zeigt
einen Cache 100 im bisherigen Stand der Technik. Häufig ist
ein Cache-Speicher
einfach eine Speicheranordnung, er kann jedoch auch als physikalisch
organisiert oder logisch mehrere Blöcke/Worte umfassend betrachtet
werden, beispielsweise Zeilen 106 bis 113. Zusätzlich kann
jedes Bit oder jede Gruppe von Bits in jedem Block des Cache logisch
betrachtet eine Spalte bilden, wie die Spalten 115, 116, 117 und 118.
Angenommen der Cache 100 umfasst 1-Bitfehlerkorrekturcode,
so können
einzelne Fehler pro Block, wie ein Bitfehler 130 in Cache-Block 106,
ein Bitfehler 131 in Cache-Block 109 und ein Bitfehler 132 in
Cache-Block 111 erfasst und behoben werden.
-
Wenn
die Spannungen zu Cache 100 jedoch unter eine kritische
Spannung gesenkt werden, beginnen bestimmte Bits zu versagen. Um
die Zuverlässigkeit
im Cache 100 zu gewährleisten,
kann daher die Spannung, mit welcher der Cache 100 versorgt wird,
nur zu einer kritischen Spannung reduziert werden, bevor in Blöcken wie
Cache-Block 113 mehrere Bitfehler aufzutreten beginnen,
wie Bitfehler 120 und 125. Folglich wird die Spannung
nicht weiter gesenkt, um die Zuverlässigkeit zu gewährleisten;
dem fällt
jedoch das Stromsparen zum Opfer.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die
vorliegende Erfindung wird beispielsweise illustriert und soll nicht
durch die Figuren der beigefügten
Zeichnungen eingeschränkt
werden.
-
1 illustriert
eine Ausführungsform
einer Cache-Anordnung gemäß dem bisherigen
Stand der Technik.
-
2 illustriert
eine Ausführungsform
eines Prozessors einschließlich
eines Cache, eines Reparatur-Cache und eines Reparaturmoduls.
-
3 illustriert
Ausführungsformen
physikalischer und logisch betrachtbarer Organisationen einer Cache-Anordnung.
-
4a illustriert
eine Ausführungsform
eines Reparatur-Cache zur Reparatur mehrerer Fehler in einem Cache.
-
4b illustriert
eine Ausführungsform
einer Nachschlagetabelle.
-
5 illustriert
eine Ausführungsform
eines Reparatur-Cache zur Reparatur von Fehlern in einer Cache-Anordnung
mit mehreren Sätzen
und Wegen.
-
6a illustriert
eine Ausführungsform
eines Flussdiagramms zur Reparatur einer Cache-Speicherstelle.
-
6b illustriert
eine spezifische Ausführungsform
des in 6a dargestellten Flussdiagramms
zur Reparatur einer Cache-Speicherstelle.
-
7 illustriert
eine Ausführungsform
eines Flussdiagramms zur Reparatur eines Bits in einem Cache, basierend
auf einer optimalen Konfiguration der mehreren in einem Cache zu
reparierenden Bits.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die
folgende Beschreibung enthält
zahlreiche spezifische Einzelheiten wie Beispiele spezifischer Cache-Organisationen,
Cache-Platzierungen, Cache-Größen etc.,
um ein gründliches
Verständnis der
vorliegenden Erfindung zu vermitteln. Einem Fachmann wird jedoch
ersichtlich sein, dass die vorliegende Erfindung ohne diese spezifischen
Einzelheiten in die Praxis umgesetzt werden kann. Andererseits werden
wohlbekannte Komponenten oder Verfahren wie Fehlerkorrektur, Cache-Design
und Cache-Schnittstellen nicht ausführlich beschrieben, um nicht
unnötigerweise
von der vorliegenden Erfindung abzulenken.
-
Das
hier beschriebene Verfahren dient zur Reparatur von Cache-Speichern/-Anordnungen.
In einer Ausführungsform
wird ein Cache auf einer Prozessoreinrichtung wie einem Mikroprozessor,
einem eingebetteten Prozessor, einem Zellenprozessor oder sonstigem
Gerät zur
Integer- oder Gleitkomma-Ausführung
umgesetzt. Die Verfahren und Anordnungen zur Reparatur eines Cache-Speichers sind
jedoch nicht derart begrenzt, da sie auf oder in Verbindung mit
jeder beliebigen Schaltkreisvorrichtung umgesetzt werden können.
-
EINE AUSFÜHRUNGSFORM EINES PROZESSORS
-
2 illustriert
einen Prozessor 200 einschließlich Prozessorlogik 220,
Cache 205, Reparatur-Cache 210 und Reparaturmodul 215.
Die Prozessorlogik 220 kann jegliche Logik zur Ausführung von Anweisungen
oder Operationen an Daten umfassen. In einer Ausführungsform
umfasst die Prozessorlogik 220 Logik zur Ausführung von
Integer- und Gleitkommadaten, Out-of-Order und parallel. Als weiteres
illustratives Beispiel umfasst die Prozessorlogik 220 Schnittstellenlogik
zur Kommunikation mit externen Geräten, Front-End-Logik zum Abrufen
und Entschlüsseln
von Daten oder Anweisungen, Out-of-Order Logik zur Unterstützung der
Out-of-Order Ausführung
von Anweisungen und mindestens eine Ausführungseinheit zum Ausführen von
Anweisungen und/oder Datenoperationen.
-
Der
Cache 205 umfasst jegliche mit dem Prozessor 200 assoziierte
Cache-Speicheranordnungen
einschließlich
eines Low-Level-Cache wie beispielsweise einen Level-1-Cache, einen
Mid-Level-Cache wie Trace-Cache oder Level-2-Cache oder einen höher angesiedelten
Cache wie einen Level-3-Cache. Obgleich Cache 205, Reparatur-Cache 210 und
Reparaturmodul 215 in Prozessor 200 dargestellt
sind, können
diese jeweils in einander integriert sein oder auch vom Prozessor 200 entfernt platziert
sein. Als Beispiel ist Reparaturmodul 215 in Reparatur-Cache 210 umgesetzt.
Jedes Modul wie beispielsweise Modul 215 kann in Hardware,
Software, Firmware oder einer beliebigen Kombination derselben implementiert
sein. In verschiedenen Ausführungsformen
variieren die Modulgrenzen gewöhnlich und
Funktionen werden gemeinsam oder auch separat implementiert. Der
Reparatur-Cache 210 dient zur Reparatur der Cache-Speicherstellen in
Cache 205 wie vom Reparaturmodul 215 bestimmt.
Der Reparatur- Cache 210 und
Modul 215 werden unter Bezugnahme auf 4a, 4b und 5 eingehender erläutert.
-
PHYSIKALISCHE UND LOGISCHE
ORGANISATION EINES CACHE
-
In 3 ist
die Organisation einer Cache-Anordnung 302 illustriert.
Häufig
ist ein Cache physikalisch als eine Anordnung organisiert. Die Cache-Anordnung 302 ist
als eindimensionale Anordnung illustriert, Caches können jedoch
mehrdimensional und physikalisch auf beliebige Weise organisiert sein.
Logisch kann man Cache-Speicher jedoch als mehrere Sätze (Sets),
Eigenschaften, Blöcke/Worte, Spalten
und Zellen/Bits umfassend betrachten. Des Weiteren verweist jede
Cache-Speicherstelle auf eine beliebige Granularität der Aufspaltung
eines Cache-Blocks/Worts. Eine Cache-Speicherstelle umfasst beispielsweise
ein einzelnes Bit oder verweist in der Alternative auf eine Bit-Gruppierung.
Der Cache 302 umfasst beliebige Speicherarten, wie eine
zum Zwischenspeichern von Daten oder Anweisungen verwendete Direktzugriffsspeicher-Vorrichtung (RAM)
oder statische RAM-/SRAM-Vorrichtung.
-
Traditionell
werden drei Arten von Cache-Organisationen verwendet: Voll assoziativ,
satzassoziativ und direkt gemappte Cache-Organisation. Bei einem
voll assoziativen Cache kann ein beliebiger Block des Hauptspeichers
in einem beliebigen Cache-Eintrag gespeichert werden, was den Cache-Vergleich
komplex gestaltet. Bei einem satzassoziativen Cache wird der Cache
typischerweise in logische Wege unterteilt, wobei Speicherstellen
aus dem Hauptspeicher an spezifischen vorbestimmten Speicherstellen
in jedem Weg gespeichert werden, was den Cache-Nachschlagevorgang
erleichtert. Die Speicherstellen in jedem der Wege, in denen eine Hauptspeicherstelle
gespeichert sein kann, werden häufig
logisch gruppiert und als Satz bezeichnet. Ein direkt gemappter
Cache, der effektiv ein assoziativer Cache mit nur einem Einweg-Satz
ist, hat eine Speicherstelle, an der mehrere Speicherstellen mit
gemeinsamen Adressattributen potenziell gespeichert werden können.
-
Um
die Erörterung
von Blöcken
und Spalten innerhalb eines Cache zu vereinfachen, wird angenommen,
dass Anordnung 302 logisch als Einweg-Satz mit Cache-Blöcke/Worten 305, 310 und 315 betrachtbar
ist. Jeder der Cache-Blöcke 305, 310 und 315 hat
mehrere Bits, wie Bits 306, 311 und 316. Die
physikalische Ansicht 300 illustriert die Cache-Blöcke physisch
als eindimensionale Anordnung organisiert. Die logische Ansicht 350 illustriert
eine Zeilen- und Spaltenkonfiguration, wobei Cache-Blöcke 305, 310 und 315 die
Zeilen sind und jedes der Bits an der gleichen Position der Cache-Blöcke eine Spalte
bilden. Beispielsweise enthält
die Spalte 320 die ersten Bits 306, 311 und 316 aus
Cache-Blöcken 305, 310 und 315.
-
Als
weiteres Beispiel ist Anordnung 302 logisch in M Zeilen
und N Spalten organisiert. Typischerweise hat ein Cache eine beliebige
Integeranzahl von M Zeilen und ein Vielfaches von 16 für N Bits in
jeder Zeile. Ein Cache ist jedoch nicht dermaßen begrenzt, da M und N jede
positive Ganzzahl sein können.
Wie vorstehend erläutert,
kann ein Cache sowohl physikalisch als auch logisch anders organisiert
sein als in 3 dargestellt. Ein Beispiel
eines satzassoziativen Cache wird beispielsweise in 5 illustriert
und unter Bezugnahme auf 5 erläutert.
-
EINE AUSFÜHRUNGSFORM EINES REPARATUR-CACHE
-
In 4a wird
ein Cache 405 und ein Reparatur-Cache 430 illustriert.
Cache 405 beinhaltet mehrere Worte 406–413,
die auch als Blöcke,
Lines, Zeilen oder Elemente bezeichnet werden. Wie vorstehend bezüglich 3 erläutert, ist
jedes Bit der Worte 406–413, das die gleiche
Position oder den Versatz (Offset) innerhalb seines jeweiligen Wortes einnimmt,
logisch betrachtbar oder logisch als Spalte organisiert. Beispielsweise
beinhaltet Spalte 415 das erste Bit in jeder der Zeilen 406 bis 413,
während Spalte 416 das
zweite Bit der Zeilen 406–413 beinhaltet.
-
Wie
illustriert, beinhaltet Cache 405 einige Fehler, wie beispielsweise
die Speicherstellen 421–423 und 426–429.
Diese Fehler können
entweder harte Fehler, Soft-Fehler oder eine Kombination harter
und Soft-Fehler sein. Bei einem harten Fehler versagt ein Bit oder
eine Cache-Speicherstelle aufgrund eines Fertigungs-, Hardware-
oder Designdefekts. Auch ein Soft-Fehler kann vorhersehbare Fehler
aufgrund von Fertigungsdefekten umfassen, und willkürliche Fehler,
die selten zweimal die gleiche Speicherstelle betreffen, wie kosmisches
Bit-Flippen aufgrund niedriger Spannungsversorgung.
-
Außerdem zeigt
Cache 405 reparierte Speicherstellen 426, 427, 428 und 429.
Reparierte Speicherstellen 426–429 werden ausführlicher
bezüglich Reparatur-Cache 430 erläutert.
-
Der
Reparatur-Cache 430, obgleich separat illustriert und an
Cache 405 gekoppelt, ist nicht solchermaßen beschränkt. So
ist beispielsweise in einer Ausführungsform
der Reparatur-Cache 430 in Cache 405 implementiert.
Der Reparatur-Cache umfasst mehrere „Wege". Ähnlich
wie bei einem in Sätze (Sets)
und Wege unterteilten Cache-Organisationsschema
umfasst ein Weg im Reparatur-Cache 430 mindestens ein zu
einer Spalte in Cache 405 gemapptes Bit oder Speicherstelle.
Als vereinfachtes Illustrationsbeispiel wird angenommen, dass jeder
Cache-Block 128 Bits breit ist, folglich umfasst der Reparatur-Cache 430 128
Wege. Es ist auch erwähnenswert,
dass der Reparatur-Cache 430 nicht über die gleiche Anzahl an Wegen
verfügen
muss wie Bits in Cache 405. Als Beispiel umfasst ein Reparatur-Cache 64 Wege,
obgleich ein mit dem Reparatur-Cache assoziierter Cache eine Blockbreite
von 128 Bits aufweist. In diesem Beispiel ist jeder Weg des Reparatur-Cache
mit zwei Spalten des Cache assoziiert oder gemappt. In dem Beispiel
in 4a hat jeder Weg in Reparatur-Cache 430 1
Bit, jeder Weg in Reparatur-Cache 430 kann jedoch stattdessen
mehrere Bits umfassen, wie später
in 5 gezeigt.
-
ASSOZIIEREN VON REPARATURWEGEN/-BITS MIT
SPALTEN EINES CACHE
-
Wege
in Reparatur-Cache 430 sind mit den logisch betrachtbaren
Spalten/vertikalen Streifen in Cache 405 assoziiert. Der
Einfachheit halber illustriert 4a jeden
Weg in Reparatur-Cache 430 als nur ein Bit umfassend, sodass
der erste Weg Bit 438 und der zweite Weg Bit 436 enthält. Bit 438 ist
mit Spalte 415 in Cache 405 assoziiert. In einer
Ausführungsform
ist Spalte 415 direkt zu Bit 438 gemappt. Folglich
werden Fehler in Spalte 415 zu Bit 438 gemappt
und von ihm repariert.
-
In
einer Ausführungsform,
wo eine unterschiedliche Anzahl an Wegen oder mehrere Bits in jedem
Weg eingesetzt werden, können
andere wohlbekannte Mapping-Methoden
und Austauschalgorithmen zum Assoziieren eines Wegs mit einer Spalte verwendet
werden. In einem Beispiel wird ein Reparatur-Bit zur Reparatur eines Fehlers
in einem Cache anhand eines auf letzten Gebrauch oder Zeit basierenden
Austauschalgorithmus ausgewählt.
Weitere Beispiele werden nachstehend unter Bezugnahme auf 5 erörtert.
-
Die
Assoziierung eines Reparatur-Bits oder Reparatur-Wegs zu einer logisch
betrachtbaren Spalte eines Cache kann in jedem beliebigen Modul
implementiert werden. In einer Ausführungsform ist Reparatur-Bit 438 mit
Spalte 415 durch Hardware assoziiert, wobei Reparatur-Bit 438 physikalisch
mit den auf Spalte 415 verweisenden Adressen oder Adressenteilen
assoziiert ist. In einer anderen Ausführungsform ist Reparatur-Bit 438 mit
Spalte 415 über eine
Kombination von Hardware und Software assoziiert. Als Beispiel werden
spezifische Bits einer physikalischen oder virtuellen Adresse, die
auf die Speicherstellen in Spalte 415 verweisen, dazu verwendet, Bit 438 mit
Spalte 415 zu assoziieren. Daher wird das korrekte Reparatur-Bit 438 zur
Reparatur dieser Speicherstelle verwendet, wenn ein Zugriff auf
diese spezifischen Bits vorliegt. Als weiteres Beispiel, wenn Reparatur-Bit 438 zur
Reparatur einer Speicherstelle Spalte 415 wie eine reparierte
Speicherstelle 428 eingesetzt wird, assoziiert eine Nachschlagetabelle
Reparatur-Bit 438 mit Spalte 415 und Speicherstelle 428.
-
BESTIMMEN EINER ZU REPARIERENDEN
SPEICHERSTELLE
-
Das
Ermitteln oder Ansteuern einer Speicherstelle oder eines in einem
Cache wie Cache 405 zu reparierenden Bits kann auf einer
Reihe von Faktoren oder Überlegungen
basieren. Häufig
wird beim Bestimmen einer zu reparierenden Speicherstelle oder eines
Bits zuerst bestimmt, ob bei diesem Bit oder dieser Speicherstelle
ein Fehler vorliegt. Wie vorstehend erläutert, illustriert Cache 405 eine
Reihe von Zellen mit Fehlern, wie Bit 421, 422 und 423,
sowie Bits 426–429.
Wie vorstehend ausgeführt,
umfassen Fehler 421–423 und 426–429 harte
Fehler, Soft-Fehler oder eine Kombination von harten und Soft-Fehlern.
Ein harter Fehler ist relativ leicht als Hardware- oder Fertigungsdefekt
zu ermitteln, und tendiert dazu, laufend einen Fehler hervorzurufen. Ein
Soft-Fehler ist jedoch gewöhnlich
schwerer zu entdecken, da ein Bit oder eine Speicherstelle einmal gültig sein
kann und beim nächsten
Zugriff ein Fehler auftreten kann. Dies trifft insbesondere zu,
wenn die einen Cache versorgende Spannung nahe an die kritische
Spannung einer Cache-Speicherstelle
abgesenkt wird, wo bestimmte Speicherstellen zu versagen beginnen.
-
Folglich
kann auch das Ermitteln, ob eine Speicherstelle oder ein Bit einen
Fehler hat, anfanglich auf einer Reihe von Faktoren basiert sein.
In einer ersten Ausführungsform
wird jede Zelle, die ein geflipptes Bit oder einen Fehlerwert erzeugt,
als schlechtes oder fehlerhaftes Bit bestimmt. In einer anderen
Ausführungsform
wird eine weniger rigide Methode zum Entdecken und Bestimmen fehlerhafter
Bits eingesetzt. So wird beispielsweise prädiktive Fehlerananalyse eingesetzt,
um zu bestimmen, ob ein Bit im Fehlerzustand ist. Hier wird nachverfolgt, wie
häufig
ein Bit oder eine Speicherstelle versagt, d. h. die Fehlerrate des
Bits. Nach einer vorgegebenen Anzahl von Fehlern oder wenn die Fehlerrate
hoch genug ist, wird das Bit als schlechtes oder fehlerhaftes, zu
reparierendes Bit bestimmt. Damit wird verhindert, dass ein Bit
als fehlerhaftes oder Fehler-Bit anhand zu weniger oder zu häufiger Ausfälle ausgewiesen
wird. Es können
zum Entdecken und/oder Identifizieren schlechter Cache-Speicherstellen
auch andere wohlbekannte Fehlererfassungsmethoden eingesetzt werden,
die hier nicht gesondert beschrieben werden, um nicht von der Erfindung
abzulenken.
-
Werden
mehrere Bits wie Bits 421–423 und 426–429 als
fehlerhaft betrachtet, so wird ein Bit oder mehrere Bits zur Reparatur
angesteuert. Die Reparatur von Bits in einem Cache wird unter Bezugnahme auf 5 ausführlicher
erörtert.
In einer Ausführungsform
wird eine optimale Konfiguration von zu reparierenden Bits bestimmt.
Wie vorstehend ausgeführt,
wird eine Reihe von Faktoren wie die Speicherstelle eines Bit in
einem Wort und Spalte, die Ausfallrate des Bits, die prädiktive
Analyse der Fehlerrate des Bits, die Anzahl der Fehler pro Wort,
die Anzahl der korrigierbaren Fehler pro Wort, die Optimierung der
Fehlerkorrektur pro Wort sowie andere wohlbekannte Aspekte zur Korrektur
oder Reparatur einer Cache-Speicherstelle dazu herangezogen, eine
optimale Konfiguration der zu reparierenden Bits zu bestimmen. Beim
Bestimmen eines zu reparierenden Bits können all diese Aspekte einzeln
oder in Verbindung miteinander erwogen werden.
-
Als
spezifisches illustratives Beispiel wird angenommen, Cache 405 setzt
Einzel-Bitfehlerkorrekturcode
ein. Folglich ist 1 Bit pro Wort oder Zeile mittels Fehlerkorrekturcode
korrigierbar. Zuvor wäre
ein Teil, beispielsweise ein Cache mit zwei schlechten Bits in einem
einzigen Cache-Block nicht nutzbar gewesen, da Einzel-Bitfehlerkorrektur
nicht die korrekten Daten wiederherstellen konnte. Durch den Einsatz
von Reparatur-Cache 430 kann jedoch die Spannung gesenkt
werden und mehr Fehler pro Wort werden repariert. In diesem Beispiel
haben Cache-Blöcke 409 und 413 jeweils
drei Bitfehler. Folglich werden, um die Anzahl der Fehler pro Cache-Block
zu einer korrigierbaren Anzahl zu reduzieren, in diesem Beispiel
1 Bit von den implementierten 1-Bit-Fehlerkorrekturcode,
zwei Bits in beiden Blöcken 409 und 413 des
Cache repariert. Dabei ist zu beachten, dass in Spalte 416 Bit 426 von
Reparatur-Bit 436 repariert wird, anstelle von Bit 421.
Bit 426 wird zur Reparatur aufgrund der Anzahl von Fehlern pro
Wort und der Anzahl an korrigierbaren Fehlern pro Wort angesteuert.
Würde in
der Tat Reparatur-Bit 436 stattdessen zur Reparatur von
Bit 421 verwendet, so enthielte Wort 409 drei
Fehler, von denen einer, Bit 427, repariert würde. Folglich
wäre der 1-Bit-Fehlerkorrekturcode
nicht in der Lage, beide Fehler zu korrigieren, und der Zugriff
auf Wort 409 würde
einen Fehler hervorrufen.
-
Bei
der Alternative wird, wenn Cache 405 einen Multi-Bit-Fehlerkorrekturcode
wie X-Bit Fehlerkorrektur einsetzt, eine optimale Konfiguration
der zu reparierenden Bits bestimmt, um die Anzahl der Fehler pro
Wort in Cache 405 auf X Fehler zu reduzieren. Insbesondere
wenn ein 2-Bitfehlerkorrekturcode eingesetzt wird, so beinhaltet
die Optimierung der Fehlerkorrektur pro Wort das Reduzieren der
Anzahl der Fehler pro Wort auf 2 oder weniger. Das Bestimmen eines
zu reparierenden Bits kann jedoch auch in hierarchischer Weise auf
den zuvor erläuterten Überlegungen
basieren. In einer Ausführungsform
besteht die erste Stufe darin, die Anzahl der Fehler pro Wort im
Cache auf zwei Fehler zu Reduzieren. Auf der zweiten Stufe, wenn
eine gleichwertige Auswahl zwischen zwei Bits zur Reparatur vorliegt,
basiert diese Auswahl auf sekundären
Faktoren.
-
Um
dies zu illustrieren, wird darauf hingewiesen, dass sowohl Bit 423 als
auch Bit 429 in Spalte 417 Kandidaten zur Reparatur
durch Reparatur-Bit 439 sind. In der Alternative zur illustrierten
Ausführungsform,
wo Reparatur-Bit 439 Bit 429 repariert, repariert
Reparatur-Bit 439 stattdessen Bit 423. Um diesen
Wechsel zu kompensieren, repariert Reparatur-Bit 440 Bit 441,
damit in Block 413 nur 1 Bitfehler verbleibt. Folglich
werden zur Auswahl zwischen den Bits 423 und 429 andere
sekundäre Überlegungen, wie
die Ausfallrate, dazu herangezogen zu bestimmen, welches Bit repariert
werden soll. Um das Beispiel weiter auszuführen: Angenommen, Bit 429 hat 20-mal
versagt hat (75% der Zeit) und Bit 423 5-mal (20% der Zeit),
dann wird eines der Bits basierend auf der Anzahl der Fehler oder
der Fehlerrate zur Reparatur ausgewählt. Es ist zu beachten, dass
nicht jeder Fehler oder jedes Bit repariert zu werden braucht, da
eine Anzahl von Fehlern verbleiben kann, die vom Fehlerkorrekturcode
korrigiert werden können.
-
Diese
zuvor erwähnten
Ausführungsformen und
Beispiele sind rein exemplarisch, wie von der Tatsache demonstriert,
dass Cache 405 einen Multi-Bitfehlerkorrekturcode oder keinerlei
Fehlerkorrekturcode einsetzen kann, sowie dass Bits als schlechte/fehlerhafte
Bits durch jede bekannte Methode bestimmt und zu reparierende Bits
anhand einer beliebigen Anzahl an Faktoren zur Reparatur angesteuert werden
können.
-
Modul 458,
anhand dessen die in Cache 405 zu reparierenden Bits bestimmt
werden, kann, obgleich es in Reparatur-Cache 430 abgebildet
ist, in Cache 405, Reparatur-Cache 430, einem
Cache 405 und Reparatur-Cache 430 umfassenden
Prozessor oder einer beliebigen Kombination derselben umgesetzt
werden. Modul 450 umfasst jegliche Hardware, Software,
Firmware, Code, Schaltkreise oder Kombinationen derselben zur Ermittlung
von in Cache 405 zu reparierenden Bits. Jegliches Modul
wie Modul 458 kann in Hardware, Software, Firmware oder
einer beliebigen Kombination derselben umgesetzt werden. Gewöhnlich variieren
Modulgrenzen und Funktionen werden in unterschiedlichen Ausführungen
gemeinsam oder separat umgesetzt. Firmware bezeichnet häufig eine
Kombination von Hardware- und Software-/Mikrocode-Routinen zum Ausführen einer
Funktion.
-
In
einer Ausführungsform
von Modul 450 wird in Cache 405 beinhaltete Logik
einschließlich Fehlerkorrekturcode
eingesetzt, um zu ermitteln, welche Bits fehlerhaft sind, während Firmware
in Reparatur-Cache 430 die Anzahl der Ausfälle und/oder Fehlerraten
der Bits verfolgt und die zu reparierenden Bits anhand der Anzahl
an Fehlern pro Wort und der Fehlerrate ansteuert. In anderen Ausführungsformen bestimmt
allein nur mit Reparatur-Cache 430 assoziierte Firmware,
welche Bits in Cache 405 zu reparieren sind.
-
Als
weiteres vereinfachtes illustratives Beispiel für Modul 450 verfolgt
Firmware das Versagen von Bits in Cache 405. Eine Firmware-Routine
bestimmt die zu reparierenden Bits anhand eines Algorithmus, basierend
auf einem beliebigen oder einer Kombination der vorstehend erwähnten Faktoren, wie
Anzahl der Fehler pro Wort, Anzahl der korrigierbaren Fehler pro
Wort, Fehlerrate und sonstigen Überlegungen.
Des Weiteren speichert die Firmware eine Nachschlagetabelle, um
eine beliebige Kombination der folgenden Elemente miteinander zu
assoziieren: eine zu reparierende Cache-Speicherstelle/zu reparierendes Bit,
einen Cache-Block/Wort, der die zu reparierende Cache-Speicherstelle/das
zu reparierende Bit enthält,
ein Reparatur-Bit für
Speicherstelle/Bit oder eine Spalte des Cache, welche zu reparierende
Cache-Speicherstelle/das
zu reparierende Bit enthält.
Wie nachstehend erörtert,
kann eine Nachschlagetabelle potenziell die Reparatur von Cache-Speicherstellen
beim Zugriff auf den Cache unterstützen.
-
REPARATUR VON CACHE-SPEICHERSTELLEN
-
Wie
vorstehend unter Bezugnahme auf 4a erläutert, repariert
ein Reparatur-Cache oder Reparaturmodul, wie beispielsweise Reparatur-Cache 430 und
Reparaturmodul 450, Bits in einem Cache, wie Cache 405,
mithilfe von mit Spalten in Cache 405, welche zu reparierende
Bits enthalten, assoziierten Reparatur-Bits, wie Reparatur-Bits 436–440.
Die Reparatur eines Bits in Cache 405 mit einem Reparatur-Bit
in Reparatur-Cache 430 beinhaltet das Ersetzen des zu reparierenden
Bits durch das Reparatur-Bit, Speichern der im zu reparierenden
Bit zu speichernden Werte, Bereitstellen des Inhalts des Reparatur- Bits anstelle des
zu reparierenden Bits sowie sonstige Unterstützung der Reparatur des im
Cache zu reparierenden Bits.
-
In
einer Ausführungsform
umfasst die Reparatur eines Bits in einem Cache mit einem Reparatur-Bit
das Bestimmen, ob eine Anforderung an einen Cache ein Wort im Cache
betrifft, das ein zu reparierendes Bit enthält und das Ersetzen der aus
dem Bit in der Cache zu lesenden Information durch die im Reparatur-Bit
gespeicherte logische Information. Als Beispiel wird angenommen,
Reparatur-Bit 428 soll repariert werden. Dann wird entweder
der Inhalt von Bit 428 zu Bit 438 kopiert oder
bei einem vorherigen Schreiben in Block 413 wurde das Bit,
das in Bit 428 gespeichert werden sollte, in Bit 438 gespeichert. Wird
in der Folge ein Lesevorgang in Block 413 angefordert,
so wird Bit 428 beim Durchführen des Lesevorgangs durch
Lesen des in Reparatur-Bit 438 gespeicherten logischen
Werts repariert. Aus einer anderen Perspektive betrachtet, erhält die Vorrichtung,
die den Lesevorgang anfordert, von Cache 405 den Cache-Block 413 mit
dem Bit aus der Reparatur-Speicherstelle 438, anstelle
des in Speicherstelle 428 gespeicherten Bits, da Speicherstelle 428 als schlechte
Speicherstelle mit potenziell inkorrekter Information ausgewiesen
wird.
-
In
einer anderen Ausführungsform
umfasst die Reparatur eines Bits in einem Cache mithilfe eines Reparatur-Bits
das Bestimmen, ob eine Anforderung an einen Cache ein Wort im Cache
betrifft, das ein zu reparierendes Bit enthält und das Schreiben/Speichern
der in das Bit im Cache zu schreibenden/speichernden logischen Information
im Reparatur-Bit. Als Beispiel wird angenommen, dass Reparatur-Bit 426 repariert
werden soll. Folglich wird bei einem Schreibvorgang in Wort 409 Bit 426 repariert,
indem der Wert, der in Bit 426 geschrieben werden soll, stattdessen
in Reparatur-Bit 436 geschrieben wird. Anders betrachtet,
schreibt das schreibende Gerät
in Wort 409 in Cache 405, und das Bit, das in
Speicherstelle 426 geschrieben werden soll, wird in Reparatur-Speicherstelle 436 geschrieben.
-
Wie
aus Vorstehendem hervorgeht, kann der Reparatur-Cache 430,
aus der Perspektive von Cache 405 betrachtet, transparent
operieren oder auch als zwischengeschaltet nicht transparent operieren.
-
In
einer Ausführungsform
sind Reparatur-Cache 430 und assoziierte Logik einer auf
Cache 405 zugreifenden Vorrichtung und Cache 405 zwischengeschaltet.
In dieser Ausführungsform
würde Reparatur-Cache 430 sämtliche
Anforderungen wie Lese- und Schreibanforderungen empfangen und die Cache-Speicherstelle
während
der Lese- und Schreiboperationen reparieren. Würde eine Vorrichtung beispielsweise
einen Lesevorgang aus Block 413 von Cache 405 anfordern,
so würde
Reparatur-Cache 430 diese Anforderung abfangen und beim
Erfüllen
der Anforderung den Inhalt von Cache-Block 413 der anfordernden
Vorrichtung bereitstellen, wobei Bit 428 durch Reparatur-Bit 438 und
Bit 429 durch Bit 439 ersetzt würde.
-
Der
zwischengeschaltete Betrieb kann jedoch bestimmte Cache-Zugriffszeiten
potenziell verlangsamen. Beispielsweise läge bei einem Zugriff auf Cache-Block 406,
wo keine Bits von Reparatur-Cache 430 repariert werden,
kein Grund für
den Reparatur-Cache vor, die Anforderung abzufangen und weiterzuleiten.
-
Folglich
repariert in einer anderen Ausführungsform
Reparatur-Cache 430 Bits in Cache 405 transparent.
Die transparente Operation von Reparatur-Cache 430 wird
durch Gegenüberstellung
mit dem vorstehenden Beispiel illustriert. Bei einem Zugriff auf
Cache-Block 413 betrachtet Reparatur-Cache 430 die
Speicherstelle, auf die die Anforderung verweist, anstatt die Anforderung
abzufangen und weiterzuleiten. Handelt es sich um eine Leseanforderung
mit Verweis auf Cache-Block 413, so wird Cache-Block 413 beim
Erfüllen
der Anforderung aus Cache 405 gesendet und Reparatur-Cache 430 ersetzt Cache-Speicherstelle 428 durch
Reparatur-Bit 438 und Cache-Speicherstelle 429 durch
Reparatur-Bit 439. Es zeigt sich, dass die Operation von
Reparatur-Cache 430 für
Cache 405 essenziell transparent ist, da Cache 405 die
Anforderung ungeachtet des Austauschens von Bits 428 und 429 durch
den Reparatur-Cache empfing und ausführte. Außerdem wird bei einem Schreibvorgang
in Cache-Block 413 dieser hinsichtlich Cache 405 wie
zuvor fortgeführt,
und alle Werte werden in Cache 405 geschrieben. Die Werte für Cache-Speicherstelle 428 und 429 werden
jedoch auch in die Reparatur-Speicherstellen 438 und 439 geschrieben.
-
Wie
zuvor erwähnt,
kann Modul 450 in einer Ausführungsform verfolgen, welches
Bit in Cache 405 ein Reparatur-Bit in Reparatur-Cache 430 reparieren
soll. Beispielsweise sind in einer Nachschlagetabelle 460,
wie der in 4b illustrierten Nachschlagetabelle,
die in Spalte 465 gelisteten Reparatur-Bits mit den Bits
assoziiert, die sie in Cache 405 reparieren, und die als
korrespondierende Einträge
in Spalte 470 aufgeführt
sind. Daher kann, wenn ein Zugriff auf Cache-Block 413 die
Speicherstellen 428 und 429 umfasst, durch Prüfen der
Nachschlagetabelle 460 bestimmt werden, dass Bits 428 und 429 zur
Reparatur ausgewiesen werden. Des Weiteren beinhaltet Tabelle 460 die
Information, dass sie von Bits 438 and 439 repariert
werden sollen.
-
Modul 450 ist
jedoch nicht auf die spezifische Implementation von Nachschlagetabelle 460,
wie in 4b dargestellt beschränkt. Die
Nachschlagetabelle kann Verweise auf Adressen von Cache-Blöcken entweder
zusätzlich
zu den oder anstelle der in Spalte 470 aufgeführten Bits
enthalten. In einer anderen Ausführungsform
umfasst die Tabelle sämtliche Reparatur-Bits
in Reparatur-Cache 430 und setzt entweder ein Markierungsbit
oder schreibt eine entsprechende Bit-Speicherstelle, wenn ein Bit
repariert werden soll. In der Alternative, wie in 4b illustriert,
werden die Einträge
nur in Tabelle 460 erzeugt, wenn ein Reparatur-Bit eine
schlechte Speicherstelle reparieren soll.
-
Als
weiteres illustratives Beispiel wird angenommen, dass Bit 426 in
Cache 405 durch Modul 450 als reparaturbedürftiges
Bit identifiziert wird. Es wird des Weiteren angenommen, dass Modul 450 beschloss,
Bit 426 zu reparieren, weil Bit 426 den Fehlerkorrekturcode
ausgelöst
und die Firmware bestimmt hat, dass Bit 426 eine hohe Fehlerrate
hat. Außerdem
gibt es in Block 409, der Bit 426 enthält, zwei
weitere Fehler und nur 1-Bitfehlerkorrekturcode wird angewendet.
Folglich speichert Modul 450 in einer Tabelle eine Startadresse
und eine Größe von Cache-Block 409,
die Adresse von Bit 426 sowie die Adresse von Reparatur-Bit 436,
da Reparatur-Bit 436 mit Spalte 416 assoziiert
ist. Folglich wird bei einem Zugriff auf Cache-Block 409 die
Tabelle geprüft
und bestimmt, dass Cache-Block 409 aufgeführt ist.
Nach Erfüllen
der Anforderung repariert Modul 405 Bit 426 mit
Reparatur-Bit 436, da sie in der Tabelle mit dem Cache-Block
assoziiert sind. Als Modifikation sind mehrere Cache-Speicherstellen
und Reparatur-Bits mit Cache-Blöcken
assoziiert.
-
Als
illustratives Beispiel demonstriert das vorstehende Beispiel die
großen
Möglichkeiten
von Reparaturmodul 450 und Nachschlagetabelle 460. So
kann Tabelle 460 beispielsweise über Hardware, Software, Firmware
oder eine Kombination derselben die folgenden Elemente miteinander
assoziieren, um zur Reparatur von Cache-Speicherstellen beizutragen:
eine zu reparierende Cache-Speicherstelle/zu reparierendes Bit,
ein(en) Cache-Block/Wort, der/das die zu reparierende Cache-Speicherstelle/das
zu reparierende Bit enthält,
ein(e) Reparatur-Speicherstelle/Bit oder eine Spalte des Cache, welche
die zu reparierende Cache-Speicherstelle/das zu reparierende Bit
enthält.
Es ist außerdem zu
beachten, dass Adressen, Verweise auf Adressen, Teile von Adressen
oder sonstige Repräsentationen
der vorstehenden zu assoziierenden Elemente gespeichert werden können.
-
EINE AUSFÜHRUNGSFORM EINES REPARATUR-CACHE
IN EINEM SYSTEM
-
5 illustriert
ein System mit einem an einen Speicher 561 gekoppelten
Mikroprozessor 505. Obgleich nicht illustriert, ist möglicherweise
zwischen Speicher 561 und Mikroprozessor 505 ein
Steuer-Hub oder sonstiger integrierter Schaltkreis/Vorrichtung gekoppelt.
Der Mikroprozessor 505 umfasst eine beliebige Logik oder
Module für
Datenoperationen oder zum Ausführen
von Anweisungen. Wie illustriert, umfasst der Mikroprozessor 505 Cache 510 und
Reparatur-Cache 550. Der Mikroprozessor 505 kann
außerdem
weitere Verarbeitungslogik zum Ausführen von Anweisungen, für Datenoperationen
oder Kommunikation mit externen Geräten aufweisen.
-
Im
dargestellten Beispiel ist Cache 510 als satzassoziativer
Zwei-Wege-Cache dargestellt; Cache 510 kann jedoch auch
als direkt gemappter Cache, assoziativer Cache, voll assoziativer
Cache, satzassoziativer Cache oder Weg-assoziativer Cache organisiert
sein.
-
Die
Hauptspeicheranordnung 561 ist häufig logisch in Seiten unterteilt,
wie beispielsweise die Seiten 565–580. Der Hauptspeicher 561 umfasst
beliebige Speicherbänke
oder Anordnungen wie Direktzugriffsspeicher (RAM), statischen Direktzugriffsspeicher
(SRAM), dynamischen RAM (DRAN) oder eine sonstige Hauptspeichervorrichtung.
-
Eine
Speicherstelle auf Seite 561 des Speichers, wie beispielsweise
Speicherstelle 566 auf Seite 565, wird durch eine
Hauptspeicheradresse 566 ausgewiesen. Die Adresse 566 enthält bestimmte Bits,
die für
jede Speicherstelle auf Seite 565 gleich sind, sowie einige
Bits, die den Versatz (Offset) der Speicherstelle 566 auf
Seite 565 ausweisen, d. h. den Seitenversatzwert. Ein Abschnitt 567 der
Adresse 566, den man auch als Markierungswert bezeichnet,
wird gewöhnlich
dazu benutzt, eine Speicherstelle 566 zu einem Satz in
Cache 510, wie Satz 540, zu mappen. Es können in
der Tat entweder Seite 565 oder alternativ die Speicherstellen
mit dem gleichen Versatz auf jeder der Seiten 565–580 zu
einem Satz in Abschnitt 567 gemappt werden. Satz 540 umfasst einen
Cache-Block im ersten Weg 511 und ein Cache-Block im zweiten
Weg 512, zu der die Adresse 566 gemappt ist. Folglich
braucht der Cache nach einer Anforderungen an die Hauptspeicherstelle 566 nur
Satz 540 zu prüfen,
um festzustellen, ob eine Kopie der Speicherstelle 566 existiert.
Jeder Weg in Cache 510 umfasst M Blöcke, wobei jeder Block N Bits umfasst.
In 5 werden M und N respektive als 8 Blöcke pro
Weg und 7 Bits pro Block dargestellt.
-
Reparatur-Cache 550 wird
gekoppelt an Cache 510 illustriert. Reparatur-Cache 550 umfasst
14 Wege, das bedeutet 1 Weg für
jedes der N Bits der M Blöcke
von Cache 510, wobei jeder der Wege mit mindestens einem
der N Bits assoziiert ist. Wie zuvor angegeben, wird in einer anderen
Ausführungsform ein
Reparatur-Cache umgesetzt, der 7 Wege einsetzt, wobei jeder Weg
zwei Bits aufweist und zu zwei Spalten von Cache 510 gemappt
ist. Wie gezeigt, umfasst jedoch Reparatur-Cache 550 14
Wege mit jeweils zwei Bits, assoziiert mit einer Spalte von Cache 510.
Weg 555 umfasst beispielsweise Bit 556 und Bit 557 und
ist mit Spalte 541 assoziiert.
-
In
einer Ausführungsform
setzt der Cache 510 Fehlerkorrekturcode ein. Als illustratives
Beispiel setzt der Cache 510 2-Bit-Fehlerkorrekturcode
ein, mit der Fähigkeit,
zwei Bits pro Block von Cache 510 zu korrigieren. Block 521 umfasst
drei fehlerhafte Bits, Bits 545–547, die nicht alle
mit 2-Bit-Fehlerkorrekturcode korrigiert werden können. Folglich
wird mit Spalte 541 assoziiertes Reparatur-Bit 556 in
Weg 555 zur Reparatur von Bit 545 eingesetzt.
Des Weiteren beinhaltet Block 522 vier schlechte Bits.
Deshalb wird das zweite Bit in Weg 555, das Reparatur-Bit 557,
zur Reparatur von Cache-Speicherstelle 548 eingesetzt.
-
Reparatur-Cache 550 beinhaltet
außerdem Reparaturmodul 560.
Wie vorstehend ausgeführt, kann
Reparaturmodul 560 in oder über Reparatur-Cache 550,
Cache 510, Mikroprozessor 505 oder einer beliebigen
Kombination derselben umgesetzt werden. Reparaturmodul 560 assoziiert
alle Wege und Reparatur-Bits mit einer Spalte eines Cache. In einer
Ausführungsform
wird Weg 555 direkt zu Spalte 541 gemappt. In
diesem Beispiel umfasst das direkte Mappen von Weg 555 zu
Spalte 541 die Reparatur ausschließlich von Bits in Spalte 545 mit
Reparatur-Bits in Weg 555. Ein Beispiel für Mapping
umfasst: Assoziieren eines Teils der die Bits in Spalte 541 identifizierenden
Adressen mit Weg 555, was mittels Vergleichslogik, Mapping-Tabelle,
Nachschlagelogik oder sonstiger häufig verwendeter Assoziierungsmethoden
erfolgen kann.
-
Reparaturmodul 560 bestimmt
außerdem
die zu reparierenden Bits in den Spalten. Wie vorstehend beschrieben,
wählt Reparaturmodul 560 Bits
zur Reparatur in Cache 510 basierend auf einer optimalen Konfiguration
aus. Beim Ermitteln einer optimalen Konfiguration und der zu reparierenden
Bits kann eine Reihe von Faktoren mittels eines Algorithmus, Software,
Hardware oder anderen Methoden in Betracht gezogen werden, wie beispielsweise
Fehlerrate von Bits, Anzahl der Fehler pro Cache-Block, Anzahl der
pro Cache-Block korrigierbaren Fehler, Art des angewendeten Fehlerkorrektorcodes,
Anzahl der verfügbaren
Reparatur-Bits, die Auswirkungen, die das Reparieren eines Bits
in einer Spalte und das Nicht-Reparieren eines anderen auf andere
Cache-Blöcke
oder Spalten hat, sowie andere Überlegungen.
In einer Ausführungsform
analysiert Reparaturlogik 560 die Bits dynamisch und bestimmt
die zu reparierenden Bits anhand der vorstehend erwähnten Faktoren.
-
Des
Weiteren repariert Reparaturmodul 560 zur Reparatur bestimmte
Bits. Wie vorstehend erläutert,
wird bei einem Lesevorgang in einem Cache-Block, der ein schlechtes
Bit enthält,
aus dem Reparatur-Bit ein mit der Spalte, in der sich das schlechte
Bit befindet, assoziiertes Reparatur-Bit gelesen und ersetzt das
schlechte Bit beim Erfüllen
der Leseanforderung. Als Beispiel wird angenommen, dass Prozessor 505 eine
Leseanforderung mit Verweis auf die Hauptspeicheradresse 566 sendet,
welche zu Satz 540 gemappt ist. Cache 510 beinhaltet eine
Kopie der Hauptspeicherstelle 566 in Block 521. Reparaturmodul 560 bestimmt,
dass Bit 545 zu reparieren ist. Als illustratives Beispiel
wird angenommen, dass die Reparaturlogik 560 zuvor bestimmt
hatte, dass Bit 545 ein fehlerhaftes Bit ist und einen
Eintrag in eine Tabelle erzeugt hat, um das schlechte Bit 545 zur
Reparatur durch Reparatur-Bit 557 zu assoziieren. Dann
wird Cache-Block 521 aus Cache 510 gelesen und
der Wert aus dem schlechten Bit 5451 durch den im Reparatur-Bit 557 gespeicherten
Wert ersetzt. Am Ende empfängt
der Mikroprozessor 505 eine gültige Kopie der Hauptspeicherstelle 566 von Cache 510,
da das schlechte Bit 545 durch gültige Information aus Reparatur-Bit 557 ersetzt
wurde. Ähnlich
wird bei einem Schreibvorgang in Cache 510 der in eine
schlechte Speicherstelle 545 zu schreibende Wert in Reparatur-Bit 557 geschrieben.
-
AUSFÜHRUNGSFORMEN ZUR REPARATUR
EINER CACHE-SPEICHERSTELLE
-
In 6a wird
eine Ausführungsform
eines Flussdiagramms zur Reparatur einer Cache-Speicherstelle illustriert.
In Block 605 wird eine Anforderung für einen Cache-Zugriff empfangen,
wobei die Anforderung auf einen ersten Cache-Block verweist. Wie
zuvor angegeben, kann eine Anforderung auf eine Reihe von Arten
auf einen Cache-Block
verweisen, einschließlich
eines mit der Cache-Block assoziierten Markierungswerts, einer mit
dem Cache-Block assoziierten physikalischen Adresse, einer mit dem Cache-Block
assoziierten virtuellen Adresse, einer in den Cache-Block kopierten
physikalischen/virtuellen Hauptspeicheradresse oder einer beliebigen
anderen Methode für
den Verweis auf ein Wort/Block eines Cache.
-
Danach
wird in Block 610 bestimmt, ob der Cache-Block eine erste
zu reparierende Cache-Speicherstelle umfasst. In einer Ausführungsform
wird ein Nachschlagemodul eingesetzt, um zu bestimmen, ob der Cache-Block
eine erste zu reparierende Cache-Speicherstelle
umfasst. Wird bestimmt, dass eine erste Cache-Speicherstelle zu
reparieren ist, so wird ein Eintrag im Nachschlagemodul erzeugt
oder modifiziert, um eine Reparaturstelle mit einer Cache-Speicherstelle
und/oder mit einem Cache-Block einschließlich Cache-Speicherstelle
zu assoziieren. Folglich wird das Nachschlagemodul beim Zugriff
geprüft,
um festzustellen, ob der erste Cache-Block eine erste zu reparierende
Cache-Speicherstelle umfasst.
-
In
einer anderen Ausführungsform
wird ein mehrstufiges Nachschlagemodule dazu eingesetzt, um als
erstes zu bestimmen, ob der Cache-Block zu reparierende Cache-Speicherstellen umfasst.
Dies kann durch die Auflistung von Verweisen im Nachschlagemodul
auf Cache-Blöcke
geschehen, die zu reparierende Speicherstellen enthalten. Gibt es
keine zutreffenden Cache-Blöcke,
so besteht kein Bedarf für
weitere Analyse. Wird ein Cache-Block gelistet/erfüllt die
Kriterien, so wird bestimmt, ob die Cache-Speicherstelle im ersten
Cache-Block ist oder welche Cache-Speicherstellen zu reparieren
sind. Dies kann auf eine Reihe von Arten erfolgen, wie beispielsweise
Eingeben der Informationen in das Nachschlagemodul oder Anwenden
eines Adressenvergleichs, um zu bestimmen, ob die Cache-Speicherstelle
im Adressbereich des Cache-Blocks liegt.
-
Andere
Methoden und Module können
verwendet werden, um zu bestimmen, ob der Cache-Block eine erste
zu reparierende Cache-Speicherstelle enthält. Firmware kann beispielsweise
einen Verweis auf Cache-Blöcke
mit zu reparierenden Speicherstellen speichern. Eine eingehendere
Erörterung
zur Bestimmung, ob der Cache-Block eine erste zu reparierende Cache-Speicherstelle
enthält, befindet
sich im vorstehenden Abschnitt zur Reparatur von Cache-Speicherstellen.
-
In
Block 615 wird die erste Cache-Speicherstelle von der mit
der ersten Cache-Speicherstelle assoziierten
Reparatur-Cache-Speicherstelle beim Ausführen der Cache-Zugriffsanforderung
repariert, falls der erste Cache-Block die erste zu reparierende Cache-Speicherstelle
enthält.
Wie vorstehend angegeben, kann die erste Cache-Speicherstelle über ein Modul assoziiert sein,
das eine Nachschlagetabelle umfasst. In einer Ausführungsform
ist die erste Cache-Speicherstelle mit der Reparatur-Cache-Speicherstelle über ein
Mapping der Reparatur-Cache-Speicherstelle zu einer logisch betrachtbaren Spalte
assoziiert, die die erste Cache-Speicherstelle umfasst. Hier wird
die Reparatur-Cache-Speicherstelle direkt zu einer Spalte des Cache
gemappt, und beim Bestimmen, dass die erste Cache-Speicherstelle
repariert werden soll, wird die Reparatur-Cache-Speicherstelle direkt zur Spalte
mit der ersten zu benutzenden Cache-Speicherstelle gemappt.
-
In 6b ist
eine spezifische Ausführungsform
eines Flussdiagramms zur Reparatur der ersten Cache-Speicherstelle
mit einer Reparatur-Cache-Speicherstelle illustriert. In Block 616 wird
beim Ausführen
einer Cache-Schreibanforderung ein logischer, in die erste Cache-Speicherstelle
zu schreibender Wert transparent in die mit der ersten Cache-Speicherstelle assoziierte
Reparatur-Cache-Speicherstelle geschrieben. Ein Beispiel umfasst Schreiben
in einen Cache-Block, wobei der Cache-Block ein erstes schlechtes
Bit enthält.
Das Schreiben in die Cache-Blöcke
läuft aus
der Perspektive des Cache wie gewöhnlich ab. Wird jedoch bestimmt,
dass das Schreiben in den Cache-Block erfolgt, welcher wie in Block 610 das
erste schlechte Bit enthält,
so wird der in das erste schlechte Bit zu schreibende Wert ebenfalls
in Reparatur-Bit geschrieben, das zu einer logischen Spalte des
die Speicherstelle mit dem ersten schlechten Bit enthaltenden Cache
gemappt ist.
-
In
Block 617 wird beim Ausführen einer Cache-Leseanforderung
ein logischer, aus der ersten Cache-Speicherstelle zu lesender Wert
aus der mit der ersten Cache-Speicherstelle assoziierten Reparatur-Cache-Speicherstelle
gelesen. In Fortsetzung des vorstehenden Beispiels wird bestimmt,
dass eine Anforderung des Cache-Blocks die Speicherstelle mit dem
ersten schlechten Bit in Block 610 enthält. Der Cache-Block wird gelesen
und von der Perspektive des Cache aus betrachtet vom Cache wie bei
der Ausführung
einer normalen Anforderung bereitgestellt. Es wird jedoch der in
dem mit dem ersten schlechten Bit assoziierten Reparatur-Bit gespeicherte
Wert aus der Reparatur-Bit-Speicherstelle
gelesen und ersetzt den Wert aus der Speicherstelle des ersten schlechten
Bits. Als Resultat funktioniert der Cache wie gewöhnlich,
während
die gespeicherten und gelesenen Daten für das schlechte Bit im Reparatur-Bit
sind. Diese Perspektive aus der Sichtweise des Cache bezieht sich
auf die Transparenz des Schreibens/Speichern und Lesens/Ersetzens,
da der Cache wie üblich
operiert.
-
7 zeigt
eine Ausführungsform
eines Flussdiagramms zur Reparatur eines Cache basierend auf einer
optimalen Konfiguration mehrerer zu reparierender Bits. In Block 705 wird
eine optimale Konfiguration mehrerer in einem Cache mittels eines Reparatur-Cache zu reparierender
Bits bestimmt. Der Reparatur-Cache umfast ein direkt zu jedem logischen
vertikalen Streifen/Spalte des Cache gemapptes Reparatur-Bit.
-
Wie
vorstehend angegeben, kann der Cache eine Anzahl von als schlechte
Bits ermittelte Bits enthalten. Folglich kann basierend auf einer
beliebigen Reihe von Faktoren eine Auswahl getroffen werden, welche
Bits repariert werden sollen. In einer Ausführungsform wird zur Auswahl
der optimalen Konfiguration ein Algorithmus benutzt, der eine Konfiguration von
zu reparierenden Bits auswählt
basierend auf ein beliebiges oder eine Kombination der folgenden
Aspekte: die Fehlerrate von Bits, die Anzahl der Fehler pro Cache-Block,
die Anzahl der pro Cache-Block korrigierbaren Fehler, die Art des
angewendeten Fehlerkorrektorcodes, die Anzahl der verfügbaren Reparatur-Bits,
die Auswirkungen, die das Reparieren eines Bits in einem vertikalen
Streifen und das Nicht-Reparieren eines anderen in anderen Cache-Blöcken oder
Spalten hat.
-
In
einer Ausführungsform
wird das Bestimmen der optimalen Bit-Konfiguration dynamisch neu evaluiert
oder dynamisch ermittelt. Beispielsweise angenommen, ein erstes
Bit soll basierend auf Fehlerrate und Speicherstelle in einem Block
mit anderen schlechten Bits repariert werden. Ändern sich jedoch zu einem
anderen Zeitpunkt die Bedingungen, so kann ein anderes Bit im gleichen
vertikalen Streifen wie das erste Bit anstelle des ersten Bits ausgewählt und
repariert werden. Dies erschließt
der Reparatur-Cache
ultimative Flexibilität,
die optimalste Konfiguration der zu reparierenden Bits unter veränderlichen
Bedingungen sicherzustellen.
-
Danach
wird in Block 710 bei einem auf ein das erste Bit enthaltende
Cache-Wort verweisenden Zugriff das erste der mehreren Bits im Cache
repariert, das mit einem direkt zu einem logischen vertikalen Streifen,
der das erste Bit enthält,
gemappten Reparatur-Bit repariert werden soll. In einer Ausführungsform
umfasst das Reparieren des ersten der mehreren Bits das Schreiben
eines im ersten Bit zu speichernden Werts in das Reparatur-Bit, wenn es sich
bei einem auf ein das erste Bit enthaltende Cache-Wort verweisenden
Zugriff um einen Schreibvorgang handelt. In einem anderen Beispiel
umfasst die Reparatur des ersten der mehreren Bits das Lesen eines
im Reparatur-Bit gespeicherten Werts, wenn der auf ein das erste
Bit enthaltende Cache-Wort verweisende Zugriff ein Lesevorgang ist.
-
Wie
vorstehend illustriert, kann ein Reparatur-Cache dazu benutzt werden,
die Effizienz und Genauigkeit eines Cache zu steigern, der mit Niederspannung
betrieben wird. Zuvor hätte
ein Cache eine Niederspannungsgrenze, unter welche die Spannungsversorgung
nicht hätte
gesenkt werden können,
da dies zu viele Fehler per Cache-Block verursacht hätte, als
durch Fehlerkorrekturcode korrigiert werden könnte. Durch Bereitstellen eines
Reparatur-Cache können
Fehler pro logischer Spalte des Cache repariert werden, wodurch
die Spannungsversorgung gesenkt werden kann, ohne die Anzahl der Fehler,
die durch Fehlerkorrekturcode korrigiert werden können, zu
beeinträchtigen.
Außerdem
braucht nicht jeder Fehler in einem Cache repariert zu werden. Potenziell
werden durch die Nutzung in Verbindung mit Fehlerkorrekturcode nur
genug Fehler repariert, um gültige
Daten zu gewährleisten.
Des Weiteren können
die zur Korrektur/Reparatur ausgewählten Bits zur Auswahl einer
optimaleren Konfiguration von Reparatur-Bits im Laufe der Zeit dynamisch
geändert
werden. Folglich wird Strom gespart, ohne die Genauigkeit eines
Caches opfern zu müssen.
-
In
der vorstehenden Spezifikation wurde eine detaillierte Beschreibung
hinsichtlich spezifischer beispielhafter Ausführungsformen gegeben. Es ist
jedoch offensichtlich, dass daran verschiedene Modifikationen und Änderungen
vorgenommen werden können,
ohne vom breiteren Geist und Schutzbereich der Erfindung, wie sie
in den angehängten
Ansprüchen
dargelegt ist, abzuweichen. Die Spezifikationen und Zeichnungen
sollen entsprechend illustrativen anstatt restriktiven Zwecken dienen.
Des Weiteren beziehen sich Verweise im Vorstehenden auf Ausführungsformen
und sonstige beispielhafte Beschreibung nicht unbedingt auf die
gleiche Ausführungsform
oder das gleiche Beispiel, sondern können sich auf unterschiedliche
und getrennte Ausführungsformen
sowie potenziell auf die gleiche Ausführungsform beziehen.
-
Zusammenfassung
-
Ein
Verfahren und eine Vorrichtung zur Reparatur von Cache-Speichern/-Anordnungen
werden hier beschrieben. Ein Cache umfasst mehrere Blöcke und
logisch betrachtbar in Spalten. Ein an den Cache gekoppelter Reparatur-Cache
umfasst ein zu jeder logisch betrachtbaren Spalte gemapptes Reparatur-Bit.
Ein Reparaturmodul bestimmt ein schlechtes, zu reparierendes Bit
in einer Spalte basierend auf einem beliebigen individuellen oder
einer Kombination von Faktoren, wie die Anzahl der Fehler pro Cache-Block,
Anzahl der durch Fehlerkorrekturcode korrigierbaren Fehler pro Cache-Zeile, der Fehlerrate von
Bits oder sonstigen Kriterien. Beim Zugriff auf den das schlechte
Bit enthaltenden Cache-Block wird das schlechte Bit zu dem der Spalte,
die das schlechte Bit enthält,
gemappten Reparatur-Bit transparent repariert.