-
HINTERGRUND
-
Speichermodule wie Dual Inline Memory Module (DIMMs), sind manchmal fehleranfällig, was zu Speicherausfall führen kann. Bestehende Methoden zur Bereitstellung von Speichermodulen mit Fehlertoleranz, wie zum Beispiel die Verwendung von Fehlerkorrekturcodes und Speicher-Sparing, können zur Reduzierung der Bandbreite oder der Speicherkapazität führen.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
ist eine schematische Darstellung eines beispielhaften Speichermoduls.
-
ist eine schematische Darstellung eines beispielhaften Rechnersystems einschließlich eines Beispiels des Speichermoduls aus .
-
ist ein Flussdiagramm einer beispielhaften Methode, die von dem System aus ausgeführt werden kann.
-
ist eine schematische Darstellung einer beispielhaften Implementierung des Speichermoduls aus .
-
ist eine schematische Darstellung des Speichermoduls aus mit einem ausgefallenen Speichergerät.
-
ist eine schematische Darstellung des Speichermoduls aus , bei dem ein gelöschtes Speichergerät einem Pufferspeicher neu zugeordnet wurde.
-
ist eine schematische Darstellung eines anderen beispielhaften Rechnersystems, bei dem Speichermodule mit einem Speichercontroller verbunden sind.
-
ist eine schematische Darstellung eines anderen beispielhaften Rechnersystems mit einem beispielhaften verteilten Datenpuffer.
-
ist ein Flussdiagramm einer beispielhaften Methode, die von den Rechensystemen aus den , und ausgeführt werden kann.
-
DETAILLIERTE BESCHREIBUNGEN DER BEISPIELHAFTEN AUSFÜHRUNGSFORMEN
-
stellt ein Beispiel eines Speichermoduls 20 schematisch dar. Speichermodul 20 dient der Verwendung in einem Rechnersystem, wobei Speichermodul 20 Speicherzellen oder einen Speicherort für Anwendungen und/oder Daten bereitstellt. Wie nachfolgend beschrieben bietet Speichermodul 20 Fehlertoleranz für Fehler, die im Speichermodul 20 auftreten, und reduziert oder eliminiert gleichzeitig jede damit verbundene Reduzierung der Bandbreite oder Speicherkapazität.
-
Speichermodul 20 umfasst eine in sich geschlossene oder unabhängige Speichereinheit, die einem Rechensystem modular hinzugefügt werden kann. In einer Implementierung kann Speichermodul 20 eine Leiterplatte oder Karten-Speichergeräte aufweisen und so angepasst werden können, dass sie lösbar oder entfernbar montiert und mit einem Rechnersystem verbunden sind. In einer Implementation kann das Speichermodul 20 als Teil eines Dual Inline Memory Moduls (DIMM) ausgebildet sein, dass in einer entsprechenden Buchse einer anderen Leiterplatte, wie zum Beispiel einer Hauptplatine, angebracht und elektrisch damit verbunden werden kann. In anderen Implementierungen ist Speichermodul 28 in Form anderer Arten von Speichermodulen ausgebildet, wie zum Beispiel Single Inline Memory Modules (SIMMs), Fully Buffered Dual Inline Memory Modules (FB DIMM DIMM, Load-Reduced DIMMs (LR-DIMM) und ähnlichen), die auf die gleiche oder andere Weise lösbar mit einem Rechensystem verbunden sind.
-
Speichermodul 20 umfasst Träger (Leiterplatte oder ähnliche Methode zur Verbindung von elektronischen Geräten) 22, Speichergeräte 24, Speichermodulpuffer 26 und Pufferspeicher 28. Träger 22 umfasst eine Stützkonstruktion, die eine Verbindungsmethode für Speichergeräte 24, Puffer 26 und Pufferspeicher 28 bereitstellt. In einer Implementation umfasst Träger 22 eine Leiterplatte mit elektrischen Leitungen oder Leiterbahnen 30, die jede der besagten Komponenten wie die Speichergeräte 24 kommunikativ oder elektrisch mit Speichermodulpuffer 26 verbindet. In einer Implementierung kann Träger 22 darüber hinaus Randstecker wie zum Beispiel Kontakte oder Stifte 32 aufweisen, die sich entlang der Kante von Träger 22 befinden, um die Kommunikation zwischen Speichermodul 20 und Daten- und Adress-/Befehlsbussen mit einem externen Rechensystem zu ermöglichen. In anderen Implementierungen können andere Kapselungstechniken verwendet werden.
-
Speichergeräte 24 umfassen einzelne integrierte Speicherschaltungskomponenten, die auf einer oder beiden Seiten von Träger 22 befestigt oder anderweitig gestützt werden. In einer Implementierung umfassen Speichergeräte 24 Dynamic Random Access Memory (DRAM) integrierte Speicherschaltungsgeräte. In einer Implementierung weist jedes Speichergerät 24 eine Speicherkapazität von mindestens 4 GB auf. In einer Implementierung verfügt jedes Speichergerät 24 über eine oder mehrere Bänke, wobei jede Bank eine Speicherkapazität von mindestens 256 MB hat. In einer Implementierung kann jedes Speichergerät 24 durch Stapelung mehrerer DRAM-Chips erstellt werden. In anderen Implementierungen können Speichergeräte 24 andere Speicherkapazitäten haben, da die Technologie, die dem neuesten Stand der Technik entspricht, andere Arten von Komponenten für Speicherschaltungsgeräte umfassen und unterstützen kann. In einer Implementierung umfassen solche Speichergeräte Geräte, die unter Verwendung des DDR(Double Data Rate)-Protokolls kommunizieren. Speichergerät 24 kann zum Beispiel alternativ Static Random Access Memory (SRAM) integrierte Speicherschaltungsgeräte, Flash-Speichergeräte, nichtflüchtige Speichergeräte, Phasenwechselspeichergeräte, Mehrfachbit-Speichergeräte und Ähnliches aufweisen.
-
Speichermodulpuffer 26 umfasst einen Puffer oder ein Register zur Verknüpfung oder Ansteuerung von Transaktionen zwischen einem Speicherkontrolleur eines Rechensystems und Speichergeräten 24. Insbesondere speichert Puffer 26 Adress- und Steuersignale über Registerlogik zwischen. Für die Zwecke dieser Offenlegung bezieht sich die Bezeichnung „Puffer” oder „Speichermodulpuffer” auf jeden Chip bzw. jede Komponente, die Adresssteuersignale über Registerlogik zwischenspeichert, wozu unter anderem Register und Puffer gehören. In einer Implementierung treibt Puffer 26 einen Taktgeber durch einen Phaseregelkreis erneut an. In einer Implementierung, umfasst Puffer 26 einen Load Reduced Dual Inline Memory Module-Puffer (LRDIMM-Puffer), in dem Datenleitungen über bidirektionale Treiber parallel zwischengespeichert werden. In anderen Implementierungen kann Puffer 26 einen Registerchip enthalten, der eine hohe Signalstärke aufrechterhält und die Zeitsteuerung zwischen den Leitungen synchronisiert.
-
Wie in schematisch dargestellt umfasst der Speichermodulpuffer 26 zusätzlich einen Ersatzstatuseingang 36 über das Puffer 26 Signale zur Aktivierung der Verwendung von Pufferspeicher 28 von einem Speichercontroller erhält. In einer Implementierung umfasst der Ersatzstatuseingang 36 einen Ersatzstatusstift oder einen Randstecker (solche Randstecker oder Stifte manchmal auch als „Goldzungen” bezeichnet). Auch wenn dies nicht ausdrücklich angegeben ist, kann Speichermodulpuffer 26 auch andere Randstecker wie zum Beispiel Adress- und Steuereingänge oder -stifte, einen Takteingang oder -stift, Datenstifte und Strobe-Eingänge oder -Stifte umfassen.
-
Speichermodulpuffer 26 umfasst Mapping-Logik 38. Mapping-Logik 38 umfasst Programmierung oder integrierte Schaltkreise, die geeignet sind, Speicherorte in Speichergeräten 24 Speicherorten im Pufferspeicher 28 zuzuordnen. Insbesondere weist Mapping-Logik 38 bestimmte Speicherorte oder Adressen im Speichergerät 24 entsprechenden neuen Adressen innerhalb Pufferspeicher 28 zu. Nach Erhalt einer Transaktionsanfrage für eine Adresse in Speichergerät 24, leitet oder steuert Mapping-Logik 38 die Transaktionsanfrage und ihre Signale, wie zum Beispiel die Signale während eines Lese- oder eines Schreibvorgangs an die entsprechende neue Speicheradresse in Pufferspeicher 28 um. Wie nachfolgend beschrieben wird ermöglicht die erneute Zuordnung durch Mapping-Logik 38 den Zugriff auf Daten, die aus Daten an einer alten Speicheradresse in fehlerhaften Abschnitte eines Speichergeräts 24 wieder erstellt wurden und die in Pufferspeicher 28 an einer neuer Speicheradresse gespeichert wurden, die mit der alten Speicheradresse verknüpft ist.
-
Pufferspeicher 28 umfasst eine integrierte Speicherschaltung, die Puffer 26 zum Speichern von neu erstellten Daten aus fehlerhaften Abschnitten von einem oder mehreren Speichergeräten 24 zur Verfügung steht. In einer Implementierung kann Pufferspeicher 28 ein DRAM-Gerät (Dynamic Random Access Memory) umfassen, das mit Puffer 26 verbunden oder als Teil dessen bereitgestellt wird. In anderen Implementierungen kann Pufferspeicher 28 andere integrierte Speicherschaltungen umfassen. In einer Implementierung verfügt Pufferspeicher 28 über eine Speicherkapazität, die mindestens der einer einzelnen Speicherbank von Speichergeräten 24 entspricht. In einer Implementation verfügt der Pufferspeicher 28 über eine Speicherkapazität, die der Speicherkapazität eines einzelnen Speichergeräts 24 entspricht. In einer Implementation verfügt der Speicherpuffer 28 beispielsweise über eine Speicherkapazität von mindestens 256 MB, der Größe der kleinsten Speicherbank in Speichergeräten 24. In einer Implementierung verfügt Pufferspeicher 28 über eine Speicherkapazität von 4 GB, der Speicherkapazität eines jeden Speichergeräts 24. Andere durch Fortschritte in der Speichertechnologie bereitgestellte Speicherkapazitäten sind ebenfalls in diese Offenbarung eingeschlossen, sofern sich diese auf Pufferspeicher 28 beziehen.
-
stellt ein beispielhaftes Rechensystem 100 schematisch dar, das Speichermodul 120 sowie einen Host 122 umfasst. Rechensystem 100 verwendet Speichermodul 120 zur Speicherung von Daten und/oder Anwendungen. Beispielhafte Rechensysteme umfassen unter anderem einen Server, den PC (Laptop, Desktop, Mainframe, Tablet, Notebook), einen Personal Digital Assistant, ein Smartphone und Ähnliches.
-
Speichermodul 120 ist im Wesentlichen mit Speichermodul 20 identisch, außer dass Pufferspeicher 28 mit Datenspeicher 142 und Verfolgungsspeicher 144 dargestellt wird. Diese verbleibenden Komponenten von Speichermodul 120, die den Komponenten von Speichermodul 20 entsprechen, sind entsprechend nummeriert. Datenspeicher 142 ähnelt Speicher 28. Ein Speicher 142 enthält mehrere Abschnitte 146 in denen Daten von mehreren verschiedenen Abschnitten eines Speichergeräts 24 oder Daten von mehreren verschiedenen Abschnitten von verschiedenen Speichergeräten 24 gleichzeitig gespeichert werden können.
-
Verfolgungsspeicher 144 umfasst einen Speicher oder ein Register, in dem die Speicherplatzverfügbarkeit von Speicher 142 gespeichert werden kann. In einer Implementierung kann Verfolgungsspeicher 144 einfach ein Kennzeichen oder ein Bit enthalten, dass anzeigt, dass entweder (1) Speicherplatz vorhanden ist oder (2) kein Speicherplatz mehr in Speicher 142 vorhanden ist. In einer anderen Implementierung kann Verfolgungsspeicher 144 einen Wert speichern, die die verfügbare Menge an Speicherplatz in Speicher 142 angibt. Verfolgungsspeicher 144 kann von Position 122 dazu verwendet werden zu bestimmen, ob in Speicher 142 ausreichend Speicherkapazität vorhanden ist, um Daten aus einem fehlerhaften Teil von Speichergerät 24 neu zu erstellen und zu speichern. In einer Implementierung kann Verfolgungsspeicher 144 als Teil von Pufferspeicher 28 bereitgestellt werden. In einer anderen Implementierung kann Verfolgungsspeicher 144 getrennt von Pufferspeicher 28 bereitgestellt werden. Verfolgungsspeicher 144 kann beispielsweise alternativ durch ein oder mehrere Bits in einem Register von Puffer 26 bereitgestellt werden.
-
Host 122 verwendet Speichermodul 120 zur Speicherung von Anwendungen und/oder Daten. In einer Implementierung kann Host 122 über eine Hauptplatine oder andere Leiterplatten verfügen, die eine Buchse aufweisen, in der Randstecker von Speichermodul 120 befestigt werden können. Host 122 umfasst Prozessor 150, Ausgang 152 und Speichercontroller 154.
-
Prozessor 150, der manchmal eine CPU beinhaltet, umfasst eine oder mehrere Verarbeitungseinheiten, die Daten und/oder Anwendungen verwenden, die in Speichermodul 120 gespeichert sind, um eine Ausgabe an Ausgang 152 zu erzeugen. Ausgang 152 umfasst ein oder mehrere Geräte, über die die Ausgabe von Prozessor 150 erfolgen kann. In einer Implementierung kann Ausgang 152 einen Monitor oder Bildschirm umfassen. In einer anderen Implementierung kann Ausgang 152 entweder alternativ oder zusätzlich ein Druckgerät umfassen. In einer anderen Implementation kann Ausgang 152 ein Speichergerät zur Speicherung der Ausgabe umfassen. Obwohl Ausgang 152 als lokal zu Prozessor 150 dargestellt wird, kann in anderen Implementierungen der Ausgang 152 auch von Prozessor 150 entfernt sein und über ein Netzwerk mit Prozessor 150 verbunden sein.
-
Speichercontroller 154 bildet eine Schnittstelle zwischen Prozessor 150 und Speichermodul 120. Insbesondere lenkt Speichercontroller 154 das Lesen und Schreiben von Daten auf Speichergeräten 24 auf Speichermodul 120. Wie nachfolgend beschrieben wird identifiziert Speichercontroller 154 darüber hinaus Störungen und Fehler in Speichergeräten 24 und erstellt die Abschnitte solcher Speichergeräte 24 neu, bei denen Störungen oder Fehler festgestellt wurden, wobei die neu geschriebenen Abschnitte oder die Daten in Speicher 142 von Pufferspeicher 28 gespeichert werden. In einer Implementierung kann Speichercontroller 154 als Teil eines Chipsatzes bereitgestellt werden. In anderen Implementierungen kann Speichercontroller 154 als Teil von Prozessor 150 bereitgestellt werden oder andere Formen aufweisen.
-
Speichercontroller 154 umfasst ein Ein-/Ausgangsmodul 160, Fehlererkennungsmodul 162, Schwellwerterkennungsmodul 164, Datenerstellungsmodul 166 und Sparing-Speichermodul 168. Ein-/Ausgangsmodul 160 umfasst Programmierung oder integrierte Schaltungslogik, um die Kommunikation zwischen Speichercontroller 154 und Speichermodul 120 sowie zwischen Speichercontroller 154 und Prozessor 150 zu ermöglichen. Hinsichtlich Speichermodul 120, ermöglicht Modul 160 solche Transaktionen wie Lese- und Schreibvorgänge mit Speichergeräten 24 über Puffer 26. In einer Implementierung ermöglicht Speichercontroller 154 die Kommunikation mit Speichergeräten 24 unter Verwendung von DDR(Double Data Rate)-Protokollen.
-
Fehlererkennungsmodul 162 umfasst Programmierung oder integrierte Schaltungslogik, die Fehler in Abschnitten von Speichergeräten 24 entdeckt. In einer Implementierung verwendet das Fehlererkennungsmodul 162 den Fehlerkorrekturcode (Error Correction Code, ECC) zur Erkennung und/oder Korrektur sowohl von Einfach- als auch Mehrfachbitfehlern in einem von einem oder mehreren fehlerhaften Speichergeräten 24 kommenden Datenworten. Insbesondere encodiert ECC Informationen in einem Block von Bits, um einen einzigen Fehler wiederherzustellen. Wenn Daten auf ein Speichergerät 24 geschrieben werden, verwendet ECC einen Algorithmus zur Erzeugung von Prüfbits, die nach der Addierung durch den Algorithmus zu einer Prüfsumme führen, die in einem der Speichergeräte 24 gespeichert wird. Wenn Daten aus einem Abschnitt des Speichergeräts 24 gelesen werden, berechnet der Algorithmus die Prüfsumme neu und vergleicht Sie mit der Prüfsumme der geschriebenen Daten. Wenn die Prüfsummen übereinstimmen, sind die Daten gültig. Weichen sie von einander ab, weisen die Daten einen Fehler auf, wobei der Fehler isoliert und dem Rechensystem 100 gemeldet wird. Im Falle eines Einfachbitfehlers kann die ECC-Speicherlogik die Ausgabe der Daten korrigieren, damit das System weiterhin funktionieren kann.
-
Schwellwerterkennungsmodul 164 umfasst Programmierung oder integrierte Schaltungslogik, die die Anzahl der Fehler in jedem Rang von Speichergeräten 24 überwacht. Im Besonderen vergleicht Modul 164 die Anzahl der Fehler pro Rang des Speichergeräts 24 mit einer vordefinierten Fehlerschwelle. In einer Implementierung wird ein Wert als vordefinierte Fehlerschwelle festgelegt, bei dem sich die Transaktionsverzögerungen aufgrund der Fehleranzahl nicht mehr auf einem akzeptablen Niveau befinden. Als Reaktion darauf, ob die Anzahl der Fehler pro Range des Speichergeräts 24 dem vorab definierten Schwellwert entspricht oder überschreitet, werden Module 166 und 168 zusammen mit Pufferspeicher 28 implementiert. In anderen Implementierungen können andere Schwellwerte als die Anzahl der Fehler pro Rang zur Initialisierung von Modulen 166, 168 und Pufferspeicher 28 zur Fehlerkorrektur verwendet werden.
-
Datenerstellungsmodul 166 umfasst Programmierung oder integrierte Schaltungslogik, die die Abschnitte von Speichergerät 24 neu erstellt, bei denen Modul 162 einen Fehler identifiziert hat. Wie vorstehend beschrieben verwendet Datenerstellungsmodul 166 in einer Implementierung die Prüfbits und die Prüfsumme zur Neuerstellung der Originaldaten des fehlerhaften Abschnitts von Speichergerät 24. In anderen Implementierungen kann der fehlerhafte Abschnitt von Speichergerät 24 auf andere Weisen neu erstellt werden.
-
Sparing-Speichermodul 168 umfasst Programmierung oder integrierte Schaltungslogik, die Pufferspeicher 28 unter Verwendung eines über Ersatzstatuseingang 36 übertragenen Signals aktiviert. Des Weiteren speichert Sparing-Speichermodul 168 die von Modul 166 bereitgestellten Daten in Pufferspeicher 28. Die Speicherung der neu erstellten Daten im Hauptspeicher 142 kann entweder durchgeführt werden nachdem oder bevor Adressen im Hauptspeicher 142 den Adressen im Speichergerät 24 zugeordnet wurden, in denen Fehler gefunden wurden und für die die darin enthaltenen Daten neu erstellt worden sind.
-
ist ein Flussdiagramm, das eine beispielhafte Methode 200 darstellt, die von System 100 ausgeführt werden kann, um Fehler zu beheben, die in einem oder mehreren Speichergeräten 24 festgestellt wurden. Wie in Schritt 210 dargestellt, aktiviert nach der Identifikation eines Fehlers in einem oder mehreren Speichergeräten 24 oder nach der Feststellung durch Fehlererkennungsmodul 162, dass zumindest ein Teil von Speichergerät 24 fehlerhaft ist, Ersatzspeichermodul 168 von Speichercontroller 154 den Pufferspeicher 28, indem es über Ersatzstatuseingang 36 (was manchmal als Ansteuern des Ersatzstatus 10 bezeichnet wird) ein Signal an Puffer 26 sendet. In einigen Implementierungen, in denen Puffer 26 ECC zur Korrektur von Einfachbitfehlern verwendet (oder ECC zur Korrektur von Mehrfachbitfehlern verwendet), kann die Verwendung von Pufferspeicher 142 und Pufferspeicher 28 verzögert werden, bis die Anzahl der durch Modul 162 identifizierten Fehler einen vorab definierten Schwellwert überschreitet, der durch Schwellwerterfassungsmodul 164 festgelegt wird. Während solch einer Aktivierung von Pufferspeicher 28, kann auch Verfolgungsspeicher 144 überprüft oder gelesen werden, um festzustellen, ob im Hauptspeicher 142 genug Kapazität oder Speicherplatz vorhanden ist, um die neu erstellten Daten aus den als fehlerhaft identifizierten Abschnitten von einem oder mehreren Speichergeräten 24 zu speichern.
-
Wie in Schritt 212 dargelegt ordnet die Mapping Logik 38 in Speichermodulpuffer 26 Speicherorte oder Adressen der als fehlerhaft identifizierten Abschnitte in Speichergerät 24 neuen Speicherorten oder Adressen im Hauptspeicher 142 zu. Eine Adresse A1 im Speichergerät 24, die Teil einer Speichereinheit ist, die einen oder mehrere Fehler aufweist, kann beispielsweise einer neuen Adresse A2 in einem Abschnitt 146 des Hauptspeichers 142 zugeordnet werden. Anschließend werden alle Transaktionen (Lesen, Schreiben und Ähnliches) für Adresse A1, die von Puffer 26 erhalten werden, durch Puffer 26 an die neu zugewiesene entsprechende Adresse A2 umgeleitet. In einer anderen Implementierung kann die neue Adresse A2, die der alten Adresse A1 zugewiesen ist, an Speichercontroller 154 oder an Prozessor 150 kommuniziert werden, der die neue Adresse A2 statt der alten Adresse A1 verwendet, wenn für die in der alten Adresse A1 enthaltene Daten Transaktionen an Speichermodul 120 kommuniziert werden. Wie bereits dargestellt kann eine solche Zuordnung durchgeführt werden bevor Speichermodul 20 die neu erstellten Daten aus den Abschnitten von Speichergerät 24 erhält, die als fehlerhaft identifiziert wurden, oder aber danach. Eine solche Zuordnung kann den gesamten freien Speicherplatz 142 oder nur einen Teil 146 von Speicher 142 verwendet.
-
Wie in Schritt 214 dargelegt, erstellt Datenerstellungsmodul 166 Daten aus den Abschnitten von Speichergerät 24 neu, in denen ein oder mehrere Fehler festgestellt wurden. Wie bereits beschrieben verwendet in einer Implementierung das Datenerstellungsmodul 166 die Prüfbits und die Prüfsumme dazu, die Originaldaten der fehlerhaften Abschnitte von Speichergerät 24 neu zu erstellen. In anderen Implementierungen kann der fehlerhafte Teil von Speichergerät 24 auf andere Weisen neu erstellt werden.
-
Wie in Schritt 216 dargelegt, speichert Ersatzspeichermodul 168 die neu erstellten Daten an den neu zugeordneten oder neuen Adressen/Speicherorten im Hauptspeicher 142 von Pufferspeicher 28. In diesen Implementierungen, zu denen Verfolgungsspeicher 144 gehört, oder in den Implementierungen, wie Speicherplatz im Register von Puffer 26, können Ersatzspeichermodul 168 oder Mapping-Logik 38 von Puffer 26 neue Daten oder neue Informationen entweder dazu speichern, wie viel Speicherplatz von Speicher 142 belegt ist oder dazu, wie viel Speicherplatz von Speicher 142 zur weiteren Verwendung zur Verfügung steht. In einer Implementierung kann Verfolgungsspeicher 144 verwendet werden, um anzugeben, dass Datenspeicher 142 voll ist, statt eine Zahl für den belegten oder eine Zahl für den in Speicher 142 verfügbaren Speicherplatz anzugeben. Puffer 26 kann beispielsweise einen Bit in Verfolgungsspeicher 144 oder in einem seiner Register setzen, um anzugeben, ob noch Speicherplatz zu Verfügung steht, nachdem die neu erstellten Daten in Datenspeicher 142 geschrieben wurden. Das nächste Mal, wenn der Ersatzstatus angesteuert wird, kann Speichercontroller 154 das Bit lesen um festzustellen, ob eine solche Sparing-Operation abgeschlossen werden kann.
-
Insgesamt bieten Speichermodul 22 und Speichercontroller 154 Speichermodul 22 eine Fehlertoleranz, die die Bandbreite und die Speicherkapazität nur minimal beeinträchtigen. Da Daten, die aus fehlerhaften Abschnitten von Speichergerät 24 neu erstellt wurden in Speicher 142 gespeichert werden, der entsprechenden Speicherorten der fehlerhaften Abschnitte von Speichergerät 24 zugeordnet ist, werden die korrigierten Fehler so gespeichert, dass nachfolgende Transaktionen mit den neu erstellten Daten kein ECC verwenden und Bandbreite sparen können. Da solche korrigierten Fehler darüber hinaus in Pufferspeicher 28 gespeichert werden, kann Speichermodul 22 größer sein, während die Verwendung von Doppelchip-Ersatzalgorithmen vermieden wird, die ansonsten die Verwendung von Burstlänge (Chop 4) und Warteschlangenverzögerungen erfordern, die durch das Erfordernis verursacht werden, dass DDR-Kanäle, Speichermodul 22 oder Speichergerät 20 paarweise im Gleichlauf ausgeführt werden müssen, um Fehlerkorrekturwörter zu liefern, die breit genug sind, um der Anzahl der Speichergeräte in jedem Rang von Speichergerät 22 zu entsprechen. Infolgedessen wird Speicherbandbreite gespart.
-
Da die neu erstellten Daten in Pufferspeicher 28 statt in einem oder mehreren Ersatzspeichergeräten gespeichert werden, die speziell für die Fehlerkorrektur abgestellt werden, wird die Speicherkapazität erhalten oder ausgeweitet. Im Gegensatz zur Verwendung von Ersatzspeichergeräten, die speziell für die Fehlerkorrektur abgestellt werden, bietet Pufferspeicher 28 eine erhöhte Granularität für die. Ein Fehler in einer einzelnen Speicherbank von Speichergerät 24, der in einem Ersatzrang eines Speichermoduls gespeichert ist, verhindert jede weitere Verwendung der verbleibenden Kapazität der Ersatzrangs. Im Gegensatz dazu kann ein Fehler in einem einzelnen Rang eines Speichergeräts 24 im Pufferspeicher 28 gespeichert werden, wobei derselbe Puffer 28 dazu verwendet werden kann, um andere Fehler aus dem Speichergerät 24 oder aus anderen Speichergeräten 24 zu speichern. In anderen Worten, die volle Speicherkapazität von Speicherpuffer 24 kann aufgrund dieser Granularität umfassender ausgenutzt werden. Infolgedessen braucht die Speicherkapazität von Speichermodul 22 nicht zur Gewährleistung der Zuverlässigkeit des Speichersystems reserviert werden, so dass ein größerer Teil des in einem System installierten Speichers zur Verfügung steht.
-
ist eine schematische Darstellung von Speichermodul 322, einem beispielhaften Speichermodul 22. In dem dargestellten Beispiel umfasst Speichermodul 322 ein Dual Inline Memory Module (DIMM), das Speichergeräte 324 (dargestellt als Dynamic Random Access Memories (DRAMs)) und Speichermodulpuffer 326 einschließlich Pufferspeicher 328. Speichergeräte 324 sind durch Leiterbahnen 326 (nicht dargestellt) mit Puffer 326 verbunden und bieten Platz zum Speichern von Daten und Anwendungen. In einer Implementierung verfügt jedes Speichergerät 324 über eine Speicherkapazität von mindestens 4 GB. In anderen Implementierungen kann jedes Speichergerät 324 über eine andere Speicherkapazität verfügen. Jedes Speichergerät 324 enthält mehrere Speicherbänke. Darüber hinaus werden Speichergeräte 324 in Ränge, Gruppierungen von Speichergeräten 324 aufgeteilt, die vom Speichercontroller für eine Lese-, Schreib- oder eine andere Speicheroperation zusammen ausgewählt werden. In der dargestellten beispielhaften Implementierung, ist Speichermodul 322 ist ein doppelrangiges Modul, wobei jeder Rang 16 Speichergeräte 324 zur Speicherung von Daten und zwei Speichergeräte 324 zur Speicherung von ECC umfasst. In anderen Implementierungen kann Speichermodul 322 eine unterschiedliche Anzahl von Speichergeräten 324, verschiedene Gruppierungen von Speichergeräten 324 in eine unterschiedliche Anzahl von Rängen und eine unterschiedliche Anzahl von Speichergeräten 324 umfassen, die für ECC vorgesehen sind. In einigen Implementierungen, können zusätzlich zur Speicherung der Fehlerkorrektur in Pufferspeicher 328 ein oder mehrere Speichergeräte 324 zusätzlich für Sparing bereitgestellt werden.
-
Speichermodulpuffer 326 ähnelt Speichermodulpuffer 26 insofern als dass Speichermodulpuffer 326 Mapping-Logik 38 (oben beschrieben) enthält. In der dargestellten beispielhaften Implementierung beinhaltet Speichermodul 326 Verfolgungsspeicher 144. In einer Implementierung umfasst Verfolgungsspeicher 144 ein oder mehrere Bits in einem Register von Pufferspeicher 326, die angeben, ob in Speicher 328 Speicherplatz zur Verfügung steht. In anderen Implementierungen kann Pufferspeicher 144 an anderen Standorten bereitgestellt werden. In der dargestellten Implementierung umfasst Pufferspeicher 328 einen Load Reduced DIMM-Puffer (LRDIMM-Puffer). In anderen Implementierungen kann Pufferspeicher 328 andere Pufferformen oder ein Register umfassen.
-
Wie des Weiteren in gezeigt, umfasst Pufferspeicher 326 darüber hinaus zusätzlich zum Ersatzstatuseingang oder Eingangsstift 36 Daten- und Strobe-Eingänge oder -Stifte 370, adressiert und steuert Stifte 372 und Taktstifte 374. Stifte 370, 372 und 374 umfassen Eingänge wie Randstecker, Kontaktflächen, Goldzungen, durch die Strobe-Signale an Puffer 326 übertragen werden. Daten- und Strobe-Stifte 370 werden zur Übertragung von Signalen an Speichergerät 324 verwendet. Adress- und Steuerstifte 372 werden während einer Schreiboperation oder während einer Stroking-Operation unter Verwendung von Zeilen- und Spaltensignalen zur Identifizierung oder Adressierung von bestimmten Standorten in einem Speichergerät verwendet. Taktstifte 374 übertragen den Differenzialtakt bzw. Zeitablauf des Systems an Puffer 326.
-
Pufferspeicher 28 wird vorstehend hinsichtlich Speichermodul 22 beschrieben. In dem dargestellten Beispiel hat der Pufferspeicher 28 eine Speicherkapazität, die der Speicherkapazität von Speichergerät 324 entspricht. In einer Implementierung hat Pufferspeicher 28 eine Speicherkapazität von mindestens 4 GB. Wenn Pufferspeicher 28 nicht verwendet wird (keine neu erstellten Daten aus einem fehlerhaften Abschnitt von Speichergerät 324 speichert), kann Pufferspeicher 28 in einem Self-Refresh-Zustand gehalten werden, was Strom spart. Zu diesem Zeitpunkt wird die Ansteuerung des Ersatzstatussignals ausgesetzt.
-
und stellen Speichermodul 322 während eines beispielhaften Fehlers oder einer Fehlerkorrekturoperation gemäß Methode 200 unter Verwendung von Speichercontroller 154 dar. und stellen die Identifizierung eines Fehlers dar, der dazu führt dass die vorab definierte Fehleranzahl einen zuvor festgelegten Schwellwert überschreitet und korrigierte Daten im Speicherpuffer 28 gespeichert werden. Wie in dargestellt werden bei Ausfall von Speichergerät 324 Fehler zunächst unter Verwendung von ECC-Bits korrigiert, um die Daten (dargestellt wird ECC mit Ein-Chip-Ersatz) zu rekonstruieren, bis ein vorab definierter Fehlerschwellwert erreicht wird. Wenn der Fehlerschwellwert von irgendeinem Speichergerät 324 überschritten wird oder wenn das Speichergerät in irgendeinem Rang des Speichergeräts 322 vollständig ausfällt, löst Fehlererkennungsmodul 162 die Löschung aus (wie in dargestellt) und steuert den Ersatzstatuseingang oder Stift 36 an. Insbesondere Speichercontroller 154 (in dargestellt) verwendet den Adress-/Steuerbus (verbunden mit den Adress- und Steuerstiften 372) zur Aktivierung von Pufferspeicher 28 und Deaktivierung von Daten-Strobe-Stiften, die mit dem ausgefallenen Speichergerät verbunden sind, wenn eine Transaktion, die mit der Rang in Verbindung steht, der das ausgefallene Speichergerät 324 enthält, angesteuert wird. Nach dieser Operation wird das Ersatzstatussignal deaktiviert und die Mapping-Logik 38 ordnet Adressen des ausgefallenen Speichergeräts 324 dem Pufferspeicher 28 zu, so dass Pufferspeicher 28 das ausgefallene Speichergerät 324 ersetzt. Zur Korrektur weiterer Fehler in mehr als einem Rang desselben Speichermoduls 22 kann die Speichermenge in Pufferspeicher 28 erhöht werden.
-
stellt Rechensystem 400 schematisch dar, ein Beispiel für Rechensystem 100. Rechensystem 400 ist mit dem Rechensystem 100 identisch, mit Ausnahme der Tatsache, dass Rechensystem 400 mit zwei Speichermodulen 322 dargestellt wird, die mit Speicher 354 verbunden sind. In einer Implementierung kommuniziert Speichercontroller 154 mit Speichermodulen 322, indem die DDR-Kanäle im Gleichlauf betrieben werden. Infolgedessen kann sich Rechensystem 400 von einem weiteren Fehler auf jedem der Speichermodule 322 im Gleichlaufpaar erholen. Insbesondere da solche Speichermodule 322 im Gleichlauf betriebene DDR-Kanäle verwenden, hat jeder Speicher 322 beide Pufferspeicher zur Speicherung von Daten zur Verfügung, die aus fehlerhaften Abschnitten von Speichergeräten 24 neu erstellt werden. Da Ränge über mehrere Speichermodule 322 verteilt sind, können in demselben Rang oder auch in verschiedenen Rängen mehrere Fehler auftreten, solange sie nicht gleichzeitig auftreten. Von Pufferspeicher 28 bereitgestellter zusätzlicher Speicherplatz steht bei einer größeren Anzahl von Fehlern zur Adressierung zur Verfügung.
-
stellt Rechensystem 500 schematisch dar, eine beispielhafte Implementierung von Rechensystem 100. Rechensystem 500 ist Rechensystem 100 ähnlich, mit der Ausnahme, dass Rechensystem 500 Speichermodul 522 verwendet. Speichermodul 522 umfasst ein registriertes Dual Inline Memory Module (R-DIMM) (wenn die verteilten Datenpuffer fehlen) oder ein Load Reduced Dual Inline Memory Module (LR-DIMM) mit verteilten Datenpuffern. Speichermodul 522 umfasst Speichergeräte 324 (oben beschrieben), verteilte Datenpuffer 525, Speichermodulpuffer 526 und Pufferspeicher 28 (oben beschrieben).
-
Verteilte Datenpuffer 525 umfassen einzelne Datenpuffer oder Speicher, die mit einem oder mehreren einzelnen Speichergeräten 324 verbunden sind. In dem dargestellten Beispiel sind Datenpuffer 525 jeweils mit einem Paar Speichergeräten 324 verbunden. In anderen Implementierungen kann jeder Datenpuffer mit einem einzelnen Speichergerät 324 oder einer größeren Anzahl von Speichergeräten 324 verbunden sein. Datenpuffer 525 stellen eine Schnittstelle zwischen Speichercontroller 154 und Speichergeräten 324 dar oder treiben Transaktionen zwischen ihnen an. Insbesondere werden Strobe- und Datensignale durch Registerlogik von Puffern 525 zwischengelagert. Wie in dargestellt, weist jeder Datenpuffer 525 verbundene Daten- und Strobe-Stifte 528 auf. In dem dargestellten Beispiel weist jeder Datenpuffer 525 8 Daten- und Strobe-Bits auf. In anderen Implementierungen können Puffer 525 andere Konfigurationen aufweisen.
-
Speichermodulpuffer 526 ähnelt Speichermodulpuffer 26 mit der Ausnahme, dass Puffer 526 ein Register für Adress-/Steuersignale und eine Phasenregelschleife (Phase-Locked Loop, PLL) umfasst und Register oder Datenpuffer auslässt, die nun über Speichergerät 324 verteilt sind. Wie in dargestellt umfasst Speichermodulpuffer 526 darüber hinaus vier (4) Daten- und die verbundenen Strobe-Eingänge 536. Bei Ausfall oder mit einem bestimmten Speichergerät 324 verbundenen Fehlern, werden Daten- und Strobe-Stifte 536 aktiviert und anstelle dieser Daten- und Strobe-Stifte verwendet, die mit dem fehlerhaften Speichergerät 324 verbunden sind. Daten- und Strobe-Stifte 536 empfangen Daten- und Strobe-Signale von Speichercontroller 154, die zum Schreiben von Daten in und Lesen von Daten aus diesen Abschnitten des Pufferspeichers 28 verwendet werden, die den fehlerhaften Abschnitten eines oder mehrerer Speichergeräte 324 zugeordnet wurden.
-
Wenn es in Betrieb ist, funktioniert System 500 ähnlich wie System 100. Wenn Fehlererkennungsmodul 162 von Speichercontroller 154 in einem Speichergerät 324 einen Fehler identifiziert, der dafür sorgt, dass die Gesamtanzahl der Fehler pro Rang (in einer Implementierung) einen vordefinierten Schwellwert überschreitet oder wenn innerhalb irgendeines Rangs des Speichermoduls 522 ein Speichergerät 324 vollständig ausfällt, löst Fehlererkennungsmodul 162 eine Löschung aus und steuert den Ersatzstatuseingang oder -stift 36 an. Insbesondere verwendet Speichercontroller 154 den Adress-/Steuerbus (verbunden mit den Adress- und Steuerstiften 372) zur Aktivierung von Pufferspeicher 28 und zur Deaktivierung von Daten-Strobe-Stiften 528, die mit dem ausgefallenen Speichergerät 324 verbunden sind, wenn eine Transaktion angesteuert wird, die mit dem Rang verbunden ist, der das ausgefallene Speichergerät 324 enthält. Nach dieser Operation wird das Ersatzstatussignal deaktiviert und die Mapping-Logik 38 ordnet die Adressen des ausgefallenen Speichergeräts 324 dem Pufferspeicher 28 zu, so dass Pufferspeicher 28 das ausgefallene Speichergerät 324 ersetzt. Nachfolgende Transaktionen hinsichtlich der zugeordneten Standorte im Pufferspeicher 28 werden unter Verwendung von Daten- und Strobe-Stift 536 auf dieselbe Weise übertragen, wie Transaktionen mit nicht fehlerhaften Speichergeräten 324 mit ihren zugewiesenen Daten- und Strobe-Stiften 528 ausgeführt werden. Zur Korrektur weiterer Fehler in mehr als einem Rang desselben Speichermoduls 322 kann die Speichermenge in Pufferspeicher 28 erhöht werden.
-
ist ein Flussdiagramm einer beispielhaften Methode 600, einer speziellen Implementierung von der oben beschriebenen Methode 200. Methode 600 kann von einem Rechensystem ausgeführt werden, das über einen Speichercontroller verfügt, wie beispielsweise System 100, System 400 oder System 500. Wie Schritt 602 erkennen lässt beginnt die Methode 600 mit einem mit einem anfänglich „intakten” Speichermodul 322 oder einer „intakten” Reihe von Speichermodulen 322 (wobei, ähnlich wie in dargestellt, ein Rang über mehrere Speichermodule verteilt sein kann).
-
Wie in Schritt 604 dargestellt bestimmt Fehlererkennungsmodul 162, ob ein Rang oder ein Speichergerät 324 eines Rangs einen Fehler enthält. Wie oben ausgeführt können die Fehler durch Fehlererkennungsmodul 162 unter Verwendung von Prüfbits und Prüfsummen erfasst werden, die in den ECC-Speicherabschnitten der Speichergeräte 324 gespeichert sind, die für solche ECC-Operationen bestimmt sind. Wie in Schritt 606 dargestellt kann es zu einem Systemabsturz kommen (Schritt 608), wenn solche identifizierten Fehler nicht korrigierbar sind, wobei Speichermodul (MM) 22, 322, 522 ersetzt wird (Schritt 610), wodurch die Integrität des Rangs, wie in Schritt 612 dargestellt, vollständig wiederhergestellt wird.
-
Wenn, wie in Schritt 606 und 614 dargestellt, solche vom Fehlererkennungsmodul 162 (in dargestellt) identifizierten Fehler korrigierbar sind, korrigiert Speichercontroller 154 den Fehler des Speichergeräts unter Verwendung von ECC. Dabei wird im Einzelnen, wie in Schritt 616 dargestellt, der Fehlerstandort einem Scrubbing oder einer Löschung unterzogen und die Fehler werden korrigiert oder decodiert und die Korrektur wird nach Schritt 618 der entsprechenden Speichergerätreihe und -bank zugewiesen.
-
Wie in Schritt 620 dargestellt bestimmt das spezielle Erkennungsmodul 164, das die Anzahl der Fehler pro Rang verfolgt, ob der Fehlerschwellwert pro Rang erreicht wurde. Wenn, wie in Schritt 622 dargestellt, der Fehlerschwellwert mit dem neuen Fehler erreicht wurde, bestimmt der Speichercontroller 154, ob ausreichend freie Speicherstandorte oder Speicherplatz in Pufferspeicher 28 zur Verfügung stehen. In einer Implementierung konsultiert Speichercontroller zur Bestimmung 154 Verfolgungsspeicher 144. Wenn, wie in Schritt 624 dargestellt, Pufferspeicher 28 nicht über ausreichend Speicherplatz zur Speicherung der neu erstellten Daten aus dem fehlerhaften Abschnitt von Speichergerät 24, 324 aufweist, löst Speichercontroller 154 den Ersatz von Speichermodul 22, 322, 522 aus oder fordert dazu auf.
-
Wenn, wie in den Schritten 626 und 628 dargestellt, Pufferspeicher 28 über genügen Speicherplatz für die Aufnahme oder die Speicherung der neu erstellten Daten aus dem fehlerhaften Abschnitt des Rangs oder Speichergeräts 24, 324 verfügt, aktiviert Ersatzspeichermodul 168 von Speichercontroller 154 Pufferspeicher 28 durch die Übertragung eines Signals über Ersatzstatuseingang 36 (was manchmal auch als Ansteuerung des Ersatzstatus 36 bezeichnet wird) an Puffer 26, 326, 526.
-
Wie in Schritt 630 dargestellt, erstellt Datenerstellungsmodul 166 Daten aus jenen Abschnitten eines Speichergeräts 24, 324, indem ein oder mehrere Fehler identifiziert wurden, neu. Wie oben beschrieben verwendet Datenerstellungsmodul 166 in einer Implementierung die Prüfbits und die Prüfsumme zur Neuerstellung der Originaldaten des fehlerhaften Abschnitts von Speichergerät 24. In anderen Implementierungen kann der fehlerhafte Abschnitt von Speichergerät 24 auf andere Weise wieder erstellt werden. Ersatzspeichermodul 168 speichert die wiedererstellten Daten im Hauptspeicher 142 des Pufferspeichers 28.
-
Im dargestellten Beispiel kann Ersatzspeichermodul 168 oder Mapping-Logik 38 von Puffer 26, 326, 526 neue Daten oder neue Informationen speichern, die entweder anzeigen, wie viel Speicherplatz in Speicher 142 belegt ist oder wie viel Speicherplatz von Speicher 142 noch zur nachfolgenden Verwendung zur Verfügung steht. In einer Implementierung kann Verfolgungsspeicher 144 dazu verwendet werden anzuzeigen, wenn Hauptspeicher 142 voll ist, statt eine Zahl anzugeben, die die belegte Speicherplatzmenge oder die in Speicher 142 verbleibende Menge freien Speichersplatzes angibt. Puffer 26, 326, 526 kann beispielsweise ein Bit in Verfolgungsspeicher 144 oder in einem seiner Register setzen, das angibt, ob noch Speicher zur Verfügung steht, nachdem die neu erstellten Daten in den Speicher 142 geschrieben wurden 142. Das nächste Mal, wenn der Ersatzstatus angesteuert wird, kann Speichercontroller 154 das Bit lesen, um zu bestimmen, ob eine solche Sparing-Operation ausgeführt werden kann.
-
Wie in Schritt 632 dargestellt ordnet Mapping-Logik 38 in Speichermodulpuffer 26, 326, 526 Speicherorte oder Adressen der als fehlerhaft identifizierten Abschnitte in Speichergeräten 24 neuen Speicherorten oder Adressen im Hauptspeicher 142 zu. Eine Adresse A1 in Speichergerät 24, 3 bis 4, die Teil einer Speichereinheit ist, die einen oder mehrere Fehler aufweist, kann einer Adresse A2 in einem Abschnitt 146 des Hauptspeichers 142 neu zugeordnet werden. Nachfolgend wird jede von Puffer 26, 322, 526 erhaltene Transaktion (Lesen, Schreiben oder Ähnliches) für Adresse A1 von Puffer 26, 326, 526 an die entsprechende neu zugewiesene Adresse A2 weitergeleitet. In einer anderen Implementierung wird die der alten Adresse A1 zugewiesene neue Adresse A2 dem Speichercontroller 154 oder dem Prozessor 150 (wie in dargestellt) mitgeteilt, der die neue Adresse A2 anstelle der alten Adresse A1 verwendet, wenn Speichermodul 120 Transaktionen für die unter der alten Adresse A1 enthaltenen Daten kommuniziert. Wie oben dargestellt kann diese Zuordnung (Mapping) ausgeführt werden bevor Speichermodul 22, 322, 522 die Daten erhält, die aus den als fehlerhaft identifizierten Abschnitten von Speichergerät 24, 324 neu erstellt wurden, oder aber danach. Eine solche Zuordnung kann den gesamten Ersatzspeicherplatz in Speicher 142 verwenden oder aber nur einen Teil 146 von Speicher 142.
-
Obwohl die vorliegende Offenlegung unter Bezugnahme auf beispielhafte Ausführungsformen beschrieben wurde, werden Fachleute erkennen, dass in Form und Detail Änderungen vorgenommen werden können, ohne vom Geist und Umfang des beanspruchten Gegenstandes abzuweichen. Obwohl möglicherweise verschiedene Ausführungsformen beschrieben wurden, die eine oder mehre Funktionen beinhalten, die einen oder mehrere Vorteile aufweisen, ist vorgesehen, dass die beschriebenen Funktionen in den beschriebenen beispielhaften Ausführungsformen oder in anderen alternativen Ausführungsformen mit einander vertauscht werden können oder alternativ dazu mit einander kombiniert werden können. Da die Technologie der vorliegenden Offenbarung relativ komplex ist, sind nicht alle Änderungen der Technologie vorhersehbar. Die vorliegende Offenbarung, die unter Bezugnahme auf beispielhafte Ausführungsformen beschrieben wird, und in den folgenden Ansprüchen dargelegt wird, zielt offenkundig darauf ab, so breit wie möglich angelegt sein. Soweit nicht anders vermerkt umfassen Ansprüche, die ein bestimmtes einzelnes Element anführen auch eine Vielzahl solcher besonderen Elemente.