DE112006003381T5 - Reparatur-BITS für Niederspannungs-Cache - Google Patents

Reparatur-BITS für Niederspannungs-Cache Download PDF

Info

Publication number
DE112006003381T5
DE112006003381T5 DE112006003381T DE112006003381T DE112006003381T5 DE 112006003381 T5 DE112006003381 T5 DE 112006003381T5 DE 112006003381 T DE112006003381 T DE 112006003381T DE 112006003381 T DE112006003381 T DE 112006003381T DE 112006003381 T5 DE112006003381 T5 DE 112006003381T5
Authority
DE
Germany
Prior art keywords
cache
bit
repair
bits
location
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE112006003381T
Other languages
English (en)
Inventor
Morgan J. Phoenix Dempsey
Jose A. Portland Maiz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112006003381T5 publication Critical patent/DE112006003381T5/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/80Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
    • G11C29/808Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout using a flexible replacement scheme
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores

Abstract

Vorrichtung, umfassend:
einen Cache mit mehreren Worten, logisch betrachtbar in mehreren Spalten;
einen Reparatur-Cache mit mehreren Reparaturwegen, wobei jeder der mehreren Reparatur-Wege mit einer der mehreren Spalten assoziiert ist;
ein Reparaturmodul zur Reparatur eines ersten Bits mit einem Reparatur-Bit in einem ersten der mehreren, mit einer ersten, das erste Bit enthaltenden Spalte assoziierten Reparaturwege.

Description

  • 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 406413, die auch als Blöcke, Lines, Zeilen oder Elemente bezeichnet werden. Wie vorstehend bezüglich 3 erläutert, ist jedes Bit der Worte 406413, 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 406413 beinhaltet.
  • Wie illustriert, beinhaltet Cache 405 einige Fehler, wie beispielsweise die Speicherstellen 421423 und 426429. 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 426429 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 426429. Wie vorstehend ausgeführt, umfassen Fehler 421423 und 426429 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 421423 und 426429 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 436440. 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 565580. 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 565580 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 545547, 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.

Claims (37)

  1. Vorrichtung, umfassend: einen Cache mit mehreren Worten, logisch betrachtbar in mehreren Spalten; einen Reparatur-Cache mit mehreren Reparaturwegen, wobei jeder der mehreren Reparatur-Wege mit einer der mehreren Spalten assoziiert ist; ein Reparaturmodul zur Reparatur eines ersten Bits mit einem Reparatur-Bit in einem ersten der mehreren, mit einer ersten, das erste Bit enthaltenden Spalte assoziierten Reparaturwege.
  2. Vorrichtung nach Anspruch 1, wobei das Reparaturmodul das erste zu reparierende Bit dynamisch bestimmt; und wobei das Bestimmen eines ersten zu reparierenden Bits auf die Optimierung der Fehlerkorrektur pro Wort der mehreren Worte basiert.
  3. Vorrichtung nach Anspruch 2, wobei der Cache einen 1-Bit-Fehlerkorrekturcode einsetzt.
  4. Vorrichtung nach Anspruch 2, wobei der Cache einen Multi-Bit-Fehlerkorrekturcode pro Wort der mehreren Worte einsetzt.
  5. Vorrichtung nach Anspruch 2, wobei das Bestimmen eines ersten zu reparierenden Bits des Weiteren auf der Fehlerrate des ersten Bits basiert.
  6. Vorrichtung nach Anspruch 1, wobei jeder der mehreren Reparaturwege ein Reparatur-Bit umfasst und wobei das eine Reparatur-Bit der mehreren Reparatur-Wege direkt zu einer der mehreren Spalten gemappt ist.
  7. Vorrichtung nach Anspruch 1, wobei jeder der mehreren Reparaturwege mehrere Reparatur-Bits umfasst und wobei ein Austauschalgorithmus zur Auswahl des Reparatur-Bits im ersten Weg zur Reparatur des ersten Bits verwendet wird.
  8. Vorrichtung nach Anspruch 1, wobei das Reparieren des ersten Bits mit einem Reparatur-Bit in einem ersten Weg der mehreren, mit der ersten Spalte assoziierten Reparatur-Wege umfasst: Bestimmen, ob ein Cache-Schreibvorgang auf ein Cache-Wort der mehreren, das erste Bit beinhaltenden Worte verweist; Schreiben von in das erste Bit zu schreibender logischer Information vom Cache-Schreibvorgang in das Reparatur-Bit im Reparatur-Cache.
  9. Vorrichtung nach Anspruch 1, wobei das Reparieren des ersten Bits mit einem Reparatur-Bit in einem ersten Weg der mehreren, mit der ersten Spalte assoziierten Reparatur-Wege umfasst: Bestimmen, ob ein Cache-Lesevorgang auf ein Cache-Wort der mehreren, das erste Bit beinhaltenden Worte verweist; Ersetzen der im ersten Bit zu lesenden logischen Information durch logische Information aus dem Reparatur-Bit im Reparatur-Cache.
  10. Vorrichtung nach Anspruch 9, wobei das Ersetzen logischer Information mit logischer Information aus dem Reparatur-Bit im Reparatur-Cache für den Cache transparent ist.
  11. Vorrichtung, umfassend: eine logisch in M Zeilen und N Spalten organisierte Speicheranordnung; eine Reparaturanordnung mit N Austausch-Bits, wobei jedes der N Austausch-Bits direkt zu einer von N Spalten gemappt ist; sowie ein Modul zum Anpeilen eines ersten Bits in einer ersten Spalte der N Spalten zur Reparatur und Reparieren des ersten Bits mit einem Austausch-Bit der N direkt zur ersten Spalte gemappten Austausch-Bits bei einem Zugriff auf eine das erste Bit enthaltende Zeile.
  12. Vorrichtung nach Anspruch 11, wobei M eine positive Ganzzahl und N ein Ganzzahl-Vielfaches von 16 ist.
  13. Vorrichtung nach Anspruch 11, wobei die Speicheranordnung ein Cache-Speicher ist und wobei die Reparaturanordnung ein Reparatur-Cache ist.
  14. Vorrichtung nach Anspruch 13, des Weiteren umfassend X-Bit-Fehlerkorrekturcode zur Korrektur von X Bits pro Zeile der M Zeilen.
  15. Vorrichtung nach Anspruch 14, wobei das Modul das erste Bit basierend auf einem Algorithmus zum Reduzieren der Anzahl von Fehlern pro Zeile der M Zeilen auf X Fehler ansteuert.
  16. Vorrichtung nach Anspruch 15, wobei das Modul das erste Bit basierend auf einem Algorithmus zum Reduzieren der Anzahl von Fehlern pro Zeile der M Zeilen auf X Fehler dynamisch erneut ansteuert.
  17. System, umfassend: einen Mikroprozessor umfassend: einen Cache mit mehreren Blöcken, wobei der Cache logisch in mehreren Spalten betrachtbar ist; ein Reparaturmodul, um ein Reparatur-Bit mit jeder der mehreren Spalten zu assoziieren; ein erstes Bit in einer ersten Spalte der mehreren zu reparierenden Spalten zu bestimmen, und das erste Bit mit dem mit der ersten Spalte assoziierten Reparatur-Bit bei einem Zugriff auf den das erste Bit enthaltenden Block zu reparieren; einen an den Mikroprozessor gekoppelten, mehrere Elemente umfassenden Systemspeicher, wobei der Cache lokale Kopien des Inhalts der mehreren Elemente speichern soll.
  18. System nach Anspruch 17, wobei der Mikroprozessor zu paralleler Out-of-Order Integer- und Gleitkomma-Ausführung fähig ist.
  19. System nach Anspruch 17, wobei der Cache über eine aus einer Gruppe, bestehend aus direkt gemapptem Cache, satzassoziativem Cache und voll assoziativem Cache ausgewählte Organisation verfügt.
  20. System nach Anspruch 17, wobei die Reparaturlogik Firmware umfasst, und wobei ein Reparatur-Bit mit jeder der mehreren Spalten mittels direktes Mapping eines Reparatur-Bits zu jeder der mehreren Spalten assoziiert ist.
  21. System nach Anspruch 17, wobei das Bestimmen eines ersten Bits in einer ersten Spalte der mehreren zu reparierenden Spalten umfasst: Nachverfolgen der Fehlerrate des ersten Bits; Bestimmen einer Anzahl an Fehlern in einem das erste Bit enthaltenden Block; Bestimmen des ersten zu reparierenden Bits basierend auf die Fehlerrate des ersten Bits und der Anzahl der Fehler in dem das erste Bit enthaltenden Block.
  22. System nach Anspruch 17, wobei das Reparieren des ersten Bits durch ein mit der ersten Spalte assoziiertes Reparatur-Bit beim Zugriff auf einen das erste Bit enthaltenden Block umfasst: Speichern eines im ersten Bit zu speichernden Werts im mit der ersten Spalte assoziierten Reparatur-Bit, wenn der Zugriff auf den das erste Bit enthaltenden Block ein Schreibvorgang in den das erste Bit enthaltenden Block ist; Austauschen eines aus dem ersten Bit zu schreibenden Werts durch einen im mit der ersten Spalte assoziierten Reparatur-Bit gespeicherten Wert, wenn der Zugriff auf den das erste Bit enthaltenden Block ein Lesevorgang aus dem das erste Bit enthaltenden Block ist;
  23. System nach Anspruch 17, wobei der Systemspeicher eine aus einer Gruppe, bestehend aus Direktzugriffsspeicher (RAM), Speichervorrichtung mit Taktverdopplung (DDR) und statische RAM-Speichervorrichtungen (SRAM) stammende Speichervorrichtung ist.
  24. Verfahren, umfassend: Empfangen einer Cache-Zugriffsanforderung, wobei die Anforderung auf einen ersten Cache-Block verweist; Bestimmen, ob der erste Cache eine erste zu reparierende Cache-Speicherstelle enthält; und Reparieren der ersten Cache-Speicherstelle durch eine mit der ersten Cache-Speicherstelle assoziierten Reparatur-Cache-Speicherstelle beim Ausführen der Cache-Zugriffsanforderung, wenn der erste Cache-Block die erste zu reparierende Cache-Speicherstelle enthält.
  25. Verfahren nach Anspruch 24, wobei die Cache-Zugriffsanforderung ein Schreibvorgang in den Cache ist, und wobei die Reparatur der ersten Cache-Speicherstelle beim Ausführen des Schreibens in den Cache das transparente Schreiben eines in die erste Cache-Speicherstelle zu schreibenden logischen Werts in die mit der ersten Cache-Speicherstelle assoziierte Reparatur-Cache-Speicherstelle umfasst.
  26. Verfahren nach Anspruch 24, wobei die Cache-Zugriffsanforderung ein Lesevorgang aus dem Cache ist, und wobei die Reparatur der ersten Cache-Speicherstelle umfasst: Transparentes Lesen eines aus der ersten Cache-Speicherstelle zu lesenden logischen Werts aus der mit der ersten Cache-Speicherstelle assoziierten Reparatur-Cache-Speicherstelle beim Ausführen des Lesevorgangs aus dem Cache.
  27. Verfahren nach Anspruch 24, wobei das Bestimmen, ob die erste Cache-Block eine erste zu reparierende Cache-Speicherstelle beinhaltet, umfasst: Bestimmen, dass der erste Cache-Block die erste zu reparierende Cache-Speicherstelle nicht enthält, wenn ein Nachschlagemodul die erste Cache-Speicherstelle nicht mit dem ersten Cache-Block assoziiert; Bestimmen, dass der erste Cache-Block die erste zu reparierende Cache-Speicherstelle enthält, wenn ein Nachschlagemodul die erste Cache-Speicherstelle mit dem ersten Cache-Block assoziiert.
  28. Verfahren nach Anspruch 24, wobei das Assoziieren der Reparatur-Cache-Speicherstelle mit der ersten Cache-Speicherstelle das direkte Mappen der Reparatur-Cache-Speicherstelle zu einer Spalte des Cache umfasst, welche die erste Cache-Speicherstelle beinhaltet.
  29. Verfahren nach Anspruch 28, wobei die erste Cache-Speicherstelle ein erstes Bit ist und die Reparatur-Cache-Speicherstelle ein Reparatur-Bit ist.
  30. Verfahren nach Anspruch 29, wobei der Verweis auf einen ersten Cache-Block einen Markierungswert zum Identifizieren des ersten Cache-Blockes umfasst.
  31. Verfahren nach Anspruch 24, wobei die Cache-Zugriffsanforderung ein Schreibvorgang in den Cache ist, und wobei die Reparatur der ersten Cache-Speicherstelle beim Ausführen des Schreibens in den Cache das transparente Schreiben eines in die erste Cache-Speicherstelle zu schreibenden logischen Werts in die mit der ersten Cache-Speicherstelle assoziierte Reparatur-Cache-Speicherstelle umfasst.
  32. Verfahren, umfassend: Bestimmen einer optimalen Konfiguration von mehreren Bits in einem mit einem Reparatur-Cache zu reparierenden Cache, wobei der Reparatur-Cache ein direkt zu jedem logischen vertikalen Streifen des Cache gemapptes Reparatur-Bit umfasst; sowie Reparieren eines ersten der mehreren Bits im zur Reparatur bestimmten Cache mit einem direkt zu einem logischen vertikalen, das erste Bit enthaltenden Streifen gemappten Reparatur-Bit bei einem auf ein das erste Bit enthaltende Cache-Wort verweisenden Zugriff.
  33. Verfahren nach Anspruch 32, wobei das Bestimmen einer optimalen Konfiguration mehrerer Bits in einem zu reparierenden Cache auf dem Reduzieren einer ersten Anzahl von Fehlern pro Wort des Cache auf eine korrigierbare Anzahl an Fehlern pro Wort des Cache basiert.
  34. Verfahren nach Anspruch 33, wobei der Cache einen 2-Bit-Fehlerkorrekturcode einsetzt, und wobei die korrigierbare Anzahl an Fehlern pro Wort im Cache zwei beträgt.
  35. Verfahren nach Anspruch 32, wobei das Bestimmen einer optimalen Konfiguration mehrerer Bits in einem zu reparierenden Cache auf der Fehlerrate der mehreren Bits basiert.
  36. Verfahren nach Anspruch 32, wobei das Reparieren des ersten der mehreren Bits umfasst: Schreiben eines im ersten Bit zu speichernden Werts im direkt zu dem das erste Bit enthaltenden logischen vertikalen Streifen gemappten Reparatur-Bit, wenn der Cache-Zugriff auf das das erste Bit enthaltende Wort verweist; Lesen eines im direkt zu dem das erste Bit enthaltenden logischen vertikalen Streifen gemappten Reparatur-Bit gespeicherten Werts, wenn der auf das das erste Bit enthaltende Wort verweisende Cache-Zugriff ein Lesevorgang ist.
  37. Verfahren nach Anspruch 32, wobei das Bestimmen einer optimalen Konfiguration der mehreren zu reparierenden Bits dynamisch neu evaluiert wird.
