DE102012210232B4 - Vorbeugende Speicherreparatur auf der Grundlage der Analyse einer Vielzahl von Symbolen und Bereinigungszyklen - Google Patents

Vorbeugende Speicherreparatur auf der Grundlage der Analyse einer Vielzahl von Symbolen und Bereinigungszyklen Download PDF

Info

Publication number
DE102012210232B4
DE102012210232B4 DE102012210232.9A DE102012210232A DE102012210232B4 DE 102012210232 B4 DE102012210232 B4 DE 102012210232B4 DE 102012210232 A DE102012210232 A DE 102012210232A DE 102012210232 B4 DE102012210232 B4 DE 102012210232B4
Authority
DE
Germany
Prior art keywords
memory
symbol
symbols
repair
error
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.)
Active
Application number
DE102012210232.9A
Other languages
English (en)
Other versions
DE102012210232A1 (de
Inventor
Jay W. Carman
Marc A. Gollub
Anshuman Khandual
Jyotindra Patel
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102012210232A1 publication Critical patent/DE102012210232A1/de
Application granted granted Critical
Publication of DE102012210232B4 publication Critical patent/DE102012210232B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • G06F11/106Correcting systematically all correctable errors, i.e. scrubbing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/10Test algorithms, e.g. memory scan [MScan] algorithms; Test patterns, e.g. checkerboard patterns 
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

Verfahren, das Folgendes umfasst:Ausführen einer Speicherbereinigung eines Speichers (114) für einen Bereinigungszyklus aus einer Vielzahl von Bereinigungszyklen;Erkennen korrigierbarer Fehler von Symbolen in dem Speicher (114), die ein Ergebnis von Zugriffen auf einen Speicherabschnitt als Reaktion auf die Speicherbereinigung sind;Ausführen einer Analyse der Vielzahl der Bereinigungszyklen, wobei das Ausführen der Analyse die Feststellung umfasst, ob mindestens zwei Symbole aus der Vielzahl der Bereinigungszyklen mindestens einen korrigierbaren Fehler aufweisen; undAls Reaktion auf die Feststellung, dass mindestens zwei Symbole aus der Vielzahl der Bereinigungszyklen mindestens einen korrigierbaren Fehler aufweisen, das Ausführen mindestens einer Reparatur des Speichers (114), der den Speicherabschnitt enthält.

Description

  • HINTERGRUND
  • Ausführungsformen des Erfindungsgegenstands beziehen sich allgemein auf das Fachgebiet der Computer und insbesondere auf die vorbeugende Speicherreparatur bei Computern, Vorrichtungen, Geräten usw.
  • Moderne Computersysteme verfügen üblicherweise über eine große Menge Speicherplatz, um Daten und Anweisungen für einen oder mehrere Prozessoren in den Computersystemen bereitzustellen. Historisch gesehen haben die Prozessorgeschwindigkeiten schneller zugenommen als die Speicherzugriffszeiten auf große Abschnitte des Speichers, insbesondere des DRAM-Speichers (DRAM = Dynamic Random Access Memory, dynamischer Speicher mit wahlfreiem Zugriff). Um den Leistungsunterschied zwischen Prozessoren und Speicher zu verringern, wurden Speicherhierarchien eingerichtet. Die meisten modernen Prozessoren verfügen zum Beispiel über einen L1-Cachespeicher (Level 1-Cachespeicher), der aus SRAM (Static Random Access Memory, statischer Speicher mit wahlfreiem Zugriff) auf einem Halbleiter-Prozessorchip besteht. Ein L1-Cachespeicher ist sehr schnell und ermöglicht Lese- und Schreibzugriffe in nur einem oder auch in mehreren Prozessorzyklen. L1-Cachespeicher sind zwar sehr schnell, aber auch ziemlich klein - etwa 64 KB (Kilobytes) bis 256 KB groß. Häufig wird auch ein L2-Cachespeicher (Level 2-Cachespeicher) auf dem Prozessorchip realisiert. Ein L2-Cachespeicher wird üblicherweise ebenfalls mithilfe von SRAM-Speicher erstellt, obwohl bei einigen Prozessoren auch DRAM-Speicher verwendet wird. Die Byte-Anzahl des L2-Cachespeichers beträgt üblicherweise ein Mehrfaches der Byte-Anzahl des L1-Cachespeichers, aber Lese- oder Schreibzugriffe nehmen mehr Zeit in Anspruch. Einige moderne Prozessorchips enthalten auch einen L3-Cachespeicher (Level 3-Cachespeicher). Der Level 3-Cachespeicher kann ein Mehrfaches der Daten des Level 2-Cachespeichers enthalten. Ein Level 3-Cachespeicher wird manchmal mit DRAM-Speicher erstellt. Bei einigen Computersystemen wird der L3-Cachespeicher auf einem oder mehreren von dem Prozessor getrennten Chips realisiert und ist mithilfe einer Verdrahtung auf einer Platine (printed wiring board, PWB) oder einem Multi-Chip-Modul (MCM) mit dem Prozessor verbunden. Der Hauptspeicher des Computersystems ist üblicherweise sehr groß; er hat häufig eine Größe von vielen GB (Gigabytes) und wird üblicherweise als DRAM realisiert.
  • Der Hauptspeicher ist üblicherweise mit einem Prozessor verbunden, der über einen Speicher-Controller verfügt, der in dieselbe Einheit wie der Prozessor integriert oder von dem Prozessor getrennt angeordnet sein kann, häufig auf demselben MCM oder derselben PWB. Der Speicher-Controller empfängt Lade- oder Lesebefehle und Speicher- oder Schreibbefehle von dem Prozessor und führt diese Befehle durch Lesen von Daten aus dem Hauptspeicher oder Schreiben von Daten in den Hauptspeicher aus. Der Speicher-Controller verfügt üblicherweise über eine oder mehrere Warteschlangen, beispielsweise Lese- und Schreibwarteschlangen. Die Lese- und Schreibwarteschlangen puffern Informationen, darunter einen oder mehrere Befehle, Steuerelemente, Adressen und Daten, wodurch der Prozessor in die Lage versetzt wird, zu einer gegebenen Zeit mehrere Anfragen - darunter Lese- und/oder Schreibanfragen - zu verarbeiten.
  • Von der Branche werden fortlaufend umfangreiche Forschungs- und Entwicklungsanstrengungen unternommen, um verbesserte, innovative Lösungen zum Maximieren der gesamten Systemleistung und -dichte durch Verbessern der Gestaltung und Struktur des Speichersystems oder Speicheruntersystems zu schaffen. Hochverfügbare Systeme bringen im Hinblick auf die Gesamtsystemzuverlässigkeit weitere Herausforderungen mit sich. Der Grund hierfür sind Erwartungen der Kunden, dass neue Computersysteme vorhandene Systeme im Hinblick auf die Mean Time between Failure (MBTF, durchschnittliche Zeit zwischen dem Auftreten zweier Fehler) und darüber hinaus durch neue Funktionen, gesteigerte Leistung, mehr Speicherplatz, geringere Betriebskosten und Ähnliches übertreffen. Andere häufige Kundenanforderungen erschweren die Gestaltung von Speichersystemen weiter, darunter solche Punkte wie einfache Aktualisierung und verringerte Auswirkungen auf die Umwelt, beispielsweise durch beanspruchten Raum, Energie und Kühlung.
  • In dem Maße, in dem die Geschwindigkeiten von DRAM-Schnittstellen zunehmen, nimmt auch die Wahrscheinlichkeit eines Lesezugriffs mit einem korrigierbaren Fehler zu, der von einer oder mehreren Speichereinheiten, einer beliebigen Verbindungsstruktur im Signalweg des Speichers, der Speicherschnittstelle, eingekoppelten Störungen (coupled noise), Stromversorgungsschwankungen oder - rauschen, Temperaturschwankungen, zeitlicher Abweichung (timing drift) und Ähnlichem herrühren kann.
  • Im Stand der Technik wird in US7661045B2 ein Verfahren und System für die Speicherverwaltung von Speichermodulen eines Computersystems beschrieben. Das Verfahren umfasst das Abtasten von Speicherchips eines Speichermoduls auf Fehler, das Analysieren einer Scrub-Fehlerkarte, die einer Scrub-Operation des Speichermoduls entspricht, das Erzeugen einer Scrub-Karten-Zusammenfassung auf der Grundlage der analysierten Scrub-Fehlerkarte, das Erzeugen einer Fehlerhistorienkarte durch Hinzufügen der erzeugten Scrub-Karten-Zusammenfassung, das Analysieren der erzeugten Fehlerhistorienkarte und das Verfolgen einer Chip-Position für jeden Speicherchip des Speichermoduls, der Fehler enthält, und das Bestimmen eines Scrub-Algorithmus des Speichermoduls auf der Grundlage der analysierten Fehlerhistorienkarte. Das Speicherverwaltungssystem für Unternehmen umfasst eine Vielzahl von Computern, die jeweils Speichermodule enthalten, und einen Speicherverwalter für Unternehmen, der die jedem Computer entsprechenden Fehlerhistorienkarten sammelt und analysiert und einen Scrubbing-Algorithmus für die Speichermodule jedes Computers bestimmt.
  • US20100332900A1 beschreibt eine Daten-Scrubbing-Vorrichtung, welche Datenfehler, die in einem Array von Speicherzellen wie SMT-MRAM-Zellen auftreten, korrigiert. Die Daten-Scrubbing-Vorrichtung empfängt eine Fehleranzeige, dass ein Fehler während einer Leseoperation einer Gruppierung von Speicherzellen innerhalb des Arrays von Speicherzellen aufgetreten ist. Die Daten-Scrubbing-Vorrichtung kann eine Adresse erzeugen, die den Ort der zu scrubbenden Speicherzellen beschreibt. Die Daten-Scrubbing-Vorrichtung befiehlt dann der Anordnung von Speicherzellen, die korrigierten Daten zurückzuschreiben. Basierend auf einem Scrub-Schwellenwert schreibt das Daten-Scrubbing-Gerät die korrigierten Daten nach einer bestimmten Anzahl von Fehlern zurück. Die Daten-Scrubbing-Vorrichtung kann außerdem das Zurückschreiben während des Schreibens von Daten aussetzen. Die Daten-Scrubbing-Vorrichtung liefert während des Zurückschreibens der korrigierten Daten eine externe Auslastungsanzeige.
  • ZUSAMMENFASSUNG
  • Die Erfindung wird durch die Merkmale der unabhängigen Ansprüche beschrieben. Ausführungsformen sind in den abhängigen Ansprüchen angegeben.
  • Bei einigen beispielhaften Ausführungsformen umfasst ein Verfahren das Ausführen einer Speicherbereinigung eines Speichers für einen aus einer Vielzahl von Bereinigungszyklen. Das Verfahren umfasst das Erkennen korrigierbarer Fehler von Symbolen in dem Speicher, die ein Ergebnis von Zugriffen auf einen Speicherabschnitt als Reaktion auf die Speicherbereinigung sind. Das Verfahren umfasst außerdem das Ausführen einer Analyse der Vielzahl der Bereinigungszyklen, wobei das Ausführen der Analyse die Feststellung umfasst, ob mindestens zwei Symbole aus der Vielzahl der Bereinigungszyklen mindestens einen korrigierbaren Fehler aufweisen. Das Verfahren umfasst als Reaktion auf die Feststellung, dass mindestens zwei Symbole aus der Vielzahl der Bereinigungszyklen mindestens einen korrigierbaren Fehler aufweisen, das Ausführen mindestens einer Reparatur des Speichers, der den Speicherabschnitt enthält.
  • Bei einigen beispielhaften Ausführungsformen umfasst ein Verfahren das Ausführen einer Speicherbereinigung eines Speichers für einen aus einer Anzahl von Bereinigungszyklen. Das Verfahren umfasst das Erkennen korrigierbarer Fehler von Symbolen in dem Speicher, die ein Ergebnis von Zugriffen auf einen Speicherabschnitt als Reaktion auf die Speicherbereinigung sind. Das Verfahren umfasst außerdem das Ausführen einer Analyse über die Anzahl von Bereinigungszyklen hinweg, wobei das Ausführen der Analyse die Feststellung umfasst, ob bei jedem von mindestens zwei Symbolen mindestens ein korrigierbarer Fehler erkannt wurde. Das Ausführen der Analyse umfasst außerdem die Feststellung, ob mindestens ein Symbol der mindestens zwei Symbole korrigierbare Fehler aufweist, die einen Schwellenwert überschreiten. Das Ausführen der Analyse umfasst ebenfalls - als Reaktion auf die Feststellung, dass das mindestens eine weitere Symbol korrigierbare Fehler aufweist, die den Schwellenwert überschreiten - die Feststellung, ob mindestens ein weiteres Symbol korrigierbare Fehler aufweist, die den Schwellenwert überschreiten. Das Verfahren umfasst als Reaktion auf die Feststellung, dass mindestens ein korrigierbarer Fehler bei jedem der mindestens zwei Symbole erkannt wurde und die Feststellung, dass das mindestens eine Symbol von den mindestens zwei Symbolen korrigierbare Fehler aufweist, die den Schwellenwert überschreiten, und die Feststellung, dass das mindestens eine weitere Symbol korrigierbare Fehler aufweist, die den Schwellenwert überschreiten, das Ausführen mindestens einer Reparatur des Speichers, der den Speicherabschnitt enthält.
  • Bei einem Aspekt betrifft die Erfindung ein Verfahren, das Folgendes umfasst: das Ausführen einer Speicherbereinigung eines Speichers für einen Bereinigungszyklus aus einer Anzahl von Bereinigungszyklen; das Erkennen korrigierbarer Fehler von Symbolen in dem Speicher, die ein Ergebnis von Zugriffen auf einen Speicherabschnitt als Reaktion auf die Speicherbereinigung sind; das Ausführen einer Analyse über die Anzahl von Bereinigungszyklen hinweg, wobei das Ausführen der Analyse Folgendes umfasst: die Feststellung, ob mindestens ein korrigierbarer Fehler an jedem von mindestens zwei Symbolen erkannt wurde; die Feststellung, ob mindestens ein Symbol der mindestens zwei Symbole korrigierbare Fehler aufweist, die einen Schwellenwert überschreiten; und als Reaktion auf die Feststellung, dass das mindestens eine weitere Symbol korrigierbare Fehler aufweist, die den Schwellenwert überschreiten, die Feststellung, ob mindestens ein weiteres Symbol korrigierbare Fehler aufweist, die den Schwellenwert überschreiten; als Reaktion auf die Feststellung, dass mindestens ein korrigierbarer Fehler an jedem der mindestens zwei Symbole erkannt wurde und die Feststellung, dass das mindestens eine Symbol von den mindestens zwei Symbolen korrigierbare Fehler aufweist, die den Schwellenwert überschreiten, und die Feststellung, dass das mindestens eine weitere Symbol korrigierbare Fehler aufweist, die den Schwellenwert überschreiten, das Ausführen von mindestens einer Reparatur des Speichers, der den Speicherabschnitt enthält.
  • Gemäß einer Ausführungsform der Erfindung enthält der Speicherabschnitt eine Speicherreihe.
  • Ein weiterer Aspekt der Erfindung betrifft ein Computerprogrammprodukt zur Speicherreparatur, wobei das Computerprogrammprodukt Folgendes umfasst: ein computerlesbares Speichermedium, in dem computerverwendbarer Programmcode verkörpert ist, wobei der computerverwendbare Programmcode einen computerverwendbaren Programmcode umfasst, der für Folgendes konfiguriert ist: Ausführen einer Speicherbereinigung eines Speichers für einen Bereinigungszyklus aus einer Anzahl von Bereinigungszyklen; Erkennen korrigierbarer Fehler von Symbolen, die in einer Cachespeicherzeile eines Cachespeichers definiert sind, der mit dem Speicher in Datenverbindung steht, wobei die Fehler ein Ergebnis von Zugriffen auf einen Speicherabschnitt als Reaktion auf die Speicherbereinigung für den Speicherzyklus sind; Aktualisieren einer Tabelle mit den korrigierbaren Fehlern der Symbole, die in dem Bereinigungszyklus erkannt wurden, wobei die Tabelle dafür konfiguriert ist, korrigierbare Fehler der Symbole für die Anzahl der Bereinigungszyklen zu speichern; Ausführen einer Analyse der Tabelle im Hinblick auf die Symbole aus der Anzahl von Bereinigungszyklen, deren Daten noch in der Tabelle gespeichert sind, wobei das Ausführen der Analyse Folgendes umfasst: die Feststellung, ob mindestens ein korrigierbarer Fehler an jedem der mindestens zwei Symbole erkannt wurde; die Feststellung, ob mindestens ein Symbol der mindestens zwei Symbole korrigierbare Fehler aufweist, die einen Schwellenwert überschreiten; und als Reaktion auf eine Feststellung, dass das mindestens eine weitere Symbol korrigierbare Fehler aufweist, die den Schwellenwert überschreiten, die Feststellung, ob mindestens ein weiteres Symbol korrigierbare Fehler aufweist, die den Schwellenwert überschreiten; und als Reaktion auf eine Feststellung, dass mindestens ein korrigierbarer Fehler an jedem der mindestens zwei Symbole erkannt wurde und eine Feststellung, dass das mindestens eine Symbol von den mindestens zwei Symbolen korrigierbare Fehler aufweist, die den Schwellenwert überschreiten, und eine Feststellung, dass das mindestens eine weitere Symbol korrigierbare Fehler aufweist, die den Schwellenwert überschreiten, Ausführen von mindestens einer Reparatur des Speichers, der den Speicherabschnitt enthält.
  • Gemäß einer Ausführungsform der Erfindung umfasst die Feststellung, dass mindestens ein weiteres Symbol korrigierbare Fehler aufweist, die den Schwellenwert überschreiten, die Feststellung, dass ein erstes weiteres Symbol und ein zweites weiteres Symbol korrigierbare Fehler aufweisen, die den Schwellenwert überschreiten, während die Analyse ausgeführt wird.
  • Gemäß einer Ausführungsform der Erfindung umfasst das Ausführen der mindestens einen Speicherreparatur das Festlegen einer Reihenfolge des mindestens einen Symbols, des ersten weiteren Symbols und des zweiten weiteren Symbols auf der Grundlage einer Anzahl der korrigierbaren Fehler des mindestens einen Symbols, des ersten weiteren Symbols und des zweiten weiteren Symbols; das Ersetzen eines Speicherchips des Speichers durch einen Ersatz-Speicherchip, betreffend den Speicherchip, auf dem das Symbol mit den meisten korrigierbaren Fehlern (von dem mindestens einen Symbol, dem ersten weiteren Symbol und dem zweiten weiteren Symbol) gespeichert ist; das Ausführen einer Chip-weiten Fehlerkorrekturcode-Cachespeicherzeilenreparatur (Error Correction Code (ECC) cache line repair) des Speichers, betreffend einen Speicherchip des Speichers, auf dem das Symbol mit den zweitmeisten korrigierbaren Fehlern (von dem mindestens einen Symbol, dem ersten weiteren Symbol und dem zweiten weiteren Symbol) gespeichert ist, und das Ausführen einer Symbol-weiten ECC-Cachespeicherzeilenreparatur des Speichers, betreffend das Symbol mit den drittmeisten korrigierbaren Fehlern (von dem mindestens einen Symbol, dem ersten weiteren Symbol und dem zweiten weiteren Symbol).
  • Gemäß einer Ausführungsform der Erfindung umfasst die Feststellung, dass mindestens ein weiteres Symbol korrigierbare Fehler aufweist, die den Schwellenwert überschreiten, die Feststellung, dass nur ein weiteres Symbol korrigierbare Fehler aufweist, die während der Analyse den Schwellenwert überschreiten, wobei das Ausführen der mindestens einen Speicherreparatur umfasst: das Festlegen einer Reihenfolge des mindestens einen Symbols und des nur einen weiteren Symbols und des zweiten weiteren Symbols auf der Grundlage einer Anzahl korrigierbarer Fehler des mindestens einen Symbols und des nur einen weiteren Symbols; das Ersetzen eines Speichermoduls des Speichers durch ein Ersatzspeichermodul, betreffend das Speichermodul, auf dem das Symbol mit den meisten korrigierbaren Fehlern (von dem mindestens einen Symbol und dem nur einen weiteren Symbol) gespeichert ist; das Ausführen einer Chip-weiten Fehlerkorrekturcode-Cachespeicherzeilenreparatur (ECC-Cachespeicherzeilenreparatur) des Speichers, betreffend einen Speicherchip, auf dem das Symbol gespeichert ist, und/oder einer Symbol-weiten ECC-Cachespeicherzeilenreparatur des Speichers, betreffend das Symbol mit den zweitmeisten korrigierbaren Fehlern (von dem mindestens einen Symbol und dem nur einen weiteren Symbol).
  • Gemäß einer Ausführungsform der Erfindung umfasst das Computerprogrammprodukt weiter: das Ausführen einer anderen Speicherbereinigung des Speichers für einen anderen Bereinigungszyklus aus der Anzahl der Bereinigungszyklen; das Erkennen korrigierbarer Fehler von in der Cachespeicherzeile des Cachespeichers definierten Symbolen, die ein Ergebnis von Zugriffen auf den Speicherabschnitt als Reaktion auf die Speicherbereinigung des anderen Bereinigungszyklus sind; das Aktualisieren der Tabelle mit den korrigierbaren Symbolfehlern, die bei dem anderen Bereinigungszyklus erkannt wurden; das Ausführen einer anderen Analyse der Tabelle, betreffend die Symbole aus der Anzahl der Bereinigungszyklen, wobei das Ausführen der anderen Analyse Folgendes umfasst: die Feststellung, betreffend die Anzahl von Bereinigungszyklen, ob ein anderes Symbol, das bei der zuvor ausgeführten Analyse nicht erkannte wurde, korrigierbare Fehler aufweist, die den Schwellenwert überschreiten; und als Reaktion auf die Feststellung, dass das andere Symbol korrigierbare Fehler aufweist, die den Schwellenwert überschreiten, das Ausführen einer anderen Reparatur des Speichers, der den Speicherabschnitt enthält, wobei das Ausführen der anderen Reparatur das Ausführen der ECC-Cachespeicherzeilenreparatur umfasst, die zuvor bei der mindestens einen Reparatur nicht ausgeführt wurde.
  • Bei einem anderen Aspekt betrifft die Erfindung eine Vorrichtung, die Folgendes umfasst: einen Prozessor, einen Speicher und ein Fehlermodul, das auf dem Prozessor lauffähig ist, wobei das Fehlermodul für Folgendes konfiguriert ist: Ausführen einer Speicherbereinigung des Speichers für einen Bereinigungszyklus aus einer Vielzahl von Bereinigungszyklen; Erkennen korrigierbarer Fehler von Symbolen in dem Speicher, die ein Ergebnis von Zugriffen auf einen Speicherabschnitt als Reaktion auf die Speicherbereinigung sind; Ausführen einer Analyse der Vielzahl von Bereinigungszyklen, wobei die Analyse eine Feststellung umfasst, ob mindestens zwei Symbole aus der Vielzahl der Bereinigungszyklen mindestens einen korrigierbaren Fehler aufweisen; und als Reaktion auf eine Feststellung, dass mindestens zwei Symbole aus der Vielzahl der Bereinigungszyklen mindestens einen korrigierbaren Fehler aufweisen, das Ausführen von mindestens einer Reparatur des Speichers, der den Speicherabschnitt enthält.
  • Gemäß einer Ausführungsform der Erfindung enthält der Speicherabschnitt eine Speicherreihe.
  • Figurenliste
  • Durch Bezugnahme auf die begleitenden Zeichnungen sind die vorliegenden Ausführungsformen möglicherweise besser verständlich, und für Fachleute werden zahlreiche Aufgaben, Merkmale und Vorteile der Erfindung offensichtlich.
    • 1 zeigt gemäß einigen beispielhaften Ausführungsformen ein Computersystem zur vorbeugenden Speicherreparatur auf der Grundlage einer Analyse einer Vielzahl von Symbolen und Bereinigungszyklen.
    • 2 zeigt gemäß einigen beispielhaften Ausführungsformen ein Flussdiagramm zur vorbeugenden Speicherreparatur auf der Grundlage einer Analyse einer Vielzahl von Symbolen und Bereinigungszyklen.
    • 3 zeigt gemäß einigen beispielhaften Ausführungsformen eine zweidimensionale Tabelle zum Speichern von Fehlern einer Vielzahl von Symbolen in einer Vielzahl von Bereinigungszyklen.
    • 4 zeigt gemäß einigen beispielhaften Ausführungsformen ein Flussdiagramm fortgesetzter Operationen zur vorbeugenden Speicherreparatur auf der Grundlage einer Analyse einer Vielzahl von Symbolen und Bereinigungszyklen.
    • 5 zeigt gemäß einigen beispielhaften Ausführungsformen ein Flussdiagramm fortgesetzter Operationen zur vorbeugenden Speicherreparatur auf der Grundlage einer Analyse einer Vielzahl von Symbolen und Bereinigungszyklen.
    • 6 zeigt gemäß einigen beispielhaften Ausführungsformen ein Flussdiagramm zur vorbeugenden Speicherreparatur mit drei verschiedenen Reparaturen.
    • 7 zeigt gemäß einigen weiteren beispielhaften Ausführungsformen eine zweidimensionale Tabelle zum Speichern von Fehlern einer Vielzahl von Symbolen in einer Vielzahl von Bereinigungszyklen.
  • BESCHREIBUNG DER AUSFÜHRUNGSFORM(EN)
  • Die folgende Beschreibung umfasst beispielhafte Systeme, Verfahren, Techniken, Anweisungssequenzen und Computerprogrammprodukte, die Techniken des vorliegenden Erfindungsgegenstands verkörpern. Es versteht sich jedoch, dass die beschriebenen Ausführungsformen ohne diese spezifischen Details angewendet werden können. Zum Beispiel: Auch wenn sich Beispiele auf drei Arten vorbeugender Speicherreparaturen beziehen, kann bei einigen beispielhaften Ausführungsformen eine größere oder kleinere Anzahl vorbeugender Reparaturen angewendet werden, und es können auch andere Arten vorbeugender Reparaturen zur Anwendung kommen. In anderen Fällen werden im Interesse der Klarheit der Beschreibung hinlänglich bekannte Anweisungsinstanzen, Protokolle, Strukturen und Techniken nicht im Detail gezeigt.
  • Fehler im Speicher können auftreten, wenn die Speicherzellen die Daten nicht richtig speichern. Fehler können auch außerhalb des Speichers auftreten (z. B. beim Zugriff von Data-Pins auf den Speicher) und Fehler im Speicher verursachen. Bei einigen beispielhaften Ausführungsformen werden Daten für die Analyse gesammelt, um zur Korrektur dieser Fehler unterschiedliche Arten von Reparaturen auf den Speicher anzuwenden. Bei einigen beispielhaften Ausführungsformen kann ein Fehlerkorrekturcodespeicher (ECC-Speicher) zur Reparatur unterschiedliche Reparaturverfahren auf den Speicher anwenden. Ein erstes Reparaturverfahren umfasst eine Symbolmarkenreparatur, durch die ein symbolweiter ECC-Cachespeicherzeilenfehler behoben wird - eine zwei Bit umfassende Reparatur. Ein zweites Reparaturverfahren umfasst eine Chipmarkenreparatur, durch die ein einziger chipweiter ECC-Cachespeicherzeilenfehler behoben würde - eine acht Bit umfassende Reparatur. Bei einigen beispielhaften Ausführungsformen werden die Symbolmarkenreparatur und die Chipmarkenreparatur mithilfe einer oder mehrerer Fehlerkorrekturcode-Operationen (ECC-Operationen) korrigiert. Insbesondere kann auf der Grundlage der ECC-Prüfbits festgestellt werden, welche Daten im Speicher hätten gespeichert werden sollen. Dementsprechend können die ECC-Operationen die falschen Daten aus dem Speicher empfangen und eine neue Berechnung anstellen, um die richtigen Daten bereitzustellen. Derartige ECC-Operationen können für einen Symbolebene-weiten Zugriff und für einen Chipebene-weiten Zugriff ausgeführt werden. Ein drittes Verfahren umfasst eine Speicherlenkung (z.B. bei einem Dynamic Random Access Memory, DRAM-Speicher). Die Speicherlenkung würde bei Auftreten eines fehlerhaften Chips einen Ersatz-Speicherchip verwenden. Bei einigen beispielhaften Ausführungsformen werden andere Kriterien erstellt und verwendet, um zu ermitteln, welche Reparaturverfahren zur Speicherreparatur angewendet werden sollen. Bei einigen beispielhaften Ausführungsformen werden im Vergleich mit herkömmlichen Speicherreparaturverfahren zusätzliche Daten zum Erstellen dieser anderen Kriterien gesammelt.
  • Insbesondere umfassen einige beispielhafte Ausführungsformen eine Analyse, die eine Vielzahl von Bereinigungszyklen und eine Vielzahl von Symbolen in der Vielzahl von Bereinigungszyklen umfasst. Folglich können die Ausführungsformen kleine Fehler verfolgen, die im Lauf der Zeit langsam größer werden können (und die möglicherweise durch herkömmliche Fehlererkennungsverfahren nicht entdeckt werden). Werden diese Fehler nicht behoben, so können diese kleinen korrigierbaren Fehler zu einem nicht behebbaren Fehler werden, auf den ein Systemabsturz folgt.
  • Bei herkömmlichen Verfahren wird nicht versucht, eine Vielzahl fehlerhafter Symbole in einer Vielzahl von Bereinigungszyklen zu finden. Dementsprechend kann mit herkömmlichen Verfahren möglicherweise ein fehlerhaftes Symbol in einem einzigen Bereinigungszyklus, nicht aber in einem anderen Bereinigungszyklus entdeckt werden. Daher existiert bei herkömmlichen Verfahren weiterhin die Möglichkeit eines unmittelbar bevorstehenden nicht behebbaren Fehlers (verursacht durch mehrere fehlerhafte Symbole), da nicht ausreichend Daten vorliegen, die analysiert werden könnten und auf die man reagieren könnte.
  • Bei einigen beispielhaften Ausführungsformen werden Statistiken über behebbare Fehler über einen Zeitraum gesammelt, der eine Vielzahl von Bereinigungszyklen umfasst, um eine Vielzahl von Symbolen mit behebbaren Fehlern in einer Cachespeicherzeile zu finden, die später zu einem nicht behebbaren Fehler führen könnten. Derartige Statistiken können analysiert werden, nachdem Bereinigungsstatistiken für eine Vielzahl von Symbolen in einer Vielzahl von Bereinigungszyklen gesammelt wurden. Wie nachfolgend näher beschrieben wird, können verschiedene Kombinationen einer Vielzahl von Symbolen mit behebbaren Fehlern in einer Vielzahl von Bereinigungszyklen im Verhältnis zu einem konfigurierbaren Schwellenwert festgestellt werden. Eine solche Analyse kann verschiedene vorbeugende ECC-Reparaturen, Reparaturen durch Ersetzen von Speicher usw. zur Folge haben, die auf den Speicher angewendet werden, der die behebbaren Probleme aufweist.
  • Bei einigen beispielhaften Ausführungsformen wird ein zweidimensionales Datenfeld bzw. eine Tabelle erstellt, um Statistiken über behebbare Fehler (CE) im Speicher zu speichern. Die CE-Statistiken können sich auf Symbole einer gegebenen Speicherreihe beziehen. Die CE-Statistiken können auch für jeden Bereinigungszyklus gesammelt werden, wobei CE-Statistiken, die eine Vielzahl von Bereinigungszyklen umfassen, in dem zweidimensionalen Datenfeld gespeichert werden. Die CE-Statistiken für jeden Bereinigungszyklus können auf First-in-First-out-Basis (FIFO-Basis) in das Datenfeld eingefügt und aus diesem gelöscht werden. Die Größe des Datenfelds (CE_Tabelle) kann N Symbole x Sliding Window betragen:
       CE_Tabelle[N_Symbole][Sliding_Window], wobei
              N_Symbole = Anzahl der Symbole in einer gegebenen Reihe des

             Speicher-Controllers des Speichers;
             Sliding_Window = Anzahl der Bereinigungszyklen, die zur CE-Analyse
             verwendet werden
  • Die CE_Tabelle[N_Symbole][0] enthält die Datenstatistiken für den ältesten Bereinigungszyklus, und die CE_Tabelle[N_Symbole][Sliding_Window - 1] enthält die Datenstatistiken für den aktuellen Bereinigungszyklus. Bei einigen beispielhaften Ausführungsformen können die Daten für die Anzahl der in dem Datenfeld gespeicherten Bereinigungszyklen gesammelt werden. Die Datenfeldgröße kann je nach der Art des Systems, der Art des Speichers, der Art der Anwendungen usw. unterschiedlich sein. Bei einigen beispielhaften Ausführungsformen ist für jede Speicherreihe eines Speichers eine Tabelle vorhanden. Obwohl bezogen auf eine Speicherreihe beschrieben, können einige beispielhafte Ausführungsformen auf jeden Abschnitt oder Unterabschnitt verschiedener Adressbereiche (z.B. eine Reihe) im Speicher angewendet werden. Außerdem können mehrere Tabellen zum Verfolgen der Fehler in unterschiedlichen Speicherreihen im Speicher vorhanden sein. Speicherreihen können unterschiedlich groß sein, wobei ihre Größe von der Art des Systems, der Anwendung usw. abhängt (z.B. ein Gigabyte, zwei Gigabytes usw.). Daher können - wie im Folgenden näher beschrieben - die Analyse und Fehlerkorrektur für einzelne Speicherreihen im Speicher getrennt ausgeführt werden. Beispielhafte Tabellen werden nachfolgend ausführlicher beschrieben.
  • 1 zeigt gemäß einigen beispielhaften Ausführungsformen ein Computersystem zur vorbeugenden Speicherreparatur auf der Grundlage einer Analyse einer Vielzahl von Symbolen und Bereinigungszyklen. Ein Computersystem 100 umfasst einen Prozessor 102 (der möglicherweise mehrere Prozessoren, mehrere Kerne, mehrere Knoten und/oder das Realisieren von Multithreading usw. umfasst). Das Computersystem 100 umfasst außerdem einen Cachespeicher 106, der verschiedene Ebenen des Cachespeichers (z.B. L1, L2, L3 usw.) repräsentieren kann. Der Prozessor 102 steht mit dem Cachespeicher 106 in Datenverbindung, der mit einem Bus 108 (z.B. PCI, ISA, PCI-Express, HyperTransportO, InfiniBand®, NuBus usw.), einer Netzwerkschnittstelle YY05 (z.B. eine ATM-Schnittstelle, eine Ethernet-Schnittstelle, eine Frame-Relay-Schnittstelle, eine SONET-Schnittstelle, eine Drahtlosschnittstelle usw.) sowie einer Speichervorrichtung bzw. Speichervorrichtungen YY09 (z.B. optischer Speicher, Magnetspeicher usw.) in Datenverbindung steht.
  • Das Computersystem 100 umfasst außerdem ein Speichersystem 110, das einen Speicher-Controller 112 und einen Speicher 114 umfasst. Das Speichersystem 110 steht mit dem Bus 108 in Datenverbindung. Der Speicher 114 kann Synchronous Dynamic Access Memory (SRAM), DRAM, Zero Capacitor RAM, Twin Transistor RAM, Extended Data Out RAM (EDO-RAM), Double Data Rate RAM (DDR-RAM), Nano Ram (NRAM), Resistive Ram (RRAM) usw. enthalten. Der Speicher 114 enthält eine Anzahl von Modulen 115 (z.B. Dual In-Line Memory Modules, DIMMs), die eine oder mehrere Speicherreihen enthalten können. Bei einigen beispielhaften Ausführungsformen kann eine Speicherreihe eines Moduls 115 mit einer Anzahl von Speicherchips des Moduls verknüpft sein. Bei einigen beispielhaften Ausführungsformen können ein oder mehrere Speicherchips Ersatzchips sein, die zur Speicherlenkungsreparatur (eine der möglichen vorbeugenden Reparaturen für korrigierbare Fehler) verwendet werden.
  • Das Computersystem 100 umfasst außerdem einen Service-Prozessor 105, der dafür konfiguriert ist, ein Fehlermodul 107 auszuführen. Der Service-Prozessor 105 steht mit dem Cachespeicher 106 in Datenverbindung. Bei dem Fehlermodul 107 kann es sich zum Beispiel um Software- und/oder Firmware-Anweisungen handeln. Wie im Folgenden näher beschrieben wird, kann das Fehlermodul 107 bei seiner Ausführung Fehler in Daten finden, die in den Speicherreihen 115 des Speichers 114 gespeichert sind. Das Fehlermodul 107 kann außerdem ein zweidimensionales Feld mit Daten füllen, in dem Fehler einer Vielzahl von Symbolen aus einer Vielzahl von Bereinigungszyklen gespeichert sind. Das Fehlermodul 107 kann überdies den Speicher 114 für vorbeugende Reparaturen auf der Grundlage der Fehleranzahl bei einer Vielzahl von Symbolen und einer Vielzahl von Bereinigungszyklen im Verhältnis zu einem konfigurierbaren Schwellenwert konfigurieren. Operationen des Fehlermoduls 107 werden im Folgenden mit Bezug auf die in den 2-5 dargestellten Flussdiagramme näher beschrieben. Obwohl bei dieser Beschreibung die Operationen des Fehlermoduls 107 auf einem getrennten Service-Prozessor (bezogen auf den Prozessor 102) ausgeführt werden, kann bei einigen anderen beispielhaften Ausführungsformen der Prozessor 102 das Fehlermodul 107 ausführen.
  • Das Computersystem 100 umfasst außerdem einen ECC-Decoder 111, der mit dem Bus 108 in Datenverbindung steht. Wie im Folgenden näher beschrieben wird, kann der ECC-Decoder 111 dafür konfiguriert werden, ECC-Operationen auszuführen, um Speicherfehler in Bezug auf Daten in dem Speicher 114 zu beheben. Der ECC-Decoder 111 kann zum Beispiel ECC-Operationen ausführen, um eine Symbolmarkenreparatur und/oder eine Chipmarkenreparatur auszuführen. Insbesondere kann auf der Grundlage der ECC-Prüfbits festgestellt werden, welche Daten im Speicher hätten gespeichert werden sollen. Dementsprechend können die ECC-Operationen die falschen Daten aus dem Speicher empfangen und eine neue Berechnung anstellen, um die richtigen Daten bereitzustellen. Derartige Operationen können für einen Symbolebene-weiten Zugriff und für einen Chipebene-weiten Zugriff ausgeführt werden.
  • Das Computersystem 100 umfasst darüber hinaus ein nichtflüchtiges maschinenlesbares Medium 150 (z.B. optischen Speicher, Magnetspeicher usw.), das mit dem Bus 108 in Datenverbindung steht. Realisierungen können zudem weniger oder auch zusätzliche Komponenten umfassen, die nicht in 1 dargestellt sind (z.B. Videokarten, Audiokarten, zusätzliche Netzwerkschnittstellen, Peripherievorrichtungen usw.).
  • Nachfolgend werden Flussdiagramme für Operationen gemäß einigen beispielhaften Ausführungsformen beschrieben. Insbesondere zeigen die 2 und 4-6 Flussdiagramme für eine vorbeugende Speicherreparatur auf der Grundlage einer Analyse einer Vielzahl von Symbolen und Bereinigungszyklen. Wie im Folgenden näher beschrieben wird, können die Operationen der Flussdiagramme in den 2 und 4-5 sich an verschiedenen Übergangspunkten (an den Übergangspunkten A, B und C) überschneiden. 6 zeigt ein Flussdiagramm mit Operationen, die eine Erweiterung einer Operation bei Block 406 in 4 sind. Bei einigen beispielhaften Ausführungsformen werden die Operationen der Flussdiagramme in den 2 und 4-6 von dem Fehlermodul 107 und dem ECC-Decoder 111 aus 1 ausgeführt. Demzufolge werden die Flussdiagramme der 2 und 4-6 mit Bezug auf das Computersystem 100 beschrieben. Darüber hinaus werden im Interesse einer gut verständlichen Beschreibung die Flussdiagramme mit Bezug auf die in den 3 und 7 gezeigten beispielhaften zweidimensionalen Tabellen beschrieben. Die Operationen der Flussdiagramme der 2-5 werden so beschrieben, als würden sie für eine Speicherreihe ausgeführt. Einige beispielhafte Ausführungsformen können jedoch für mehrere oder alle in ihnen enthaltene Speicherreihen ausgeführt werden.
  • 2 zeigt gemäß einigen beispielhaften Ausführungsformen ein Flussdiagramm zur vorbeugenden Speicherreparatur auf der Grundlage einer Analyse einer Vielzahl von Symbolen und Bereinigungszyklen. Die Operationen eines Flussdiagramms 200 beginnen bei Block 202.
  • Bei Block 202 führt das Fehlermodul 107 eine neue Speicherbereinigung eines Speichers für einen neuen Bereinigungszyklus für eine Anzahl von Bereinigungszyklen aus. Wie in 1 gezeigt, führt das Fehlermodul 107 die neue Speicherbereinigung einer Speicherreihe des Speichers 114 aus. Während eines Speicherbereinigungszyklus wird eine Cachespeicherzeile aus dem Cachespeicher 106 gelesen, was einen entsprechenden Lesevorgang für die Daten aus dem Speicher 114 bewirkt. Bei einigen beispielhaften Ausführungsformen decken die Symbole der Cachespeicherzeile den Adressraum des Speichers 114 ab. Der ECC-Decoder 111 erkennt mithilfe von ECC-Operationen (z.B. mithilfe von Prüfbits, die als Teil der Cachespeicherzeile gespeichert werden), ob irgendwelche Symbolfehler vorhanden sind. Bei jedem erkannten Symbolfehler wird das Fehlermodul 107 benachrichtigt. Bei einigen beispielhaften Ausführungsformen wird regelmäßig (z.B. alle 12 Stunden) eine neue Speicherbereinigung ausgeführt. Die Operationen des Flussdiagramms 200 werden bei Block 204 fortgesetzt.
  • Bei Block 204, erkennt der ECC-Decoder 111 die korrigierbaren Symbolfehler in dem Speicher 114 bei Cachespeicherzeilen-Granularität. Wie in 1 gezeigt, kann der ECC-Decoder 111 die Daten aus dem Speicher 114 empfangen und feststellen, ob als Reaktion auf den Zugriff die richtigen Daten zurückgegeben werden. Wie bei einigen beispielhaften Ausführungsformen erwähnt, betrifft die Speicherbereinigung jedes Symbol in einer gegebenen Cachespeicherzeile des Cachespeichers 106. Der ECC-Decoder 111 kann außerdem dem Fehlermodul 107 die Erkennung der korrigierbaren Fehler liefern. Die Operationen des Flussdiagramms 200 werden bei Block 206 fortgesetzt.
  • Bei Block 206 aktualisiert das Fehlermodul 107 eine Tabelle (in der die korrigierbaren Fehler von in der Cachespeicherzeile des Cachespeichers für eine Vielzahl von Bereinigungszyklen definierten Symbole gespeichert sind) mit den in diesem Bereinigungsvorgang erkannten korrigierbaren Fehlern. Wie in 1 gezeigt, kann das Fehlermodul 107 diese Erkennungen korrigierbarer Fehler von dem ECC-Decoder 111 empfangen. Zur Veranschaulichung zeigt 3 gemäß einigen beispielhaften Ausführungsformen eine zweidimensionale Tabelle zum Speichern von Fehlern einer Vielzahl von Symbolen aus einer Vielzahl von Bereinigungszyklen. 3 zeigt eine Tabelle 300, in der eine Anzahl korrigierbarer Fehler von Symbolen in einer Cachespeicherzeile eines Cachespeichers gespeichert sind. Die Vertikalachse der Tabelle 300 enthält Reihen für verschiedene Bereinigungszyklen für eine Cachespeicherzeile. Die Horizontalachse der Tabelle 300 enthält Spalten für die verschiedenen Symbole des Speichers 114 bei Cachespeicherzeilen-Granularität (z.B. 128 Bytes). Bei einigen beispielhaften Ausführungsformen enthält eine Cachespeicherzeile zwei ECC-Worte zu 64-Byte, wobei die ECC-Erstellung und - prüfung für jedes 64-Byte-Wort ausgeführt werden. Wie hier beschrieben, können die Statistiken über die korrigierbaren Fehler pro Speicherreihe gespeichert werden. Dementsprechend können bei einigen beispielhaften Ausführungsformen bei einer Speicherbereinigung alle Cachespeicherzeilen in einer Speicherreihe gelesen werden. Der Speicher-Controller 112 unterhält pro Symbol eine Zählung, die aussagt, bei wie vielen Lesevorgängen ein behebbarer Fehler bei diesem Symbol auftritt. Zum Beispiel weist eine Anzahl von 64 für das Symbol N am Ende einer Bereinigung darauf hin, dass ein behebbarer Fehler bei 64 verschiedenen ECC-Worten oder 32 verschiedenen Cachespeicherzeilen in dieser Speicherreihe an demselben Symbolindex aufgetreten ist.
  • Die Tabelle 300 enthält insbesondere 10 verschiedene Spalten, die 10 verschiedenen Symbolen einer Cachespeicherzeile zugeordnet sind. Der Übersichtlichkeit halber werden für eine gegebene Cachespeicherzeile nur 10 Symbole gezeigt. Bei einigen beispielhaften Ausführungsformen enthält eine gegebene Cachespeicherzeile in dem Cachespeicher 106 72 Symbole. Bei derartigen Ausführungsformen würde die Tabelle 300 72 verschiedene Spalten für die 72 verschiedenen Symbole der Cachespeicherzeile enthalten. Die Tabelle 300 umfasst 10 Spalten für 10 verschiedene Symbole - die Spalten 322, 324, 326, 328, 330, 332, 334, 336, 338 und 340. In der Spalte 322 wird die Anzahl der korrigierbaren Fehler für ein erstes Symbol in der Cachespeicherzeile gespeichert. In der Spalte 324 wird die Anzahl der korrigierbaren Fehler für ein zweites Symbol in der Cachespeicherzeile gespeichert. In der Spalte 326 wird die Anzahl der korrigierbaren Fehler für ein drittes Symbol in der Cachespeicherzeile gespeichert. In der Spalte 328 wird die Anzahl der korrigierbaren Fehler für ein viertes Symbol in der Cachespeicherzeile gespeichert. In der Spalte 330 wird die Anzahl der korrigierbaren Fehler für ein fünftes Symbol in der Cachespeicherzeile gespeichert. In der Spalte 332 wird die Anzahl der korrigierbaren Fehler für ein sechstes Symbol in der Cachespeicherzeile gespeichert. In der Spalte 334 wird die Anzahl der korrigierbaren Fehler für ein siebtes Symbol in der Cachespeicherzeile gespeichert. In der Spalte 336 wird die Anzahl der korrigierbaren Fehler für ein achtes Symbol in der Cachespeicherzeile gespeichert. In der Spalte 338 wird die Anzahl der korrigierbaren Fehler für ein neuntes Symbol in der Cachespeicherzeile gespeichert. In der Spalte 340 wird die Anzahl der korrigierbaren Fehler für ein zehntes Symbol in der Cachespeicherzeile gespeichert.
  • Die Tabelle 300 enthält außerdem 10 verschiedene Reihen, die 10 verschiedenen Bereinigungszyklen zugeordnet sind. Der Übersichtlichkeit halber werden nur 10 verschiedene Bereinigungszyklen gezeigt. Es kann jedoch auch eine kleinere oder größere Anzahl von Bereinigungszyklen in der Tabelle 300 gespeichert werden. Die Tabelle 300 umfasst 10 verschiedene Reihen - die Reihen 302, 304, 306, 308, 310, 312, 314, 316, 318 und 320. In der Reihe 302 wird die Fehleranzahl für die 10 verschiedenen Symbole und den aktuellen Bereinigungszyklus gespeichert. In der Reihe 304 wird die Fehleranzahl für dieselben 10 Symbole und den vorhergehenden Bereinigungszyklus gespeichert. In der Reihe 306 wird die Fehleranzahl für dieselben 10 Symbole und den vorhergehenden Bereinigungszyklus gespeichert. In der Reihe 308 wird die Fehleranzahl für dieselben 10 Symbole und den vorhergehenden Bereinigungszyklus gespeichert. In der Reihe 310 wird die Fehleranzahl für dieselben 10 Symbole und den vorhergehenden Bereinigungszyklus gespeichert. In der Reihe 312 wird die Fehleranzahl für dieselben 10 Symbole und den vorhergehenden Bereinigungszyklus gespeichert. In der Reihe 314 wird die Fehleranzahl für dieselben 10 Symbole und den vorhergehenden Bereinigungszyklus gespeichert. In der Reihe 316 wird die Fehleranzahl für dieselben 10 Symbole und den vorhergehenden Bereinigungszyklus gespeichert. In der Reihe 318 wird die Fehleranzahl für dieselben 10 Symbole und den vorhergehenden Bereinigungszyklus gespeichert. In der Reihe 320 wird die Fehleranzahl für dieselben 10 Symbole und den ältesten Bereinigungszyklus gespeichert.
  • Bei einigen beispielhaften Ausführungsformen werden die Reihen der Tabelle 300 auf First-in-First-out-Basis (FIFO-Basis) erstellt und gelöscht. Insbesondere wird in der Tabelle 300 eine festgelegte Anzahl von Bereinigungszyklen in den Reihen gespeichert. Bei diesem Beispiel werden in der Tabelle 300 Fehleranzahlen der Symbole für 10 verschiedene Bereinigungszyklen gespeichert. Sobald Fehleranzahlen für über 10 Bereinigungszyklen verfolgt werden, löscht das Fehlermodul 107 (aus 1) zum Speichern des aktuellen Bereinigungszyklus den ältesten Bereinigungszyklus.
  • Wie in 2 gezeigt, aktualisiert das Fehlermodul 107 die Tabelle 300 auf der Grundlage der Fehleranzahlen der verschiedenen Symbole in der Cachespeicherzeile (von dem ECC-Decoder 111 empfangen). Bei diesem Beispiel würde das Fehlermodul 107 die Fehleranzahlen für den aktuellen Bereinigungszyklus ganz oben in der Tabelle 300 (Reihe 302) speichern und die Reihe mit dem ältesten Bereinigungszyklus löschen - dem Bereinigungszyklus, der im Verhältnis zu dem in Reihe 320 gespeicherten ältesten Bereinigungszyklus zeitlich älter ist. Die Tabelle 300 kann auf dem nichtflüchtigen maschinenlesbaren Medium 150 gespeichert werden. Die Operationen des Flussdiagramms 200 aus 2 werden bei Block 208 fortgesetzt.
  • Bei Block 208 stellt das Fehlermodul 107 fest, ob auf diese Speicherreihe aufgrund einer früheren Analyse bereits Reparaturverfahren angewendet wurden. Insbesondere kann - wie nachfolgend ausführlicher beschrieben - eine festgelegte Anzahl von Reparaturverfahren auf eine gegebene Speicherreihe angewendet werden, um die darin enthaltenen Symbolfehler zu beheben. Wenn daher einige dieser Reparaturverfahren aktuell zum Beheben von zuvor erkannten Fehlern anderer Symbole angewendet werden, werden diese Reparaturverfahren nicht zum Beheben von Fehlern der Symbole verwendet, die bei dieser Analyse erkannt wurden. Bei einigen beispielhaften Ausführungsformen werden auf eine gegebene Speicherzeile drei verschiedene Reparaturverfahren angewendet - Symbolmarkenreparatur, Chipmarkenreparatur und Speicherlenkungsreparatur. Wie im Folgenden näher beschrieben wird, können bei einer gegebenen Analyse mindestens zwei dieser Reparaturen angewendet werden, so dass die dritte Reparatur bei Fehlern angewendet werden kann, die bei einer späteren Analyse erkannt werden. Diese Operation bei Block 208 ist demzufolge erforderlich, um festzustellen, ob aufgrund einer vorhergehenden Analyse derartige Reparaturen ausgeführt wurden. Wurden aufgrund einer vorhergehenden Analyse Reparaturen ausgeführt, werden die Operationen des Flussdiagramms 200 bis zu einem Übergangspunkt C fortgesetzt und anschließend in einem Flussdiagramm 500 in 5 (die im Folgenden ausführlicher beschrieben wird) weitergeführt. Andernfalls werden die Operationen des Flussdiagramms 200 bei Block 210 fortgesetzt.
  • Bei Block 210 stellt das Fehlermodul 107 fest, ob für jedes von mindestens zwei Symbolen (aus der Anzahl von Bereinigungszyklen, deren Daten in der Tabelle gespeichert sind) mindestens ein korrigierbarer Fehler erkannt wurde. Wie in 3 gezeigt, stellt das Fehlermodul 107 fest, ob die gesamte Tabelle 300 mindestens zwei Einträge ungleich Null für zwei verschiedene Symbole enthält. Dementsprechend führt das Fehlermodul 107 eine Analyse über eine Vielzahl von Bereinigungszyklen hinweg aus. Bei diesem Beispiel enthält die Tabelle 300 12 Einträge ungleich Null für drei verschiedene Symbole:
    • den Eintrag in der Reihe 302, Spalte 330, mit einer Fehleranzahl von 20 - erstes Symbol;
    • den Eintrag in der Reihe 304, Spalte 330, mit einer Fehleranzahl von 20 - erstes Symbol;
    • den Eintrag in der Reihe 306, Spalte 330, mit einer Fehleranzahl von 15 - erstes Symbol;
    • den Eintrag in der Reihe 308, Spalte 330, mit einer Fehleranzahl von 20 - erstes Symbol;
    • den Eintrag in der Reihe 310, Spalte 330, mit einer Fehleranzahl von 35 - erstes Symbol;
    • den Eintrag in der Reihe 312, Spalte 330, mit einer Fehleranzahl von 20 - erstes Symbol;
    • den Eintrag in der Reihe 314, Spalte 330, mit einer Fehleranzahl von 20 - erstes Symbol;
    • den Eintrag in der Reihe 316, Spalte 330, mit einer Fehleranzahl von 20 - erstes Symbol;
    • den Eintrag in der Reihe 318, Spalte 330, mit einer Fehleranzahl von 18 - erstes Symbol;
    • den Eintrag in der Reihe 320, Spalte 330, mit einer Fehleranzahl von 15 - erstes Symbol;
    • den Eintrag in der Reihe 316, Spalte 322, mit einer Fehleranzahl von 16 - zweites Symbol;
    • den Eintrag in der Reihe 316, Spalte 340, mit einer Fehleranzahl von 11 - drittes Symbol.
  • Demzufolge „durchquert“ das Fehlermodul 107 bei diesem Beispiel die Tabelle 300 und findet drei Symbole mit Einträgen ungleich Null. Sind nicht mindestens zwei Symbole mit Einträgen ungleich Null vorhanden, werden die Operationen des Flussdiagramms 200 bei Block 202 fortgesetzt, wo eine neue Speicherbereinigung für einen neuen Speicherbereinigungszyklus ausgeführt wird. Andernfalls die Operationen des Flussdiagramms 200 an dem Übergangspunkt A und anschließend in einem Flussdiagramm 400 aus 4 weitergeführt (das nachfolgend beschrieben wird).
  • 4 zeigt gemäß einigen beispielhaften Ausführungsformen ein Flussdiagramm fortgesetzter Operationen zur vorbeugenden Speicherreparatur auf der Grundlage einer Analyse einer Vielzahl von Symbolen und Bereinigungszyklen. Die Operationen eines Flussdiagramms 400 beginnen bei Block 402.
  • Bei Block 402 stellt das Fehlermodul 107 fest, ob mindestens ein Symbol mit mindestens einem korrigierbaren Fehler korrigierbare Fehler aufweist, die einen Schwellenwert überschreiten (über die Anzahl von Bereinigungszyklen hinweg, deren Daten in der Tabelle gespeichert sind). Wie in 3 gezeigt, stellt das Fehlermodul 107 fest, ob mindestens eines der drei Symbole, die als Symbole mit einer Fehleranzahl ungleich Null erkannt wurden (Symbol eins, Symbol zwei oder Symbol drei), in der Tabelle 300 Einträge aufweisen, deren Fehleranzahlen einen Schwellenwert überschreiten. Bei einigen beispielhaften Ausführungsformen ist der Schwellenwert ein konfigurierbarer Wert, der von der Art des Systems, der Art der Anwendung, der Art des Speichers usw. abhängt. Angenommen, der Schwellenwert wäre auf einen Wert 30 eingestellt: Bei diesem Beispiel überschreitet ein Eintrag der Tabelle 300 den Schwellenwert - der Eintrag in der Reihe 310, Spalte 330 mit einer Fehleranzahl von 35. Ist nicht mindestens ein Symbol mit einem Eintrag vorhanden, dessen Fehleranzahl den Schwellenwert überschreitet, werden die Operationen des Flussdiagramms 400 an dem Übergangspunkt B fortgesetzt und kehren zu dem Flussdiagramm 200 bei Block 202 zurück, wo eine neue Speicherbereinigung für einen neuen Bereinigungszyklus ausgeführt wird. Andernfalls werden die Operationen des Flussdiagramms 400 bei Block 404 fortgesetzt.
  • Bei Block 404 stellt das Fehlermodul 107 fest, ob mindestens zwei weitere Symbole korrigierbare Fehler aufweisen, die den Schwellenwert überschreiten (für die Anzahl von Bereinigungszyklen, deren Daten in der Tabelle gespeichert sind). Wie aus 3 zu ersehen ist, „durchquert“ das Fehlermodul 107 die Tabelle 300 erneut und versucht, mindestens zwei weitere Symbole mit korrigierbaren Fehlern zu finden, die den Schwellenwert überschreiten. Angenommen, der Schwellenwert wäre auf einen Wert 10 anstelle von 30 eingestellt: In einem solchen Fall erkennt das Fehlermodul 107 zwei weitere Symbole, deren Fehleranzahl bei einem Eintrag den Schwellenwert überschreitet:
    • den Eintrag in der Reihe 316, Spalte 322, mit einer Fehleranzahl von 16 - zweites Symbol;
    • den Eintrag in der Reihe 316, Spalte 340, mit einer Fehleranzahl von 11 - drittes Symbol.
  • Sind mindestens zwei weitere Symbole mit korrigierbaren Fehlern vorhanden, die den Schwellenwert überschreiten, werden die Operationen des Flussdiagramms 400 bei Block 406 weitergeführt. Andernfalls werden die Operationen des Flussdiagramms 400 bei Block 408 fortgesetzt.
  • Bei Block 406 führt das Fehlermodul 107 vorbeugende Reparaturen aus - drei verschiedene Reparaturen. Das Fehlermodul 107 hat insbesondere mindestens drei Symbole mit Fehleranzahlen erkannt, die den Schwellenwert überschritten haben. Die Operationen für das Ausführen von drei verschiedenen Reparaturen als vorbeugende Speicherreparaturen werden im Folgenden mit Bezug auf 6 ausführlicher beschrieben. Die Operationen des Flussdiagramms 400 aus 4 sind dann abgeschlossen.
  • Bei Block 408 stellt das Fehlermodul 107 fest, ob mindestens ein weiteres Symbol korrigierbare Fehler aufweist, die den Schwellenwert überschreiten (aus der Anzahl von Bereinigungszyklen, deren Daten in der Tabelle gespeichert sind). Wie in 3 gezeigt, „durchquert“ das Fehlermodul 107 die Tabelle 300 erneut und versucht, mindestens ein weiteres Symbol mit korrigierbaren Fehlern zu finden, die den Schwellenwert überschreiten. Angenommen, der Schwellenwert wäre auf einen Wert 15 anstelle von 30 oder 10 eingestellt: In einem solchen Fall erkennt das Fehlermodul 107 ein weiteres Symbol, dessen Fehleranzahl bei einem Eintrag den Schwellenwert überschreitet:
    • den Eintrag in der Reihe 316, Spalte 322, mit einer Fehleranzahl von 16 - zweites Symbol.
  • Ist nicht mindestens ein weiteres Symbol mit korrigierbaren Fehlern vorhanden, die den Schwellenwert überschreiten, werden die Operationen des Flussdiagramms 400 an dem Übergangspunkt B fortgesetzt und kehren zu dem Flussdiagramm 200 bei Block 202 zurück, wo eine neue Speicherbereinigung für einen neuen Bereinigungszyklus ausgeführt wird. Andernfalls werden die Operationen des Flussdiagramms 400 bei Block 410 fortgesetzt.
  • Bei Block 410 führt das Fehlermodul 107 eine Speicherlenkungsreparatur für das Symbol mit den meisten korrigierbaren Fehlern aus (von den zwei Symbolen, die als Symbole erkannt wurden, deren Fehler den Schwellenwert überschreiten). Das Fehlermodul 107 hat insbesondere bei Block 402 ein erstes Symbol mit einer Fehleranzahl erkannt, die den Schwellenwert überschreitet, und hat bei Block 408 ein zweites Symbol mit einer Fehleranzahl erkannt, die den Schwellenwert überschreitet. Für die Speicherlenkungsreparatur würde das Fehlermodul 107 den Speicher 114 so konfigurieren, dass der Speicherchip, auf dem das Symbol mit den meisten korrigierbaren Fehlern gespeichert ist, durch einen Ersatz-Speicherchip ersetzt wird. Wie im Vorangehenden beschrieben, ist der Speicher 114 so konfiguriert, dass ein Ersatzchip zur Verfügung steht, um eine Speicherlenkung zu ermöglichen. Als Teil der Reparatur kann das Fehlermodul 107 den Inhalt des Speicherchips, der ersetzt wird, auf den Ersatzchip kopieren (mit Ausnahme des Symbols/der Symbole mit den Fehleranzahlen, die den Schwellenwert überschreiten). Das Fehlermodul 107 kann auf der Grundlage der von dem ECC-Decoder 111 gelieferten Daten die richtigen Daten für diese Symbole schreiben. Das Fehlermodul 107 kann außerdem den Speicher-Controller 112 derart neu konfigurieren, dass Anfragen bezüglich Datenzugriffen auf den alten Chip zu dem Ersatzchip umgeleitet werden. Bei der vorliegenden Beschreibung wird die Speicherlenkungsreparatur auf den Speicherchip angewendet, auf dem das Symbol mit den meisten korrigierbaren Fehlern gespeichert ist. Bei einigen anderen Ausführungsformen kann allerdings anhand von anderen Kriterien festgestellt werden, welche Reparatur bei welchem Symbol anzuwenden ist (wie im Folgenden näher beschrieben wird). Die Operationen des Flussdiagramms 400 werden bei Block 412 fortgesetzt.
  • Bei Block 412 führt das Fehlermodul 107 entweder eine Chipmarkenreparatur oder eine Symbolmarkenreparatur des weiteren Symbols aus, das korrigierbare Fehler aufweist, die den Schwellenwert überschreiten. Bei einigen beispielhaften Ausführungsformen stellt das Fehlermodul 107 auf der Grundlage des Fehlerumfangs fest, welche Reparatur anzuwenden ist. Sind beispielsweise weitere Symbole mit Fehleranzahlen ungleich Null vorhanden und sind diese einander benachbart oder liegen nahe beieinander (da sie ein Teil desselben Chips sind), führt das Fehlermodul 107 eine Chipmarkenreparatur aus und korrigiert dadurch acht Bits. Sind angrenzend an diesen bestimmten Fehler oder in dessen Nähe keine weiteren fehlerhaften Symbole vorhanden, führt das Fehlermodul 107 eine Symbolmarkenreparatur aus und korrigiert dadurch zwei Bits. Bei einigen beispielhaften Ausführungsformen werden die Symbolmarkenreparatur und die Chipmarkenreparatur mithilfe einer oder mehrerer Fehlerkorrekturcode-Operationen (ECC-Operationen) durchgeführt, die von dem ECC-Decoder 111 ausgeführt werden. Insbesondere stellt der ECC-Decoder 111 auf der Grundlage der ECC-Prüfbits fest, welche Daten im Speicher hätten gespeichert werden sollen. Dementsprechend kann der ECC-Decoder 111 die falschen Daten aus dem Speicher empfangen und eine neue Berechnung anstellen, um die richtigen Daten bereitzustellen. Derartige Operationen können für einen Symbolebene-weiten Zugriff und für einen Chipebene-weiten Zugriff ausgeführt werden. Dementsprechend kann das Fehlermodul 107 eine Anweisung an den ECC-Decoder 111 übermitteln, die Chipmarkenreparatur oder die Symbolmarkenreparatur an einer gegebenen Gruppe von Bits auszuführen, auf die im Speicher 114 zugegriffen wird. Die Operationen des Flussdiagramms 400 werden an dem Übergangspunkt B fortgesetzt und kehren zu dem Flussdiagramm 200 bei Block 202 zurück, wo eine neue Speicherbereinigung für einen neuen Bereinigungszyklus ausgeführt wird.
  • 5 zeigt gemäß einigen beispielhaften Ausführungsformen ein Flussdiagramm fortgesetzter Operationen zur vorbeugenden Speicherreparatur auf der Grundlage einer Analyse einer Vielzahl von Symbolen und Bereinigungszyklen. Die Operationen eines Flussdiagramms 500 beginnen bei Block 502. Dies ist eine Fortsetzung, ausgehend von dem Übergangspunkt C aus dem Flussdiagramm 200 aus 2, in dem festgestellt wurde, dass aufgrund einer früheren Analyse Reparaturen vorgenommen wurden. Wenn solche Reparaturen aufgrund einer früheren Analyse vorgenommen wurden, dann wurden zwei der drei Reparaturen ausgeführt (siehe die vorstehend beschriebenen Blöcke 410-412).
  • Bei Block 502 stellt das Fehlermodul 107 fest, ob mindestens ein Symbol korrigierbare Fehler aufweist, die den Schwellenwert überschreiten (für die Anzahl von Bereinigungszyklen, deren Daten in der Tabelle gespeichert sind). Wie in 3 gezeigt, „durchquert“ das Fehlermodul 107 die Tabelle 300, um ein Symbol mit korrigierbaren Fehlern zu finden, die den Schwellenwert überschreiten. Bei einigen beispielhaften Ausführungsformen wählt das Fehlermodul 107 das Symbol mit den meisten korrigierbaren Fehlern aus, wenn mehrere Symbole diesen Kriterien entsprechen. Bei einigen beispielhaften Ausführungsformen wählt das Fehlermodul 107 das erste Symbol aus, das den Kriterien entspricht und das beim Durchqueren der Tabelle 300 gefunden wurde. Ist nicht mindestens ein Symbol mit einem Eintrag vorhanden, dessen Fehleranzahl den Schwellenwert überschreitet, werden die Operationen des Flussdiagramms 400 an dem Übergangspunkt B fortgesetzt und kehren zu dem Flussdiagramm 200 bei Block 202 zurück, wo eine neue Speicherbereinigung für einen neuen Bereinigungszyklus ausgeführt wird. Andernfalls werden die Operationen des Flussdiagramms 400 bei Block 504 fortgesetzt.
  • Bei Block 504 führt das Fehlermodul 107 entweder eine Chipmarkenreparatur oder eine Symbolmarkenreparatur dieses erkannten Symbols aus. Das Fehlermodul 107 führt insbesondere diejenige Reparatur aus, die aktuell nicht auf der Grundlage der vorhergehenden Analyse ausgeführt wird. Das Fehlermodul 107 führt die Reparatur aus, die bei dem zuvor beschriebenen Block 412 nicht gewählt wurde (wo entweder die Chipmarkenreparatur oder die Symbolmarkenreparatur ausgewählt wird). Bei einigen beispielhaften Ausführungsformen werden die Symbolmarkenreparatur und die Chipmarkenreparatur mithilfe einer oder mehrerer Fehlerkorrekturcode-Operationen (ECC-Operationen) durchgeführt, die von dem ECC-Decoder 111 ausgeführt werden. Insbesondere stellt der ECC-Decoder 111 auf der Grundlage der ECC-Prüfbits fest, welche Daten im Speicher hätten gespeichert werden sollen. Dementsprechend kann der ECC-Decoder 111 die falschen Daten aus dem Speicher empfangen und eine neue Berechnung anstellen, um die richtigen Daten bereitzustellen. Derartige ECC-Operationen können für einen Symbolebene-weiten Zugriff und für einen Chipebene-weiten Zugriff ausgeführt werden. Dementsprechend kann das Fehlermodul 107 eine Anweisung an den ECC-Decoder 111 übermitteln, die Chipmarkenreparatur oder die Symbolmarkenreparatur an einer gegebenen Gruppe von Bits auszuführen, auf die im Speicher 114 zugegriffen wird. Die Operationen des Flussdiagramms 500 sind abgeschlossen, da alle drei Reparaturen auf diese Speicherreihe angewendet werden.
  • 6 zeigt gemäß einigen beispielhaften Ausführungsformen ein Flussdiagramm zur vorbeugenden Speicherreparatur mit drei verschiedenen Reparaturen. Ein Flussdiagramm 600 umfasst Operationen, die eine Erweiterung der Operation bei Block 406 aus 4 sind (wobei vorbeugende Reparaturen mit drei verschiedenen Reparaturen ausgeführt werden). Die Operationen des Flussdiagramms 600 beginnen bei Block 602.
  • Bei Block 602 führt das Fehlermodul 107 eine Speicherlenkungsreparatur für das Symbol mit den meisten korrigierbaren Fehlern aus (von den drei Symbolen, die als Symbole erkannt wurden, deren Fehler den Schwellenwert überschreiten). Das Fehlermodul 107 hat insbesondere bei Block 402 ein erstes Symbol mit einer Fehleranzahl erkannt, die den Schwellenwert überschreitet, und hat bei Block 404 ein zweites und ein drittes Symbol mit einer Fehleranzahl erkannt, die den Schwellenwert überschreitet. Für die Speicherlenkungsreparatur würde das Fehlermodul 107 den Speicher 114 so konfigurieren, dass der Speicherchip, auf dem das Symbol mit den meisten korrigierbaren Fehlern gespeichert ist, durch einen Ersatz-Speicherchip ersetzt wird. Wie im Vorangehenden beschrieben, ist der Speicher 114 so konfiguriert, dass ein Ersatz-Speicherchip zur Verfügung steht, um eine Speicherlenkung zu ermöglichen. Als Teil der Reparatur kann das Fehlermodul 107 den Inhalt des Speicherchips, der ersetzt wird, auf den Ersatz-Speicherchip kopieren (mit Ausnahme des Symbols/der Symbole mit den Fehleranzahlen, die den Schwellenwert überschreiten). Das Fehlermodul 107 kann auf der Grundlage der von dem ECC-Decoder 111 gelieferten Daten die richtigen Daten für diese Symbole schreiben. Das Fehlermodul 107 kann außerdem den Speicher-Controller 112 derart neu konfigurieren, dass Anfragen bezüglich Datenzugriffen auf den alten Speicherchip zu dem Ersatz-Speicherchip umgeleitet werden. Die Operationen des Flussdiagramms 600 werden bei Block 604 fortgesetzt.
  • Bei Block 604 führt das Fehlermodul 107 eine Chipmarkenreparatur des Symbols mit den zweitmeisten korrigierbaren Fehlern aus, die den Schwellenwert überschreiten. Bei einigen beispielhaften Ausführungsformen wird die Chipmarkenreparatur mithilfe einer oder mehrerer Fehlerkorrekturcode-Operationen (ECC-Operationen) durchgeführt, die von dem ECC-Decoder 111 ausgeführt werden. Insbesondere stellt der ECC-Decoder 111 auf der Grundlage der ECC-Prüfbits fest, welche Daten im Speicher hätten gespeichert werden sollen. Dementsprechend kann der ECC-Decoder 111 die falschen Daten aus dem Speicher empfangen und eine neue Berechnung anstellen, um die richtigen Daten bereitzustellen. Dementsprechend kann das Fehlermodul 107 eine Anweisung an den ECC-Decoder 111 übermitteln, die Chipmarkenreparatur an den acht Bits auszuführen, auf die im Speicher 114 zugegriffen wird. Die Operationen des Flussdiagramms 600 werden bei Block 606 fortgesetzt.
  • Bei Block 606 führt das Fehlermodul 107 eine Symbolmarkenreparatur des Symbols mit den drittmeisten korrigierbaren Fehlern aus, die den Schwellenwert überschreiten. Bei einigen beispielhaften Ausführungsformen wird die Symbolmarkenreparatur mithilfe einer oder mehrerer Fehlerkorrekturcode-Operationen (ECC-Operationen) durchgeführt, die von dem ECC-Decoder 111 ausgeführt werden. Insbesondere stellt der ECC-Decoder 111 auf der Grundlage der ECC-Prüfbits fest, welche Daten im Speicher hätten gespeichert werden sollen. Dementsprechend kann der ECC-Decoder 111 die falschen Daten aus dem Speicher empfangen und eine neue Berechnung anstellen, um die richtigen Daten bereitzustellen. Dementsprechend kann das Fehlermodul 107 eine Anweisung an den ECC-Decoder 111 übermitteln, die Symbolmarkenreparatur an zwei Bits auszuführen, auf die im Speicher 114 zugegriffen wird. Die Operationen des Flussdiagramms 600 sind abgeschlossen.
  • Während die Speicherlenkungsreparatur bei dieser Beschreibung an dem Symbol mit den meisten korrigierbaren Fehlern vorgenommen wird, wird die Chipmarkenreparatur an dem Symbol mit den zweitmeisten korrigierbaren Fehlern vorgenommen, und die Symbolmarkenreparatur wird bei dem Symbol mit der geringsten Anzahl korrigierbarer Fehler angewendet. Bei einigen beispielhaften Ausführungsformen können diese Reparaturen an den verschiedenen Symbolen auf der Grundlage anderer Kriterien vorgenommen werden. Das Fehlermodul 107 kann beispielsweise die Gruppierung von Symbolen mit korrigierbaren Fehlern in Betracht ziehen. Insbesondere kann das Fehlermodul 107 die Speicherlenkungsreparatur für denjenigen Speicherchip in Betracht ziehen, auf dem die meisten korrigierbaren Fehler gespeichert sind. Bei einigen beispielhaften Ausführungsformen kann das Fehlermodul 107 auf der Grundlage des Fehlerumfangs außerdem feststellen, welche Reparatur anzuwenden ist. Sind beispielsweise weitere Symbole mit Fehleranzahlen ungleich Null vorhanden und sind diese einander benachbart oder liegen nahe beieinander (da sie ein Teil desselben Chips sind), führt das Fehlermodul 107 eine Chipmarkenreparatur aus und korrigiert dadurch acht Bits. Sind angrenzend an diesen bestimmten Fehler oder in dessen Nähe keine weiteren fehlerhaften Symbole vorhanden, führt das Fehlermodul 107 eine Symbolmarkenreparatur aus und korrigiert dadurch zwei Bits.
  • Bei einigen beispielhaften Ausführungsformen können alternative oder zusätzliche Kriterien angewendet werden, um festzustellen, dass ein Symbol für eine Reparatur infrage kommt. Zur Veranschaulichung zeigt 7 gemäß einigen weiteren beispielhaften Ausführungsformen eine zweidimensionale Tabelle zum Speichern von Fehlern einer Vielzahl von Symbolen in einer Vielzahl von Bereinigungszyklen. Ähnlich wie 3 zeigt 7 eine Tabelle 700, in der eine Anzahl korrigierbarer Fehler von Symbolen einer Cachespeicherzeile eines Cachespeichers gespeichert sind. Die Vertikalachse der Tabelle 700 enthält Reihen für verschiedene Bereinigungszyklen für eine Cachespeicherzeile. Die Horizontalachse der Tabelle 700 enthält Spalten für die verschiedenen Symbole einer Cachespeicherzeile.
  • Die Tabelle 700 enthält insbesondere 10 verschiedene Spalten, die 10 verschiedenen Symbolen einer Cachespeicherzeile zugeordnet sind. Der Übersichtlichkeit halber werden für eine gegebene Cachespeicherzeile nur 10 Symbole gezeigt. Bei einigen beispielhaften Ausführungsformen enthält eine gegebene Cachespeicherzeile in dem Cachespeicher 106 72 Symbole. Bei derartigen Ausführungsformen würde die Tabelle 700 72 verschiedene Spalten für die 72 verschiedenen Symbole der Cachespeicherzeile enthalten. Die Tabelle 700 umfasst 10 Spalten für 10 verschiedene Symbole - die Spalten 722, 724, 726, 728, 730, 732, 734, 736, 738 und 740. In der Spalte 722 wird die Anzahl der korrigierbaren Fehler eines ersten Symbols in der Cachespeicherzeile gespeichert. In der Spalte 724 wird die Anzahl der korrigierbaren Fehler eines zweiten Symbols in der Cachespeicherzeile gespeichert. In der Spalte 726 wird die Anzahl der korrigierbaren Fehler eines dritten Symbols in der Cachespeicherzeile gespeichert. In der Spalte 728 wird die Anzahl der korrigierbaren Fehler eines vierten Symbols in der Cachespeicherzeile gespeichert. In der Spalte 730 wird die Anzahl der korrigierbaren Fehler eines fünften Symbols in der Cachespeicherzeile gespeichert. In der Spalte 732 wird die Anzahl der korrigierbaren Fehler eines sechsten Symbols in der Cachespeicherzeile gespeichert. In der Spalte 734 wird die Anzahl der korrigierbaren Fehler eines siebten Symbols in der Cachespeicherzeile gespeichert. In der Spalte 736 wird die Anzahl der korrigierbaren Fehler eines achten Symbols in der Cachespeicherzeile gespeichert. In der Spalte 738 wird die Anzahl der korrigierbaren Fehler eines neunten Symbols in der Cachespeicherzeile gespeichert. In der Spalte 740 wird die Anzahl der korrigierbaren Fehler eines zehnten Symbols in der Cachespeicherzeile gespeichert.
  • Die Tabelle 700 enthält außerdem 10 verschiedene Reihen, die 10 verschiedenen Bereinigungszyklen zugeordnet sind. Der Übersichtlichkeit halber werden nur 10 verschiedene Bereinigungszyklen gezeigt. Es kann jedoch eine kleinere oder auch größere Anzahl von Bereinigungszyklen in der Tabelle 700 gespeichert werden. Die Tabelle 700 umfasst 10 verschiedene Reihen - die Reihen 702, 704, 706, 708, 710, 712, 714, 716, 718 und 720. In der Reihe 702 wird die Fehleranzahl für die 10 verschiedenen Symbole und den aktuellen Bereinigungszyklus gespeichert. In der Reihe 704 wird die Fehleranzahl für dieselben 10 Symbole und den vorhergehenden Bereinigungszyklus gespeichert. In der Reihe 706 wird die Fehleranzahl für dieselben 10 Symbole und den vorhergehenden Bereinigungszyklus gespeichert. In der Reihe 708 wird die Fehleranzahl für dieselben 10 Symbole und den vorhergehenden Bereinigungszyklus gespeichert. In der Reihe 710 wird die Fehleranzahl für dieselben 10 Symbole und den vorhergehenden Bereinigungszyklus gespeichert. In der Reihe 712 wird die Fehleranzahl für dieselben 10 Symbole und den vorhergehenden Bereinigungszyklus gespeichert. In der Reihe 714 wird die Fehleranzahl für dieselben 10 Symbole und den vorhergehenden Bereinigungszyklus gespeichert. In der Reihe 716 wird die Fehleranzahl für dieselben 10 Symbole und den vorhergehenden Bereinigungszyklus gespeichert. In der Reihe 718 wird die Fehleranzahl für dieselben 10 Symbole und den vorhergehenden Bereinigungszyklus gespeichert. In der Reihe 720 wird die Fehleranzahl für dieselben 10 Symbole und den ältesten Bereinigungszyklus gespeichert.
  • Bei einigen beispielhaften Ausführungsformen werden die Reihen der Tabelle 700 auf First-in-First-out-Basis (FIFO-Basis) erstellt und gelöscht. Insbesondere ist in der Tabelle 700 eine festgelegte Anzahl von Bereinigungszyklen in den Reihen gespeichert. Bei diesem Beispiel werden in der Tabelle 700 Fehleranzahlen der Symbole für 10 verschiedene Bereinigungszyklen gespeichert. Sobald Fehleranzahlen für mehr als 10 Bereinigungszyklen verfolgt werden, löscht das Fehlermodul 107 (aus 1) zum Speichern des aktuellen Bereinigungszyklus den ältesten Bereinigungszyklus.
  • Für die Anwendung alternativer oder zusätzlicher Kriterien bei der Feststellung, dass ein Symbol für eine Reparatur infrage kommt, werden im Vergleich zu den Einträgen in der Tabelle 300 andere Fehleranzahlen in den Einträgen der Tabelle 700 gespeichert. Insbesondere weist dasselbe in der Spalte 730 gespeicherte Symbol Fehleranzahlen ungleich Null in den drei aufeinander folgenden Bereinigungszyklen auf (in der Reihe 712, in der Reihe 710 und in der Reihe 708). Darüber hinaus weist dasselbe in der Spalte 722 gespeicherte Symbol Fehleranzahlen ungleich Null in zwei aufeinander folgenden Bereinigungszyklen auf (in der Reihe 718 und in der Reihe 716). Dasselbe in der Spalte 740 gespeicherte Symbol weist Fehleranzahlen ungleich Null in zwei nicht aufeinanderfolgenden Bereinigungszyklen auf (in der Reihe 720 und in der Reihe 716). Bei einigen beispielhaften Ausführungsformen kann das Fehlermodul 107 dem Trend der Fehleranzahlen für ein gegebenes Symbol folgen, um festzustellen, ob eine Reparatur erforderlich ist. Eine Reparatur ist beispielsweise erforderlich, wenn dasselbe Symbol mindestens zwei Fehleranzahlen ungleich Null in zwei aufeinanderfolgenden Bereinigungszyklen aufweist (z.B. das Symbol in der Spalte 722). Bei einem anderen Beispiel ist eine Reparatur erforderlich, wenn dasselbe Symbol mindestens zwei Fehleranzahlen, die einen Schwellenwert (z.B. 15) überschreiten, in aufeinanderfolgenden oder nicht aufeinanderfolgenden Bereinigungszyklen aufweist (z.B. das Symbol in der Spalte 730). Bei einem anderen Beispiel ist eine Reparatur erforderlich, wenn dasselbe Symbol mindestens zwei Fehleranzahlen ungleich Null in aufeinanderfolgenden oder nicht aufeinanderfolgenden Bereinigungszyklen aufweist (z.B. das Symbol in der Spalte 740). Das Fehlermodul 107 kann diese Kriterien alternativ oder zusätzlich zu den vorstehend in den 2-6 beschriebenen Kriterien anwenden. Die Verwendung als zusätzliche Kriterien kann die Annahme festigen, dass eine Korrektur des Symbols erforderlich ist.
  • Wie Fachleute verstehen werden, können Aspekte des vorliegenden Erfindungsgegenstands als ein System, Verfahren, oder Computerprogrammprodukt verkörpert sein. Dementsprechend können Aspekte des vorliegenden Erfindungsgegenstands die Form einer reinen Hardware-Ausführungsform, einer reinen Software-Ausführungsform (eingeschlossen Firmware, speicherresidente Software, Mikrocode usw.) annehmen oder die einer Ausführungsform, bei der Software- und Hardwareaspekte kombiniert werden, die hier alle allgemein als „Schaltung“, „Modul“ oder „System“ bezeichnet werden sollen. Aspekte des vorliegenden Erfindungsgegenstands können außerdem die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien mit in dem Medium verkörperten computerlesbaren Programmcode verkörpert ist.
  • Es kann eine beliebige Kombination von einem oder mehreren computerlesbaren Medien verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann beispielsweise unter anderem ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem oder eine derartige Vorrichtung, eine derartige Einheit oder jede beliebige Kombination von diesen sein. Als spezifischere Beispiele (die Liste ist unvollständig) für das computerlesbare Speichermedium könnten die folgenden aufgeführt werden: eine elektrische Verbindung mit einem oder mehreren Kabeln, eine tragbare Computerdiskette, eine Festplatte, ein Speicher mit wahlfreiem Zugriff (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer, programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), eine optische Faser, eine tragbare CD-ROM, eine optische Speichervorrichtung, eine magnetische Speichervorrichtung oder jede geeignete Kombination von diesen. Im Zusammenhang dieses Dokuments kann ein computerlesbares Speichermedium ein beliebiges physisches Medium sein, das ein Programm für die Nutzung durch ein Anweisungen ausführendes System oder in Verbindung mit einem Anweisungen ausführenden System, einer solchen Vorrichtung oder Einheit enthalten oder speichern kann.
  • Ein computerlesbares Signalmedium kann unter anderem ein verbreitetes Datensignal mit in diesem verkörperten computerlesbaren Programmcode sein, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Ein solches verbreitetes Signal kann verschiedene Formen annehmen, darunter unter anderem eine elektromagnetische oder optische Form oder eine beliebige Kombination aus diesen. Ein computerlesbares Signalmedium kann jedes computerlesbare Medium sein, das kein computerlesbares Speichermedium ist und das ein Programm für die Nutzung durch ein Anweisungen ausführendes System oder in Verbindung mit einem Anweisungen ausführenden System, einer solchen Vorrichtung oder Einheit übermitteln kann.
  • Auf einem computerlesbaren Medium verkörperter Programmcode kann mithilfe jedes geeigneten Mediums übermittelt werden, darunter unter anderem ein drahtloses oder drahtgebundenes Medium, Optikfaserkabel, HF (Hochfrequenz) usw. oder jede geeignete Kombination von diesen.
  • Der Computerprogrammcode zum Ausführen der Operationen der Aspekte des vorliegenden Erfindungsgegenstands kann in einer beliebigen Kombination einer oder mehrerer Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie Java, Smalltalk, C++ oder Ähnliche sowie herkömmliche verfahrensorientierte Programmiersprachen wie beispielsweise die Programmiersprache „C“ oder ähnliche Programmiersprachen. Der Programmcode kann vollständig oder teilweise auf dem Computer des Benutzers, als ein eigenständiges Softwarepaket, zum Teil auf dem Computer des Benutzers und zum Teil auf einem entfernten Computer oder vollständig auf dem entfernten Computer oder Server ausgeführt werden. Bei dem letzteren Szenario kann der entfernte Computer mit dem Computer des Benutzers durch ein beliebiges Netzwerk, darunter ein Lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN) verbunden sein, oder es kann eine Verbindung mit einem externen Computer hergestellt werden (zum Beispiel mithilfe eines Internetdienstanbieters über das Internet).
  • Aspekte des vorliegenden Erfindungsgegenstands werden mit Bezug auf Flussdiagramme und/oder Blockschaltbilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen des Erfindungsgegenstands beschrieben. Es versteht sich, dass jeder Block der Flussdiagramme und/oder Blockschaltbilder sowie Kombinationen von Blöcken in den Flussdiagrammen und/oder Blockschaltbildern durch Computerprogrammanweisungen realisiert werden können. Diese Computerprogrammanweisungen können für einen Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung zur Herstellung einer Maschine bereitgestellt werden, sodass die Anweisungen, die durch den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zur Ausführung der in dem Block oder den Blöcken des Flussdiagramms und/oder Blockschaltbilds spezifizierten Funktionen/Handlungen erzeugen.
  • Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Weise funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Anweisungen ein Erzeugnis samt der Anweisungen herstellen, mithilfe derer die in dem Block oder den Blöcken des Flussdiagramms und/oder Blockschaltbilds spezifizierte Funktion/Handlung ausgeführt wird.
  • Die Computerprogrammanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um eine Reihe von auf dem Computer, der anderen programmierbaren Datenverarbeitungsvorrichtung oder den anderen Einheiten auszuführenden Betriebsschritten zu bewirken, um einen computerimplementierten Prozess herzustellen, so dass die Anweisungen, die auf dem Computer oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Verfahren zur Ausführung der in dem Block oder den Blöcken des Flussdiagramms und/oder Blockschaltbilds spezifizierten Funktionen/Handlungen bereitstellen.
  • Claims (15)

    1. Verfahren, das Folgendes umfasst: Ausführen einer Speicherbereinigung eines Speichers (114) für einen Bereinigungszyklus aus einer Vielzahl von Bereinigungszyklen; Erkennen korrigierbarer Fehler von Symbolen in dem Speicher (114), die ein Ergebnis von Zugriffen auf einen Speicherabschnitt als Reaktion auf die Speicherbereinigung sind; Ausführen einer Analyse der Vielzahl der Bereinigungszyklen, wobei das Ausführen der Analyse die Feststellung umfasst, ob mindestens zwei Symbole aus der Vielzahl der Bereinigungszyklen mindestens einen korrigierbaren Fehler aufweisen; und Als Reaktion auf die Feststellung, dass mindestens zwei Symbole aus der Vielzahl der Bereinigungszyklen mindestens einen korrigierbaren Fehler aufweisen, das Ausführen mindestens einer Reparatur des Speichers (114), der den Speicherabschnitt enthält.
    2. Verfahren nach Anspruch 1, wobei die Feststellung, ob mindestens zwei Symbole aus der Vielzahl der Bereinigungszyklen mindestens einen korrigierbaren Fehler aufweisen, Folgendes umfasst: die Feststellung, ob mindestens ein korrigierbarer Fehler an jedem der mindestens zwei Symbole erkannt wurde; die Feststellung, ob mindestens ein Symbol von den mindestens zwei Symbolen korrigierbare Fehler aufweist, die einen Schwellenwert überschreiten; und als Reaktion auf die Feststellung, dass das mindestens eine weitere Symbol korrigierbare Fehler aufweist, die den Schwellenwert überschreiten, die Feststellung, ob mindestens ein weiteres Symbol korrigierbare Fehler aufweist, die den Schwellenwert überschreiten.
    3. Verfahren nach Anspruch 2, wobei das Ausführen der mindestens einen Reparatur des Speichers (114), der den Speicherabschnitt enthält, Folgendes umfasst: als Reaktion auf die Feststellung, dass der mindestens eine korrigierbare Fehler an jedem der mindestens zwei Symbole erkannt wurde und die Feststellung, dass das mindestens eine Symbol von den mindestens zwei Symbolen korrigierbare Fehler aufweist, die den Schwellenwert überschreiten, und die Feststellung, dass das mindestens eine weitere Symbol korrigierbare Fehler aufweist, die den Schwellenwert überschreiten, das Ausführen der mindestens einen Reparatur des Speichers (114), der den Speicherabschnitt enthält.
    4. Verfahren nach Anspruch 1, wobei das Ausführen der mindestens einen Reparatur des Speichers (114), der den Speicherabschnitt enthält, das Ausführen von mindestens zwei Reparaturen des Speichers (114) umfasst, der den Speicherabschnitt enthält, wobei die mindestens zwei Reparaturen mindestens zwei der folgenden umfassen: eine Speicherlenkungsreparatur, eine Chipmarkenreparatur und eine Symbolmarkenreparatur.
    5. Verfahren nach Anspruch 1, wobei die Feststellung, dass mindestens zwei Symbole aus der Vielzahl der Bereinigungszyklen mindestens einen korrigierbaren Fehler aufweisen, die Feststellung umfasst, dass jedes der mindestens zwei Symbole bei mindestens zwei aufeinanderfolgenden Bereinigungszyklen aus der Vielzahl der Bereinigungszyklen einen Schwellenwert überschreitet.
    6. Verfahren nach Anspruch 1, wobei der Speicherabschnitt eine Speicherreihe enthält.
    7. Verfahren, das Folgendes umfasst: Ausführen einer Speicherbereinigung eines Speichers (114) für einen Bereinigungszyklus aus einer Anzahl von Bereinigungszyklen; Erkennen korrigierbarer Fehler von Symbolen in dem Speicher (114), die ein Ergebnis von Zugriffen auf einen Speicherabschnitt als Reaktion auf die Speicherbereinigung sind; Ausführen einer Analyse der Anzahl von Bereinigungszyklen, wobei das Ausführen der Analyse Folgendes umfasst: die Feststellung, ob mindestens ein korrigierbarer Fehler an jedem der mindestens zwei Symbole erkannt wurde; die Feststellung, ob mindestens ein Symbol der mindestens zwei Symbole korrigierbare Fehler aufweist, die einen Schwellenwert überschreiten; und als Reaktion auf die Feststellung, dass das mindestens eine weitere Symbol korrigierbare Fehler aufweist, die den Schwellenwert überschreiten, die Feststellung, ob mindestens ein weiteres Symbol korrigierbare Fehler aufweist, die den Schwellenwert überschreiten; als Reaktion auf die Feststellung, dass der mindestens eine korrigierbare Fehler an jedem der mindestens zwei Symbole erkannt wurde und die Feststellung, dass das mindestens eine Symbol von den mindestens zwei Symbolen korrigierbare Fehler aufweist, die den Schwellenwert überschreiten, und die Feststellung, dass das mindestens eine weitere Symbol korrigierbare Fehler aufweist, die den Schwellenwert überschreiten, das Ausführen mindestens einer Reparatur des Speichers (114), der den Speicherabschnitt enthält.
    8. Verfahren nach Anspruch 7, das weiter die Feststellung umfasst, dass ein erstes weiteres Symbol und ein zweites weiteres Symbol korrigierbare Fehler aufweisen, die während der Durchführung der Analyse den Schwellenwert überschreiten, wobei das Ausführen der mindestens einen Reparatur des Speichers (114) Folgendes umfasst: Festlegen einer Reihenfolge des mindestens einen Symbols, des ersten weiteren Symbols und des zweiten weiteren Symbols auf der Grundlage einer Anzahl korrigierbarer Fehler an dem mindestens einen Symbol, dem ersten weiteren Symbol und dem zweiten weiteren Symbol; Ersetzen eines Speicherchips des Speichers (114) durch einen Ersatz-Speicherchip, betreffend den Speicherchip, auf dem das Symbol mit den meisten korrigierbaren Fehlern - aus dem mindestens einen Symbol, dem ersten weiteren Symbol und dem zweiten weiteren Symbol - gespeichert ist; Ausführen einer Chip-weiten Fehlerkorrekturcode-Cachespeicherzeilenreparatur (ECC-Cachespeicherzeilenreparatur) des Speichers (114), betreffend einen Speicherchip, auf dem das Symbol mit den zweitmeisten korrigierbaren Fehlern - aus dem mindestens einen Symbol, dem ersten weiteren Symbol und dem zweiten weiteren Symbol - gespeichert ist; und Ausführen einer Symbol-weiten ECC-Cachespeicherzeilenreparatur des Speichers (114), betreffend das Symbol mit den drittmeisten korrigierbaren Fehlern - aus dem mindestens einen Symbol, dem ersten weiteren Symbol und dem zweiten weiteren Symbol.
    9. Verfahren nach Anspruch 7, das weiter Folgendes umfasst: Ausführen einer anderen Speicherbereinigung des Speichers (114) für einen anderen Bereinigungszyklus aus der Anzahl der Bereinigungszyklen; Erkennen korrigierbarer Fehler der in der Cachespeicherzeile des Cachespeichers definierten Symbole, die ein Ergebnis von Zugriffen auf den Speicherabschnitt als Reaktion auf die Speicherbereinigung des anderen Bereinigungszyklus sind; Ausführen einer anderen Analyse der Anzahl der Bereinigungszyklen, wobei das Ausführen der anderen Analyse Folgendes umfasst: die Feststellung, die Anzahl der Bereinigungszyklen betreffend, ob ein anderes Symbol, das bei der zuvor ausgeführten Analyse nicht erkannt wurde, korrigierbare Fehler aufweist, die den Schwellenwert überschreiten; als Reaktion auf die Feststellung, dass das andere Symbol korrigierbare Fehler aufweist, die den Schwellenwert überschreiten, das Ausführen einer anderen Reparatur des Speichers (114), der den Speicherabschnitt umfasst, wobei das Ausführen der anderen Reparatur das Ausführen der ECC-Cachespeicherzeilenreparatur umfasst, die zuvor bei der mindestens einen Reparatur nicht ausgeführt wurde.
    10. Computerprogrammprodukt zur Speicherreparatur, wobei das Computerprogrammprodukt Folgendes umfasst: ein computerlesbares Speichermedium, auf dem computerverwendbarer Programmcode verkörpert ist, wobei der computerverwendbare Programmcode einen computerverwendbaren Programmcode umfasst, der dafür konfiguriert ist, die Verfahrensschritte aus einem der vorangehenden Ansprüche auszuführen.
    11. Vorrichtung, die Folgendes umfasst: einen Prozessor (102), einen Speicher (114) und ein Fehlermodul (107), das auf dem Prozessor lauffähig ist, wobei das Fehlermodul für Folgendes konfiguriert ist: Ausführen einer Speicherbereinigung des Speichers (114) für einen Bereinigungszyklus aus einer Vielzahl von Bereinigungszyklen; Erkennen korrigierbarer Fehler von Symbolen in dem Speicher (114), die ein Ergebnis von Zugriffen auf einen Speicherabschnitt als Reaktion auf die Speicherbereinigung sind; Ausführen einer Analyse der Vielzahl der Bereinigungszyklen, wobei das Ausführen der Analyse eine Feststellung umfasst, ob mindestens zwei Symbole aus der Vielzahl der Bereinigungszyklen mindestens einen korrigierbaren Fehler aufweisen; und Als Reaktion auf eine Feststellung, dass mindestens zwei Symbole aus der Vielzahl der Bereinigungszyklen mindestens einen korrigierbaren Fehler aufweisen, das Ausführen mindestens einer Reparatur des Speichers (114), der den Speicherabschnitt enthält.
    12. Vorrichtung nach Anspruch 11, wobei als Teil der Feststellung, ob die mindestens zwei Symbole aus der Vielzahl der Bereinigungszyklen mindestens einen korrigierbaren Fehler aufweisen, das Fehlermodul für Folgendes konfiguriert ist: die Feststellung, ob an jedem der mindestens zwei Symbole mindestens ein korrigierbarer Fehler erkannt wurde; die Feststellung, ob mindestens ein Symbol von den mindestens zwei Symbolen korrigierbare Fehler aufweist, die einen Schwellenwert überschreiten; und als Reaktion auf eine Feststellung, dass das mindestens eine weitere Symbol korrigierbare Fehler aufweist, die den Schwellenwert überschreiten, die Feststellung, ob mindestens ein weiteres Symbol aus den Symbolen korrigierbare Fehler aufweist, die den Schwellenwert überschreiten.
    13. Vorrichtung nach Anspruch 12, wobei als Teil des Ausführens der mindestens einen Reparatur das Fehlermodul für Folgendes konfiguriert ist: als Reaktion auf eine Feststellung, dass der mindestens eine korrigierbare Fehler an jedem der mindestens zwei Symbole erkannt wurde und eine Feststellung, dass das mindestens eine Symbol von den mindestens zwei Symbolen korrigierbare Fehler aufweist, die den Schwellenwert überschreiten, und eine Feststellung, dass das mindestens eine weitere Symbol korrigierbare Fehler aufweist, die den Schwellenwert überschreiten, das Ausführen der mindestens einen Reparatur des Speichers (114), der den Speicherabschnitt enthält.
    14. Vorrichtung nach Anspruch 11, wobei als Teil des Ausführens der mindestens einen Reparatur das Fehlermodul dafür konfiguriert ist, mindestens zwei Reparaturen des Speichers (114) auszuführen, der den Speicherabschnitt enthält, wobei die mindestens zwei Reparaturen mindestens zwei der folgenden Reparaturen umfassen: eine Speicherlenkungsreparatur, eine Chipmarkenreparatur und eine Symbolmarkenreparatur.
    15. Vorrichtung nach Anspruch 11, wobei als Teil der Feststellung, dass mindestens zwei Symbole aus der Vielzahl der Bereinigungszyklen mindestens einen korrigierbaren Fehler aufweisen, das Fehlermodul dafür konfiguriert ist, festzustellen, ob jedes der mindestens zwei Symbole während mindestens zwei aufeinanderfolgenden Bereinigungszyklen aus der Vielzahl der Bereinigungszyklen einen Schwellenwert überschreitet.
    DE102012210232.9A 2011-06-29 2012-06-18 Vorbeugende Speicherreparatur auf der Grundlage der Analyse einer Vielzahl von Symbolen und Bereinigungszyklen Active DE102012210232B4 (de)

    Applications Claiming Priority (2)

    Application Number Priority Date Filing Date Title
    US13/171,675 US8640006B2 (en) 2011-06-29 2011-06-29 Preemptive memory repair based on multi-symbol, multi-scrub cycle analysis
    US13/171,675 2011-06-29

    Publications (2)

    Publication Number Publication Date
    DE102012210232A1 DE102012210232A1 (de) 2013-01-03
    DE102012210232B4 true DE102012210232B4 (de) 2023-06-29

    Family

    ID=47355336

    Family Applications (1)

    Application Number Title Priority Date Filing Date
    DE102012210232.9A Active DE102012210232B4 (de) 2011-06-29 2012-06-18 Vorbeugende Speicherreparatur auf der Grundlage der Analyse einer Vielzahl von Symbolen und Bereinigungszyklen

    Country Status (4)

    Country Link
    US (2) US8640006B2 (de)
    CN (1) CN102855941B (de)
    DE (1) DE102012210232B4 (de)
    GB (1) GB2501520B (de)

    Families Citing this family (20)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US8640006B2 (en) 2011-06-29 2014-01-28 International Business Machines Corporation Preemptive memory repair based on multi-symbol, multi-scrub cycle analysis
    CN104246898B (zh) * 2012-05-31 2017-03-22 慧与发展有限责任合伙企业 局部错误检测和全局错误纠正
    US8904250B2 (en) * 2013-02-14 2014-12-02 Micron Technology, Inc. Autorecovery after manufacturing/system integration
    US10372551B2 (en) * 2013-03-15 2019-08-06 Netlist, Inc. Hybrid memory system with configurable error thresholds and failure analysis capability
    US9430324B2 (en) 2013-05-24 2016-08-30 Rambus Inc. Memory repair method and apparatus based on error code tracking
    WO2015016880A1 (en) * 2013-07-31 2015-02-05 Hewlett-Packard Development Company, L.P. Global error correction
    US9116702B2 (en) 2013-11-21 2015-08-25 International Business Machines Corporation Computer memory power management
    CN106463179B (zh) * 2014-04-16 2019-11-19 英特尔公司 利用存储器控制器处理数据错误事件的方法、装置和系统
    US9594689B2 (en) 2015-02-09 2017-03-14 International Business Machines Corporation Designated cache data backup during system operation
    KR102374202B1 (ko) 2015-05-26 2022-03-14 쑤저우 레킨 세미컨덕터 컴퍼니 리미티드 광학 렌즈, 조명 모듈 및 이를 구비한 라이트 유닛
    US10353669B2 (en) 2016-09-02 2019-07-16 International Business Machines Corporation Managing entries in a mark table of computer memory errors
    US10297335B2 (en) 2016-09-02 2019-05-21 International Business Machines Corporation Tracking address ranges for computer memory errors
    US10304560B2 (en) 2016-09-02 2019-05-28 International Business Machines Corporation Performing error correction in computer memory
    US10338999B2 (en) 2016-09-02 2019-07-02 International Business Machines Corporation Confirming memory marks indicating an error in computer memory
    US10978169B2 (en) * 2017-03-17 2021-04-13 Xerox Corporation Pad detection through pattern analysis
    KR20180106494A (ko) * 2017-03-20 2018-10-01 에스케이하이닉스 주식회사 반도체장치
    KR102243582B1 (ko) * 2017-04-24 2021-04-23 에스케이하이닉스 주식회사 반도체장치
    KR102506507B1 (ko) * 2018-01-19 2023-03-07 삼성전자주식회사 통신 시스템에서 신호를 송/수신하는 장치 및 방법
    US11074126B2 (en) * 2018-07-12 2021-07-27 Micron Technology, Inc. Methods for error count reporting with scaled error count information, and memory devices employing the same
    KR20220039432A (ko) 2020-09-22 2022-03-29 삼성전자주식회사 반도체 메모리 장치 및 반도체 메모리 장치의 동작 방법

    Citations (2)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US7661045B2 (en) 2007-12-19 2010-02-09 International Business Machines Corporation Method and system for enterprise memory management of memory modules
    US20100332900A1 (en) 2009-06-24 2010-12-30 Magic Technologies, Inc. Method and apparatus for scrubbing accumulated data errors from a memory system

    Family Cites Families (21)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    GB2289779B (en) 1994-05-24 1999-04-28 Intel Corp Method and apparatus for automatically scrubbing ECC errors in memory via hardware
    US6279128B1 (en) 1994-12-29 2001-08-21 International Business Machines Corporation Autonomous system for recognition of patterns formed by stored data during computer memory scrubbing
    US6035436A (en) 1997-06-25 2000-03-07 Intel Corporation Method and apparatus for fault on use data error handling
    US7134069B1 (en) 1999-06-16 2006-11-07 Madrone Solutions, Inc. Method and apparatus for error detection and correction
    US7062704B2 (en) 2001-04-30 2006-06-13 Sun Microsystems, Inc. Storage array employing scrubbing operations using multiple levels of checksums
    US7168010B2 (en) * 2002-08-12 2007-01-23 Intel Corporation Various methods and apparatuses to track failing memory locations to enable implementations for invalidating repeatedly failing memory locations
    US7272773B2 (en) 2003-04-17 2007-09-18 International Business Machines Corporation Cache directory array recovery mechanism to support special ECC stuck bit matrix
    US7055003B2 (en) 2003-04-25 2006-05-30 International Business Machines Corporation Data cache scrub mechanism for large L2/L3 data cache structures
    US7320100B2 (en) 2003-05-20 2008-01-15 Cray Inc. Apparatus and method for memory with bit swapping on the fly and testing
    US7509560B2 (en) 2003-12-29 2009-03-24 Intel Corporation Mechanism for adjacent-symbol error correction and detection
    US7100004B2 (en) 2004-04-06 2006-08-29 International Business Machines Corporation Method for scrubbing regions in central storage
    US7246269B1 (en) 2004-05-05 2007-07-17 Advanced Micro Devices, Inc. Efficient memory check architecture and method
    US7496823B2 (en) 2005-03-16 2009-02-24 Hewlett-Packard Development Company, L.P. Hardware based memory scrubbing
    US20070089032A1 (en) * 2005-09-30 2007-04-19 Intel Corporation Memory system anti-aliasing scheme
    CN101147204A (zh) * 2006-01-24 2008-03-19 爱德万测试株式会社 测试装置以及选择装置
    US8065573B2 (en) 2007-03-26 2011-11-22 Cray Inc. Method and apparatus for tracking, reporting and correcting single-bit memory errors
    US20090307523A1 (en) 2008-06-06 2009-12-10 Allison Brian D System Performance Through Invalidation of Speculative Memory Scrub Commands
    US8122308B2 (en) 2008-06-25 2012-02-21 Intel Corporation Securely clearing an error indicator
    US8255773B2 (en) * 2009-06-29 2012-08-28 Sandisk Technologies Inc. System and method of tracking error data within a storage device
    US8103900B2 (en) 2009-07-28 2012-01-24 International Business Machines Corporation Implementing enhanced memory reliability using memory scrub operations
    US8640006B2 (en) 2011-06-29 2014-01-28 International Business Machines Corporation Preemptive memory repair based on multi-symbol, multi-scrub cycle analysis

    Patent Citations (2)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US7661045B2 (en) 2007-12-19 2010-02-09 International Business Machines Corporation Method and system for enterprise memory management of memory modules
    US20100332900A1 (en) 2009-06-24 2010-12-30 Magic Technologies, Inc. Method and apparatus for scrubbing accumulated data errors from a memory system

    Also Published As

    Publication number Publication date
    DE102012210232A1 (de) 2013-01-03
    CN102855941A (zh) 2013-01-02
    GB2501520A (en) 2013-10-30
    US20130007541A1 (en) 2013-01-03
    US20130007542A1 (en) 2013-01-03
    US8689080B2 (en) 2014-04-01
    CN102855941B (zh) 2016-04-20
    US8640006B2 (en) 2014-01-28
    GB2501520B (en) 2015-10-07
    GB201207326D0 (en) 2012-06-13

    Similar Documents

    Publication Publication Date Title
    DE102012210232B4 (de) Vorbeugende Speicherreparatur auf der Grundlage der Analyse einer Vielzahl von Symbolen und Bereinigungszyklen
    DE112018002951B4 (de) Verwenden eines spurformatcodes in einem cache-steuerblock für eine spur in einem cache, um lese- und schreibanforderungen in bezug auf die spur im cache zu verarbeiten
    DE112011100371B4 (de) Verfahren, Vorrichtung und Computerprogrammprodukt zum Decodieren eines Codeworts
    DE69910320T2 (de) Technik für Einzelfehlerkorrektur im Cachespeicher mit Subblock-Paritätenbits
    DE19882853B3 (de) Verfahren und Steuereinrichtung zum automatischen Korrigieren von in einem Speichersubsystem erfassten Fehlern und Computersystem, das eine solche Steuereinrichtung aufweist
    DE112013003255B4 (de) Managementmechanismus für fehlerhafte Blöcke
    DE102019117787B4 (de) Speichervorrichtung und Betriebsverfahren derselben
    DE112007003015B4 (de) Verfahren und Vorrichtung zur Cache-gestützten Fehlerdetektion und -korrektur in einem Speicher
    DE102012109614B4 (de) Verfahren zum Wiederherstellen von Stapelüberlauf- oder Stapelunterlauffehlern in einer Softwareanwendung
    DE102006048856B4 (de) Verfahren zum Betreiben einer IC-Halbleiterspeichervorrichtung und IC-Halbleiterspeichervorrichtung
    DE112016005869T5 (de) Vorausschauende Arbeitsspeicherinstandhaltung
    DE112013000650B4 (de) Datenzwischenspeicherungsbereich
    DE112012005222T5 (de) Halbleiter-Datenspeicherverwaltung
    DE112018004637B4 (de) Maschinelles lernen zum verbessern von wiederherstellungen von redundanten anordnungen von unabhängigen festplatten
    DE112014005570T5 (de) Deaktivieren von Seiten in einem Nand-Flash-Speicher-System
    DE102013021679A1 (de) Rettung von Ereignisnachverfolgungsinformationen bei Stromausfall-Unterbrechungsszenarien
    DE112017007690T5 (de) Verfahren und vorrichtungen zur durchführung einer fehlerdetektion und/oder korrektur in einer speichervorrichtung
    DE102009047875A1 (de) Speicherreparatur
    DE102016010276A1 (de) Verfahren und systeme zur verbesserung von flash-speicher-leerung
    DE102016107718A1 (de) Auslesen von Fehlervektoren aus einer Speichereinheit
    DE102013202627B4 (de) Verfahren, Vorrichtung und Computerprogrammprodukt zum Verwalten einer Speichereinheit unter Verwendung einer hybriden Steuereinheit
    DE102018124836A1 (de) Neuartiger speicherbaustein
    DE112011104830T5 (de) Ein Verfahren zum Sicherstellen der Programmkorrektheit unter Verwendung von feingranularem spekulativem Hardwareausführen
    DE102011119585A1 (de) Verbesserte skalierbare CPU für die codierte Ausführung von Software in hochabhängigen sicherheitsrelevanten Anwendungen
    DE102015105414B4 (de) Bearbeiten eines Zielspeichers

    Legal Events

    Date Code Title Description
    R012 Request for examination validly filed
    R016 Response to examination communication
    R016 Response to examination communication
    R018 Grant decision by examination section/examining division
    R084 Declaration of willingness to licence
    R020 Patent grant now final