DE112017007690T5 - Verfahren und vorrichtungen zur durchführung einer fehlerdetektion und/oder korrektur in einer speichervorrichtung - Google Patents

Verfahren und vorrichtungen zur durchführung einer fehlerdetektion und/oder korrektur in einer speichervorrichtung Download PDF

Info

Publication number
DE112017007690T5
DE112017007690T5 DE112017007690.0T DE112017007690T DE112017007690T5 DE 112017007690 T5 DE112017007690 T5 DE 112017007690T5 DE 112017007690 T DE112017007690 T DE 112017007690T DE 112017007690 T5 DE112017007690 T5 DE 112017007690T5
Authority
DE
Germany
Prior art keywords
memory
error
threshold
adaptive
location
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE112017007690.0T
Other languages
English (en)
Inventor
Yingwen Chen
Anil Agrawal
Fang Yuan
Qing Huang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112017007690T5 publication Critical patent/DE112017007690T5/de
Withdrawn legal-status Critical Current

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
    • 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/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/31712Input or output aspects
    • G01R31/31713Input or output interfaces for test, e.g. test pins, buffers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Eine beispielhafte Vorrichtung zum Überwachen eines Speichers enthält einen Fehlermanager zum Vergleichen einer ersten Speicherstelle eines ersten Fehlers im Speicher mit mehreren Speicherstellen in einem Fehlerverlaufsprotokoll, wobei die mehreren Speicherstellen zuvor im Fehlerverlaufsprotokoll basierend auf Fehlern identifiziert wurden, die in Speicherstellen detektiert wurden, wobei die Speicherstellen mit entsprechenden Zählern verknüpft sind, die die Fehler verfolgen, die in den Speicherstellen detektiert werden, und Aktualisieren eines ersten der Zähler entsprechend der ersten Speicherstelle, wenn eine erste Adresse der ersten Speicherstelle mit einer zweiten Adresse einer der Speicherstellen im Fehlerverlaufsprotokoll übereinstimmt. Die beispielhafte Vorrichtung enthält ferner einen Befehlsgenerator zum Senden eines Befehls zu einer Fehlerkorrektureinheit, um eine Fehlerkorrektur an der ersten Speicherstelle durchzuführen, wenn der erste der Zähler einen Schwellenwert erreicht.