DE112006003381T 2005-12-30 2006-12-14 Reparatur-BITS für Niederspannungs-Cache Withdrawn DE112006003381T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/322,988 2005-12-30
US11/322,988 US7647536B2 (en) 2005-12-30 2005-12-30 Repair bits for a low voltage cache
PCT/US2006/047717 WO2007078830A2 (en) 2005-12-30 2006-12-14 Repair bits for low voltage cache

Publications (1)

Publication Number Publication Date
DE112006003381T5 true DE112006003381T5 (de) 2008-10-30

Family

ID=37969617

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112006003381T Withdrawn DE112006003381T5 (de) 2005-12-30 2006-12-14 Reparatur-BITS für Niederspannungs-Cache

Country Status (5)

Country Link
US (2) US7647536B2 (de)
CN (1) CN101379566B (de)
DE (1) DE112006003381T5 (de)
TW (1) TWI331340B (de)
WO (1) WO2007078830A2 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7287836B2 (en) * 1997-07-15 2007-10-30 Sil;Verbrook Research Pty Ltd Ink jet printhead with circular cross section chamber
US8145960B2 (en) * 2006-07-20 2012-03-27 Arm Limited Storage of data in data stores having some faulty storage locations
US8640005B2 (en) * 2010-05-21 2014-01-28 Intel Corporation Method and apparatus for using cache memory in a system that supports a low power state
US8533572B2 (en) 2010-09-24 2013-09-10 Intel Corporation Error correcting code logic for processor caches that uses a common set of check bits
US8856616B1 (en) * 2011-07-29 2014-10-07 Proton Digital Systems, Inc. Two dimensional encoding for non-volatile memory blocks
TWI594254B (zh) * 2012-07-17 2017-08-01 慧榮科技股份有限公司 讀取快閃記憶體中區塊之資料的方法及相關的記憶裝置
KR102024033B1 (ko) 2013-03-04 2019-09-24 삼성전자주식회사 이동 통신 시스템에서 메모리 제어 방법 및 장치
US9262263B2 (en) * 2013-11-25 2016-02-16 Qualcomm Incorporated Bit recovery system
US9959939B2 (en) * 2014-12-23 2018-05-01 Intel Corporation Granular cache repair
CN107329906B (zh) * 2017-05-10 2018-07-03 北京邮电大学 一种高带宽的多尺度故障位图缓存结构
US11151006B2 (en) 2018-07-02 2021-10-19 Samsung Electronics Co., Ltd. HBM RAS cache architecture
US11360704B2 (en) * 2018-12-21 2022-06-14 Micron Technology, Inc. Multiplexed signal development in a memory device
US11257543B2 (en) 2019-06-25 2022-02-22 Stmicroelectronics International N.V. Memory management device, system and method
US11360667B2 (en) 2019-09-09 2022-06-14 Stmicroelectronics S.R.L. Tagged memory operated at lower vmin in error tolerant system

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6006311A (en) * 1997-04-14 1999-12-21 Internatinal Business Machines Corporation Dynamic updating of repair mask used for cache defect avoidance
US5883904A (en) * 1997-04-14 1999-03-16 International Business Machines Corporation Method for recoverability via redundant cache arrays
US6055204A (en) 1997-04-29 2000-04-25 Texas Instruments Incorporated Circuits, systems, and methods for re-mapping memory column redundancy
US6772383B1 (en) * 1999-05-27 2004-08-03 Intel Corporation Combined tag and data ECC for enhanced soft error recovery from cache tag errors
US6181614B1 (en) * 1999-11-12 2001-01-30 International Business Machines Corporation Dynamic repair of redundant memory array
US6802039B1 (en) * 2000-06-30 2004-10-05 Intel Corporation Using hardware or firmware for cache tag and data ECC soft error correction
US6671822B1 (en) * 2000-08-31 2003-12-30 Hewlett-Packard Development Company, L.P. Method and system for absorbing defects in high performance microprocessor with a large n-way set associative cache
US6552938B1 (en) * 2001-10-05 2003-04-22 International Business Machines Corporation Column redundancy system and method for embedded DRAM devices with multibanking capability
US7162669B2 (en) * 2003-06-10 2007-01-09 Hewlett-Packard Development Company, L.P. Apparatus and method for compressing redundancy information for embedded memories, including cache memories, of integrated circuits
US20060080572A1 (en) * 2004-09-30 2006-04-13 Fong John Y Set associative repair cache systems and methods
US20060156177A1 (en) * 2004-12-29 2006-07-13 Sailesh Kottapalli Method and apparatus for recovering from soft errors in register files
US7447948B2 (en) 2005-11-21 2008-11-04 Intel Corporation ECC coding for high speed implementation
US7912092B2 (en) 2006-12-27 2011-03-22 Sharp Laboratories Of America, Inc. Systems and methods for transmitting a transmission time interval signal with staggered reference signals

Also Published As

Publication number Publication date
TWI331340B (en) 2010-10-01
WO2007078830A3 (en) 2007-08-30
US8132061B2 (en) 2012-03-06
TW200741728A (en) 2007-11-01
CN101379566B (zh) 2014-06-25
US20100070809A1 (en) 2010-03-18
WO2007078830A2 (en) 2007-07-12
US7647536B2 (en) 2010-01-12
US20070168836A1 (en) 2007-07-19
CN101379566A (zh) 2009-03-04

Similar Documents

Publication Publication Date Title
DE112006003381T5 (de) Reparatur-BITS für Niederspannungs-Cache
DE112011100579B4 (de) Verfahren und vorrichtung zum verwenden von cachespeicher in einem system, welches einen niedrigleistungszustand unterstützt
DE102008030858A1 (de) Speicher mit dynamischer Redundanzkonfigurierung
DE102017128940B4 (de) System und Verfahren zum dynamischen Falten oder direkten Schreiben basierend auf Block-Störungsfreiheit in einem nichtflüchtigen Speichersystem
DE102010030745B4 (de) Nicht-flüchtiger Speicher zum Speichern von Speicher-Umabbildungs-Informationen
DE602004011097T2 (de) Flash-speicherdatenkorrektur- und scrub-techniken
DE112012002843B4 (de) Anpassungsfähige Mehrbit-Fehlerkorrektur in Speichern mit begrenzter Lebensdauer
DE3032630C2 (de) Halbleiterspeicher aus Speicherbausteinen mit redundanten Speicherbereichen und Verfahren zu dessen Betrieb
DE112007003015B4 (de) Verfahren und Vorrichtung zur Cache-gestützten Fehlerdetektion und -korrektur in einem Speicher
DE102020130044A1 (de) Techniken zum verhindern von lese-störung in nand-speicher
DE102018122491A1 (de) Halbleiterspeichervorrichtung und verfahren zum betreiben derselben
DE102020108262A1 (de) Halbleiterspeichervorrichtungen, Speichersysteme und Verfahren zum Steuern der Reparatur von Halbleiterspeichervorrichtungen
DE112008001151B4 (de) Mehrbitprogrammiervorrichtung und Verfahren zum Mehrbitprogrammieren
DE10206720A1 (de) System und Verfahren zum Betreiben eines programmierbaren Zählers für Spaltenversagen bei Redundanzzuordnung
DE102008021414A1 (de) Flexibles Redundanzersetzungsschema für ein Halbleiterbauteil
DE10238566A1 (de) Fenster-basierendes Flashspeicher-Speichersystem und Management und Zugriffsverfahren darauf
DE102007058418A1 (de) Fehlerkorrektur in Speicherbauteilen
DE102019102573A1 (de) Speichercontroller, speichersystem und verfahren zum verwenden einer speichervorrichtung
DE102021103606A1 (de) Controller, den Controller enthaltende Speicherungsvorrichtung und Leseverfahren der Speicherungsvorrichtung
DE102019117787A1 (de) Speichervorrichtung und Betriebsverfahren derselben
DE102009047875A1 (de) Speicherreparatur
DE60304642T2 (de) Flashspeicher und Verfahren zum Betrieb desselben
DE112007003512T5 (de) Speicherbauelement mit Fehlerkorrekturfähigkeit und effizienter Teilwort-Schreiboperation
DE60215687T2 (de) Fehlerkorrektion von multibit-baueinheiten mit unbeschränkter erkennung von doppelfehlern
US20030101389A1 (en) Method for reconfiguring a memory

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20140701