Description

  • GEBIET DER OFFENBARUNG
  • Diese Offenbarung betrifft im Allgemeinen Speichereinrichtungen und insbesondere Verfahren und Vorrichtungen zum Durchführen einer Fehlerdetektion und/oder -korrektur in einer Speichereinrichtung.
  • HINTERGRUND
  • Flüchtige Speichereinrichtungen können Daten beibehalten, während sie mit Strom versorgt werden. Wenn Strom jedoch unterbrochen oder entfernt wird, gehen gespeicherte Daten entweder sofort oder sehr rasch verloren. Flüchtige Speichereinrichtungen wie Direktzugriffsspeicher (RAM, Random Access Memory) enthalten Speicherzellen, die Daten in binärer Form speichern. Eine RAM-Speicherzelle wird unter Verwendung eines Kondensators und eines Transistors implementiert. Der Kondensator speichert eine Ladung, die gespeicherte Daten angibt, und der Transistor kann selektiv aktiviert werden, um auf den Kondensator zuzugreifen (z.B. Lesen (Messen) oder Schreiben (Programmieren)). Zum Beispiel können Informationen in die Speicherzelle geschrieben werden, indem ihr entsprechender Kondensator geladen wird, um einen hohen Wert zu speichern, oder indem der Kondensator entladen wird, um einen niederen Wert zu speichern. Nach Laden eines Kondensators, um einen hohen Wert zu speichern, verliert der Kondensator im Laufe der Zeit langsam an Ladung. Als solches muss der Kondensator periodisch aufgefrischt werden, um den hohen Wert zu bewahren.
  • Aufgrund von Halbleitermaterialdefekten, Herstellungsdefekten oder Verschleiß im Laufe der Zeit können Speicherzellen manchmal Fehler in gespeicherten Daten generieren. Zum Beispiel kann ein solcher Kondensator und/oder ein Transistor einer Speicherzelle im Laufe der Zeit versagen, sodass die Speicherzelle keine korrekten Daten anzeigen kann. Fehlerdetektions- und Speicherüberwachungstechniken können verwendet werden, um die Wahrscheinlichkeit zu erhöhen, dass anschließende Lese- und/oder Schreibprozesse der flüchtigen Speichereinrichtungen exakt und effektiv beendet werden.
  • Figurenliste
    • 1 zeigt eine beispielhafte Speichersteuerung und einen beispielhaften Fehleranalysator, die gemäß den Lehren dieser Offenbarung implementiert werden können, um Speicherfehlerdetektion und/oder -korrektur einer Speichereinrichtung durchzuführen.
    • 2 zeigt ein beispielhaftes Prozessorsystem, das gemäß den Lehren dieser Offenbarung implementiert werden kann, um Speicherfehlerdetektion und/oder - korrektur für Speichereinrichtungen durchzuführen.
    • 3 zeigt beispielhafte Speichermodule in Schaltung mit der Speichersteuerung von 1 und/oder 2.
    • 4 zeigt eine beispielhafte Speicherkorrekturmaßnahme einer Speichereinrichtung gemäß den Lehren dieser Offenbarung.
    • 5 ist ein beispielhaftes Blockdiagramm der beispielhaften Speichersteuerung von 1-4, die gemäß den Lehren dieser Offenbarung implementiert werden kann.
    • 6 ist ein beispielhaftes Blockdiagramm des beispielhaften Fehleranalysators von 1-4, der gemäß den Lehren dieser Offenbarung implementiert werden kann.
    • 7 ist ein Ablaufdiagramm, das einen beispielhaften Prozess darstellt, der durch den beispielhaften Fehleranalysator von 1-4 und 6 implementiert wird, um eine Speicherfehlerdetektion und/oder -korrektur für Speichereinrichtungen durchzuführen.
    • 8 ist ein Ablaufdiagramm, das einen beispielhaften Prozess darstellt, der durch den beispielhaften Fehleranalysator von 1-4 und 6 implementiert werden kann, um eine Speicherfehlerdetektion für Speichereinrichtungen durchzuführen.
    • 9 ist ein Ablaufdiagramm, das einen beispielhaften Prozess darstellt, der durch die beispielhafte Speichersteuerung von 1-5 implementiert wird, um eine Speicherfehlerkorrektur für Speichereinrichtungen durchzuführen.
    • 10 ist eine beispielhafte Prozessorplattform, die imstande ist, die beispielhaften computerlesbaren Anweisungen auszuführen, die durch 9 dargestellt sind, um die beispielhafte Speichersteuerung von 1-5 zu implementieren, um Speicherfehlerdetektion und/oder -korrektur von Speichermodulen gemäß den Lehren dieser Offenbarung durchzuführen.
    • 11 ist eine beispielhafte Prozessorplattform, die imstande ist, die beispielhaften computerlesbaren Anweisungen auszuführen, die durch 7-8 dargestellt sind, um den beispielhaften Fehleranalysator von 1-4 und 6 zu implementieren, um Speicherfehlerdetektion und/oder -korrektur von Speichermodulen gemäß den Lehren dieser Offenbarung durchzuführen.
    • 12 ist ein beispielhaftes System, das imstande ist, die beispielhaften computerlesbaren Anweisungen auszuführen, die in 9 dargestellt sind, um die beispielhafte Speichersteuerung von 1-5 und/oder die beispielhaften computerlesbaren Anweisungen zu implementieren, die in 7-8 dargestellt sind, um den beispielhaften Fehleranalysator von 1-4 und 6 zu implementieren, um eine Speicherfehlerdetektion und/oder -korrektur von Speichermodulen gemäß den Lehren dieser Offenbarung durchzuführen.
  • Die Figuren sind nicht im Maßstab. Wenn möglich, werden in allen Zeichnungen und der beiliegenden schriftlichen Beschreibung dieselben Bezugszeichen zur Bezugnahme auf dieselben oder ähnlichen Teile verwendet.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Hier offenbarte Beispiele können zur Durchführung einer Speicherfehlerdetektion und/oder -korrektur in Speichereinrichtungen verwendet werden. Hier offenbarte Beispiele sind in Verbindung mit flüchtigen Speichereinrichtungen wie RAM (z.B. dynamischer Direktzugriffsspeicher (DRAM), synchroner DRAM (SDRAM), Doppeldatenraten- (DDR) SDRAM, statischer Direktzugriffsspeicher (SRAM) usw.) beschrieben. Hier offenbarte Beispiele können jedoch alternativ oder zusätzlich in Verbindung mit nicht flüchtigen Speichereinrichtungen verwendet werden (z.B. Flash-Speicher, 3D Flash-Speicher, ferroelektrischer Transistordirektzugriffsspeicher (FeTRAM oder FeRAM), Phasenänderungsdirektzugriffsspeicher (PRAM), Spin-Transfer-Drehmoment- (STT, Spin Transfer Torque) Speicher, nicht flüchtiger RAM (NVRAM), resistiver Direktzugriffsspeicher (ReRAM) usw.).
  • Hier offenbarte Beispiele können zum Durchführen einer Speicherfehlerdetektion und/oder -korrektur in flüchtigen Speichereinrichtungen wie Dual In-line Memory Module (DIMM) Einrichtungen unter Verwendung von Double Device Data Correction (DDDC) oder Adaptive Double Device Data Correction (ADDDC) Prozessen durchgeführt werden, die Lockstep-Datenverteilung (z.B. Lockstep-Konfigurationen, Partnerschaften, Fehlerbehandlung usw.) implementieren. Wie hier verwendet, bezieht sich der Begriff „Lockstep“ auf eine Verteilung von Fehlerkorrekturdaten über mehrere Speicherressourcen, um ein schwerwiegendes Versagen in einer Speicherressource zu kompensieren, die einen deterministischen Datenzugriff auf die fehlerhafte Speicherressource verhindert. Eine Speichersteuerung, die Lockstep verwendet, kann eine oder mehrere Lockstep-Partnerschaften bilden. Eine Lockstep-Partnerschaft bezieht sich auf zwei Abschnitte eines Speichers, über die Fehlerprüfung und Korrektur verteilt oder geteilt sind.
  • In früheren ADDDC-Implementierungen ist eine Speichersteuerung zum Detektieren von Fehlern in einem Speichermodul verantwortlich. In Antwort auf ein Detektieren eines Fehlers speichert die Speichersteuerung eine Speicherstelle des Fehlers, bestimmt einen Speicherrang des Speichermoduls entsprechend der Speicherstelle und erhöht einen Fehlerzähler entsprechend dem Rang. In einigen Beispielen löst die Speichersteuerung eine Speicherkorrekturmaßnahme basierend auf dem Fehlerzähler aus, der einen Fehlerschwellenwert erreicht (z.B. ist der Fehlerzähler größer als 5 Fehler insgesamt, 10 Fehler insgesamt usw.). Zum Beispiel kann die Speichersteuerung eine Systemmanagementunterbrechung (SMI, System Management Interrupt) generieren oder einen Fehlerstatuspin (z.B. einen Spannungspegel eines ERROR-N[0] Pins von einer ersten Spannung auf eine zweite Spannung einstellen usw.) auf der Speichersteuerung freigeben. In Antwort darauf, dass die Speichersteuerung die SMI auslöst oder den Fehlerstatuspin freigibt, kann ein Zuverlässigkeits-, Verfügbarkeits- und Wartbarkeits- (RAS, Reliability, Availability, Serviceability) Steuerungsprogramm eines grundlegenden Eingabe-/Ausgabesystems (BIOS, Basic Input/Output System) oder ein System-Service-Prozessor (SSP) Steuerung über verfügbare Hardware-Ressourcen übernehmen, um einen ADDDC-Prozess (z.B. einen AVL-Prozess) an der Speicherstelle durchzuführen. Zum Beispiel kann der SSP Daten in der Speicherstelle auf eine Reserveregion (z.B. eine Reservespeicherstelle in einer ECC-Einrichtung) abbilden.
  • Eine alternative frühere ADDDC-Technik beinhaltet eine Speichersteuerung, die ein Systemmanagementmodul (SMM) oder Software, die in einem Systemmanagementmodus läuft, zur Korrektur detektierter Fehler verwendet. Das SMM oder die SMM-Software läuft in einem Systemmanagementmodus einer CPU, in der die gesamte normale Ausführung, enthaltend das Betriebssystem, unterbrochen ist. Wenn die gesamte normale Ausführung unterbrochen ist, kann das SMM oder die SMM-Software mit hohen Privilegien im Systemmanagementmodus arbeiten, um Aufgaben wie die Korrektur von Speicherfehlern zu beenden.
  • Die Verwendung eines SSP oder eines SMM zur Detektion von Speicherfehlern kann jedoch zur Korrektur von Daten an Speicherstellen führen, in welchen eine Korrektur unnötig ist. Das heißt, in früheren Techniken ergreift die Speichersteuerung eine Speicherkorrekturmaßnahme basierend nur auf einem letzten Fehlerereignis und kann daher eine Region abbilden, die keinen anhaltenden Fehler enthält (z.B. einen Fehler aufgrund eines Herstellungsdefekts, einer beschädigten Komponente usw.). Zum Beispiel können solche früheren Techniken einen Fehlerschwellenwert von insgesamt 10 Fehlern (z.B. in einer oder mehreren Speicherstellen) definieren, die innerhalb eines Speicherrangs eines DIMM zu detektieren sind, um eine Speicherkorrektur auszulösen. Während des Betriebs erhöht die Speichersteuerung einen Fehlerzähler nach jedem detektierten Fehler. In einigen Beispielen kann die Speichersteuerung neun Fehler, die ein Ergebnis eines anhaltenden Fehlers in einer ersten Speicherzelle sind, bei einer ersten Speicherstelle eines Rangs detektieren. Die Speichersteuerung kann einen 10. Fehler, der ein Ergebnis eines zufälligen Fehlers in einer zweiten Speicherzelle ist, bei einer zweiten Speicherstelle desselben Rangs detektieren. Wenn der Fehlerzähler auf 10 erhöht ist, ist der Fehlerschwellenwert erreicht. Die Speichersteuerung führt dann eine ADDDC-Maßnahme an der zweiten Speicherzelle durch, die den 10. Fehler (z.B. den zufälligen Fehler) verursacht hat, ohne die erste Speicherzelle zu adressieren, die die ersten neun Fehler (z.B. den anhaltenden Fehler) verursacht hat.
  • Andere frühere Techniken können einen Fehlerschwellenwert eines Gesamtfehlers definieren, der innerhalb eines Speicherrangs eines DIMM zu detektieren ist, um eine Speicherkorrektur auszulösen. Infolgedessen erreicht jeder detektierte Fehler den Fehlerschwellenwert (z.B. den Ein-Fehler-Schwellenwert), wodurch eine Speicherkorrekturmaßnahme ausgelöst wird. Zum Beispiel speichert in Reaktion auf eine Fehlerdetektion eine Speichersteuerung eine Speicherstelle des Fehlers in einem Fehlerverlaufsprotokoll. Die Speichersteuerung kann die Fehlerspeicherstelle mit mehreren Speicherstellen im Fehlerverlaufsprotokoll vergleichen, wo die Speicherstellen zuvor als Fehlerspeicherstellen identifiziert wurden. In Antwort auf eine Übereinstimmung der Fehlerspeicherstelle mit einer der Speicherstellen im Fehlerverlaufsprotokoll kann die Speichersteuerung den Fehler als einen anhaltenden Fehler identifizieren und eine Speicherkorrekturmaßnahme auslösen. Zum Beispiel kann die Speichersteuerung eine SMI auslösen, um das SMM freizugeben, eine ADDDC-Maßnahme durchzuführen. Systemleistung kann jedoch signifikant durch Verringern des Fehlerschwellenwerts auf einen Gesamtfehler abnehmen. Zum Beispiel erhöht sich die Anzahl von Einträgen in den SMM-Modus und entsprechender Austräge aus dem SMM-Modus und daher werden Hardware-Ressourcen zur Bedienung einer signifikanten Anzahl von SMI-Ereignissen umgeleitet, wodurch Systemverfügbarkeit und -leistung deutlich verringert werden.
  • Hier offenbarte Beispiele führen eine Speicherfehlerdetektion und/oder - korrektur an einer Speicherstelle von Interesse unter Verwendung von SSP in Kombination mit SMM für jeweilige Aspekte einer Speicherfehlerdetektion und -korrektur in einer Weise durch, die Betriebssystemverfügbarkeit erhöht, während eine unnötige Datenkorrektur verringert wird. Auf diese Weise verringern oder beseitigen hier offenbarte Beispiele Nachteile von früheren ADDDC-Techniken deutlich. In einigen offenbarten Beispielen verwendet die Speichersteuerung einen SSP zum Durchführen einer Speicherfehlerdetektion (z.B. anhaltende Speicherfehlerdetektion usw.) und ein SMM zum Durchführen einer Speicherkorrekturmaßnahme (z.B. einer ADDDC-Maßnahme usw.). Zum Beispiel kann der SSP eine Speicherfehlerdetektion durch Erhalten von Speicherstellen detektierter Fehler und Kategorisieren der Speicherstellen mit entsprechenden Zählern durchführen. Der SSP kann einen Speicherstellenpointer zum SMM senden, wenn einer der Zähler einen Fehlerschwellenwert erreicht. Das SMM kann eine Speicherkorrekturmaßnahme durchführen, wenn das SMM den Speicherstellenpointer vom SSP empfängt. Der SSP kann eine Speicherfehlerdetektion wieder aufnehmen, wenn das SMM die Speicherkorrekturmaßnahme beendet.
  • 1 ist ein beispielhaftes Blockdiagramm einer beispielhaften Speichersteuerung 100 und eines beispielhaften Fehleranalysators 102, die gemäß den Lehren dieser Offenbarung implementiert werden können, um eine Speicherfehlerdetektion und/oder -korrektur einer beispielhaften Speichereinrichtung 104 durchzuführen. In dem gezeigten Beispiel ist die Speichersteuerung 100 eine beispielhafte Implementierung eines SMM (Systemmanagementmodul) und der Fehleranalysator 102 ist eine beispielhafte Implementierung eines SSP (System-Service-Prozessor). In dem gezeigten Beispiel ist die Speichereinrichtung 104 ein Teil eines Fehlerkorrekturcode- (ECC, Error Correction Code) DIMM und enthält Speicherzellen 106. Alternativ kann die beispielhafte Speichereinrichtung 104 jede Art von flüchtigem oder nicht flüchtigem Speicher sein. Die Speichereinrichtung 104 des gezeigten Beispiels speichert einen binären Bitwert pro Speicherzelle 106. Zum Beispiel enthalten Speicherzellen (MC) (0), (1), (2), (3), (4) und (X) 106 jeweils ein Bit von Daten, das entweder einen Wert 0 oder einen Wert 1 darstellt, basierend auf einer Ladung eines Kondensators, der in der Speicherzelle 106 enthalten ist. MC(0) 106 enthält binäre Daten, die durch die Speichersteuerung 100 als ein Fehler gelesen werden, der durch ‚E‘ dargestellt ist. In dem gezeigten Beispiel ist der Fehler ‚E‘ in MC(0) 106 ein anhaltenden Fehler. Alternativ kann der Fehler ‚E‘ in MC(0) 106 ein zufälliger Fehler (z.B. ein sporadisch auftretender Fehler auf Chip-Ebene, wie ein Partikel, das mit der Speicherzelle kollidiert, ein sporadisch auftretender Fehler auf Systemebene, wie Rauschen auf einem Datenbus 108 usw.) oder jede andere Art von Speicherfehler sein.
  • In dem gezeigten Beispiel von 1 enthält die Speichersteuerung 100 einen Speichermonitor 110 und eine Fehlerkorrektureinheit 112. Der Speichermonitor 110 überwacht die Speichereinrichtung 104 auf Fehlerstatusinformationen, enthaltend eine Speicherstelle eines Speicherfehlers. Zum Beispiel kann der Speichermonitor 110 die Speichereinrichtung 104 durch Kommunizieren mit einer ECC-Einrichtung 114 überwachen. In dem gezeigten Beispiel ist die ECC-Einrichtung 114 über einen Bus 116 in Schaltung (z.B. elektrisch, optisch usw.) mit der Speichereinrichtung 104. Die beispielhafte ECC-Einrichtung 114 liest die Daten aus den Speicherzellen 106 und bestimmt, dass MC(0) 106 einen Fehler enthält, basierend auf einer oder mehreren ECC-Techniken (z.B. Auswertung eines Paritätsbits, ein Hashing-Verfahren, ein Hamming-Code usw.). Die beispielhafte ECC-Einrichtung 114 sendet Fehlerstatusinformationen an die Speichersteuerung 100, wenn die ECC-Einrichtung 114 den Fehler bei MC(0) 106 detektiert. In Antwort darauf, dass der beispielhafte Speichermonitor 110 die Fehlerstatusinformationen erhält, gibt der Speichermonitor 110 einen Fehlerstatuspin 115 (z.B. Einstellen eines Spannungspegels eines ERROR_N[0] Pins von einer ersten Spannung auf eine zweite Spannung usw.) auf dem Speichermonitor 110 frei, der anzeigt, dass ein Fehler detektiert wurde.
  • In dem gezeigten Beispiel von 1 enthält der Fehleranalysator 102 einen beispielhaften Fehlermanager 118, einen beispielhaften adaptiven Schwellenwertmanager 120 und einen beispielhaften Befehlsgenerator 122. Der beispielhafte Fehleranalysator 102 enthält den Fehlermanager 118, um die Fehlerstatusinformationen vom Speichermonitor 110 zu erhalten, wenn der Fehlerstatuspin 115 einen Status ändert (z.B. Einstellen eines Spannungspegels des ERROR_N[0] Pins von einer ersten Spannung auf eine zweite Spannung usw.). Zum Beispiel kann der Fehlermanager 118 Fehlerstatuspininformationen vom Speichermonitor 110 erhalten, enthaltend einen Wert (z.B. einen Spannungspegel) des Fehlerstatuspins 115. In einem solchen Beispiel kann der Fehlermanager 118 basierend auf dem Wert des Fehlerstatuspin 115 bestimmen, dass der Speichermonitor 110 einen Fehler detektiert hat. Zum Beispiel kann der Fehlermanager 118 bestimmen, dass der Speichermonitor 110 den Fehler detektiert hat, wenn der Wert des Fehlerstatuspins 115 sich von null (z.B. ist der Fehlerstatuspin 115 gesperrt, ein Spannungspegel des Fehlerstatuspins 115 ist unter einem ersten Spannungsschwellenwert (z.B. unter 0,5 V, unter 1,5 V usw.) usw.) auf eins (z.B. der Fehlerstatuspin 115 ist freigegeben, ein Spannungspegel des Fehlerstatuspins 115 ist über einem zweiten Spannungsschwellenwert (z.B. über 3.3 V, über 4.5 V usw.) ändert.
  • In dem gezeigten Beispiel bestimmt der Fehlermanager 118 MC(0) 106 als die Speicherstelle des Fehlers in den Speicherzellen 106 basierend auf den Fehlerstatusinformationen. Der beispielhafte Fehlermanager 118 vergleicht die Speicherstelle MC(0) 106 mit mehreren Speicherstellen, die in einem Fehlerverlaufsprotokoll 124 gespeichert sind. Das beispielhafte Fehlerverlaufsprotokoll 124 enthält Speicherfehlerstellen-eMC-Adressen 126, 128, 130, 132, 134, 136 und entsprechende Zähler 138, 140, 142, 144, 146, 148 (z.B. Fehlerzähler usw.). In dem gezeigten Beispiel ist jede der Speicherfehlerstellen-eMC-Adressen 126, 128, 130, 132, 134, 136 eine Speicherstelle mit einem zuvor detektierten Fehler. Zusätzlich oder alternativ kann das Fehlerverlaufsprotokoll 124 eine andere Anzahl von Verlaufsspeicherstellen und/oder Zählern als in 1 gezeigt enthalten. Alternativ kann der beispielhafte Fehleranalysator 102 das beispielhafte Fehlerverlaufsprotokoll 124 enthalten.
  • In einigen Beispielen aktualisiert der Fehlermanager 118 einen der Zähler 138, 140, 142, 144, 146, 148, wenn eine Speicherstelle eines detektierten Fehlers mit einer der Speicherfehlerstellen-eMC-Adressen 126, 128, 130, 132, 134, 136 übereinstimmt. In einigen Beispielen generiert der Fehlermanager 118 einen neuen Zähler entsprechend der Speicherstelle, wenn die Speicherstelle nicht mit einer der Speicherfehlerstellen-eMC-Adressen 126, 128, 130, 132, 134, 136 übereinstimmt. In dem gezeigten Beispiel erhöht der Fehlermanager 118 den eMC(0) Zähler 138 entsprechend der Speicherfehlerstellen-eMC(0) Adresse 126, wenn die Speicherstelle des detektierten Fehlers, MC(0) 106, mit der Speicherfehlerstellen-eMC(0) Adresse 126 im Fehlerverlaufsprotokoll 124 übereinstimmt.
  • In dem gezeigten Beispiel von 1 enthält der Fehleranalysator 102 den adaptiven Schwellenwertmanager 120 für einen Vergleich von Werten der Zähler 138, 140, 142, 144, 146, 148 im Fehlerverlaufsprotokoll 124 mit einem Schwellenwert für ein adaptives Zeitfenster 121. In dem gezeigten Beispiel wird der Schwellenwert für ein adaptives Zeitfenster 121 auf ein Zeitausmaß eingestellt, in dem zwei aufeinanderfolgende Fehler in einer selben Speicherstelle eintreten müssen, um eine Fehlerkorrektur durchzuführen. Der beispielhafte Schwellenwert für ein adaptives Zeitfenster 121 kann auf einer wahrscheinlichen Zeitdifferenz zwischen aufeinanderfolgenden Fehlern basieren, die einem anhaltenden Fehler entsprechen. Der Schwellenwert für ein adaptives Zeitfenster 121 kann zusätzlich oder alternativ auf einer Gesamtzahl unverfänglicher, zufälliger Fehler basieren, die typischerweise innerhalb eines Zeitfensters auftreten und sicher ignoriert werden können (z.B. keine Fehlerbehandlung unter Verwendung von hier offenbarten Beispielen usw. benötigen). Zum Beispiel kann eine große Zeitdifferenz (z.B. 100 Millisekunden oder mehr) zwischen aufeinanderfolgenden Fehlern angeben, dass beide aufeinanderfolgende Fehler zufällige Fehler sind. In einem anderen Beispiel kann eine kleine Zeitdifferenz (z.B. 10 Mikrosekunden oder weniger, 20 Mikrosekunden oder weniger usw.) zwischen aufeinanderfolgenden Fehlern angeben, dass beide aufeinanderfolgenden Fehler einen anhaltenden Fehler bei einer entsprechenden Speicherstelle angeben.
  • In einigen Beispielen generiert der adaptive Schwellenwertmanager 120 dynamisch einen neuen Schwellenwert für ein adaptives Zeitfenster während des Systembetriebs. In einigen Fällen ändert der adaptive Schwellenwertmanager 120 dynamisch den Schwellenwert für ein adaptives Zeitfenster 121 ein oder mehrere Male im Laufe der Zeit. Der adaptive Aspekt des Schwellenwerts für ein adaptives Zeitfenster 121 ermöglicht dem adaptiven Schwellenwertmanager 120 die Eignung des Schwellenwerts für ein adaptives Zeitfenster 121 von Zeit zu Zeit erneut zu bewerten, um anhaltende Fehlern unter verschiedenen, möglicherweise sich ändernden, Bedingungen (z.B. Betriebsbedingungen, Temperatur, Gesamtdauer (z.B. Sekunden, Minuten, Stunden, Tage usw.) eines Betriebs, Alter der Einrichtung usw.), Nutzung (z.B. Frequenz der Datenzugriffe, zu speichernde Datenmenge usw.), Elevation usw. exakt zu identifizieren Zum Beispiel kann der adaptive Schwellenwertmanager 120 den Schwellenwert für ein adaptives Zeitfenster 121 basierend auf einer Änderung in der Nutzung des Speichers, einer Änderung in Temperatur, einer Änderung in Elevation usw. von drei Fehlern in einer Minute auf drei Fehler in 100 Millisekunden reduzieren. In einigen Beispielen managt der adaptive Schwellenwertmanager 120 mehrere Schwellenwerte für ein adaptives Zeitfenster. Zum Beispiel kann jeder der Zähler 138, 140, 142, 144, 146, 148 einen oder mehrere entsprechende Schwellenwerte für ein adaptives Zeitfenster haben, die sich voneinander unterscheiden können.
  • In dem gezeigten Beispiel von 1 enthält der Fehleranalysator 102 den Befehlsgenerator 122 zum Generieren eines Speicherkorrekturbefehls, wenn der adaptive Schwellenwertmanager 120 bestimmt, dass der Zähler 138 entsprechend der Speicherfehlerstellen-eMC(0)-Adresse 126 und der Speicherstelle MC(0) 106 den Schwellenwert für ein adaptives Zeitfenster 121 erreicht. Der beispielhafte Befehlsgenerator 122 generiert und sendet den Speicherkorrekturbefehl zur Fehlerkorrektureinheit 112, um einen Wert eines Speicherkorrekturmaßnahmeregisters zu aktualisieren. Zum Beispiel kann die Fehlerkorrektureinheit 112 einen Wert eines SMIsparectl-Registers, das eine Systemmanagementunterbrechung (SMI) ist, und eines Reservesteuerregisters in einer integrierten Speichersteuerung einer CPU wie dem Speichermonitor 110 aktualisieren. Die beispielhafte Fehlerkorrektureinheit 112 kann einen Wert des SMIsparectl-Registers aktualisieren, um einen Fehlerstatuspin freizugeben (z.B. Einstellen eines Spannungspegels des ERROR_N[0] Pins von einer ersten Spannung zu einer zweiten Spannung), eine SMI-Unterbrechung freigeben, eine SMI-Unterbrechung sperren usw. In einigen Beispielen enthält der Befehlsgenerator 122 einen Pointer zu einer Speicherstelle von Interesse (z.B. eine Adresse der Speicherzellen 106, einen Bereich von Adressen der Speicherzellen 106 usw.) im Speicherkorrekturbefehl. In dem gezeigten Beispiel sendet der Befehlsgenerator 122 den Speicherkorrekturbefehl zur Fehlerkorrektureinheit 112, enthaltend einen Pointer zur Speicherstelle MC(0) 106. Alternativ kann der beispielhafte Befehlsgenerator 122 den Pointer im Speicherkorrekturbefehl nicht enthalten. Zum Beispiel kann der Befehlsgenerator 122 (1) den Speicherkorrekturbefehl, der den Pointer nicht enthält, und (2) einen Speicherstellenbefehl, der den Pointer enthält, zur Fehlerkorrektureinheit 112 senden.
  • In dem gezeigten Beispiel von 1 enthält die Speichersteuerung 100 die Fehlerkorrektureinheit 112 zum Durchführen einer Speicherkorrekturmaßnahme wie einer ADDDC-Maßnahme oder einer anderen Art von Speicherkorrekturmaßnahme. Zum Beispiel kann die Fehlerkorrektureinheit 112 eine Speicherkorrekturmaßnahme durchführen, wie unten in Verbindung mit 4 beschrieben, wenn die Fehlerkorrektureinheit 112 einen Speicherkorrekturbefehl vom Befehlsgenerator 122 erhält. In dem gezeigten Beispiel empfängt die Fehlerkorrektureinheit 112 den Speicherkorrekturbefehl vom Befehlsgenerator 122, der Anweisungen enthält, einen Wert des Speicherkorrekturmaßnahmenregisters zu aktualisieren. In Antwort auf eine Aktualisierung des Werts löst die Fehlerkorrektureinheit 112 eine SMI aus, um eine Steuerung von Hardware-Ressourcen anzunehmen, um eine ADDDC-Maßnahme auf einem Speicherbereich durchzuführen, der MC(0) 106 enthält. Zum Beispiel kann die Fehlerkorrektureinheit 112 bestimmen, dass die Speicherstelle MC(0) 106 der Speichereinrichtung 104 entspricht, und führt somit die ADDDC-Maßnahme an der Speichereinrichtung 104 durch.
  • 2 ist ein beispielhaftes Blockdiagramm, das ein beispielhaftes Prozessorsystem 200 zeigt, das gemäß den Lehren dieser Offenbarung implementiert werden kann, um eine Speicherfehlerdetektion und/oder -korrektur für ein Speichermodul 202 durchzuführen. In dem gezeigten Beispiel ist das Speichermodul 202 ein Fehlerkorrekturcode- (ECC) DIMM, das die Speichereinrichtung 104 und die Speicherzellen 106 von 1 enthält. Die Speichermodule 202 sind mit entsprechenden beispielhaften CPUs 204 über entsprechende Kanäle 206 verbunden. Die beispielhaften CPUs 204 enthalten die Speichersteuerung 100 von 1. In einigen Beispielen kann auf die beispielhaften Kanäle 206 unter Verwendung von DIMM-Buchsen auf einer Prozessorplatine (z.B. einer Hauptplatine usw.) zugegriffen werden, in der die Speichermodule 202 installiert sind. Die beispielhaften Kanäle 206 enthalten Daten, Adresse und Steuerleitungen, die einen Zugriff (z.B. einen Lesebetrieb, einen Schreibbetrieb usw.) der Speichermodule 202 durch den Speichermonitor 110 erleichtern.
  • In dem gezeigten Beispiel von 2 sind die Speichersteuerungen 100 über einen Plattformumgebungssteuerschnittstellen- (PECI, Platform Environment Control Interface) Bus 208 in Schaltung mit dem Fehleranalysator 102 von 1. In dem gezeigten Beispiel überwacht der Fehlermanager 118 einen Fehlerstatuspin des Speichermonitors 110 und erhält die Fehlerstatusinformationen vom Speichermonitor 110 über den PECI-Bus 208, wenn der Fehlerstatuspin 115 den Status ändert. In dem gezeigten Beispiel sendet der Befehlsgenerator 122 einen Befehl (z.B. einen Befehl zur Aktualisierung eines Werts eines Registers, einen Befehl zum Senden eines Pointers einer Speicherstelle usw.) über den PECI-Bus 208 an die Fehlerkorrektureinheit 112.
  • In dem gezeigten Beispiel von 2 sind die CPUs 204 über einen PCH-Bus 212 in Schaltung mit einem Plattformsteuerungszentrum (PCH) 210. Das PCH 210 führt verschiedene Funktionen wie Taktung (z.B. Generieren eines Takts für das Prozessorsystem 200 usw.) durch. Zum Beispiel kann der Speichermonitor 110 einen Fehlerauftrittszeitstempel (z.B. einen Taktwert des Prozessorsystems 200 usw.) über den PCH-Bus 212 erhalten und den Fehlerauftrittszeitstempel auf den detektierten Fehler in der Speicherzelle 106 abbilden. In dem gezeigten Beispiel sendet der Speichermonitor 110 die Fehlerstatusinformationen, die den detektierten Fehler und den entsprechenden Fehlerauftrittszeitstempel enthalten, zum Fehlermanager 118.
  • In dem gezeigten Beispiel von 2 ist das PCH 210 über einen PCH-Bus 214 in Schaltung mit dem Fehleranalysator 102. Zum Beispiel kann der Fehlermanager 118 den Fehlerauftrittszeitstempelwert vom PCH 210 über den PCH-Bus 214 erhalten und den Fehlerauftrittszeitstempelwert auf einen der Zähler 138, 140, 142, 144, 146, 148 im Fehlerverlaufsprotokoll 124 abbilden. In einigen Beispielen analysiert der adaptive Schwellenwertmanager 120 mehrere Fehlerauftrittszeitstempel, die auf die Zähler 138, 140, 142, 144, 146, 148 abgebildet sind, um einen neuen Schwellenwert für ein adaptives Zeitfenster zu generieren oder den Schwellenwert für ein adaptives Zeitfenster 121 zu ändern. Zum Beispiel kann der adaptive Schwellenwertmanager 120 eine Zeitdifferenz zwischen einem ersten Fehlerauftrittszeitstempel, der auf den eMC(0)-Zähler 138 abgebildet wird, und einem zweiten Fehlerauftrittszeitstempel, der auf den eMC(0)-Zähler 138 abgebildet wird, berechnen. Der beispielhafte adaptive Schwellenwertmanager 120 kann bestimmen, ob die Zeitdifferenz den Schwellenwert für ein adaptives Zeitfenster 121 erreicht. Der beispielhafte Befehlsgenerator 122 kann einen Speicherkorrekturbefehl über den PECI-Bus 208 an die Fehlerkorrektureinheit 112 senden, wenn die Zeitdifferenz den Schwellenwert für ein adaptives Zeitfenster 121 erreicht.
  • 3 zeigt die beispielhafte Speichersteuerung 100 in Schaltung mit dem beispielhaften Fehleranalysator 102 von 1 und 2, um eine Speicherfehlerdetektion und/oder -korrektur der Speichermodule 202a-c von 2 durchzuführen. Die beispielhaften Speichermodule 202a-c sind zur Verwendung mit Fehlerkorrekturcode (ECC)-Fehlerdetektions- und/oder -korrekturmerkmalen konfiguriert. Zum Beispiel sind die Speichermodule 202a-c unter Verwendung von ECC SDRAM implementiert und mit Speicher-Chips zum Speichern von Daten und separaten Speicher-Chips zum Speichern von Fehlerkorrekturcodes bereitgestellt. Zum Beispiel kann ein Nicht-ECC SDRAM DIMM zwei Ränge und 16 Speichereinrichtungen pro Rang, also insgesamt 32 Speichereinrichtungen pro DIMM-Modul, zum Speichern von Daten haben. In dem gezeigten Beispiel hat jedes ECC SDRAM DIMM 202a-b zwei Ränge und 18 Speichereinrichtungen pro Rang, wobei 16 Speichereinrichtungen Dateneinrichtungen sind (z.B. Speichereinrichtungen 300 bezeichnet mit MO-M15 der Speichermodule 202a-c, die Speichereinrichtung 104 usw.) und zwei Speichereinrichtungen ECC-Einrichtungen sind (z.B. die Speichereinrichtungen 302 bezeichnet mit M16-M17 der Speichermodule 202, die ECC-Speichereinrichtung 114 usw.). Zum Beispiel können die ECC-Einrichtungen 114, 302 Einzel-Bit-Fehlerkorrektur-, Doppel-Bit-Fehlerdetektions- (SEC-DED, Single Bit Error Correction Double-Bit Error Detection) Codes speichern, um eine Korrektur von Einzel-Bit-Fehlern freizugeben und Doppel-Bit-Fehler zu detektieren. Zusätzlich oder alternativ können andere Arten von Fehlerkorrekturcodes verwendet werden.
  • In dem gezeigten Beispiel enthalten die Speichermodule 202 Sätze von DRAM-Chips, die mit derselben Adresse und denselben Datenbusse verbunden sind. Jeder Satz von DRAM-Chips bildet einen Rang. Zum Beispiel bilden die Speichereinrichtungen 300, 302 bezeichnet mit M0-M17 von Speichermodul 0 202a einen Rang 304 und die Speichereinrichtungen 300, 302 bezeichnet mit M0-M17 von Speichermodul 1 202b bilden einen Rang 306. In dem gezeigten Beispiel bildet ein Satz von 18 16-Bit DRAM-Chips (z.B. die Speichereinrichtungen 300, 302 bezeichnet mit M0-M17 von Speichermodul 0 202a usw.) einen 288-Bit Rang (z.B. 18 x 16 Bits/Speichereinrichtung = 288-Bit Datenbreite). In anderen Beispielen enthält ein Rang weniger oder mehr Speicher-Chips oder einen Speicher-Chip. Da sich alle Ränge denselben Datenbus teilen, kann zu einem bestimmten Zeitpunkt nur auf einen Rang zugegriffen werden. Zum Beispiel kann auf einen Rang 308 zugegriffen werden, wenn die CPU 204 ein Chipauswahlsignal des Rangs 308 aktiviert. Alle anderen Ränge werden für die Dauer eines Betriebs (z.B. ein Lesebetrieb, ein Schreibbetrieb usw.) deaktiviert, der auf dem aktivierten Rang 308 ausgeführt wird. Zum Beispiel wird ein Rang 310 für die Dauer des Betriebs auf dem Rang 308 basierend darauf deaktiviert, dass die CPU ein Chipauswahlsignal des Rangs 310 deaktiviert. In dem gezeigten Beispiel wird der Betrieb unter Verwendung eines primären Datenbusses 312 und eines sekundären Datenbusses 314 ausgeführt. In anderen Beispielen wird der Betrieb unter Verwendung weniger oder mehr Datenbusse ausgeführt.
  • In dem gezeigten Beispiel von 3 enthält Speichermodul 2 202c die Speichereinrichtung 104, die Speicherzellen 106 und die ECC-Einrichtung 114 von 1. Die Speichereinrichtung 104 enthält 16 Bänke. In anderen Beispielen kann die Speichereinrichtung 104 weniger oder mehr Bänke oder eine Bank enthalten. Zum Beispiel enthält die Speichereinrichtung 104, die 16 Bänke enthält, auch vier Bankauswahlleitungen zur Verwendung in einem selektiven Zugriff auf jede der Bänke. Eine Bank enthält Reihen und Spalten von Datenspeichereinheiten (z.B. Speicherzellen). Zum Beispiel hat jede Bank in einem Speicher-Chip dieselbe Anzahl von Speicherzellen, sodass eine Größe jeder Bank in einem Chip durch Dividieren einer Gesamtanzahl von Speicherzellen in dem Chip durch eine Anzahl von Bänken in dem Chip bestimmt werden kann. Wenn mehrere Speicher-Chips gemeinsam in einem Rang angeordnet sind, werden entsprechende Speicherbänke über die zahlreichen Speichereinrichtungen verkettet. Zum Beispiel sind Bank 0 316 jeder der Speichereinrichtungen M0-M17 im Rang 308 von Speichermodul 2 202c miteinander in Schaltung.
  • In einigen Beispielen erfahren DRAM-Einrichtungen wie die Speichereinrichtung 104 Speichereinrichtungsfehler wie sporadisch auftretende Fehler und schwerwiegende Fehler. Ein sporadisch auftretender Fehler oder ein schwerwiegender Fehler in der Speichereinrichtung 104 kann zu einem katastrophalen Versagen des entsprechenden Prozessorsystems 200 führen. Wie hier verwendet werden die Begriffe „sporadisch auftretender Fehler“ und „zufälliger Fehler“ untereinander austauschbar verwendet, um sich auf einen Fehler zu beziehen, der daraus resultiert, dass sich Daten, die an einer bestimmten Speicherstelle gespeichert sind, unregelmäßig oder selten unbeabsichtigt zu fehlerhaften Daten ändern, sodass die folgenden Daten an derselben Stelle ohne Fehler gespeichert werden können. In einigen Beispielen werden sporadisch auftretende Fehler durch einen Verlust an Ladung in einer Speicherzelle der DRAM-Einrichtung verursacht (z.B. die Speicherzelle 106 der Speichereinrichtung 104 usw.). Wie hier verwendet, werden die Begriffe „schwerwiegender Fehler“ und „anhaltender Fehler“ untereinander austauschbar verwendet, um sich auf einen Fehler zu beziehen, bei dem Daten nicht mehr länger zuverlässig bei einer bestimmten Speicherstelle gespeichert werden können. Wie hier verwendet, bezieht sich der Begriff „Speicherstelle“ auf eine Stelle in einem Speicher, die durch eine oder mehrerer Speicherzellenstellen innerhalb einer spezifizierten Bank, Einrichtung, einem Rang, Modul, Kanal usw. und/oder einer Kombination davon definiert ist. Zum Beispiel kann eine Speicherstelle die Speicherzelle 106 sein, die innerhalb der Bank 316 der Speichereinrichtung 104 liegt, wo die Speichereinrichtung 104 dem Rang 308 des Speichermoduls 2 202c entspricht.
  • 4 zeigt die beispielhafte Fehlerkorrektureinheit 112 in Schaltung mit den Rängen 308, 310 des Speichermoduls 2 202c, um eine beispielhafte Speicherkorrekturmaßnahme an Bank 0 316 basierend auf Lockstep-Partnerschaften zwischen Speichereinrichtungen durchzuführen. Lockstep-Partnerschaften verknüpfen Fehlerkorrekturdaten über Speicherregionen (z.B. Speicherbänke, Speicherränge usw.) in einer Art von Lockstep, sodass Lesen von Daten aus dem Speicher zu einer Detektion und/oder einer Korrektur eines Speicherfehlers führt. Hier offenbarte Beispiele implementieren Speicherkorrekturmaßnahmen unter Verwendung von Lockstep-Partnerschaftstechniken. In dem gezeigten Beispiel ist die Speicherkorrekturmaßnahme eine ADDDC-Maßnahme. Zu einem ersten Zeitpunkt t0 löst die beispielhafte Fehlerkorrektureinheit 112 eine SMI aus und führt die ADDDC-Maßnahme durch, wenn die Fehlerkorrektureinheit 112 einen Speicherkorrekturmaßnahmenbefehl empfängt, der durch den beispielhaften Befehlsgenerator 122 generiert wird. Der Speicherkorrekturmaßnahmenbefehl enthält eine Speicherstelle eines detektierten Fehlers. In dem gezeigten Beispiel ist die Speicherstelle die Speicherzelle 106, die mit ‚E‘ bezeichnet ist. In Antwort auf die beispielhafte Fehlerkorrektureinheit 112, die die Speicherstelle aus dem Speicherkorrekturmaßnahmenbefehl bestimmt, führt die Fehlerkorrektureinheit 112 eine Speicherkorrekturmaßnahme an der Speicherstelle durch. In dem gezeigten Beispiel führt die Fehlerkorrektureinheit 112 eine Speicherkorrekturmaßnahme an der Bank 0 316 des Rangs 0 308 durch. Die beispielhafte Fehlerkorrektureinheit 112 führt die Speicherkorrekturmaßnahme durch Durchführen eines Lesebetriebs der Bank 316 des Rangs 308 und Bank 402 des Rangs 310 über einen entsprechenden des primären Datenbusses 312 und des sekundären Datenbusses 314 durch. In dem gezeigten Beispiel liest die Fehlerkorrektureinheit 112 die hohen 32 Bytes der Bänke 316, 402 an dem primären Datenbus 312 und liest die niederen 32 Bytes der Bänke 316, 402 auf dem sekundären Datenbus 314. In Antwort auf das Lesen der Daten der Bänke 316, 402 auf den Datenbussen 312, 314 verwendet die beispielhafte Fehlerkorrektureinheit 112 eine oder mehrere adaptive virtuelle Lockstep (AVL)-Regeln, um eine oder mehrere Lockstep-Partnerschaften zwischen den Bänken 316, 402 basierend auf dem detektierten Fehler in der Speicherzelle 106 zu definieren.
  • Zu einem zweiten Zeitpunkt t1 ordnet die beispielhafte Fehlerkorrektureinheit 112 die Daten, die aus den Datenbussen 312, 314 gelesen werden, basierend auf dem einen oder den mehreren Lockstep-Beziehungen neu, bevor die neu angeordneten Daten wieder in die Bänke 316, 402 geschrieben werden, wie rechts des Pfeils 404 gezeigt. In dem gezeigten Beispiel schreibt die Fehlerkorrektureinheit 112 die hohen 32 Bytes der Bank 0 316 des Rangs 0 308 in die Bank 0 402 des Rangs 1 310. Ähnlich schreibt die beispielhafte Fehlerkorrektureinheit 112 die hohen 32 Bytes der Bank 0 402 des Rangs 1 310 in die Bank 0 316 des Rangs 0 308. Infolgedessen wird die Fehlerkorrektur der Bänke 316, 402 über die Ränge 308, 310 verteilt.
  • In einigen Beispielen kehrt die Fehlerkorrektureinheit 112 die eine oder mehreren Lockstep-Partnerschaften um und weist sie neu zu, um zusätzliche Speicherfehler zu fixieren, wenn anschließende detektierte Fehler in den Speicherzellen 106 einen Schwellenwert für ein adaptives Zeitfenster erreichen (z.B. den Schwellenwert für ein adaptives Zeitfenster 121 usw.), entsprechend der Speicherstelle, die die Speicherzellen 106 enthält. Zum Beispiel kann der Schwellenwert für ein adaptives Zeitfenster 121 erreicht sein, um eine Korrekturmaßnahme durch die Fehlerkorrektureinheit 112 auszulösen, wenn mehr als eine Schwellenzahl von Fehlern in den Speicherzellen 106 innerhalb eines Zeitfensters von 100 Millisekunden (z.B. der Schwellenwert für ein adaptives Zeitfenster 121) detektiert wird.
  • Lockstep-Partnerschaften können für verschiedene Speicherfehlerdetektionsgranularitäten konfiguriert sein. Eine Speicherfehlerdetektionsgranularität bezieht sich auf eine Dateneinheitsgröße (z.B. eine Bank, einen Rang, eine Speichereinrichtung usw.), für die Speicherfehlerdetektion in hier offenbarten Beispielen implementiert werden kann und/oder für die eine Lockstep-Partnerschaft gebildet werden kann. Zum Beispiel hat eine Speicherfehlerdetektion der Bank 0 316 Speicherfehlerdetektionsbankgranularität. In einem anderen Beispiel hat eine Lockstep-Partnerschaft, die den Rang 0 308 und den Rang 1 310 überspannt, Speicherfehlerdetektionsranggranularität. Die beispielhafte Fehlerkorrektureinheit 112 kann konfiguriert sein, die Speicherfehlerdetektionsgranularität der einen oder mehreren Lockstep-Partnerschaften zu ändern, wenn Partnerschaften geändert werden. Ein solches Ändern von Speicherfehlerdetektionsgranularität ist nützlich, wenn eine angemessene Eskalation einer Speicherkorrekturmaßnahme basierend auf einer Speicherstelle detektierter Fehler bestimmt wird. Zum Beispiel kann die Fehlerkorrektureinheit 112 die Speicherfehlerdetektionsgranularität von Bankgranularität zu Ranggranularität ändern, um zu bestimmen, ob eine Speicherkorrekturmaßnahme an der Bank 0 316 (z.B. ist die Bank 0 316 fehlerhaft, beschädigt usw.) durchzuführen ist oder eine Speicherkorrekturmaßnahme am Speichermodul 2 202c (z.B. ist das Speichermodul 2 202c fehlerhaft, beschädigt usw.) durchzuführen ist. Zum Beispiel kann die Speicherfehlerdetektionsgranularität eines ersten Satzes von Lockstep-Partnerschaften von einer Bankgranularität (z.B. die Bänke 316, 402 usw.) sein, während ein zweiter Satz von Lockstep-Partnerschaften von einer Ranggranularität (z.B. die Ränge 308, 310 usw.) sein kann, wo der zweite Satz gebildet wird, nachdem der erste Satz gebildet wurde, und anschließend umgekehrt wird. Zum Beispiel kann die Fehlerkorrektureinheit 112 den ersten Satz von Lockstep-Partnerschaften umkehren und neu zuweisen, wenn mehr als zwei Fehler in der Bank 0 316 detektiert werden. In einem anderen Beispiel kann die Fehlerkorrektureinheit 112 den zweiten Satz von Lockstep-Partnerschaften umkehren und neu zuweisen, wenn mehr als zwei Fehler im Rang 308 detektiert werden.
  • 5 ist ein Blockdiagramm der beispielhaften Speichersteuerung 100 von 1-4. Die beispielhafte Speichersteuerung 100 überwacht die Speichermodule 202 von 2-4, um Speicherfehler zu detektieren. Die beispielhafte Speichersteuerung 100 sendet Fehlerstatusinformationen, die eine Speicherstelle eines Speicherfehlers enthalten an den beispielhaften Fehleranalysator 102 von 1-4. Die beispielhafte Speichersteuerung 100 führt eine Speicherkorrekturmaßnahme durch, wenn die Speichersteuerung 100 einen Speicherkorrekturbefehl vom beispielhaften Fehleranalysator 102 empfängt. In dem gezeigten Beispiel enthält die Speichersteuerung 100 eine beispielhafte Speicherschnittstelle 500, den beispielhaften Speichermonitor 110, die beispielhafte Fehlerkorrektureinheit 112 und eine beispielhafte Fehleranalysatorschnittstelle 510.
  • In dem gezeigten Beispiel von 5 enthält die Speichersteuerung 100 die Speicherschnittstelle 500, um Fehlerstatusinformationen von den Speichermodulen 202 zu erhalten. Zum Beispiel kann die Speicherschnittstelle 500 eine Speicherstelle eines Speicherfehlers von der ECC-Einrichtung 114 von 1 und 3 über den primären Datenbus (PDB) 312 und den sekundären Datenbus (SDB) 314 erhalten. In einigen Beispielen erleichtert die Speicherschnittstelle 500 Zugriff (z.B. einen Lesebetrieb, einen Schreibbetrieb usw.) der Speichermodule 202. Zum Beispiel kann die Speicherschnittstelle 500 Daten von Interesse aus den Speichermodulen 202 lesen. In Beispielen kann die Speicherschnittstelle 500 neu angeordnete Daten in die Speichermodule 202 basierend auf einer oder mehreren AVL-Regeln schreiben.
  • In dem gezeigten Beispiel von 5 enthält die Speichersteuerung 100 den Speichermonitor 110 zum Überwachen der Speichermodule 202, um Speicherfehler zu detektieren. Zum Beispiel kann der Speichermonitor 110 bestimmen, ob die Fehlerstatusinformationen, die durch die Speicherschnittstelle 500 erhalten werden, einen Speicherfehler enthalten. In einigen Beispielen gibt der Speichermonitor 110 einen Fehlerstatuspin frei (z.B. Einstellen eines Spannungspegels eines ERROR_N[0] Pins von einer ersten Spannung zu einer zweiten Spannung usw.), der angibt, dass die Fehlerstatusinformationen einen Speicherfehler enthalten. In solchen Beispielen erhält der Speichermonitor 110 einen Fehlerauftrittszeitstempel über den PCH-Bus 212 von 2 und bildet den Fehlerauftrittszeitstempel auf den detektierten Fehler ab.
  • In dem gezeigten Beispiel von 5 enthält die Speichersteuerung 100 die Fehlerkorrektureinheit 112 zur Durchführung einer Speicherkorrekturmaßnahme. In einigen Beispielen aktualisiert die Fehlerkorrektureinheit 112 einen Wert eines SMIsparectl-Registers in Antwort auf einen Empfang eines Speicherkorrekturbefehls vom Befehlsgenerator 122 von 1-4. In einigen Beispielen gibt die Fehlerkorrektureinheit 112 eine SMI-Unterbrechung frei oder sperrt diese. Zum Beispiel kann die Fehlerkorrektureinheit 112 eine SMI-Unterbrechung freigeben, um eine Steuerung von Hardware-Ressourcen anzunehmen, um eine ADDDC-Maßnahme an einem Speicherbereich durchzuführen, der MC(0) 106 enthält. Die beispielhafte Fehlerkorrektureinheit 112 kann die SMI-Unterbrechung sperren, um Steuerung der Hardware-Ressourcen in Antwort darauf freizugeben, dass die Fehlerkorrektureinheit 112 die ADDDC-Maßnahme beendet.
  • In einigen Beispielen bestimmt die Fehlerkorrektureinheit 112, ob eine Speicherregion (z.B. ein Rang, eine Bank usw.),die einen detektierten Fehler enthält, zuvor einer Speicherkorrekturmaßnahme wie einem AVL-Prozess unterzogen wurde. Zum Beispiel kann die Fehlerkorrektureinheit 112 bestimmen, dass die Bank 0 316 von 3-4 durch eine oder mehrere AVL-Regeln, Lockstep-Partnerschaften usw. geregelt ist. In einigen Beispielen bestimmt die Fehlerkorrektureinheit 112, ob eine Speicherkorrekturmaßnahme durchzuführen ist oder betroffene Daten zu einer Reserveregion einer ECC-Einrichtung zu bewegen sind. Zum Beispiel kann die Fehlerkorrektureinheit 112 eine Anzahl korrigierter Fehlern in der Bank 0 316, eine Anzahl korrigierter Fehler im Rang 0 308 usw. mit einem korrigierten Fehlerschwellenwert (z.B. mehr als zwei korrigierte Fehler in der Bank 0 316, mehr als zwei korrigierte Fehler im Rang 0 308 usw.) vergleichen und bestimmen, ob die Anzahl korrigierter Fehler den korrigierten Fehlerschwellenwert erreicht. Falls die beispielhafte Fehlerkorrektureinheit 112 bestimmt, dass die Anzahl korrigierter Fehler den korrigierten Fehlerschwellenwert nicht erreicht, kann die Fehlerkorrektureinheit 112 eine ADDDC-Maßnahme (z.B. Bildern einer Lockstep-Partnerschaft, Umkehr einer Lockstep-Partnerschaft usw.), einen ECC-Algorithmus usw. an der Bank 0 316 durchführen. Falls die beispielhafte Fehlerkorrektureinheit 112 bestimmt, dass die Anzahl korrigierter Fehler den korrigierten Fehlerschwellenwert nicht erreicht, kann dann die Fehlerkorrektureinheit 112 die Daten in der Bank 0 316 abbilden und zu einer Reserveregion oder einer Reservebank in der ECC-Einrichtung 114 bewegen.
  • In dem gezeigten Beispiel von 5 enthält die Speichersteuerung 100 die Fehleranalysatorschnittstelle 510, um Informationen an den Fehleranalysator 102 von 1-4 zu senden und von diesem zu erhalten. Zum Beispiel kann die Fehleranalysatorschnittstelle 510 Fehlerstatusinformationen, die eine Speicherstelle eines detektierten Fehlers enthalten, an den Fehleranalysator 102 über den PECI-Bus 208 von 2 senden. In einem anderen Beispiel kann die Fehleranalysatorschnittstelle 510 einen Speicherkorrekturbefehl vom Fehleranalysator 102 über den PECI-Bus 208 erhalten.
  • Während eine beispielhafte Weise zum Implementieren der Speichersteuerung 100 von 1-4 in 5 gezeigt ist, können eines/einer/eine oder mehrere der Elemente, Prozesse und/oder Einrichtungen, die in 5 gezeigt sind, kombiniert, geteilt, neu angeordnet, unterlassen, eliminiert und/oder in anderer Weise implementiert werden. Ferner können die beispielhafte Speicherschnittstelle 500, der beispielhafte Speichermonitor 110, die beispielhafte Fehlerkorrektureinheit 112, die beispielhafte Fehleranalysatorschnittstelle 510 und/oder allgemeiner die beispielhafte Speichersteuerung von 1-4 durch Hardware, Software, Firmware, und/oder jede Kombination von Hardware, Software und/oder Firmware implementiert werden. So könnte zum Beispiel jede(r) der beispielhaften Speicherschnittstelle 500, des beispielhaften Speichermonitors 110, der beispielhaften Fehlerkorrektureinheit 112, der beispielhaften Fehleranalysatorschnittstelle 510 und/oder allgemeiner der beispielhaften Speichersteuerung von 1-4 durch eine oder mehrere analoge oder digitale Schaltung(en), Logikschaltungen, programmierbare Prozessor(en), anwendungsspezifische integrierte Schaltung(en) (ASIC(s)), programmierbare Logikeinrichtung(en) (PLD(s)) und/oder feldprogrammierbare Logikeinrichtung(en) (FPLD(s)) implementiert werden. Wenn einer der Vorrichtungs- oder Systemansprüche dieses Patents besagt, eine reine Software- und/oder Firmware-Implementierung abzudecken, ist/sind hier mindestens eine(r) der beispielhaften Speicherschnittstelle 500, des beispielhaften Speichermonitors 110, der beispielhaften Fehlerkorrektureinheit 112, der beispielhaften Fehleranalysatorschnittstelle 510 und/oder allgemeiner der beispielhaften Speichersteuerung von 1-4 ausdrücklich definiert, eine nicht transitorische computerlesbare Datenspeichereinrichtung oder Datenspeicherplatte wie einen Speicher, eine Digital Versatile Disk (DVD), eine Compact Disk (CD), ein Blu-ray Disk usw. zu enthalten, die die Software und/oder Firmware enthält. Ferner noch kann die beispielhafte Speichersteuerung von 1-4 ein oder mehrere Elemente, Prozesse und/oder Einrichtungen zusätzlich zu oder anstelle jener enthalten, die in 5 dargestellt sind, und/oder kann mehr als eine oder alle der gezeigten Elemente, Prozesse und Einrichtungen enthalten.
  • 6 ist ein Blockdiagramm des beispielhaften Fehleranalysators 102 von 1-4. Der beispielhafte Fehleranalysator 102 evaluiert detektierte Fehler in erhaltenen Fehlerstatusinformationen und bestimmt, ob ein Speicherkorrekturbefehl zu generieren ist. In dem gezeigten Beispiel enthält der Fehleranalysator 102 eine beispielhafte Speichersteuerungsschnittstelle 600, den beispielhaften Fehlermanager 118, den beispielhaften adaptiven Schwellenwertmanager 120, der den beispielhaften Schwellenwert für ein adaptives Zeitfenster 121 enthält, und den beispielhaften Befehlsgenerator 122.
  • In dem gezeigten Beispiel von 6 enthält der Fehleranalysator 102 die Speichersteuerungsschnittstelle 600 zum Überwachen des Fehlerstatuspins 115 der Speichersteuerung 100 von 1-5 und Erhalten von Fehlerstatusinformationen von der Speichersteuerung 100, wenn der Fehlerstatuspin 115 den Status ändert (z.B. Einstellen eines Spannungspegels eines ERROR_N[0] Pins von einer ersten Spannung auf eine zweite Spannung usw.). Zum Beispiel kann die Speichersteuerungsschnittstelle 600 eine Speicherstelle eines Speicherfehlers von der Fehleranalysatorschnittstelle 510 von 5 über den PECI-Bus 208 von 2 erhalten, wenn der ERROR_N[0] Pin freigegeben ist. In einigen Beispielen bestimmt die Speichersteuerungsschnittstelle 600, ob mit dem Überwachen des Fehlerstatuspins 115 fortzufahren ist. Zum Beispiel kann die Speichersteuerungsschnittstelle 600 bestimmen, dass die Speichersteuerung 100 ausgeschaltet wurde (z.B. aktualisiert ein Herzschlagregister nicht mehr usw.).
  • In dem gezeigten Beispiel von 6 enthält der Fehleranalysator 102 den Fehlermanager 118 zum Vergleichen einer Speicherstelle eines Speicherfehlers mit mehreren Speicherstellen, die im Fehlerverlaufsprotokoll 124 gespeichert sind. In einigen Beispielen aktualisiert der Fehlermanager 118 einen der Zähler 138, 140, 142, 144, 146, 148 von 1, wenn die Speicherstelle mit einer der Speicherfehlerstellen-eMC-Adressen 126, 128, 130, 132, 134, 136 übereinstimmt. In einigen Beispielen generiert der Fehlermanager 118 einen neuen Zähler entsprechend der Speicherstelle, wenn die Speicherstelle nicht mit einer der Speicherfehlerstellen-eMC-Adressen 126, 128, 130, 132, 134, 136 übereinstimmt.
  • In dem gezeigten Beispiel von 6 enthält der Fehleranalysator 102 den adaptiven Schwellenwertmanager 120 zum Vergleichen von Werten der Zähler 138, 140, 142, 144, 146, 148 im Fehlerverlaufsprotokoll 124 mit dem Schwellenwert für ein adaptives Zeitfenster 121. In einigen Beispielen generiert der adaptive Schwellenwertmanager 120 während eines Systembetriebs dynamisch einen neuen Schwellenwert für ein adaptives Zeitfenster. In einigen Beispielen ändert der adaptive Schwellenwertmanager 120 dynamisch ein oder mehrere Male im Laufe der Zeit den Schwellenwert für ein adaptives Zeitfenster 121. In einigen Beispielen managt der adaptive Schwellenwertmanager 120 mehrere Schwellenwerte für ein adaptives Zeitfenster. In solchen Beispielen entspricht jeder Schwellenwert für ein adaptives Zeitfenster einer entsprechenden der eMC-Adressen 126, 128, 130, 132, 134, 136 und/oder einem entsprechenden der eMC Zähler 138, 140, 142, 144, 146, 148 von 1.
  • In dem gezeigten Beispiel von 6 enthält der Fehleranalysator 102 den Befehlsgenerator 122 zum Generieren eines Speicherkorrekturbefehls, wenn der adaptive Schwellenwertmanager 120 bestimmt, dass ein Wert eines der Zähler 138, 140, 142, 144, 146, 148 den Schwellenwert für ein adaptives Zeitfenster 121 erreicht. In einigen Beispielen generiert der Befehlsgenerator 122 den Speicherkorrekturbefehl und sendet diesen über den PECI-Bus 208 an die Fehlerkorrektureinheit 112, um einen Wert eines Speicherkorrekturmaßnahmeregisters (z.B. eines SMIsparectl-Registers usw.) zu aktualisieren.
  • Während eine beispielhafte Weise zum Implementieren des Fehleranalysators 102 von 1-4 in 6 gezeigt ist, können eines/einer/eine oder mehrere der Elemente, Prozesse und/oder Einrichtungen, die in 6 gezeigt sind, kombiniert, geteilt, neu angeordnet, unterlassen, eliminiert und/oder in anderer Weise implementiert werden. Ferner können die beispielhafte Speichersteuerungsschnittstelle 600, der beispielhafte Fehlermanager 118, der beispielhafte adaptive Schwellenwertmanager 120, der beispielhafte Befehlsgenerator 122 und/oder allgemeiner der beispielhafte Fehleranalysator 102 von 1-4 durch Hardware, Software, Firmware und/oder jede Kombination von Hardware, Software, und/oder Firmware implementiert werden. So könnte zum Beispiel jede(r) der beispielhaften Speichersteuerungsschnittstelle 600, des beispielhaften Fehlermanagers 118, des beispielhaften adaptiven Schwellenwertmanagers 120, des beispielhaften Befehlsgenerators 122 und/oder allgemeiner des beispielhaften Fehleranalysators 102 von 1-4 durch eine(n) oder mehrere analoge oder digitale Schaltung(en), Logikschaltungen, programmierbare Prozessor(en), anwendungsspezifische integrierte Schaltung(en) (ASIC(s)), programmierbare Logikeinrichtung(en) (PLD(s)) und/oder feldprogrammierbare Logikeinrichtung(en) (FPLD(s)) implementiert werden. Wenn einer der Vorrichtungs- oder Systemansprüche dieses Patents besagt, eine reine Software- und/oder Firmware-Implementierung abzudecken, ist/sind hier mindestens eine(r) der beispielhaften Speichersteuerungsschnittstelle 600, des beispielhaften Fehlermanagers 118, des beispielhaften adaptiven Schwellenwertmanagers 120, des beispielhaften Befehlsgenerators 122 und/oder allgemeiner des beispielhaften Fehleranalysators 102 von 1-4 ausdrücklich definiert, eine nicht transitorische computerlesbare Datenspeichereinrichtung oder Datenspeicherplatte wie einen Speicher, eine Digital Versatile Disk (DVD), eine Compact Disk (CD), ein Blu-ray Disk usw. zu enthalten, die die Software und/oder Firmware enthält. Ferner noch kann der beispielhafte Fehleranalysator 102 von 1-4 ein/einen/eine oder mehrere Elemente, Prozesse und/oder Einrichtungen zusätzlich zu oder anstelle von jenen enthalten, die in 6 gezeigt sind, und/oder kann mehr als eine von beliebigen oder allen der gezeigten Elemente, Prozesse und Einrichtungen enthalten.
  • Ablaufdiagramme von 7-9 sind für beispielhafte Operationen repräsentativ, die durch die beispielhafte Speichersteuerung 100 von 1-5 und/oder den beispielhaften Fehleranalysator 102 von 1-4 und 6 durchgeführt werden. In einigen Beispielen werden die Operationen durch Hardware (z.B. analoge und/oder Logikschaltungen, enthaltend Transistor und/oder Logik-Gates usw.) durchgeführt, die konfiguriert sind, Fehlerdetektions- und/oder -korrekturtechniken gemäß den Lehren dieser Offenbarung zu implementieren. In solchen Beispielen können Hardware-Schaltungen verwendet werden, um die beispielhafte Speichersteuerung 100 von 1-5 und/oder den beispielhaften Fehleranalysator 102 von 1-4 und 6 zu implementieren, um Hochgeschwindigkeitsspeicheroperationen zu erreichen, die Hochgeschwindigkeitsdatendurchsätzen für Hochleistungsspeicher dienlich sind. In anderen Beispielen sind die Ablaufdiagramme von 7-9 für beispielhafte maschinenlesbare Anweisungen zum Implementieren der beispielhaften Speichersteuerung 100 von 1-5 und/oder des beispielhaften Fehleranalysators 102 von 1-4 und 6 repräsentativ. In diesen Beispielen umfassen die maschinenlesbaren Anweisungen ein Programm zur Ausführung durch einen Prozessor wie die Prozessoren 1012, 1112, die in den beispielhaften Prozessorplattformen 1000, 1100 gezeigt sind, die unten in Verbindung mit 10-11 besprochen sind. Das Programm kann in Software verkörpert sein, die auf einem nicht transitorischen computerlesbaren Datenspeichermedium wie einer CD-ROM, einer Diskette, einem Laufwerk, einer Digital Versatile Disk (DVD), einer Blu-ray Disk oder einem Speicher gespeichert ist, der mit den Prozessoren 1012, 1112 verknüpft ist, aber das gesamte Programm und/oder Teile davon könnten alternativ durch eine andere Einrichtung als die Prozessoren 1012, 1112 ausgeführt und/oder in Firmware oder dedizierter Hardware verkörpert sein. Ferner, obwohl das beispielhafte Programm unter Bezugnahme auf die Ablaufdiagramme beschrieben ist, die in 7-9 gezeigt sind, können viele andere Verfahren alternativ zum Implementieren der beispielhaften Speichersteuerung 100 und/oder des beispielhaften Fehleranalysators 102 verwendet werden. Zum Beispiel kann die Reihenfolge der Ausführung der Blöcke geändert werden und/oder einige der beschriebenen Blöcke können geändert, eliminiert oder kombiniert werden. Zusätzlich oder alternativ können beliebige oder alle der Blöcke durch eine oder mehrere Hardware-Schaltungen (z.B. diskreter und/oder integrierter analoger und/oder digitaler Schaltkreis ein feldprogrammierbares Gate-Array (FPGA), eine anwendungsspezifische integrierte Schaltung (ASIC), einen Komparator, einen Betriebsverstärker (op-amp), eine Logikschaltung usw.) implementiert sein, die strukturiert sind, die entsprechende Operation durchzuführen, ohne Software oder Firmware auszuführen.
  • Wie oben erwähnt, können die beispielhaften Verfahren von 7-9 unter Verwendung codierter Anweisungen (z.B. computer- und/oder maschinenlesbare Anweisungen) implementiert werden, die auf einem nicht transitorischen computer- und/oder maschinenlesbaren Medium gespeichert sind, wie einem Festplattenlaufwerk, einem Flash-Speicher, einem Nur-Lese-Speicher, einer Compact Disk, einer Digital Versatile Disk, einem Cache, einem Direktzugriffsspeicher und/oder einer anderen Datenspeichereinrichtung oder Datenspeicherplatte, in der Informationen für eine beliebige Dauer gespeichert sind (z.B. für längere Zeitperioden, permanent, für kurze Momente, zum vorübergehenden Zwischenspeichern und/oder zum Cachen der Informationen). Wie hier verwendet, ist der Begriff nicht transitorisches computerlesbares Datenspeichermedium ausdrücklich definiert, jede Art von computerlesbarer Datenspeichereinrichtung und/oder Datenspeicherplatte zu enthalten und sich ausbreitende Signale auszuschließen und Übertragungsmedien auszuschließen. „Enthaltend“ und „umfassend“ (und alle Formen und Zeiten davon) werden hier als Begriffe mit offenem Ende verwendet. Selbst wenn daher ein Anspruch irgendetwas nach einer Form von „enthalten“ oder „umfassen“ aufzählt (z.B. umfasst, enthält, umfassend, enthaltend usw.), ist klar, dass zusätzliche Elemente, Begriffe usw. vorhanden sein können, ohne außerhalb des Umfangs des entsprechenden Anspruchs zu liegen. Wie hier verwendet, wenn die Phrase „mindestens“ als Übergangsbegriff in einem Oberbegriff eines Anspruchs verwendet wird, ist diese in derselben Weise wie der Begriff „umfassend“ und „enthaltend“ mit offenem Ende.
  • 7 ist ein Ablaufdiagramm, das für ein beispielhaftes Verfahren 700 repräsentativ ist, das durch den beispielhaften Fehleranalysator 102 von 1-4 und 6 durchgeführt werden kann, um einen Speicherfehler in einer Speichereinrichtung zu detektieren und zu korrigieren. Das beispielhafte Verfahren 700 beginnt bei Block 702, wenn der beispielhafte Fehleranalysator 102 ein Auftreten eines Fehlers in einer ersten Speicherstelle eines Speichers detektiert. Zum Beispiel kann die Speichersteuerungsschnittstelle 600 Fehlerstatusinformationen von der Fehleranalysatorschnittstelle 510 erhalten, die angeben, dass die Speicherstelle MC(0) 106 einen Fehler enthält. In einem solchen Beispiel kann die Speichersteuerungsschnittstelle 600 die Fehlerstatusinformationen erhalten, wenn der Fehlerstatuspin 115 (z.B. der ERROR_N[0] Statuspin usw.) des Speichermonitors 110 den Status ändert.
  • Bei Block 704 vergleicht der beispielhafte Fehleranalysator 102 die erste Speicherstelle, die bei Block 702 identifiziert wurde, mit Speicherstellen in einem Fehlerverlaufsprotokoll. Zum Beispiel kann der Fehlermanager 118 die Speicherstelle MC(0) 106 mit den Speicherfehlerstellen-eMC-Adressen 126, 128, 130, 132, 134, 136 im Fehlerverlaufsprotokoll 124 von 1 vergleichen. Bei Block 706 bestimmt der beispielhafte Fehleranalysator 102, ob die erste Speicherstelle mit einer der Speicherstellen im Fehlerverlaufsprotokoll 124 übereinstimmt. Zum Beispiel kann der Fehlermanager 118 bestimmen, dass die Speicherstelle MC(0) 106 mit der Speicherfehlerstellen-eMC(0)-Adresse 126 (1) übereinstimmt.
  • Falls bei Block 706 der beispielhafte Fehleranalysator 102 bestimmt, dass die erste Speicherstelle nicht mit einer der Speicherstellen im Fehlerverlaufsprotokoll 124 übereinstimmt, fährt die Steuerung mit Block 714 fort um zu bestimmen, ob mit einer Überwachung des Speichers fortzufahren ist. Falls bei Block 706 der beispielhafte Fehleranalysator 102 bestimmt, dass die erste Speicherstelle mit einer der Speicherstellen im Fehlerverlaufsprotokoll übereinstimmt, dann aktualisiert der Fehleranalysator 102 bei Block 708 einen Zähler für die erste Speicherstelle. Zum Beispiel kann der Fehlermanager 118 den eMC(0) Zähler 138 (1) entsprechend der Speicherfehlerstellen-eMC(0)-Adresse 126 entsprechend der Speicherstelle MC(0) 106 erhöhen.
  • Bei Block 710 bestimmt der beispielhafte Fehleranalysator 102, ob der Zähler einen Schwellenwert erreicht. Zum Beispiel kann der adaptive Schwellenwertmanager 120 bestimmen, dass der eMC(0) Zähler 138 den Schwellenwert für ein adaptives Zeitfenster 121 erreicht (1 und 6). Falls bei Block 710 der beispielhafte Fehleranalysator 102 bestimmt, dass der Zähler den Schwellenwert nicht erreicht, fährt die Steuerung mit Block 714 fort, um die Überwachung des Speichers fortzusetzen. Falls bei Block 710 der beispielhafte Fehleranalysator 102 bestimmt, dass der Zähler den Schwellenwert erreicht, löst der Fehleranalysator 102 bei Block 712 eine Fehlerkorrektur aus. Zum Beispiel kann der Befehlsgenerator 122 einen Speicherkorrekturbefehl generieren, um die Fehlerkorrektureinheit 112 zu lenken, eine ADDDC-Maßnahme durchzuführen.
  • Bei Block 714 bestimmt der beispielhafte Fehleranalysator 102, ob eine Überwachung des Speichers fortzusetzen ist. Zum Beispiel kann die Speichersteuerungsschnittstelle 600 bestimmen, dass die Speichersteuerung 100 nicht mehr mit Strom versorgt wird oder in einem inaktiven Zustand ist. Falls der Fehleranalysator 102 bei Block 714 bestimmt, die Überwachung des Speichers fortzusetzen, kehrt die Steuerung zu Block 702 zurück, um das Detektieren eines Auftretens eines Fehlers fortzusetzen, andernfalls endet das beispielhafte Verfahren 700.
  • 8 ist ein Ablaufdiagramm, das für ein beispielhaftes Verfahren 800 repräsentativ ist, das durch den beispielhaften Fehleranalysator 102 von 1-4 und 6 durchgeführt werden kann, um einen Speicherfehler in einer Speichereinrichtung (z.B. der Speichereinrichtung 104 von 1 usw.) zu detektieren und zu korrigieren. Das beispielhafte Verfahren 800 beginnt bei Block 802, wenn der beispielhafte Fehleranalysator 102 Fehlerstatuspininformationen erhält. Zum Beispiel kann die Speichersteuerungsschnittstelle 600 (6) einen Wert des Fehlerstatuspins 115 (z.B. einen Spannungspegel des ERROR_N[0] Statuspins usw.) des Speichermonitors 110 erhalten (1 und 5).
  • Bei Block 804 bestimmt der beispielhafte Fehleranalysator 102, ob die Fehlerstatuspininformationen einen detektierten Fehler angeben. Zum Beispiel kann die Speichersteuerungsschnittstelle 600 basierend auf dem Wert des Fehlerstatuspins 115 bestimmen, dass der Speichermonitor 110 einen Fehler detektiert.
  • Falls bei Block 804 der beispielhafte Fehleranalysator 102 bestimmt, dass die Fehlerstatuspininformationen keinen detektierten Fehler angeben, kehrt die Steuerung zu Block 802 zurück, um zusätzliche Fehlerstatuspininformationen zu erhalten. Falls bei Block 804 der beispielhafte Fehleranalysator 102 bestimmt, dass die Fehlerstatuspininformationen einen detektierten Fehler angeben, erhält dann der Fehleranalysator 102 bei Block 806 eine Fehlerstelle. Zum Beispiel kann die Speichersteuerungsschnittstelle 600 Fehlerstatusinformationen vom Speichermonitor 110 über den PECI-Bus 208 (2) erhalten. In solchen Beispielen kann der Fehlermanager 118 (1-3 und 5) basierend auf den erhaltenen Fehlerstatusinformationen bestimmen, dass die Speicherstelle MC(0) 106 ( 1-4) den detektierten Fehler enthält.
  • Bei Block 808 vergleicht der beispielhafte Fehleranalysator 102 die Fehlerstelle mit einem Fehlerverlaufsprotokoll. Zum Beispiel kann der Fehlermanager 118 die Speicherstelle MC(0) 106 mit den Speicherfehlerstellen-eMC-Adressen 126, 128, 130, 132, 134, 136 im Fehlerverlaufsprotokoll 124 (1) vergleichen. Bei Block 810 bestimmt der beispielhafte Fehleranalysator 102, ob die Fehlerstelle eine neue Fehlerstelle ist. Zum Beispiel kann der Fehlermanager 118 bestimmen, dass die Speicherstelle MC(0) 106 keine neue Fehlerstelle ist, wenn die Speicherstelle MC(0) 106 mit der Speicherfehlerstellen-eMC(0)-Adresse 126 im Fehlerverlaufsprotokoll 124 übereinstimmt.
  • Falls der beispielhafte Fehleranalysator 102 bei Block 810 bestimmt, dass die Fehlerstelle ein neue Fehlerstelle ist, dann generiert der Fehleranalysator 102 bei Block 812 einen Zähler für die Fehlerstelle. Zum Beispiel kann der Fehlermanager 118 einen neuen Zähler (z.B. einen der Zähler 138, 140, 142, 144, 146, 148 von 1) entsprechend der Speicherstelle MC(0) 106 generieren, falls die Speicherstelle MC(0) 106 nicht mit einer der Speicherfehlerstellen-eMC-Adressen 126, 128, 130, 132, 134, 136 im Fehlerverlaufsprotokoll 124 übereinstimmt.
  • Falls der beispielhafte Fehleranalysator 102 bei Block 810 bestimmt, dass die Fehlerstelle keine neue Fehlerstelle ist, dann aktualisiert der Fehleranalysator 102 bei Block 814 einen bestehenden Zähler für die Fehlerstelle. Zum Beispiel kann der Fehlermanager 118 den eMC(0) Zähler 138 (1) entsprechend der Speicherfehlerstellen-eMC(0)-Adresse 126 aktualisieren, wenn die Speicherstelle MC(0) 106 mit der Speicherfehlerstellen-eMC(0)-Adresse 126 übereinstimmt.
  • Bei Block 816 bestimmt der beispielhafte Fehleranalysator 102, ob der Zähler einen Schwellenwert für ein adaptives Zeitfenster erreicht. Zum Beispiel kann der adaptive Schwellenwertmanager 120 (1-3 und 6) den eMC(0) Zähler 138 mit dem Schwellenwert für ein adaptives Zeitfenster 121 (1-3 und 6) vergleichen und bestimmen, ob der eMC(0) Zähler 138 den Schwellenwert für ein adaptives Zeitfenster 121 erreicht.
  • Falls bei Block 816 der beispielhafte Fehleranalysator 102 bestimmt, dass der Zähler den Schwellenwert für ein adaptives Zeitfenster nicht erreicht, kehrt die Steuerung zu Block 802 zurück, um zusätzliche Fehlerstatuspininformationen zu erhalten. Falls der beispielhafte Fehleranalysator 102 bei Block 816 bestimmt, dass der Zähler den Schwellenwert für ein adaptives Zeitfenster erreicht, löst dann der Fehleranalysator 102 bei Block 818 eine Durchführung einer Speicherkorrekturmaßnahme aus. Zum Beispiel kann der Befehlsgenerator 122 (1-4 und 6) einen Speicherkorrekturbefehl generieren und senden, um die Fehlerkorrektureinheit 112 zu lenken, eine ADDDC-Maßnahme durchzuführen.
  • Bei Block 820 bestimmt der beispielhafte Fehleranalysator 102, ob eine Überwachung des Fehlerstatuspins 115 fortzusetzen ist. Zum Beispiel kann die Speichersteuerungsschnittstelle 600 (6) bestimmen, die Überwachung des Fehlerstatuspins 115 des Speichermonitors 110 fortzusetzen. Falls bei Block 820 der beispielhafte Fehleranalysator 102 bestimmt, die Überwachung des Fehlerstatuspins 115 fortzusetzen, kehrt die Steuerung zu Block 802 zurück, um zusätzliche Fehlerstatuspininformationen zu erhalten, andernfalls endet das beispielhafte Verfahren 800.
  • Zusätzliche Einzelheiten in Verbindung mit einem Auslösen einer Speicherkorrekturmaßnahme (8, Block 818) sind in 9 dargestellt. 9 ist ein Ablaufdiagramm, das für ein beispielhaftes Verfahren 900 repräsentativ ist, das durch die beispielhafte Speichersteuerung 100 von 1-5 durchgeführt werden kann, um einen Speicherfehler in einer Speichereinrichtung zu korrigieren. Das beispielhafte Verfahren 900 beginnt bei Block 902, wenn die beispielhafte Speichersteuerung 100 eine Fehlerstelle erhält. Zum Beispiel kann die Fehleranalysatorschnittstelle 510 (5) einen Speicherkorrekturbefehl vom Befehlsgenerator 122 über den PECI-Bus 208 (2) erhalten. In solchen Beispielen kann die Fehlerkorrektureinheit 112 (1-5) basierend auf Informationen im Speicherkorrekturbefehl bestimmen, dass die Fehlerstelle die Speicherstelle MC(0) 106 ist.
  • Bei Block 904 bestimmt die beispielhafte Speichersteuerung 100, ob die Fehlerstelle zuvor einem adaptiven virtuellen Lockstep (AVL) unterzogen wurde. Zum Beispiel kann die Fehlerkorrektureinheit 112 bestimmen, dass die Speicherstelle MC(0) 106 in der Bank 0 316 (3) ist, die durch eine AVL-Regel, eine Lockstep-Partnerschaft usw. geregelt wird. In einem solchen Beispiel kann die Fehlerkorrektureinheit 112 bestimmen, dass die Bank 0 316 in einer Lockstep-Partnerschaft mit der Bank 0 402 ist.
  • Falls die beispielhafte Speichersteuerung 100 bei Block 904 bestimmt, dass die Fehlerstelle zuvor einem AVL unterzogen wurde, fährt die Steuerung mit Block 912 fort um zu bestimmen, ob ein Fehlerkorrekturcode (ECC)-Algorithmus durchzuführen ist. Falls die beispielhafte Speichersteuerung 100 bei Block 904 bestimmt, dass die Fehlerstelle zuvor keinem AVL unterzogen wurde, liest die Speichersteuerung 100 dann bei Block 906 Daten aus einem primären Datenbus und einem sekundären Datenbus. Zum Beispiel kann die Speicherschnittstelle 500 (5) Daten über den primären Datenbus 312 und dem sekundären Datenbus 314 ( 3 und 5) aus der Bank 0 316 lesen.
  • Bei Block 908 ordnet die beispielhafte Speichersteuerung 100 die Daten gemäß einer AVL-Regel neu. Zum Beispiel kann die Fehlerkorrektureinheit 112 die Daten gemäß einer oder mehreren AVL-Regeln, Lockstep-Partnerschaften usw. neu anordnen. Bei Block 910 schreibt die beispielhafte Speichersteuerung 100 die Daten in den primären Datenbus und den sekundären Datenbus. Zum Beispiel kann die Speicherschnittstelle 500 die neu angeordneten Daten über die Datenbusse 312, 314 zur Bank 0 316 zurück schreiben.
  • Bei Block 912 bestimmt die beispielhafte Speichersteuerung 100, ob ein Fehlerkorrektur-code (ECC)-Algorithmus durchzuführen ist. Zum Beispiel kann die Fehlerkorrektureinheit 112 bestimmen, dass sie keinen ECC-Algorithmus durchführen kann, da eine Anzahl von Fehlern, die im Rang 308 von 3-4, enthaltend die Speicherstelle MC(0) 106, korrigiert wurden, einen korrigierten Fehlerschwellenwert erreicht hat (z.B. wurden mehr als zwei Fehler im Rang 308 usw. korrigiert).
  • Falls die beispielhafte Speichersteuerung 100 bei Block 912 bestimmt, einen ECC-Algorithmus nicht durchzuführen, fährt die Steuerung mit Block 916 fort um zu bestimmen, ob die Daten zu einer ECC-Einrichtung bewegt werden. Falls jedoch die beispielhafte Speichersteuerung 100 bei Block 912 bestimmt, einen ECC-Algorithmus durchzuführen, führt die Speichersteuerung 100 dann bei Block 914 einen ECC-Algorithmus durch. Zum Beispiel kann die Fehlerkorrektureinheit 112 einen ECC-Algorithmus durchführen, um den Fehler in der Speicherstelle MC(0) 106 zu korrigieren.
  • Bei Block 916 bestimmt die beispielhafte Speichersteuerung 100, ob die Daten zu einer ECC-Einrichtung bewegt werden. Zum Beispiel kann die Fehlerkorrektureinheit 112 bestimmen, die Daten zu einer Reserveregion in der ECC-Einrichtung 114 zu bewegen, falls die Anzahl korrigierter Fehler im Rang 308 den korrigierten Fehlerschwellenwert erreicht hat. Falls die beispielhafte Speichersteuerung 100 bei Block 916 bestimmt, die Daten zu einer ECC-Einrichtung zu bewegen, bewegt die Speichersteuerung 100 die Daten dann bei Block 918 zur ECC-Einrichtung. Das beispielhafte Verfahren 900 endet.
  • 10 ist ein Blockdiagramm einer beispielhaften Prozessorplattform 1000, die imstande ist, Anweisungen zum Implementieren des Prozesses von 9 durchzuführen, um die beispielhafte Speichersteuerung 100 von 1-5 zu implementieren. Alternativ kann eine Hardware Implementierung (z.B. eine analoge und/oder logische Schaltung) der beispielhaften Speichersteuerung 100 in der beispielhaften Prozessorplattform 1000 implementiert sein. Die Prozessorplattform 1000 kann zum Beispiel ein Server, ein Personal Computer, eine mobile Einrichtung (z.B. ein Mobiltelefon, ein Smartphone, ein Tablet wie ein iPad™), ein Personal Digital Assistant (PDA), ein Internet-Gerät, ein DVD-Player, ein CD-Player, ein Digitalvideorecorder, ein Blu-ray Player, eine Spielkonsole, ein persönlicher Videorecorder, eine Set Top Box oder jede andere Art von Recheneinrichtung sein.
  • Die Prozessorplattform 1000 des gezeigten Beispiels enthält einen Prozessor 1012. Der Prozessor 1012 des gezeigten Beispiels ist Hardware. Zum Beispiel kann der Prozessor 1012 durch eine oder mehrere integrierte Schaltungen, Logikschaltungen, Mikroprozessoren oder Steuerungen von jeder gewünschten Familie oder jedem Hersteller implementiert sein. Der Hardware-Prozessor kann eine Halbleiter-basierte (z.B. siliziumbasierte) Einrichtung sein. In diesem Beispiel implementiert der Prozessor 1012 den beispielhaften Speichermonitor 110, die beispielhafte Fehlerkorrektureinheit 112, die beispielhafte Speicherschnittstelle 500 und die beispielhafte Fehleranalysatorschnittstelle 510.
  • Der Prozessor 1012 des gezeigten Beispiels enthält einen lokalen Speicher 1013 (z.B. einen Cache). Der Prozessor 1012 des gezeigten Beispiels ist mit einem Hauptspeicher, der einen flüchtigen Speicher 1014 und einen nicht flüchtigen Speicher 1016 enthält, über einen Bus 1018 in Kommunikation. Der flüchtige Speicher 1014 kann durch einen synchronen dynamischen Direktzugriffsspeicher (SDRAM), dynamischen Direktzugriffsspeicher (DRAM), RAMBUS dynamischen Direktzugriffsspeicher (RDRAM) und/oder jede andere Art von Direktzugriffsspeichereinrichtung implementiert sein. Der flüchtige Speicher 1014 implementiert die Speichermodule 202 von 2, das Speichermodul 0 202a von 3, das Speichermodul 1 202b von 3 und/oder das Speichermodul 2 202c von 3-4. Der nicht flüchtige Speicher 1016 kann durch Flash-Speicher und/oder jede andere gewünschte Art von nicht flüchtiger Speichereinrichtung implementiert sein. Zugriff auf den Hauptspeicher 1014, 1016 wird durch eine Speichersteuerung (z.B. die Speichersteuerung 100 von 1-5) gesteuert.
  • Die Prozessorplattform 1000 des gezeigten Beispiels enthält auch eine Schnittstellenschaltung 1020. Die Schnittstellenschaltung 1020 kann durch jede Art von Schnittstellenstandard, wie eine Ethernet-Schnittstelle, einen Universal Serial Bus (USB) und/oder eine PCI-Express-Schnittstelle implementiert sein.
  • In dem gezeigten Beispiel sind eine oder mehrere Eingabeeinrichtungen 1022 mit der Schnittstellenschaltung 1020 verbunden. Die Eingabeeinrichtung(en) 1022 ermöglicht (ermöglichen) einem Benutzer, Daten und/oder Befehle in den Prozessor 1012 einzugeben. Die Eingabeeinrichtung(en) kann (können) zum Beispiel durch einen Audiosensor, ein Mikrophon, eine Kamera (Standbild oder Video), eine Tastatur, eine Taste, eine Maus, einen Berührungsbildschirm, ein Track-Pad, einen Trackball, einen Isopoint und/oder ein Spracherkennungssystem implementiert sein.
  • Eine oder mehrere Ausgabeeinrichtungen 1024 sind auch mit der Schnittstellenschaltung 1020 des gezeigten Beispiels verbunden. Die Ausgabeeinrichtungen 1024 können zum Beispiel durch Anzeigeeinrichtungen (z.B. eine Leuchtdiode (LED), eine organische Leuchtdiode (OLED), eine Flüssigkristallanzeige, eine Kathodenstrahlröhrenanzeige (CRT, Cathode Ray Tube), einen Berührungsbildschirm, eine taktile Ausgabeeinrichtung, einen Drucker und/oder Lautsprecher) implementiert sein. Die Schnittstellenschaltung 1020 des gezeigten Beispiels enthält somit typischerweise eine Grafiktreiberkarte, einen Grafiktreiber-Chip und/oder einen Grafiktreiberprozessor.
  • Die Schnittstellenschaltung 1020 des gezeigten Beispiels enthält auch eine Kommunikationseinrichtung wie einen Sender, einen Empfänger, einen Sendeempfänger, ein Modem und/oder eine Netzwerkschnittstellenkarte, um einen Austausch von Daten mit externen Maschinen (z.B. Recheneinrichtungen beliebiger Art) über ein Netzwerk 1026 (z.B. eine Ethernet-Verbindung, einen digitalen Teilnehmeranschluss (DSL, Digital Subscriber Line), eine Telefonleitung, ein Koaxialkabel, ein Mobiltelefonsystem usw.) zu erleichtern.
  • Die Prozessorplattform 1000 des gezeigten Beispiels enthält auch eine oder mehrere Massendatenspeichereinrichtungen 1028 zum Speichern von Software und/oder Daten. Beispiele für solche Massendatenspeichereinrichtungen 1028 enthalten Diskettenlaufwerke, Festplattenlaufwerke, Compact Disk-Laufwerke, Blu-ray Disk-Laufwerke, RAID-Systeme und Digital Versatile Disk (DVD)-Laufwerke.
  • In einigen Beispielen können codierte Anweisungen 1032, die in den Massendatenspeichereinrichtung 1028, im lokalen Speicher 1013, im flüchtigen Speicher 1014, im nicht flüchtigen Speicher 1016 und/oder auf einem entfernbaren, greifbaren, computerlesbaren Datenspeichermedium wie einer CD oder DVD gespeichert sind, bereitgestellt sein, um den beispielhaften Prozess von 9 zu implementieren.
  • 11 ist ein Blockdiagramm einer beispielhaften Prozessorplattform 1100, die imstande ist, Anweisungen zum Implementieren der Prozesse von 7-8 auszuführen, um den beispielhaften Fehleranalysator 102 von 1-4 und 6 zu implementieren. Alternativ kann eine Hardware- (z.B. eine analoge und/oder logische Schaltung) Implementierung des beispielhaften Fehleranalysators 102 in der beispielhaften Prozessorplattform 1100 implementiert sein. Die Prozessorplattform 1100 kann zum Beispiel ein Server, ein Personal Computer, eine Mobileinrichtung (z.B. ein Mobiltelefon, ein Smartphone, ein Tablet wie an iPad™), ein Personal Digital Assistant (PDA), ein Internet-Gerät, ein DVD-Player, ein CD-Player, ein Digitalvideorecorder, ein Blu-ray Player, eine Spielkonsole, eine Personal Videorecorder, eine Set Top Box oder eine andere Art von Recheneinrichtung sein.
  • Die Prozessorplattform 1100 des gezeigten Beispiels enthält einen Prozessor 1112. Der Prozessor 1112 des gezeigten Beispiels ist Hardware. Zum Beispiel kann der Prozessor 1112 durch eine oder mehrere integrierte Schaltungen, Logikschaltungen, Mikroprozessoren oder Steuerungen aus jeder gewünschten Familie oder von jedem gewünschten Hersteller implementiert sein. Der Hardware-Prozessor kann eine Halbleiter-basierte (z.B. siliziumbasierte) Einrichtung sein. In diesem Beispiel implementiert der Prozessor 1112 den beispielhaften Fehlermanager 118, den beispielhaften adaptiven Schwellenwertmanager 120, den beispielhaften Befehlsgenerator 122 und die beispielhafte Speichersteuerungsschnittstelle 600.
  • Der Prozessor 1112 des gezeigten Beispiels enthält einen lokalen Speicher 1113 (z.B. einen Cache). Der Prozessor 1112 des gezeigten Beispiels ist über einen Bus 1118 in Kommunikation mit einem Hauptspeicher, der einen flüchtigen Speicher 1114 und einen nicht flüchtigen Speicher 1116 enthält. Der flüchtige Speicher 1114 kann durch einen synchronen dynamischen Direktzugriffsspeicher (SDRAM), dynamischen Direktzugriffsspeicher (DRAM), RAMBUS dynamischen Direktzugriffsspeicher (RDRAM) und/oder jede Art von Direktzugriffsspeichereinrichtung implementiert sein. Der nicht flüchtige Speicher 1116 kann durch einen Flash-Speicher und/oder eine andere gewünschte Art von nicht flüchtiger Speichereinrichtung implementiert sein. Zugang zum Hauptspeicher 1114, 1116 ist durch eine Speichersteuerung (z.B. die Speichersteuerung 100 von 1-5) implementiert.
  • Die Prozessorplattform 1100 des gezeigten Beispiels enthält auch eine Schnittstellenschaltung 1120. Die Schnittstellenschaltung 1120 kann durch jede Art von Schnittstellenstandard, wie eine Ethernet-Schnittstelle, einen Universal Serial Bus (USB) und/oder eine PCI Express-Schnittstelle implementiert sein.
  • In dem gezeigten Beispiel sind eine oder mehrere Eingabeeinrichtungen 1122 mit der Schnittstellenschaltung 1120 verbunden. Die Eingabeeinrichtung(en) 1122 erlaubt (erlauben) einem Benutzer, Daten und/oder Befehle in den Prozessor 1112 einzugeben. Die Eingabeeinrichtung(en) kann (können), zum Beispiel durch einen Audiosensor, ein Mikrofon, eine Kamera (Standbild oder Video), eine Tastatur, eine Taste, eine Maus, einen Berührungsbildschirm, ein Track-Pad, einen Trackball, Isopoint und/oder ein Spracherkennungssystem implementiert sein.
  • Eine oder mehrere Ausgabeeinrichtungen 1124 sind auch mit der Schnittstellenschaltung 1120 des gezeigten Beispiels verbunden. Die Ausgabeeinrichtungen 1124 können zum Beispiel durch Anzeigeeinrichtungen (z.B. eine Leuchtdiode (LED), eine organische Leuchtdiode (OLED), eine Flüssigkristallanzeige, eine Kathodenstrahlröhrenanzeige (CRT), einen Berührungsbildschirm, eine taktile Ausgabeeinrichtung, einen Drucker und/oder Lautsprecher) implementiert sein. Die Schnittstellenschaltung 1120 des gezeigten Beispiels enthält somit typischerweise eine Grafiktreiberkarte, einen Grafiktreiber-Chip und/oder einen Grafiktreiberprozessor.
  • Die Schnittstellenschaltung 1120 des gezeigten Beispiels enthält auch eine Kommunikationseinrichtung wie einen Sender, einen Empfänger, einen Sendeempfänger, ein Modem und/oder eine Netzwerkschnittstellenkarte, um einen Austausch von Daten mit externen Maschinen (z.B. Recheneinrichtungen beliebiger Art) über ein Netzwerk 1126 (z.B. eine Ethernet-Verbindung, einen digitalen Teilnehmeranschluss (DSL), eine Telefonleitung, ein Koaxialkabel, ein Mobiltelefonsystem usw.) zu erleichtern.
  • Die Prozessorplattform 1100 des gezeigten Beispiels enthält auch eine oder mehrere Massendatenspeichereinrichtungen 1128 zum Speichern von Software und/oder Daten. Beispiele für solche Massendatenspeichereinrichtungen 1128 enthalten Diskettenlaufwerke, Festplattenlaufwerke, Compact Disk-Laufwerke, Blu-ray Disk-Laufwerke, RAID-Systeme und Digital Versatile Disk (DVD)-Laufwerke.
  • In einigen Beispielen können codierte Anweisungen 1132, die in den Massendatenspeichereinrichtung 1128, im lokalen Speicher 1113, im flüchtigen Speicher 1114, im nicht flüchtigen Speicher 1116 und/oder auf einem entfernbaren, greifbaren, computerlesbaren Datenspeichermedium wie einer CD oder DVD gespeichert sind, bereitgestellt sein, um den beispielhaften Prozess von 7-8 zu implementieren.
  • 12 ist ein beispielhaftes System 1200, das imstande ist, Anweisungen zum Implementieren des beispielhaften Prozesses von 9, um die beispielhafte Speichersteuerung 100 von 1-5 zu implementieren, und/oder zum Implementieren der beispielhaften Prozesse von 7-8, um den beispielhaften Fehleranalysator 102 von 1-4 und 6 zu implementieren, auszuführen. Alternativ kann eine Hardware- (z.B. eine analoge und/oder logische Schaltung) Implementierung der beispielhaften Speichersteuerung 100 und/oder des beispielhaften Fehleranalysators 102 in dem beispielhaften System 1200 verwendet werden.
  • In dem gezeigten Beispiel ist das System 1200 ein Server für Rackmontage. Alternativ kann das System 1200 jede beliebige andere Art von Recheneinrichtung oder System sein. Das System 1200 des gezeigten Beispiels enthält ein Chassis 1202, das entfernbar befestigte Stromversorgungen 1204 und entfernbar befestigte Server 1206 enthält. In dem gezeigten Beispiel enthalten die Server 1206 den Prozessor 1012 und den lokalen Speicher 1013 von 10 und den Prozessor 1112 und den lokalen Speicher 1113 von 11.
  • Die Prozessoren 1012, 1112 des gezeigten Beispiels sind mit dem flüchtigen Speicher 1208 über einen Bus 1210 in Kommunikation. In dem gezeigten Beispiel implementiert der Prozessor 1012 die beispielhafte Speichersteuerung 100, den beispielhaften Speichermonitor 110, die beispielhafte Fehlerkorrektureinheit 112, die beispielhafte Speicherschnittstelle 500 und die beispielhafte Fehleranalysatorschnittstelle 510. Ebenso implementiert in dem gezeigten Beispiel der Prozessor 1112 den beispielhaften Fehleranalysator 102, den beispielhaften Fehlermanager 118, den beispielhaften adaptiven Schwellenwertmanager 120, den beispielhaften Befehlsgenerator 122 und die beispielhafte Speichersteuerungsschnittstelle 600. Der flüchtige Speicher 1208 kann durch einen synchronen dynamischen Direktzugriffsspeicher (SDRAM), dynamischen Direktzugriffsspeicher (DRAM), RAMBUS dynamischen Direktzugriffsspeicher (RDRAM) und/oder eine andere Art von Direktzugriffsspeichereinrichtung implementiert sein. In einigen Beispielen implementiert der flüchtige Speicher 1208 den flüchtigen Speicher 1014, 1114 von 10-11. Zugriff auf den flüchtigen Speicher 1208 wird durch eine Speichersteuerung (z.B. die Speichersteuerung 100 von 1-5) gesteuert.
  • Die Server 1206 des gezeigten Beispiels enthalten auch eine beispielhafte Schnittstellenschaltung 1212. Die beispielhafte Schnittstellenschaltung 1212 kann durch jede Art von Schnittstellenstandard implementiert sein, wie eine Ethernet-Schnittstelle, einen Universal Serial Bus (USB) und/oder eine PCI Express-Schnittstelle. Die beispielhaften Server 1206 können über die Schnittstellenschaltung 1212 kommunikativ an andere Recheneinrichtungen oder Systeme gekoppelt sein.
  • In einigen Beispielen können die codierten Anweisungen 1032, die im lokalen Speicher 1013 und/oder im flüchtigen Speicher 1208 gespeichert sind, wie in 12 dargestellt, bereitgestellt sein, um den beispielhaften Prozess von 9 zu implementieren. In einigen Beispielen können die codierten Anweisungen 1132, die im lokalen Speicher 1113 und/oder im flüchtigen Speicher 1208 gespeichert sind, wie in 12 dargestellt, bereitgestellt sein, um die beispielhaften Prozesse von 7-8 zu implementieren. Zusätzlich oder alternativ können die Server 1206 zusätzliche Komponenten wie den nicht flüchtigen Speicher 1016, 1116 von 11-12, die Eingabeeinrichtungen 1022, 1122 von 11-12, die Ausgabeeinrichtungen 1024, 1124 von 11-12, den Massendatenspeicher 1028, 1128 von 11-12 usw. enthalten.
  • Hier offenbarte Beispiele verwenden Schwellenwerte für ein adaptives Zeitfenster und/oder Fehlerzähler zur Verbesserung einer Fehlerdetektions- und/oder -korrekturgenauigkeit und -flexibilität in Speichereinrichtungen relativ zu Techniken, die in früheren Speichereinrichtungen verwendet wurden. Zum Beispiel können Hardware-Lebenszyklus und Betriebsanforderungen in einen oder mehrere entsprechende Schwellenwerte für ein adaptives Zeitfenster übersetzt werden. Detektierte Speicherfehler können unter Verwendung von Fehlerzählern entsprechend einer Speicherstelle der detektierten Speicherfehler kategorisiert werden. Eine Speicherkorrekturmaßnahme kann basierend auf einem Fehlerzähler implementiert werden, der einen Schwellenwert für ein adaptives Zeitfenster erreicht. Auf diese Weise können hier offenbarte Beispiele zur Verbesserung einer Datenzuverlässigkeit von Speichereinrichtungen verwendet werden.
  • Hier offenbarte Beispiele sind zur Verbesserung einer Leistung in Verarbeitungsplattformen und Speichereinrichtungen relativ zu Techniken nützlich, die in früheren Speichereinrichtungen verwendet wurden. Beispielhafte Verbesserungen enthalten ein Verringern einer Frequenz von Hardware-Ressourcen, die zum Korrigieren von Speicherfehlern umgeleitet wurden, und somit zum deutlichen Erhöhen der Systemverfügbarkeit und -leistung. Zusätzlich verhindert eine Verwendung von hier offenbarten Beispielen eine Bewegung fehlerhafter Daten zu einer Reserveregion einer ECC-Einrichtung aufgrund von zufälligen Fehlern. Infolgedessen kann die Reserveregion der ECC-Einrichtung zum Bewegen von Daten von Speicherregionen, die von anhaltenden Fehlern betroffen sind, reserviert werden.
  • Folgendes betrifft weitere hier offenbarte Beispiele.
  • Beispiel 1 ist eine Vorrichtung zum Überwachen eines Speichers, der einen Fehlermanager enthält, um eine erste Speicherstelle eines ersten Fehlers im Speicher mit mehreren Speicherstellen in einem Fehlerverlaufsprotokoll zu vergleichen, wobei die mehreren Speicherstellen zuvor im Fehlerverlaufsprotokoll basierend auf Fehlern identifiziert wurden, die in den Speicherstellen detektiert wurden, wobei die Speicherstellen mit entsprechenden Zählern verknüpft sind, die die Fehlern verfolgen, die in den Speicherstellen detektiert wurden, und zum Aktualisieren eines ersten der Zähler entsprechend der ersten Speicherstelle, wenn eine erste Adresse der ersten Speicherstelle mit einer zweiten Adresse einer der Speicherstellen im Fehlerverlaufsprotokoll übereinstimmt. Die Vorrichtung enthält ferner einen Befehlsgenerator zum Senden eines Befehls an eine Fehlerkorrektureinheit, um eine Fehlerkorrektur an der ersten Speicherstelle durchzuführen, wenn der erste der Zähler einen Schwellenwert erreicht.
  • In Beispiel 2 kann der Gegenstand von Beispiel 1 optional den Fehlermanager enthalten, um einen zweiten Zähler entsprechend der ersten Speicherstelle zu generieren, wenn die erste Adresse der ersten Speicherstelle nicht mit der zweiten Adresse einer der Speicherstellen im Fehlerverlaufsprotokoll übereinstimmt.
  • In Beispiel 3 kann der Gegenstand von einem der Beispiele 1-2 optional eine Speichersteuerungsschnittstelle zum Überwachen einer Änderung in einem Spannungspegel eines Statuspins basierend auf einem Speichermonitor enthalten, der die erste Speicherstelle detektiert, wobei die erste Speicherstelle eine Speicherzelle enthält, und zum Erhalten der ersten Adresse der ersten Speicherstelle vom Speichermonitor, wenn sich der Spannungspegel des Statuspins ändert.
  • In Beispiel 4 kann der Gegenstand von einem der Beispiele 1-3 optional einen adaptiven Schwellenwertmanager zum Generieren des Schwellenwerts enthalten, wobei der Schwellenwert ein erster Schwellenwert für ein adaptives Zeitfenster ist, der erste Schwellenwert für ein adaptives Zeitfenster im Laufe der Zeit, basierend auf Änderungen in mindestens einem von Nutzung, einer Temperatur oder einer Elevation des Speichers, variabel ist, und zum Bestimmen, ob der erste Fehler ein zufälliger Fehler oder ein anhaltender Fehler ist, basierend darauf, dass der erste der Zähler den ersten Schwellenwert für ein adaptives Zeitfenster erreicht.
  • In Beispiel 5 kann der Gegenstand von einem der Beispiele 1-4 optional enthalten, dass der erste Schwellenwert für ein adaptives Zeitfenster auf einer Zeitdifferenz zwischen aufeinanderfolgenden Fehlern oder einer Gesamtzahl von Fehlern innerhalb eines Zeitfensters basiert.
  • In Beispiel 6 kann der Gegenstand von einem der Beispiele 1-5 optional enthalten, dass der adaptive Schwellenwertmanager einen zweiten der Zähler mit einem zweiten Schwellenwert für ein adaptives Zeitfenster vergleichen soll, wobei sich der zweite Schwellenwert für ein adaptives Zeitfenster vom ersten Schwellenwert für ein adaptives Zeitfenster unterscheidet.
  • In Beispiel 7 kann der Gegenstand von einem der Beispiele 1-6 optional enthalten, dass die Fehlerkorrektureinheit die Fehlerkorrektur unter Verwendung eines adaptiven Doppeleinrichtungs-Datenkorrekturprozesses durchführen soll.
  • Beispiel 8 ist eine Vorrichtung zum Überwachen eines Speichers, enthaltend erste Mittel zum Vergleichen einer ersten Speicherstelle eines ersten Fehlers im Speicher mit mehreren Speicherstellen in einem Fehlerverlaufsprotokoll, wobei die mehreren Speicherstellen zuvor im Fehlerverlaufsprotokoll basierend auf Fehlern identifiziert wurden, die in Speicherstellen detektiert wurden, wobei die Speicherstellen mit entsprechenden Zählern verknüpft sind, die die Fehler verfolgen, die in den Speicherstellen detektiert werden. Die Vorrichtung von Beispiel 8 enthält ferner zweite Mittel zum Aktualisieren eines ersten der Zähler entsprechend der ersten Speicherstelle, wenn eine erste Adresse der ersten Speicherstelle mit einer zweiten Adresse einer der Speicherstellen im Fehlerverlaufsprotokoll übereinstimmt. Die Vorrichtung von Beispiel 8 enthält ferner dritte Mittel zum Senden eines Befehls zu einem vierten Mittel, um eine Fehlerkorrektur an der ersten Speicherstelle durchzuführen, wenn der erste der Zähler einen Schwellenwert erreicht.
  • In Beispiel 9 kann der Gegenstand von Beispiel 8 optional Mittel zum Generieren eines zweiten Zählers entsprechend der ersten Speicherstelle enthalten, wenn die erste Adresse der ersten Speicherstelle nicht mit der zweiten Adresse einer der Speicherstellen im Fehlerverlaufsprotokoll übereinstimmt.
  • In Beispiel 10 kann der Gegenstand von einem der Beispiele 8-9 optional Mittel zum Überwachen einer Änderung in einem Spannungspegel eines Statuspins basierend auf einem Speichermonitor, der die erste Speicherstelle detektiert, wobei die erste Speicherstelle eine Speicherzelle enthält, und Mittel zum Erhalten der ersten Adresse der ersten Speicherstelle vom Speichermonitor, wenn sich der Spannungspegel des Statuspins ändert, enthalten.
  • In Beispiel 11 kann der Gegenstand von einem der Beispiele 8-10 optional enthalten, dass das vierte Mittel die Fehlerkorrektur unter Verwendung eines adaptiven Doppeleinrichtungs-Datenkorrektur Prozesses durchführen soll.
  • In Beispiel 12 kann der Gegenstand von einem der Beispiele 8-11 optional Mittel zum Generieren des Schwellenwerts, wobei der Schwellenwert ein erster Schwellenwert für ein adaptives Zeitfenster ist, der erste Schwellenwert für ein adaptives Zeitfenster im Laufe der Zeit, basierend auf Änderungen in mindestens einem von Nutzung, einer Temperatur oder einer Elevation des Speichers, variabel ist, und Mittel zum Bestimmen, ob der erste Fehler ein zufälliger Fehler oder ein anhaltender Fehler ist, basierend darauf, ob der erste der Zähler den ersten Schwellenwert für ein adaptives Zeitfenster erreicht, enthalten.
  • In Beispiel 13 kann der Gegenstand von einem der Beispiele 8-12 optional enthalten, dass der erste Schwellenwert für ein adaptives Zeitfenster auf einer Zeitdifferenz zwischen aufeinanderfolgenden Fehlern oder einer Gesamtzahl von Fehlern innerhalb eines Zeitfensters basiert.
  • In Beispiel 14 kann der Gegenstand von einem der Beispiele 8-13 optional Mittel zum Vergleichen eines zweiten der Zähler mit einem zweiten Schwellenwert für ein adaptives Zeitfenster enthalten, wobei sich der zweite Schwellenwert für ein adaptives Zeitfenster vom ersten Schwellenwert für ein adaptives Zeitfenster unterscheidet.
  • Beispiel 15 ist ein Verfahren zum Überwachen eines Speichers, enthaltend Vergleichen einer ersten Speicherstelle eines ersten Fehlers im Speicher mit mehreren Speicherstellen in einem Fehlerverlaufsprotokoll, wobei die mehreren Speicherstellen zuvor im Fehlerverlaufsprotokoll basierend auf Fehlern identifiziert wurden, die in Speicherstellen detektiert wurden, wobei die Speicherstellen mit entsprechenden Zählern verknüpft sind, die die Fehler verfolgen, die in den Speicherstellen detektiert werden. Das Verfahren von Beispiel 1 enthält ferner Aktualisieren eines ersten der Zähler entsprechend der ersten Speicherstelle, wenn eine erste Adresse der ersten Speicherstelle mit einer zweiten Adresse einer der Speicherstellen im Fehlerverlaufsprotokoll übereinstimmt, und Senden eines Befehls, um eine Fehlerkorrektur an der ersten Speicherstelle durchzuführen, wenn der erste der Zähler einen Schwellenwert erreicht.
  • In Beispiel 16 kann der Gegenstand von Beispiel 15 optional Generieren eines zweiten Zählers entsprechend der ersten Speicherstelle enthalten, wenn die erste Adresse der ersten Speicherstelle nicht mit der zweiten Adresse einer der Speicherstellen im Fehlerverlaufsprotokoll übereinstimmt.
  • In Beispiel 17 kann der Gegenstand von einem der Beispiele 15-16 optional Überwachen einer Änderung in einem Spannungspegel eines Statuspins, wobei die Änderung auf einem Detektieren der ersten Speicherstelle basiert, wobei die erste Speicherstelle eine Speicherzelle enthält, und in Antwort auf die Änderung im Spannungspegel des Statuspins, Erhalten der ersten Adresse der ersten Speicherstelle enthalten.
  • In Beispiel 18 kann der Gegenstand von einem der Beispiele 15-17 optional enthalten, dass Durchführen der Fehlerkorrektur Verwenden eines adaptiven Doppeleinrichtungs-Datenkorrekturprozesses enthält.
  • In Beispiel 19 kann der Gegenstand von einem der Beispiele 15-18 optional Generieren des Schwellenwerts, wobei der Schwellenwert ein erster Schwellenwert für ein adaptives Zeitfenster ist, der erste Schwellenwert für ein adaptives Zeitfenster im Laufe der Zeit, basierend auf Änderungen in mindestens einem von Nutzung, einer Temperatur oder einer Elevation des Speichers, variabel ist, und Bestimmen, ob der erste Fehler ein zufälliger Fehler oder ein anhaltender Fehler ist, basierend darauf, ob der erste der Zähler den ersten Schwellenwert für ein adaptives Zeitfenster erreicht, enthalten.
  • In Beispiel 20 kann der Gegenstand von einem der Beispiele 15-19 optional enthalten, dass der erste Schwellenwert für ein adaptives Zeitfenster auf einer Zeitdifferenz zwischen aufeinanderfolgenden Fehlern oder einer Gesamtzahl von Fehlern innerhalb eines Zeitfensters basiert.
  • In Beispiel 21 kann der Gegenstand von einem der Beispiele 15-20 optional Vergleichen eines zweiten der Zähler mit einem zweiten Schwellenwert für ein adaptives Zeitfenster enthalten, wobei sich der zweite Schwellenwert für ein adaptives Zeitfenster vom ersten Schwellenwert für ein adaptives Zeitfenster unterscheidet.
  • Beispiel 22 ist mindestens ein Herstellungsartikel, der maschinenlesbare Anweisungen enthält, die, wenn ausgeführt, eine Maschine veranlassen, mindestens eine erste Speicherstelle eines ersten Fehlers in Speicher mit mehreren Speicherstellen in einem Fehlerverlaufsprotokoll zu vergleichen, wobei die mehreren Speicherstellen zuvor im Fehlerverlaufsprotokoll basierend auf Fehlern identifiziert wurden, die in Speicherstellen detektiert wurden, wobei die Speicherstellen mit entsprechenden Zählern verknüpft sind, die die Fehler verfolgen, die in den Speicherstellen detektiert werden, einen ersten der Zähler entsprechend der ersten Speicherstelle zu aktualisieren, wenn eine erste Adresse der ersten Speicherstelle mit einer zweiten Adresse einer der Speicherstellen im Fehlerverlaufsprotokoll übereinstimmt, und einen Befehl zu senden, um eine Fehlerkorrektur an der ersten Speicherstelle durchzuführen, wenn der erste der Zähler einen Schwellenwert erreicht.
  • In Beispiel 23 kann der Gegenstand von Beispiel 22 optional enthalten, dass die Anweisungen die Maschine veranlassen, mindestens einen zweiten Zähler entsprechend der ersten Speicherstelle zu generieren, wenn die erste Adresse der ersten Speicherstelle nicht mit der zweiten Adresse einer der Speicherstellen im Fehlerverlaufsprotokoll übereinstimmt.
  • In Beispiel 24 kann der Gegenstand von einem der Beispiele 22-23 optional enthalten, dass die Anweisungen die Maschine veranlassen, mindestens eine Änderung in einem Spannungspegel eines Statuspins zu veranlassen, wobei die Änderung auf einem Detektieren der ersten Speicherstelle basiert, wobei die erste Speicherstelle eine Speicherzelle enthält, und in Antwort auf die Änderung im Spannungspegel des Statuspins, die erste Adresse der ersten Speicherstelle zu erhalten.
  • In Beispiel 25 kann der Gegenstand von einem der Beispiele 22-24 optional enthalten, dass Durchführen der Fehlerkorrektur Verwenden eines adaptiven Doppeleinrichtungs-Datenkorrekturprozesses enthält.
  • In Beispiel 26 kann der Gegenstand von einem der Beispiele 22-25 optional enthalten, dass die Anweisungen die Maschine veranlassen, mindestens den Schwellenwert zu generieren, wobei der Schwellenwert ein erster Schwellenwert für ein adaptives Zeitfenster ist, der erste Schwellenwert für ein adaptives Zeitfenster im Laufe der Zeit, basierend auf Änderungen in mindestens einem von Nutzung, einer Temperatur oder einer Elevation des Speichers, variabel ist, und zu bestimmen, ob der erste Fehler ein zufälliger Fehler oder ein anhaltender Fehler ist, basierend darauf, ob der erste der Zähler den ersten Schwellenwert für ein adaptives Zeitfenster erreicht.
  • In Beispiel 27 kann der Gegenstand von einem der Beispiele 22-26 optional enthalten, dass der erste Schwellenwert für ein adaptives Zeitfenster auf einer Zeitdifferenz zwischen aufeinanderfolgenden Fehlern oder einer Gesamtzahl von Fehlern innerhalb eines Zeitfensters basiert.
  • In Beispiel 28 kann der Gegenstand von einem der Beispiele 22-27 optional enthalten, dass die Anweisungen die Maschine veranlassen, mindestens einen zweiten der Zähler mit einem zweiten Schwellenwert für ein adaptives Zeitfenster zu vergleichen, wobei sich der zweite Schwellenwert für ein adaptives Zeitfenster vom ersten Schwellenwert für ein adaptives Zeitfenster unterscheidet.
  • Obwohl gewisse beispielhafte Verfahren, Vorrichtungen und Herstellungsartikel hier offenbart wurden, ist der Abdeckungsumfang dieses Patents nicht darauf beschränkt. Im Gegenteil dieses Patent deckt alle Verfahren, Vorrichtungen und Herstellungsartikel ab, die den Regeln entsprechend in den Umfang der Ansprüche dieses Patents fallen.

Claims (28)

  1. Vorrichtung zum Überwachen eines Speichers, die Vorrichtung umfassend: einen Fehlermanager zum: Vergleichen einer ersten Speicherstelle eines ersten Fehlers im Speicher mit mehreren Speicherstellen in einem Fehlerverlaufsprotokoll, wobei die mehreren Speicherstellen zuvor im Fehlerverlaufsprotokoll basierend auf Fehlern identifiziert wurden, die in Speicherstellen detektiert wurden, wobei die Speicherstellen mit entsprechenden Zählern verknüpft sind, die die Fehler verfolgen, die in den Speicherstellen detektiert werden; und Aktualisieren eines ersten der Zähler entsprechend der ersten Speicherstelle, wenn eine erste Adresse der ersten Speicherstelle mit einer zweiten Adresse einer der Speicherstellen im Fehlerverlaufsprotokoll übereinstimmt; und einen Befehlsgenerator zum Senden eines Befehls an eine Fehlerkorrektureinheit zum Durchführen einer Fehlerkorrektur an der ersten Speicherstelle, wenn der erste der Zähler einen Schwellenwert erreicht.
  2. Vorrichtung nach Anspruch 1, ferner enthaltend den Fehlermanager zum Generieren eines zweiten Zählers entsprechend der ersten Speicherstelle, wenn die erste Adresse der ersten Speicherstelle nicht mit der zweiten Adresse einer der Speicherstellen im Fehlerverlaufsprotokoll übereinstimmt.
  3. Vorrichtung nach einem der Ansprüche 1 oder 2, ferner enthaltend eine Speichersteuerungsschnittstelle zum: Überwachen einer Änderung in einem Spannungspegel eines Statuspins basierend auf einem Speichermonitor, der die erste Speicherstelle detektiert, wobei die erste Speicherstelle eine Speicherzelle enthält; und Erhalten der ersten Adresse der ersten Speicherstelle vom Speichermonitor, wenn sich der Spannungspegel des Statuspins ändert.
  4. Vorrichtung nach einem der Ansprüche 1 oder 2, wobei die Fehlerkorrektureinheit die Fehlerkorrektur unter Verwendung eines adaptiven Doppeleinrichtungs-Datenkorrekturprozesses durchführen soll.
  5. Vorrichtung nach Anspruch 1, ferner enthaltend einen adaptiven Schwellenwertmanager zum: Generieren des Schwellenwerts, wobei der Schwellenwert ein erster Schwellenwert für ein adaptives Zeitfenster ist, wobei der erste Schwellenwert für ein adaptives Zeitfenster im Laufe der Zeit, basierend auf Änderungen in mindestens einem von Nutzung, einer Temperatur oder einer Elevation des Speichers, variabel ist; und Bestimmen, ob der erste Fehler ein zufälliger Fehler oder ein anhaltender Fehler ist, basierend darauf, ob der erste der Zähler den ersten Schwellenwert für ein adaptives Zeitfenster erreicht.
  6. Vorrichtung nach Anspruch 5, wobei der erste Schwellenwert für ein adaptives Zeitfenster auf einer Zeitdifferenz zwischen aufeinanderfolgenden Fehlern oder einer Gesamtzahl von Fehlern innerhalb eines Zeitfensters basiert.
  7. Vorrichtung nach einem der Ansprüche 5 oder 6, wobei der adaptive Schwellenwertmanager einen zweiten der Zähler mit einem zweiten Schwellenwert für ein adaptives Zeitfenster vergleichen soll, wobei sich der zweite Schwellenwert für ein adaptives Zeitfenster vom ersten Schwellenwert für ein adaptives Zeitfenster unterscheidet.
  8. Vorrichtung zum Überwachen eines Speichers, die Vorrichtung umfassend: erste Mittel zum Vergleichen einer ersten Speicherstelle eines ersten Fehlers im Speicher mit mehreren Speicherstellen in einem Fehlerverlaufsprotokoll, wobei die mehreren Speicherstellen zuvor im Fehlerverlaufsprotokoll basierend auf Fehlern identifiziert wurden, die in Speicherstellen detektiert wurden, wobei die Speicherstellen mit entsprechenden Zählern verknüpft sind, die die Fehler verfolgen, die in den Speicherstellen detektiert werden; zweite Mittel zum Aktualisieren eines ersten der Zähler entsprechend der ersten Speicherstelle, wenn eine erste Adresse der ersten Speicherstelle mit einer zweiten Adresse einer der Speicherstellen im Fehlerverlaufsprotokoll übereinstimmt; und dritte Mittel zum Senden eines Befehls zu einem vierten Mittel, um eine Fehlerkorrektur an der ersten Speicherstelle durchzuführen, wenn der erste der Zähler einen Schwellenwert erreicht.
  9. Vorrichtung nach Anspruch 8, ferner enthaltend Mittel zum Generieren eines zweiten Zählers entsprechend der ersten Speicherstelle, wenn die erste Adresse der ersten Speicherstelle nicht mit der zweiten Adresse einer der Speicherstellen im Fehlerverlaufsprotokoll übereinstimmt.
  10. Vorrichtung nach einem der Ansprüche 8 oder 9, ferner enthaltend: Mittel zum Überwachen einer Änderung in einem Spannungspegel eines Statuspins basierend auf einem Speichermonitor, der die erste Speicherstelle detektiert, wobei die erste Speicherstelle eine Speicherzelle enthält; und Mittel zum Erhalten der ersten Adresse der ersten Speicherstelle vom Speichermonitor, wenn sich der Spannungspegel des Statuspins ändert.
  11. Vorrichtung nach einem der Ansprüche 8 oder 9, wobei das vierte Mittel die Fehlerkorrektur unter Verwendung eines adaptiven Doppeleinrichtungs-Datenkorrekturprozesses durchführen soll.
  12. Vorrichtung nach Anspruch 8, ferner enthaltend: Mittel zum Generieren des Schwellenwerts, wobei der Schwellenwert ein erster Schwellenwert für ein adaptives Zeitfenster ist, der erste Schwellenwert für ein adaptives Zeitfenster im Laufe der Zeit, basierend auf Änderungen in mindestens einem von Nutzung, einer Temperatur oder einer Elevation des Speichers, variabel ist; und Mittel zum Bestimmen, ob der erste Fehler ein zufälliger Fehler oder ein anhaltender Fehler ist, basierend darauf, ob der erste der Zähler den ersten Schwellenwert für ein adaptives Zeitfenster erreicht.
  13. Vorrichtung nach Anspruch 12, wobei der erste Schwellenwert für ein adaptives Zeitfenster auf einer Zeitdifferenz zwischen aufeinanderfolgenden Fehlern oder einer Gesamtzahl von Fehlern innerhalb eines Zeitfensters basiert.
  14. Vorrichtung nach einem der Ansprüche 12 oder 13, ferner enthaltend Mittel zum Vergleichen eines zweiten der Zähler mit einem zweiten Schwellenwert für ein adaptives Zeitfenster, wobei sich der zweite Schwellenwert für ein adaptives Zeitfenster vom ersten Schwellenwert für ein adaptives Zeitfenster unterscheidet.
  15. Verfahren zum Überwachen eines Speichers, das Verfahren umfassend: Vergleichen einer ersten Speicherstelle eines ersten Fehlers im Speicher mit mehreren Speicherstellen in einem Fehlerverlaufsprotokoll, wobei die mehreren Speicherstellen zuvor im Fehlerverlaufsprotokoll basierend auf Fehlern identifiziert wurden, die in Speicherstellen detektiert wurden, wobei die Speicherstellen mit entsprechenden Zählern verknüpft sind, die die Fehler verfolgen, die in den Speicherstellen detektiert werden; Aktualisieren eines ersten der Zähler entsprechend der ersten Speicherstelle, wenn eine erste Adresse der ersten Speicherstelle mit einer zweiten Adresse einer der Speicherstellen im Fehlerverlaufsprotokoll übereinstimmt; und Senden eines Befehls, um eine Fehlerkorrektur an der ersten Speicherstelle durchzuführen, wenn der erste der Zähler einen Schwellenwert erreicht.
  16. Verfahren nach Anspruch 15, ferner enthaltend Generieren eines zweiten Zählers entsprechend der ersten Speicherstelle, wenn die erste Adresse der ersten Speicherstelle nicht mit der zweiten Adresse einer der Speicherstellen im Fehlerverlaufsprotokoll übereinstimmt.
  17. Verfahren nach einem der Ansprüche 15 oder 16, ferner enthaltend: Überwachen einer Änderung in einem Spannungspegel eines Statuspins, wobei die Änderung auf einem Detektieren der ersten Speicherstelle basiert, wobei die erste Speicherstelle eine Speicherzelle enthält; und in Antwort auf die Änderung im Spannungspegel des Statuspins, Erhalten der ersten Adresse der ersten Speicherstelle.
  18. Verfahren nach einem der Ansprüche 15 oder 16, wobei ein Durchführen der Fehlerkorrektur Verwenden eines adaptiven Doppeleinrichtungs-Datenkorrekturprozesses enthält.
  19. Verfahren nach Anspruch 15, ferner enthaltend: Generieren des Schwellenwerts, wobei der Schwellenwert ein erster Schwellenwert für ein adaptives Zeitfenster ist, der erste Schwellenwert für ein adaptives Zeitfenster im Laufe der Zeit, basierend auf Änderungen in mindestens einem von Nutzung, einer Temperatur oder einer Elevation des Speichers, variabel ist; und Bestimmen, ob der erste Fehler ein zufälliger Fehler oder ein anhaltender Fehler ist, basierend darauf, ob der erste der Zähler den ersten Schwellenwert für ein adaptives Zeitfenster erreicht.
  20. Verfahren nach Anspruch 19, wobei der erste Schwellenwert für ein adaptives Zeitfenster auf einer Zeitdifferenz zwischen aufeinanderfolgenden Fehlern oder einer Gesamtzahl von Fehlern innerhalb eines Zeitfensters basiert.
  21. Verfahren nach einem der Ansprüche 19 oder 20, ferner enthaltend Vergleichen eines zweiten der Zähler mit einem zweiten Schwellenwert für ein adaptives Zeitfenster, wobei sich der zweite Schwellenwert für ein adaptives Zeitfenster vom ersten Schwellenwert für ein adaptives Zeitfenster unterscheidet.
  22. Nicht transitorisches computerlesbares Datenspeichermedium, umfassend Anweisungen die, wenn ausgeführt, eine Maschine veranlassen zum mindestens: Vergleichen einer ersten Speicherstelle eines ersten Fehlers im Speicher mit mehreren Speicherstellen in einem Fehlerverlaufsprotokoll, wobei die mehreren Speicherstellen zuvor im Fehlerverlaufsprotokoll basierend auf Fehlern identifiziert wurden, die in Speicherstellen detektiert wurden, wobei die Speicherstellen mit entsprechenden Zählern verknüpft sind, die die Fehler verfolgen, die in den Speicherstellen detektiert werden; Aktualisieren eines ersten der Zähler entsprechend der ersten Speicherstelle, wenn eine erste Adresse der ersten Speicherstelle mit einer zweiten Adresse einer der Speicherstellen im Fehlerverlaufsprotokoll übereinstimmt; und Senden eines Befehls, um eine Fehlerkorrektur an der ersten Speicherstelle durchzuführen, wenn der erste der Zähler einen Schwellenwert erreicht.
  23. Nicht transitorisches computerlesbares Datenspeichermedium nach Anspruch 22, ferner enthaltend Anweisungen die, wenn ausgeführt, die Maschine veranlassen zum mindestens Generieren eines zweiten Zählers entsprechend der ersten Speicherstelle, wenn die erste Adresse der ersten Speicherstelle nicht mit der zweiten Adresse einer der Speicherstellen im Fehlerverlaufsprotokoll übereinstimmt.
  24. Nicht transitorisches computerlesbares Datenspeichermedium nach einem der Ansprüche 22 oder 23, ferner enthaltend Anweisungen die, wenn ausgeführt, die Maschine veranlassen zum mindestens: Überwachen einer Änderung in einem Spannungspegel eines Statuspins, wobei die Änderung auf einem Detektieren der ersten Speicherstelle basiert, wobei die erste Speicherstelle eine Speicherzelle enthält; und in Antwort auf die Änderung im Spannungspegel des Statuspins, Erhalten der ersten Adresse der ersten Speicherstelle.
  25. Nicht transitorisches computerlesbares Datenspeichermedium nach einem der Ansprüche 22 oder 23, wobei Durchführen der Fehlerkorrektur Verwenden eines adaptiven Doppeleinrichtungs-Datenkorrekturprozesses enthält.
  26. Nicht transitorisches computerlesbares Datenspeichermedium nach Anspruch 22, ferner enthaltend Anweisungen die, wenn ausgeführt, die Maschine veranlassen zum mindestens: Generieren des Schwellenwerts, wobei der Schwellenwert ein erster Schwellenwert für ein adaptives Zeitfenster ist, der erste Schwellenwert für ein adaptives Zeitfenster im Laufe der Zeit, basierend auf Änderungen in mindestens einem von Nutzung, einer Temperatur oder einer Elevation des Speichers, variabel ist; und Bestimmen, ob der erste Fehler ein zufälliger Fehler oder ein anhaltender Fehler ist, basierend darauf, ob der erste der Zähler den ersten Schwellenwert für ein adaptives Zeitfenster erreicht.
  27. Nicht transitorisches computerlesbares Datenspeichermedium nach Anspruch 26, wobei der erste Schwellenwert für ein adaptives Zeitfenster auf einer Zeitdifferenz zwischen aufeinanderfolgenden Fehlern oder einer Gesamtzahl von Fehlern innerhalb eines Zeitfensters basiert.
  28. Nicht transitorisches computerlesbares Datenspeichermedium nach Ansprüchen 26 oder 27, ferner enthaltend Anweisungen die, wenn ausgeführt, die Maschine veranlassen zum mindestens Vergleichen eines zweiten der Zähler mit einem zweiten Schwellenwert für ein adaptives Zeitfenster, wobei sich der zweite Schwellenwert für ein adaptives Zeitfenster vom ersten Schwellenwert für ein adaptives Zeitfenster unterscheidet.
DE112017007690.0T 2017-06-27 2017-06-27 Verfahren und vorrichtungen zur durchführung einer fehlerdetektion und/oder korrektur in einer speichervorrichtung Withdrawn DE112017007690T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2017/090259 WO2019000206A1 (en) 2017-06-27 2017-06-27 METHODS AND APPARATUS FOR PERFORMING ERROR DETECTION AND / OR CORRECTION IN A MEMORY DEVICE

Publications (1)

Publication Number Publication Date
DE112017007690T5 true DE112017007690T5 (de) 2020-03-12

Family

ID=64740855

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017007690.0T Withdrawn DE112017007690T5 (de) 2017-06-27 2017-06-27 Verfahren und vorrichtungen zur durchführung einer fehlerdetektion und/oder korrektur in einer speichervorrichtung

Country Status (3)

Country Link
US (1) US11080135B2 (de)
DE (1) DE112017007690T5 (de)
WO (1) WO2019000206A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11036543B1 (en) * 2019-06-14 2021-06-15 Amazon Technologies, Inc. Integrated reliability, availability, and serviceability state machine for central processing units
US11269708B2 (en) * 2019-12-30 2022-03-08 Micron Technology, Inc. Real-time trigger to dump an error log
US11269707B2 (en) 2019-12-30 2022-03-08 Micron Technology, Inc. Real-time trigger to dump an error log
US20220206875A1 (en) * 2020-12-24 2022-06-30 Intel Corporation Software visible and controllable lock-stepping with configurable logical processor granularities
KR20230121611A (ko) * 2020-12-26 2023-08-18 인텔 코포레이션 시스템 메모리 신뢰성, 가용성 및 서비스 가능성(ras)을개선하기 위한 적응형 오류 정정
CN112905376B (zh) * 2021-02-10 2023-01-10 山东英信计算机技术有限公司 一种错误上报的方法、装置及介质
KR102651975B1 (ko) * 2023-11-10 2024-03-27 코싸인온 주식회사 상호작용형 dram 신호 분석기 및 이를 이용한 dram 신호 분석 및 보정 방법

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08137764A (ja) * 1994-11-10 1996-05-31 Fujitsu Ltd 記憶装置のソフトエラー回復方法と固定障害検出方法
US6560725B1 (en) 1999-06-18 2003-05-06 Madrone Solutions, Inc. Method for apparatus for tracking errors in a memory system
JP4678363B2 (ja) 2006-11-30 2011-04-27 コニカミノルタビジネステクノロジーズ株式会社 画像形成装置
JP2012244305A (ja) * 2011-05-17 2012-12-10 Toshiba Corp メモリコントローラ、半導体メモリ装置、および復号方法
US9996445B2 (en) 2014-01-17 2018-06-12 International Business Machines Corporation Computer flight recorder with active error detection
US9606851B2 (en) 2015-02-02 2017-03-28 International Business Machines Corporation Error monitoring of a memory device containing embedded error correction
CN105843699B (zh) * 2015-02-02 2019-06-04 国际商业机器公司 用于错误监视与校正的动态随机存取存储器设备与方法
US9697094B2 (en) 2015-02-06 2017-07-04 Intel Corporation Dynamically changing lockstep configuration
US10108489B2 (en) * 2015-10-28 2018-10-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for efficient soft data based flash memory data recovery
JP7039298B2 (ja) * 2018-01-16 2022-03-22 キオクシア株式会社 メモリシステム

Also Published As

Publication number Publication date
WO2019000206A1 (en) 2019-01-03
US20200151056A1 (en) 2020-05-14
US11080135B2 (en) 2021-08-03

Similar Documents

Publication Publication Date Title
DE112017007690T5 (de) Verfahren und vorrichtungen zur durchführung einer fehlerdetektion und/oder korrektur in einer speichervorrichtung
DE102006048115B4 (de) System und Verfahren zum Aufzeichnen von behebbaren Fehlern
DE102012210232B4 (de) Vorbeugende Speicherreparatur auf der Grundlage der Analyse einer Vielzahl von Symbolen und Bereinigungszyklen
US7496823B2 (en) Hardware based memory scrubbing
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
DE102019117787B4 (de) Speichervorrichtung und Betriebsverfahren derselben
DE19882853B3 (de) Verfahren und Steuereinrichtung zum automatischen Korrigieren von in einem Speichersubsystem erfassten Fehlern und Computersystem, das eine solche Steuereinrichtung aufweist
DE102013021679A1 (de) Rettung von Ereignisnachverfolgungsinformationen bei Stromausfall-Unterbrechungsszenarien
DE102011089889A1 (de) Verfahren zum Booten eines Informationshandhabungssystems und Informationshandhabungssystem
CN104685474B (zh) 用于处理不可纠正的内存错误的方法及非瞬态处理器可读介质
DE102012214324A1 (de) Datenüberprüfung mithilfe eines Prüfsummen-Sidefile
DE102007058418A1 (de) Fehlerkorrektur in Speicherbauteilen
DE112007003015T5 (de) Verfahren und Vorrichtung zur Cache-gestützten Fehlerdetektion und -korrektur in einem Speicher
US20080276129A1 (en) Software tracing
DE112011106079T5 (de) Frühe Weiterleitung von Gewebefehlern
DE112019003288T5 (de) Verwenden eines moduls mit maschinellem lernen, um zu ermitteln, wann eine fehlerprüfung eines speicherelements durchzuführen ist
DE102014204076A1 (de) Serielle kommunikation-testeinrichtung, system, welches diese beinhaltet, und verfahren dafür
DE102018124628A1 (de) System, Gerät und Verfahren zum funktionellen Testen eines oder mehrerer Gefüge eines Prozessors
DE102020115747A1 (de) Speichermodul, Fehlerkorrekturverfahren für Speicher-Controller, der dieses steuert, und Rechensystem, das dieses umfasst
DE112020001219T5 (de) Aufgeschobene Fehlercodekorrektur mit verbesserter effektiver Datenbandbreitenleistung
US20190317875A1 (en) Electronic device and method for event logging
DE102020105939A1 (de) Enhanced-Serial-Peripheral-Interface-(eSPI)-Signalisierung zurAbsturzereignisbenachrichtigung
DE102018120964A1 (de) Integrierte Schaltungsspeichervorrichtungen mit verbesserter Pufferspeichernutzung während Lese- und Schreiboperationen
DE102019102886A1 (de) Prozessor mit eingebettetem nichtflüchtigen Direktzugriffsspeicher zum Unterstützen von Prozessorüberwachungssoftware
DE112018008197T5 (de) Laufzeit-Nach-Paket-Reparatur für Speicher

Legal Events

Date Code Title Description
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee