DE102006016499A1 - Speichermodulsteuerung, Speichersteuerung und entsprechende Speicheranordnung sowie Verfahren zur Fehlerkorrektur - Google Patents

Speichermodulsteuerung, Speichersteuerung und entsprechende Speicheranordnung sowie Verfahren zur Fehlerkorrektur Download PDF

Info

Publication number
DE102006016499A1
DE102006016499A1 DE102006016499A DE102006016499A DE102006016499A1 DE 102006016499 A1 DE102006016499 A1 DE 102006016499A1 DE 102006016499 A DE102006016499 A DE 102006016499A DE 102006016499 A DE102006016499 A DE 102006016499A DE 102006016499 A1 DE102006016499 A1 DE 102006016499A1
Authority
DE
Germany
Prior art keywords
memory
data blocks
memory module
controller
redundant
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.)
Granted
Application number
DE102006016499A
Other languages
English (en)
Other versions
DE102006016499B4 (de
Inventor
Gerhard Risse
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.)
Polaris Innovations Ltd
Original Assignee
Qimonda AG
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 Qimonda AG filed Critical Qimonda AG
Priority to DE102006016499.7A priority Critical patent/DE102006016499B4/de
Priority to US11/696,745 priority patent/US20070255999A1/en
Publication of DE102006016499A1 publication Critical patent/DE102006016499A1/de
Application granted granted Critical
Publication of DE102006016499B4 publication Critical patent/DE102006016499B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0409Online test

Landscapes

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

Abstract

Ein Verfahren zur Fehlerkorrektur für eine Speicheranordnung (1) wird beschrieben, wobei eine in die Speicheranordnung (1) zu schreibende Information in n Datenblöcke (5) von jeweils m Bit aufgeteilt wird. Diese n Datenblöcke (5) werden in mehreren Speichermodulen (3), insbesondere fully buffered DIMMs, der Speicheranordnung (1) abgespeichert. Zusätzlich wird aus diesen n Datenblöcken (5) eine redundante Information (6) ermittelt, welche in mindestens einem Speichermodul (4) der Speicheranordnung (1) abgespeichert wird. Beim Auslesen der Information werden die n Datenblöcke (5) ausgelesen und auf Fehler überprüft. Wenn ein Fehler vorliegt, wird die zu den n Datenblöcken (5) gehörende redundate Information (6) gelesen und ausgehend von den n Datenblöcken (5), insbesondere den fehlerfreien Datenblöcken davon, und der redundanten Information (6) werden alle Bit der fehlerhaften Datenblöcke korrekt ermittelt. Anschließend werden die n Datenblöcke (5) ausgegeben. Die Erfindung betrifft auch eine zur Durchführung des Verfahrens ausgestaltete Speicheranordnung (1) sowie eine Speichermodulsteuerung (10) und eine Speichersteuerung (2).

Description

  • Die vorliegende Erfindung betrifft ein Verfahren zur Fehlerkorrektur für eine Speicheranordnung sowie eine entsprechend ausgestaltete Speichermodulsteuerung, Speichersteuerung und Speicheranordnung.
  • Nach dem Stand der Technik besitzen Speichermodule, wie z.B. fully buffered DIMMs (Dual Inline Memory Moduls) keine eingebaute Redundanz gegenüber Fehlern ihrer Speicherchips, welche über die Fehlerkorrekturmöglichkeiten eines ECC-Codes (Error Checking and Correction) hinausgehen. Zur Fehlerkorrektur mittels eines ECC-Codes werden ausgehend von den zu speichernden Bit einer vorgegebenen Information mittels des ECC-Codes redundante Bit erzeugt, welche zusammen mit den vorgegebenen Bit abgespeichert werden. Beim Auslesen wird nun mittels des ECC-Codes überprüft, ob beim Abspeichern oder Auslesen Fehler aufgetreten sind, wobei, abhängig von der Schwere des Fehlers und von dem Anteil der redundanten Bit an den gesamten abgespeicherten Bit, der Fehler entweder korrigiert oder nur erkannt wird.
  • Des Weiteren existieren Speichermodule, welche zur Vermeidung von Fehlern jedes zu speichernde Bit spiegeln bzw. zweimal abspeichern. Dieses Verfahren bedeutet allerdings nachteiliger Weise eine Erhöhung der benötigten Bandbreite und Speicherkapazität von 100%. Darüber hinaus kann dieses Verfahren nicht an eine Fehleranfälligkeit eines Speichermoduls oder an eine erwünschte Zuverlässigkeitsanforderung angepasst werden.
  • Daher ist es eine Aufgabe der vorliegenden Erfindung ein Verfahren und eine Vorrichtung bereitzustellen, mit deren Hilfe die Korrekturmöglichkeiten beim Auftreten von Fehlern in Speichermodulen gegenüber dem Stand der Technik verbessert werden, ohne die vorab beschriebenen Nachteile bezüglich der Erhöhung der benötigten Bandbreite und Speicherkapazität oder die mangelnden Anpassungsmöglichkeiten in Kauf nehmen zu müssen.
  • Erfindungsgemäß wird diese Aufgabe durch ein Verfahren zur Fehlerkorrektur für eine Speicheranordnung gemäß Anspruch 1, eine Speichermodulsteuerung für ein Speichermodul nach Anspruch 10, eine Speichersteuerung für eine Speicheranordnung nach Anspruch 16 und eine Speicheranordnung nach Anspruch 22 gelöst. Die abhängigen Ansprüche definieren bevorzugte und vorteilhafte Ausführungsformen der Erfindung.
  • Im Rahmen der vorliegenden Erfindung wird ein Verfahren zur Fehlerkorrektur für eine Speicheranordnung bereitgestellt. Dabei wird eine in die Speicheranordnung zu schreibende Information in n Datenblöcke von jeweils m Bit aufgeteilt. Diese n Datenblöcke werden in einem oder mehreren Speichermodulen der Speicheranordnung abgespeichert, wobei insbesondere n Speichermodule vorhanden sind und jeder der n Datenblöcke in einem anderen dieser n Speichermodule abgespeichert wird. Die Aufteilung einer Information auf n Datenblöcke, welche in n verschiedenen Speichermodulen abgespeichert werden, funktioniert analog zu dem „Data Stripping" bzw. RAID 0 (Redundant Array of Inexpensive Disks) aus dem Bereich der Festplattenverwaltung. Zusätzlich wird ausgehend von den n Datenblöcken eine redundante Information, insbesondere k redundante Datenblöcke von ebenfalls jeweils m Bit, bestimmt. Zusätzlich zu den n Datenblöcken wird diese redundante Information in einem oder mehreren weiteren Speichermodulen der Speicheranordnung abgespeichert, wobei insbesondere k weitere Speichermodule vorhanden sind und jeder der k redundanten Datenblöcke in einem anderen dieser k weiteren Speichermodule abgespeichert wird. Dabei kann es sich bei den Speichermodulen und den weiteren Speichermodulen um dieselben Speichermodule handeln, im Extremfall können alle n Datenblöcke und die redundante Information in demselben Speichermodul abgespeichert werden. Allerdings handelt es sich bei einer bevorzugten Ausführungsform um verschiedene Speichermodule, d.h. die Speicheranordnung besitzt n + k Speichermodule und die n Datenblöcke und die k redundanten Datenblöcke werden jeweils in einem anderen dieser n + k Speichermodule abgespeichert. Wichtig ist dabei, dass bekannt ist, welche n Datenblöcke mit welcher redundanten Information eine Einheit bilden, so dass diese Einheit wieder gefunden und ausgelesen werden kann. Beim Auslesen der Information werden die n Datenblöcke ausgelesen und, z.B. mittels des ECC-Codes, auf Fehler überprüft. D.h., es wird überprüft, ob ein Fehler vorliegt, welcher z.B. nicht mittels des ECC-Codes korrigiert werden kann. Wenn ein nicht zu korrigierender Fehler vorliegt bzw. wenn p fehlerhafte Datenblöcke erfasst werden, wird die zu den n Datenblöcken gehörende redundante Information gelesen und ausgehend von den n zumindest teilweise fehlerbehafteten Datenblöcken, insbesondere den n – p fehlerfreien Datenblöcken, und der redundanten Information werden alle Bit der p fehlerhaften Datenblöcke korrekt ermittelt. Anschließend werden die n Datenblöcke, welche eventuell korrigiert worden sind, ausgegeben.
  • Indem ein Verhältnis zwischen einer Größe der redundanten Information, insbesondere der Anzahl k der redundanten Datenblöcke, und der Anzahl n der Datenblöcke, welche die einzuspeichernde Information bilden, frei gewählt werden kann, bietet das erfindungsgemäße Verfahren zur Fehlerkorrektur zum einen die Möglichkeit, Fehler zu korrigieren, ohne dabei gleich die Bandbreite und die Speicherkapazität um 100% zu erhöhen, und zum anderen kann die Zuverlässigkeit einer Speicheranordnung, bei welcher das erfindungsgemäße Verfahren eingesetzt wird, nahezu beliebig eingestellt werden, indem das Verhältnis zwischen der Größe bzw. Menge der redundanten Information und der Anzahl n entsprechend eingestellt wird.
  • Es sei darauf hingewiesen, dass mehrere Informationen in die Speicheranordnung geschrieben werden können, indem sie jeweils in n Datenblöcke aufgeteilt werden, und dass diese Informationen anschließend in einer beliebigen Reihenfolge wieder aus der Speicheranordnung gelesen werden können.
  • Bei einer bevorzugten erfindungsgemäßen Ausführungsform werden k redundante Bit für jede Bitposition innerhalb der k redundanten Datenblöcke ausgehend von den n Bit der n zu schreibenden Datenblöcke bestimmt. Anders ausgedrückt wird die Menge der k Bit für eine bestimmte Bitposition der k redundanten Datenblöcke ausgehend von der Menge der n Bit, welche bei den n zu schreibenden Datenblöcken an dieser bestimmten Bitposition vorhanden sind, bestimmt.
  • Indem jeweils k Bit nur ausgehend von n Bit bestimmt werden, kann ein einfaches Codierverfahren oder eine einfache Codiervorrichtung, z.B. eine aus wenigen logischen Gattern bestehende, zur Ermittlung der k Bit ausgehend von den n Bit verwendet werden. Somit können die k redundanten Datenblöcke mit einfachen Mitteln und damit kostengünstig bestimmt werden.
  • Bei einer besonders bevorzugten Ausführungsform ist k = 1, so dass aus den n Datenblöcken nur ein redundanter Datenblock gebildet wird. Dabei wird jedes Bit dieses redundanten Datenblock gebildet, indem die n Bit an der dem zu bildenden Bit entsprechenden Bitposition innerhalb der n Datenblöcke mittels einer XOR-Funktion verknüpft werden. Beim Auslesen der n Datenblöcke kann dann ein fehlerhafter Datenblock korrigiert werden, indem jedes Bit dieses fehlerhaften Datenblocks ermittelt wird, indem die n – 1 Bit an der dem zu ermittelnden Bit entsprechenden Bitposition innerhalb der n – 1 fehlerfreien Datenblöcke mittels einer XOR-Funktion mit dem Bit an der dem zu bildenden Bit entsprechenden Bitposition innerhalb des redundanten Datenblocks verknüpft werden.
  • Im Rahmen der vorliegenden Erfindung wird auch eine Speichermodulsteuerung für ein Speichermodul bereitgestellt. Die Speichermodulsteuerung ist dabei derart ausgestaltet, dass sie bei Empfang eines Befehls, welcher eine Adresse innerhalb des der Speichermodulsteuerung zugeordneten Speichermoduls anspricht, aus Speicherchips dieses Speichermoduls einen Datenblock, welcher unter dieser Adresse abgespeichert ist, ausliest und über Ausgangsanschlüsse der Speichermodulsteuerung ausgibt. Die Speichermodulsteuerung speichert des Weiteren n Datenblöcke von jeweils m Bit in einer Zwischenspeichereinrichtung zwischen. Eine Codiervorrichtung der Speichermodulsteuerung ermittelt ausgehend von diesen n Datenblöcken einen redundanten Datenblock mit m Bit und speichert diesen redundanten Datenblock in den Speicherchips ab. Dabei ermittelt die Codiervorrichtung vorteilhafter Weise nur dann den redundanten Datenblock, wenn neue n Datenblöcke in der Zwischenspeichereinrichtung vorhanden sind. Anders ausgedrückt, wird von der Speichermodulsteuerung der jeweils älteste Datenblock in der Zwischenspeichereinrichtung durch einen neu von der Speichermodulsteuerung empfangenen Datenblock ersetzt und erst, wenn alle Datenblöcke in der Zwischenspeichereinrichtung ersetzt worden sind, die Codiervorrichtung angewiesen, ausgehend von diesen neu zwischengespeicherten n Datenblöcken einen neuen redundanten Datenblock zu erzeugen, welcher dann unter einer Adresse abgespeichert wird, mit deren Hilfe er den momentan in der Zwischenspeichereinrichtung befindlichen n Datenblöcken zugeordnet werden kann.
  • Die Zuverlässigkeit einer Speicheranordnung, welche einen oder mehrere Speichermodule mit einer erfindungsgemäßen Speichermodulsteuerung umfassen, kann nahezu beliebig verbessert werden (je mehr Speichermodule mit der erfindungsgemäßen Speichermodulsteuerung umso zuverlässiger), ohne dass eine Steuerung der Speicheranordnung beim Schreiben von Daten in die Speicheranordnung die erfindungsgemäßen Speichermodulsteuerungen extra ansteuern muss. Anders ausgedrückt muss die Steuerung der Speicheranordnung beim Schreiben von Daten die erfindungsgemäßen Speichermodulsteuerungen nicht berücksichtigen, da diese quasi automatisch das vorab beschriebene Verhalten aufweisen, um redundante Datenblöcke zu erzeugen.
  • Bei einer bevorzugten Ausführungsform der erfindungsgemäßen Speichermodulsteuerung ist die Speichermodulsteuerung derart konfigurierbar, dass sie keine Datenblöcke zwischenspeichert und niemals einen redundanten Datenblock erzeugt. Mit anderen Worten ist die Speichermodulsteuerung derart konfigurierbar, dass sie sich wie eine normale Speichermodulsteuerung nach dem Stand der Technik verhält.
  • Indem die erfindungsgemäße Speichermodulsteuerung auch als eine Speichermodulsteuerung nach dem Stand der Technik konfigurierbar ist, kann die erfindungsgemäße Speichermodulsteuerung vorteilhafter Weise auch in Speicheranordnungen eingesetzt werden, welche das erfindungsgemäße Verfahren zur Fehlerkorrektur nicht einsetzen. Darüber hinaus können derart konfigurierbare erfindungsgemäße Speichermodulsteuerungen auch in Speicheranordnungen eingesetzt werden, welche das erfindungsgemäße Verfahren zur Fehlerkorrektur einsetzen, wobei eine solche Speicheranordnung, wie es im Folgenden noch ausgeführt wird, zum einen normale Speichermodule bzw. Speichermodule mit einer entsprechend konfigurierten erfindungsgemäßen Speichermodulsteuerung zum Speichern der n Datenblöcke (ohne Erzeugen eines redundanten Datenblocks) und zum anderen Speichermodule mit einer erfindungsgemäßen Speichermodulsteuerung zum Erzeugen der k redundanten Datenblöcke umfasst.
  • Bei einer besonders bevorzugten erfindungsgemäßen Ausführungsform der Speichermodulsteuerung umfasst eine Codiervorrichtung der Speichermodulsteuerung m XOR-Gatter mit jeweils n Eingängen. Diese n Eingänge jedes XOR-Gatters werden mit denjenigen Bit beaufschlagt, welche sich in den n Datenblöcken an derselben Bitposition befinden. Somit berechnet jedes XOR-Gatter jeweils das Bit dieser Bitposition innerhalb des redundanten Datenblocks.
  • Des Weiteren stellt die vorliegende Erfindung eine Speichersteuerung für eine Speicheranordnung mit mehreren Speichermodulen bereit. Die Speichersteuerung teilt dabei eine in die Speicheranordnung zu schreibende Information in n Datenblöcke auf. Dann schreibt die Speichersteuerung diese n Datenblöcke in ein oder mehrere Speichermodule, insbesondere schreibt die Speichersteuerung jedes der n Datenblöcke in ein anderes Speichermodul. Zum Auslesen der Information liest die Speichersteuerung diese n Datenblöcke aus den entsprechenden Speichermodulen. Dann überprüft die Speichersteuerung, insbesondere mithilfe eines ECC-Codes, ob sich Fehler innerhalb der n Datenblöcke befinden. Wenn die Speichersteuerung p fehlerhafte Datenblöcke unter den n Datenblöcken erfasst hat, liest sie k redundante Datenblöcke mit jeweils m Bit aus mindestens einem Speichermodul aus, insbesondere aus k Speichermodulen, welche nicht den die n Datenblöcke enthaltenen Speichermodulen entsprechen. Die Adresse dieser k redundanten Datenblöcken ermittelt die Speichersteuerung dabei aus den Adressen bzw. der Adresse der n Datenblöcke. Mittels einer Decodiervorrichtung der Speichersteuerung werden ausgehend von den n Datenblöcken und den k redundanten Datenblöcken alle Bit der p fehlerhaften Datenblöcke korrekt ermittelt.
  • Wie bereits vorab angedeutet wurde, unterscheidet sich die Speichersteuerung beim Schreiben von Daten nicht von einer Speichersteuerung nach dem Stand der Technik, welche keine über den ECC-Code hinausgehende Fehlerkorrekturmöglichkeit aufweist. Erst beim Lesen und auch dann nur, wenn die Speichersteuerung einen Fehler, welcher beispielsweise durch die ECC-Codierung nicht behoben werden kann, erfasst, unterscheidet sich das Verhalten der erfindungsgemäßen Speichersteuerung von demjenigen der Speichersteuerung nach dem Stand der Technik, indem die Speichersteuerung den Fehler korrigiert. Dadurch wird vorteilhafter Weise eine Taktfrequenz oder eine benötigte Bandbreite der erfindungsgemäßen Speichersteuerung von der zusätzlichen Fehlerkorrekturmöglichkeit nicht negativ beeinflusst, sondern können gleiche Werte aufweisen, wie sie beispielsweise eine vergleichbare Speichersteuerung nach dem Stand der Technik aufweisen.
  • Schließlich umfasst die vorliegende Erfindung eine Speicheranordnung mit mindestens einem Speichermodul und einer Speichersteuerung zur Steuerung des mindestens einen Speichermoduls. Dabei wird eine von der Speichersteuerung an irgendeines der Speichermodule gesendete Information an alle Speichermodule der Speicheranordnung weitergeleitet. Eine in die Speicheranordnung zu schreibende Information wird durch die Speichersteuerung in n Datenblöcke mit jeweils m Bit aufgeteilt und in dem mindestens einen Speichermodul gespeichert. Mindestens ein Speichermodul der Speicheranordnung ist ein redundantes Speichermodul, wobei jedes dieses mindestens einen redundanten Speichermoduls diese n Datenblöcke zwischenspeichert, ausgehend von diesen n Datenblöcken eine redundante Information, insbesondere einen redundanten Datenblock mit m Bit, berechnet und diese Information abspeichert. Bei einer vorteilhaften Ausführungsform umfasst die Speicheranordnung n Speichermodule zur Abspeicherung der n Datenblöcke (in jedem der n Speichermodule wird einer der n Datenblöcke abgespeichert) und k Speichermodule, welche jeweils ausgehend von den n Datenblöcken oder einer Teilmenge dieser n Datenblöcke einen redundanten Datenblock berechnen und abspeichern. Dabei besitzt die Speicheranordnung Mittel um die redundante Information bzw. die k redundanten Datenblöcke den entsprechenden n Datenblöcken zuzuordnen. Beim Auslesen der Information liest die Speicheranordnung die n Datenblöcke und prüft, ob die n Datenblöcke fehlerbehaftet sind. Ist dies der Fall liest die Speicheranordnung die redundanten Informationen aus dem mindestens einen redundanten Speichermodul und ermittelt aus den n Datenblöcken, insbesondere aus fehlerfreien davon, und den redundanten Informationen die korrekten Bit von fehlerbehafteten Datenblöcken der n Datenblöcke.
  • Die Vorteile der erfindungsgemäßen Speicheranordnung entsprechen im Wesentlichen den Vorteilen, welche vorab im Zusammenhang mit der Beschreibung des erfindungsgemäßen Verfahrens zur Fehlerkorrektur, der erfindungsgemäßen Speichermodulsteuerung oder Speichersteuerung beschrieben worden sind, weshalb sie hier nicht wiederholt werden.
  • Die vorliegende Erfindung eignet sich vorzugsweise zum Einsatz bei Speicheranordnungen, welche mehrere Speichermodule, insbesondere fully buffered DIMMs, umfassen, wobei die Speicheranordnung Data Stripping beim Schreiben von Information in die Speicheranordnung einsetzt. Selbstverständlich ist die vorliegende Erfindung nicht auf diesen bevorzugten Anwendungsbereich beschränkt, sondern kann beispielsweise im Extremfall auch bei einer Speicheranordnung, welche nur ein Speichermodul umfasst, eingesetzt werden.
  • Die vorliegende Erfindung wird im Folgenden näher unter Bezugnahme auf die beigefügte Zeichnung anhand bevorzugter Ausführungsformen beschrieben.
  • 1 stellt eine erfindungsgemäße Ausführungsform einer Speicheranordnung mit insgesamt vier Speichermodulen dar.
  • 2a stellt schematisch dar, wie eine Information in eine erfindungsgemäße Speicheranordnung eingespeichert wird, wobei 2b schematisch darstellt, wie ein redundanter Datenblock aus n Datenblöcken berechnet wird.
  • 3 stellt schematisch dar, wie eine Information, welche keinen Fehler aufweist, aus einer erfindungsgemäßen Speicheranordnung gelesen wird.
  • 4a stellt schematisch dar, wie eine Information, welche einen erfindungsgemäß korrigierbaren Fehler aufweist, aus einer erfindungsgemäßen Speicheranordnung gelesen wird, wobei 4b schematisch darstellt, wie alle Bit eines fehlerhaften Datenblocks aus einem fehlerfreien Datenblock und dem redundanten Datenblock berechnet werden.
  • 5 stellt eine erfindungsgemäße Speichermodulsteuerung im Detail dar.
  • In 1 ist eine erfindungsgemäße Speicheranordnung 1 mit einer Speichersteuerung 2, drei normalen Speichermodulen 3 und einem redundanten Speichermodul 4 dargestellt. Dabei sind die Speichermodule 3, 4 im Daisy-Chain-Prinzip mit der Speichersteuerung verbunden. Jedes Speichermodul 3, 4 umfasst acht DRAMs 9 als Speicherchips. Dabei ist jedes Speichermodul 3, 4 ein fully buffered DIMM, was bedeutet, dass ankommende Signale vollständig zwischengespeichert und sofort weitergeleitet werden, so dass eine von der Speichersteuerung 2 gesendete Information nahezu zeitgleich an allen Speichermodulen 3, 4 anliegt. Erst nach dem Zwischenspeichern analysiert das jeweilige Speichermodul, ob es die zwischengespeicherte Information betrifft oder nicht. Wenn die zwischengespeicherte Information das entsprechende Speichermodul betrifft, wird die Information entsprechend verarbeitet und sonst gelöscht.
  • Wenn eine Information in die Speicheranordnung 1 zu schreiben ist, wird diese Informationen von der Speichersteuerung 2 in drei Datenblöcke aufgeteilt, welche dann jeweils in einem anderen der drei normalen Speichermodule 3 unter jeweils derselben Adresse, welche der Information zugeordnet ist, abgespeichert werden. Da, wie vorab beschrieben ist, jedes Speichermodul 3, 4 jede Information erhält, erhält das redundante Speichermodul 4 diese drei Datenblöcke auch und speichert sie in einem FIFO seiner Speichermodulsteuerung 10 zwischen. Wenn die Speichermodulsteuerung 10 erfasst, dass drei Datenblöcke mit derselben Adresse in ihrem FIFO abgespeichert sind, wird aus diesen Datenblöcken ein redundanter Datenblock 6 mit m Bit berechnet, wie es im Folgenden noch im Detail erläutert wird, und in dem redundanten Speichermodul 4 unter derselben Adresse abgespeichert. Während also in den drei normalen Speichermodulen 3 jeweils ein Datenblock 5 mit m Bit abgespeichert ist, ist in dem redundanten Speichermodul 4 ein aus diesen drei Datenblöcken 5 berechneter redundanter Datenblock 6 abgespeichert.
  • Wenn die Speicheranordnung 1 angewiesen wird, eine vorab abgespeicherte Information auszulesen, weist die Speichersteuerung 2 die drei normalen Speichermodule 3 an, jeweils einen Datenblock 5 einer der Information entsprechenden Adresse auszulesen, d.h. in jedem der drei normalen Speichermodule 3 wird der Datenblock 5 derselben Adresse ausgelesen. Beim Auslesen überprüft die Speichersteuerung 2, wie es im Folgenden noch im Detail beschrieben wird, ob die von den drei normalen Speichermodulen ausgelesenen Datenblöcke korrekt sind. Wenn die Speichersteuerung 2 erkennt, dass einer der ausgelesenen Datenblöcke einen Fehler aufweist, weist sie das redundante Speichermodul 4 an, den entsprechenden redundanten Datenblock 6 auszulesen, indem sie das redundante Speichermodul 4 anweist, den Datenblock 6 derselben Adresse (unter der auch die drei Datenblöcke aus den normalen Speichermodulen 3 ausgelesen wurden) auszulesen. In einer Decodiervorrichtung 14 der Speichersteuerung 2 werden mittels der zwei korrekten Datenblöcke und des redundanten Datenblocks 6 die korrekten Bit des fehlerhaften Datenblocks ermittelt, wie es im Detail im Folgenden noch erläutert wird. Aus den drei nunmehr korrekten Datenblöcken 5 wird dann die von der Speicheranordnung 1 angeforderte Information aufgebaut und an eine anfordernde Vorrichtung gesendet.
  • In 2a ist schematisch dargestellt, wie mehrere Informationen 20 in die Speicheranordnung 1 geschrieben werden. Aus zeichnerischen Gründen besteht die in den 2 bis 4 abgebildete Speicheranordnung allerdings nur aus zwei normalen Speichermodulen 3 anstelle der drei normalen Speichermodule der 1. Das heißt, dass eine in die Speicheranordnung 1 der 2 bis 4 zu schreibende Information nur in zwei Datenblöcke 5 aufgeteilt wird, welche dann in jeweils eines der beiden normalen Speichermodule 3 geschrieben wird. Genauso wird dann beim Auslesen einer Information nur jeweils ein Datenblock 5 aus jeweils einem der beiden normalen Speichermodule 3 gelesen.
  • Wenn eine zu schreibende Information 20 die Speicheranordnung 1 erreicht, wird diese Information 20 zum einen mit jeweils 64 Bit in zwei Datenblöcke aufgeteilt und zum anderen werden mittels eines ECC-Codes für jeden Datenblock acht redundante (zusätzliche) Bit ermittelt, welche dem entsprechenden Datenblock 5 hinzugefügt werden, so dass jeder der beiden Datenblöcke 5 72 Bit umfasst. Dann weist die Speichersteuerung 2 das erste normale Speichermodul 3 (in 1 links) an, den ersten Datenblock 5 (in 1 links) unter der Adresse der Information 20 abzuspeichern. Da es sich bei den Speichermodulen 3, 4 um zwischenspeichernde (fully buffered) DIMMs handelt, liegt dieser Schreibbefehl zusammen mit dem ersten Datenblock 5 und der Adresse auch an dem redundanten Speichermodul 4 an. Die Speichermodulsteuerung 15 des redundanten Speichermoduls 4 speichert den ersten Datenblock 5 in seinem FIFO, welches zwei Datenblöcke von jeweils 72 Bit abspeichern kann, ab. Dann weist die Speichersteuerung das zweite normale Speichermodul (in 2 das zweite Speichermodul von links) an, den zweiten Datenblock 5 unter derselben Adresse abzuspeichern. Wieder erhält das redundante Speichermodul 4 auch diesen Schreibbefehl, welcher die Adresse und den zweiten Datenblock 5 umfasst. Wieder speichert die Speichermodulsteuerung 15 den zweiten Datenblock 5 in ihrem FIFO ab und erkennt, dass das FIFO nun vollständig mit Datenblöcken derselben Adresse gefüllt ist. Daher weist die Speichermodulsteuerung 15 ihre XOR-Vorrichtung, welche aus 72 XOR-Gattern mit jeweils zwei Eingängen besteht, an, jeweils zwei Bit derselben Bitposition der beiden in dem FIFO befindlichen Datenblöcke 5 mittels der XOR-Funktion zu verknüpfen, so dass daraus ein redundanter Datenblock 6 mit 72 Bit entsteht, welcher von der Speichermodulsteuerung 15 unter der der Information 20 entsprechenden Adresse abgespeichert wird. Ein Beispiel, wie aus zwei Datenblöcken 5 mittels der 72 XOR-Gatter ein redundanter Datenblock 6 berechnet wird, findet sich in 2b.
  • In 3 ist schematisch dargestellt, wie mehrere Informationen aus der Speicheranordnung 1 ausgelesen werden. Wenn die Speichersteuerung 2 angewiesen wird, eine Information 20 unter einer bestimmten Adresse auszulesen, weist die Speichersteuerung 2 die beiden normalen Speichermodule 3 an, jeweils einen Datenblock mit jeweils 72 Bit aus jedem der beiden normalen Speichermodule 3 unter der bestimmten Adresse auszulesen. Die Speichersteuerung 2 überprüft dann mit Hilfe des ECC-Codes und der acht redundanten in jedem Datenblock 5 befindlichen Bit, ob der jeweilige Datenblock korrekt ist oder nicht. Wenn, wie es in 3 angenommen wird, die beiden Datenblöcke 5 korrekt sind oder einen Fehler aufweisen, welcher mittels des ECC-Codes und der acht redundanten Bit korrigiert werden kann, bildet die Speichersteuerung 2 die angeforderte Information 20, indem sie die redundanten Bit jedes Datenblocks 5 abschneidet und aus den verbleibenden 2 × 64 Bit die angeforderte Information bildet und an die anfordernde Vorrichtung sendet.
  • In 4a ist nun der Fall schematisch dargestellt, bei welchem beim Auslesen mehrerer Informationen aus der Speicheranordnung von der Speichersteuerung 2 jeweils pro Information ein Fehler erfasst wird, welcher nicht mittels des ECC Codes und der acht redundanten Bit korrigiert werden kann. Wie in 3 wird die Speichersteuerung 2 angewiesen, eine Information unter einer bestimmten Adresse auszulesen.
  • Dabei weist die Speichersteuerung 2 zum Auslesen einer Information 20 sowohl das erste normale Speichermodul als auch das zweite normale Speichermodul an, jeweils einen Datenblock unter der vorgegebenen Adresse auszulesen. An Hand des ECC-Codes und der acht redundanten DatenBit erkennt die Speichersteuerung 2, dass der Datenblock 7 des zwei zweiten Speichermoduls 3 einen Fehler aufweist, welcher nicht durch den ECC-Code zusammen mit den acht redundanten Bit behoben werden kann.
  • Daher weist die Speichersteuerung in einem zweiten Schritt das redundante Speichermodul 4 an, den redundanten Datenblock 6 unter der vorgegebenen Adresse (gleiche Adresse wie die beiden Datenblöcke) auszulesen. Zur Ermittlung des korrekten Datenblocks 8 bzw. zur Korrektur des fehlerhaften Datenblocks 7 des zweiten Speichermoduls 3 verknüpft eine Decodiervorrichtung 14 der Speichersteuerung 2 jeweils zwei Bit derselben Bitposition aus dem fehlerfreien Datenblock 11 des ersten Speichermoduls 3 und dem redundanten Datenblock 6 mittels der XOR-Funktion miteinander. Das Ergebnis sind die 72 Bit des korrigierten Datenblocks 8 des zweiten Speichermoduls. In 4b ist beispielhaft schematisch dargestellt, wie der korrigierte Datenblock 8 ausgehend von den Bit des fehlerfreien Datenblocks 11 und den Bit des redundanten Datenblocks 6 berechnet wird.
  • Anschließend wird von der Speichersteuerung 2 in gleicher Weise, wie es in 3 dargestellt ist, die angeforderte Information 20 aus den jeweils 64 nicht redundanten Bit der beiden Datenblöcke 11, 8 gebildet.
  • Es sei darauf hingewiesen, dass auch die Bit eines korrigierten Datenblocks (wie z.B. die 72 Bit des korrigierten Datenblocks 8 in 4) mittels des ECC-Codes korrigiert werden können.
  • In 5 ist eine erfindungsgemäße Speichermodulsteuerung 10 bzw. ein AMB (Advanced Memory Buffer) im Detail dargestellt, wobei allerdings nur die Vorrichtungen der Speichermodulsteuerung 10 dargestellt sind, welche beim Schreiben von Datenblöcken in die Speicheranordnung, in welcher die erfindungsgemäße Speichermodulsteuerung 10 eingesetzt ist, eine Rolle spielen.
  • Ein Schreibbefehl, welcher einen Datenblock und eine Adresse umfasst, erreicht die Speichermodulsteuerung an ihrem Anschluss 24. Die Speichermodulsteuerung 10 leitet diesen Schreibbefehl sofort über ihren Anschluss 23 weiter. Mittels einer Vorrichtung 16 werden Laufzeitunterschiede ausgeregelt. Anschließend wird der Schreibbefehl mittels eines Befehldecoders 17 und einer zentralen Steuereinheit 18 ausgewertet. Wenn der Befehlsdecoder 17 und die zentrale Steuerung 18 einen Schreibbefehl erfassen, wird der entsprechende Datenblock in dem FTFO 13 der Speichermodulsteuerung 10 abgespeichert. Die zentrale Steuereinheit 18 überprüft, ob alle in dem FIFO 13 gespeicherten Datenblöcke zur selben Adresse gehören. Wenn dies der Fall ist, wird mit Hilfe von 72 XOR-Gattern, welche jeweils so viele Eingänge aufweisen, wie Datenblöcke in dem FIFO gespeichert werden können (für eine Speichermodulsteuerung der Speicheranordnung der 1 also drei und für eine Speichermodulsteuerung der Speicheranordnung der 2 bis 4 zwei), der redundante Datenblock berechnet, wie es vorab mit Hilfe der 2 beschrieben ist. Dieser Datenblock wird dann über einen Multiplexer 19 und einen Datenanschluss 22 in den der Speichermodulsteuerung 10 zugeordneten Speicherchips unter der Adresse, zu welcher die in dem FIFO 13 gespeicherten Datenblöcke gehören, abgespeichert. Diese Adresse und zugehörige Befehle für die Speicherchips werden über einen weiteren Anschluss 21 der Speichermodulsteuerung 10 an die der Speichermodulsteuerung 10 zugeordneten Speicherchips übermittelt.
  • Das FIFO 13 ist derart ausgestaltet, dass es beim Abspeichern eines neuen Datenblocks jeweils den ältesten Datenblock hinausschiebt bzw. löscht. Da die Speicheranordnung 1 ihre Daten mittels Data Stripping schreibt, ist gewährleistet, dass Informationen immer in Einheiten von n Datenblöcken, welche jeweils dieselbe Adresse aufweisen, hintereinander in die Speicheranordnung 1 und damit auch in die Speichermodulsteuerung 10 des redundanten Speichermoduls 4 geschrieben werden, so dass die Speichermodulsteuerung 10 nur erfassen muss, wann in ihrem FIFO 13 n zur selben Einheit gehörende Datenblöcke bzw. n Datenblöcke mit derselben Adresse vorhanden sind. Im Normalfall ist dies nach jedem n-ten Einschieben eines Datenblocks in das FIFO 13 der Fall.
  • Wenn die Speichermodulsteuerung 10 normal konfiguriert ist, d.h. wenn die Speichermodulsteuerung 10 nicht zur Erzeugung redundanter Datenblöcke konfiguriert ist, wird zum einen kein Datenblock in dem FIFO 13 abgespeichert und zum anderen wird die in der 5 obere Verbindung zu dem Multiplexer 19 benutzt, um Datenblöcke in den der Speichermodulsteuerung 10 zugeordneten Speicherchips abzuspeichern.
  • In der Praxis umfasst eine erfindungsgemäße Speicheranordnung acht (nicht redundante) normale Speichermodule, so dass eine zu schreibende oder auszulesende Information 64 Byte (8 × 8 Bit) besitzt. Dabei ist das redundante Speichermodul, welches eine erfindungsgemäße Speichermodulsteuerung 10 mit einem FIFO 13 mit einer Speicherkapazität für 64 Byte aufweist, am weitesten von der erfindungsgemäßen Speichersteuerung 2 entfernt angeordnet, wie es auch in den vorab dargestellten Ausführungsformen der Fall ist.
  • In einer nicht dargestellten erfindungsgemäßen Ausführungsform sind beispielsweise acht normale Speichermodule 3 zusammen mit dem redundanten Speichermodul 4 und der erfindungsgemäßen Speichersteuerung in Form eines Rings angeordnet. Auch in diesem Fall ist das redundante Speichermodul 4 weiter von der Speichersteuerung 2 entfernt, als jedes der acht normalen Speichermodule 3. Anders ausgedrückt liegen in dem Ring zwischen dem redundanten Speichermodul und der Speichersteuerung unabhängig von der Richtung jeweils vier der acht normalen Speichermodule 3.
  • Bei einer weiteren ebenfalls nicht dargestellten Ausführungsform weist die erfindungsgemäße Speicheranordnung mehrere redundante Speichermodule 4 auf, welche allerdings nur ausgehend von einer Teilmenge der in den normalen Speichermodulen 3 abzuspeichernden Datenblöcken einen redundanten Datenblock bilden und abspeichern. Wenn die erfindungsgemäße Speicheranordnung acht normale Speichermodule 3 und zwei redundante Speichermodule 4 aufweist, ist eine erste Speichermodulsteuerung 10 der beiden redundanten Speichermodule 4 derart eingerichtet, dass sie die ersten vier Datenblöcke einer in der Speicheranordnung zu speichernden Information in ihrem FIFO speichert und daraus einen redundanten Datenblock in dem ersten redundanten Speichermodul 4 abspeichert. In ähnlicher Weise ist eine zweite Speichermodulsteuerung 10 derart eingerichtet, dass sie die zweiten vier Datenblöcke der zu speichernden Information in ihrem FIFO speichert und daraus einen redundanten Datenblock berechnet und diesen in dem zweiten redundanten Speichermodul 4 abspeichert. Eine solche erfindungsgemäße Speicheranordnung mit zwei redundanten Speichermodulen für acht normale Speichermodulen 3 besitzt im Vergleich zu einer erfindungsgemäßen Speicheranordnung mit einem redundanten Speichermodul 4 für acht normale Speichermodulen 3 eine höhere Zuverlässigkeit bzw. eine verbesserte Fehlerkorrekturmöglichkeit, da sowohl ein Fehler in einem Datenblock der ersten vier Datenblöcke als auch gleichzeitig ein Fehler in einem Datenblock der zweiten vier Datenblöcke korrigiert werden kann.

Claims (28)

  1. Verfahren zur Fehlerkorrektur für eine Speicheranordnung (1) wobei eine in die Speicheranordnung (1) zu schreibende Information (20) in n Datenblöcke (5) von jeweils m Bit aufgeteilt wird, wobei die n Datenblöcke (5) in mindestens ein Speichermodul (3) der Speicheranordnung (1) geschrieben werden, dadurch gekennzeichnet, dass ausgehend von den n Datenblöcken (5) eine redundante Information (6) ermittelt wird, dass die redundante Information (6) in mindestens ein weiteres Speichermodul (4) der Speicheranordnung (1) geschrieben wird, dass die n Datenblöcke (5) ausgelesen und auf Fehler überprüft werden, wobei p fehlerhafte Datenblöcke (7) davon erfasst werden, dass beim Vorliegen eines Fehlers alle Bit der p fehlerhaften Datenblöcke (7) aus den n Datenblöcken (11) und der redundanten Information (6) ermittelt werden, welche in einem Fehlerfall vorab aus dem mindestens einen weiteren Speichermodul (4) gelesen wird, und dass n Datenblöcke ausgegeben werden.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass die fehlerhaften Datenblöcke (7) erfasst werden, indem beim Aufteilen der zu schreibenden Information (20) für jeden der n Datenblöcke (5) mittels eines ECC-Codes q Bit erzeugt werden, welche eine Teilmenge der m Bit des jeweiligen Datenblocks (5) bilden, wobei diese q Bit zusammen mit den m – q restlichen Bit beim Auslesen eines der Datenblöcke (5) ausgewertet werden.
  3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass k redundante Datenblöcke (6) von jeweils m Bit die redundante Information bilden.
  4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, dass für jede Bitposition der m Bit innerhalb der n Datenblöcke (5) mittels einer Codierfunktion für n Bit, welche in den n Datenblöcken (5) an der jeweiligen Bitposition angeordnet sind, k redundante Bit ermittelt werden, so dass sich dadurch die k redundanten Datenblöcke (6) von jeweils m Bit ergeben.
  5. Verfahren nach Anspruch 3 oder 4, dadurch gekennzeichnet, dass p = 1 ist, dass k = 1 ist, dass jedes der m Bit des redundanten Datenblocks (6) ermittelt wird, indem für jede Bitposition der m Bit innerhalb der n Datenblöcke (5) die n Bit, welche in den n Datenblöcken (5) an der jeweiligen Bitposition angeordnet sind, mittels einer logischen Funktion verknüpft werden, wobei das Ergebnis der logischen Funktion ein Bit des redundanten Datenblocks (6) an der entsprechenden Bitposition ergibt.
  6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, dass die logische Funktion eine XOR-Funktion oder eine XNOR-Funktion ist.
  7. Verfahren nach Anspruch 5 oder 6, dadurch gekennzeichnet, dass beim Auslesen, nur wenn genau ein fehlerhafter Datenblock (7) erfasst worden ist, jedes Bit des fehlerhaften Datenblocks (7) als ein korrektes Bit ermittelt wird, indem für jede Bitposition der m Bit innerhalb der n – 1 fehlerfreien Datenblöcke (11) die n – 1 Bit, welche in den n – 1 fehlerfreien Datenblöcken (11) an der jeweiligen Bitposition angeordnet sind, mittels der logischen Funktion mit dem Bit des redundanten Datenblocks (6) an der jeweiligen Bitposition verknüpft werden, wobei das Ergebnis der logischen Funktion das korrekte Bit des fehlerhaften Datenblocks (7) an der entsprechenden Bitposition ergibt.
  8. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass jedes des mindestens einen Speichermoduls und des mindestens einen weiteren Speichermoduls ein DIMM (3) ist.
  9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass jedes DIMM ein fully buffered DIMM (3) ist.
  10. Speichermodulsteuerung für ein Speichermodul, wobei die Speichermodulsteuerung (10) derart ausgestaltet ist, dass die Speichermodulsteuerung (10) bei Empfang eines Lesebefehls einen Datenblock (5), welcher einer Adresse innerhalb des Lesebefehls entspricht, aus mindestens einem der Speichermodulsteuerung (10) zugeordneten Speicherchip (9) ausliest und über mindestens einen Ausgangsanschluss ausgibt, dadurch gekennzeichnet, dass die Speichermodulsteuerung (10) derart ausgestaltet ist, dass die Speichermodulsteuerung (10) n Datenblöcke von jeweils m Bit in einer Zwischenspeichereinrichtung (13) zwischenspeichert, dass die Speichermodulsteuerung (10) eine Codiervorrichtung (12) umfasst, welche ausgehend von den n Datenblöcken einen redundanten Datenblock (6) mit m Bit erzeugt, und dass die Speichermodulsteuerung (10) diesen redundanten Datenblock (6) in dem mindestens einen der Speichermodulsteuerung (10) zugeordneten Speicherchip (9) abspeichert.
  11. Speichermodulsteuerung nach Anspruch 10, dadurch gekennzeichnet, dass die Codiervorrichtung m XOR-Gatter (12) mit jeweils n Eingängen umfasst, wobei die n Eingänge jedes XOR-Gatters mit n Bit beaufschlagt sind, welche in den n Datenblöcken (5) an einer jeweiligen Bitposition angeordnet sind, so dass jedes XOR-Gatter jeweils eine der Bitpositionen innerhalb des redundanten Datenblocks (6) ermittelt.
  12. Speichermodulsteuerung nach Anspruch 10 oder 11, dadurch gekennzeichnet, dass die Speichermodulsteuerung eine Speichermodulsteuerung für (10) ein fully buffered DIMM (3) ist.
  13. Speichermodulsteuerung nach einem der Ansprüche 10-12, dadurch gekennzeichnet, dass die Speichermodulsteuerung (10) derart ausgestaltet ist, dass die Speichermodulsteuerung (10) an entsprechenden Eingangsanschlüssen der Speichermodulsteuerung (10) anliegende Daten zum einen an entsprechende Ausgangsanschlüsse der Speichermodulsteuerung (10) weiterleitet und zum anderen in einem Puffer (13) der Speichermodulsteuerung (10) zwischenspeichert, wobei die Speichermodulsteuerung (10) nur dann einen in den Daten enthaltenen Datenblock (5) als einen der n Datenblöcke (5) weiter zwischenspeichert, wenn eine in den Daten enthaltene Adresse ein vorbestimmtes Kriterium erfüllt.
  14. Speichermodulsteuerung nach einem der Ansprüche 10-13, dadurch gekennzeichnet, dass die Speichermodulsteuerung (10) derart ausgestaltet ist, dass die Codiervorrichtung (12) nur dann den redundanten Datenblock (6) erzeugt und die Speichermodulsteuerung (10) den redundanten Datenblock (6) abspeichert, wenn die Speichermodulsteuerung (10) die n Datenblöcke neu zwischengespeichert hat.
  15. Speichermodulsteuerung nach einem der Ansprüche 10-14, dadurch gekennzeichnet, dass die Speichermodulsteuerung (10) derart konfigurierbar ist, dass die Speichermodulsteuerung keine Datenblöcke in der Zwischenspeichereinrichtung (13) zwischenspeichert und keinen redundanten Datenblock (6) erzeugt und bei Empfang eines Schreibbefehls, dessen Adresse der Speichermodulsteuerung entspricht, einen dem Schreibbefehl zugeordneten Datenblock in mindestens einen der Speichermodulsteuerung (10) zugeordneten Speicherchip (9) schreibt.
  16. Speichersteuerung für eine mehrere Speichermodule umfassende Speicheranordnung, wobei die Speichersteuerung (2) derart ausgestaltet ist, dass die Speichersteuerung (2) eine in die Speicheranordnung (1) zu schreibende Information (20) in n Datenblöcke (5) von jeweils m Bit aufteilt, und wobei die Speichersteuerung (2) die n Datenblöcke (5) in mindestens ein Speichermodul (3) schreibt, dadurch gekennzeichnet, dass die Speichersteuerung (2) derart ausgestaltet ist, dass die Speichersteuerung (2) die n Datenblöcke (5) aus dem mindestens einen Speichermodul (3) ausliest, dass die Speichersteuerung (2), wenn sie p fehlerhafte Datenblöcke (7) unter den n Datenblöcken (5) erfasst, k redundante Datenblöcke (6) von jeweils m Bit, welche den n Datenblöcken (5) zugeordnet sind, aus mindestens einem weiteren Speichermodul (4) ausliest, dass die Speichersteuerung (2) eine Decodiervorrichtung (14) umfasst, welche ausgehend von n – p fehlerfreien Datenblöcken (11) und den k redundanten Datenblöcken (6) alle Bit der p fehlerhaften Datenblöcke (7) korrekt ermittelt.
  17. Speichersteuerung nach Anspruch 16, dadurch gekennzeichnet, dass die Speichersteuerung (2) derart ausgestaltet ist, dass die Speichersteuerung (2) beim Aufteilen der zu schreibenden Information (20) für jeden der n Datenblöcke (5) mittels eines ECC-Codes q redundante Bit erzeugt, welche eine Teilmenge der m Bit des jeweiligen Datenblocks (5) bilden, und dass die Speichersteuerung (2) beim Auslesen jedes Datenblocks (5) anhand dieser q Bit zusammen mit den m – q restlichen Bit des jeweiligen Datenblocks (5) ermittelt, ob der entsprechende Datenblock (5) fehlerhaft ist.
  18. Speichersteuerung nach Anspruch 16 oder 17, dadurch gekennzeichnet, dass p = 1 ist, dass k = 1 ist, dass die Speichersteuerung (2) derart ausgestaltet ist, dass die Speichersteuerung (2) alle Bit des fehlerhaften Datenblocks (7) korrekt ermittelt, indem für jede Bitposition der m Bit innerhalb von n – 1 fehlerfreien Datenblöcken (11) n – 1 Bit, welche in den n – 1 fehlerfreien Datenblöcken (11) an der jeweiligen Bitposition angeordnet sind, und ein Bit, welches sich in dem redundanten Datenblock (6) an der jeweiligen Bitposition befindet, mittels einer XOR-Funktion verknüpft werden, wobei das Ergebnis der XOR-Funktion ein korrektes Bit des fehlerhaften Datenblocks (7) an der jeweiligen Bitposition ergibt.
  19. Speichersteuerung nach Anspruch 18, dadurch gekennzeichnet, dass die Decodiervorrichtung (14) m XOR-Gatter mit jeweils n Eingängen umfasst, dass die Steuervorrichtung (2) derart ausgestaltet ist, dass die Speichersteuerung (2) mit jedem XOR-Gatter das korrekte Bit berechnet wird, welches sich in dem fehlerhaften Datenblock (7) an der jeweiligen Bitposition befindet, und dass die Steuervorrichtung (2) die n Eingänge jedes XOR-Gatters mit den n – 1 Bit der n – 1 fehlerfreien Datenblöcke (11) an der jeweiligen Bitposition und mit dem Bit des redundanten Datenblocks (6) an der jeweiligen Bitposition beaufschlagt.
  20. Speichersteuerung nach einem der Ansprüche 16-19, dadurch gekennzeichnet, dass die Speichersteuerung (2) zur Steuerung von DIMMs (3; 4) ausgelegt ist.
  21. Speichersteuerung nach einem der Ansprüche 16-20, dadurch gekennzeichnet, dass die Speichersteuerung (2) zur Steuerung von fully buffered DIMMs (3; 4) ausgelegt ist.
  22. Speicheranordnung, welche mindestens ein Speichermodul (3), mindestens ein redundantes Speichermodul (4) und eine Speichersteuerung (2) zur Steuerung der Speichermodule (3, 4) umfasst, wobei die Speicheranordnung (1) derart ausgestaltet ist, dass sie eine von der Speichersteuerung (2) an mindestens eines der Speichermodule (3; 4) geleitete Information an alle Speichermodule (3, 4) weiterleitet, wobei die Speichersteuerung (2) derart ausgestaltet ist, dass die Speichersteuerung (2) eine in die Speicheranordnung (1) zu schreibende Information (20) in n Datenblöcke (5) von jeweils m Bit aufteilt, und dass die Speichersteuerung (2) die n Datenblöcke (5) in das mindestens eine Speichermodul (3) schreibt, dadurch gekennzeichnet, dass das mindestens eine redundante Speichermodul (4) derart ausgestaltet ist, dass jedes des mindestens einen redundanten Speichermoduls (4) die n Datenblöcke (5) zwischenspeichert und aus den n Datenblöcken (5) eine redundante Information (6) berechnet und diese abspeichert, dass die Speicheranordnung (1) derart ausgestaltet ist, dass die Speicheranordnung (1) die n Datenblöcke (5) ausliest und auf Fehler überprüft, wobei p fehlerhafte Datenblöcke (7) davon erfasst werden, dass die Speicheranordnung (1) beim Vorliegen eines Fehlers alle Bit der p fehlerhaften Datenblöcke (7) aus den n Datenblöcken (11) und den redundanten Informationen (6) ermittelt, welche die Speicheranordnung (1) in einem Fehlerfall vorab aus dem mindestens einen weiteren Speichermodul (4) liest, und dass die Speicheranordnung (1) die n Datenblöcke ausgibt.
  23. Speicheranordnung nach Anspruch 22, dadurch gekennzeichnet, dass die Speicheranordnung mindestens zwei redundante Speichermodule (4) umfasst, dass mindestens eines der mindestens zwei redundanten Speichermodule (4) derart ausgestaltet ist, dass es nur eine Teilmenge der n Datenblöcke (5) zwischenspeichert, aus dieser Teilmenge eine redundante Information berechnet und diese abspeichert.
  24. Speicheranordnung nach Anspruch 22, dadurch gekennzeichnet, dass die Speicheranordnung genau ein redundantes Speichermodul (4) umfasst, dass die Speichermodule (3, 4) in Form einer Kette im Daisy-Chain-Prinzip mit der Speichersteuerung (2) verbunden sind, und dass das redundante Speichermodul (4) das letzte Speichermodul dieser Kette ist.
  25. Speicheranordnung nach Anspruch 22, dadurch gekennzeichnet, dass die Speicheranordnung genau ein redundantes Speichermodul (4) umfasst, dass die Speichermodule (3, 4) in Form eines Rings mit der Speichersteuerung (2) verbunden sind, und dass das redundante Speichermodul derart in dem Ring angeordnet ist, das es am weitesten von der Speichersteuerung entfernt ist.
  26. Speicheranordnung nach einem der Ansprüche 22-25, dadurch gekennzeichnet, dass mindestens eines der mindestens einen redundanten Speichermodule (4) eine Speichermodulsteuerung (10) nach einem der Ansprüche 10-15 aufweist.
  27. Speicheranordnung nach einem der Ansprüche 22-26, dadurch gekennzeichnet, dass die Speichersteuerung für die Speicheranordnung (1) eine Speichersteuerung (2) nach einem der Ansprüche 16-21 ist.
  28. Speicheranordnung nach einem der Ansprüche 22-27, dadurch gekennzeichnet, dass die Speicheranordnung (1) zur Durchführung des Verfahrens nach einem der Ansprüche 1-9 ausgestaltet ist.
DE102006016499.7A 2006-04-07 2006-04-07 Speichermodulsteuerung, Speichersteuerung und entsprechende Speicheranordnung sowie Verfahren zur Fehlerkorrektur Expired - Fee Related DE102006016499B4 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102006016499.7A DE102006016499B4 (de) 2006-04-07 2006-04-07 Speichermodulsteuerung, Speichersteuerung und entsprechende Speicheranordnung sowie Verfahren zur Fehlerkorrektur
US11/696,745 US20070255999A1 (en) 2006-04-07 2007-04-05 Memory Arrangement And Method For Error Correction

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102006016499.7A DE102006016499B4 (de) 2006-04-07 2006-04-07 Speichermodulsteuerung, Speichersteuerung und entsprechende Speicheranordnung sowie Verfahren zur Fehlerkorrektur

Publications (2)

Publication Number Publication Date
DE102006016499A1 true DE102006016499A1 (de) 2007-10-18
DE102006016499B4 DE102006016499B4 (de) 2014-11-13

Family

ID=38514446

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102006016499.7A Expired - Fee Related DE102006016499B4 (de) 2006-04-07 2006-04-07 Speichermodulsteuerung, Speichersteuerung und entsprechende Speicheranordnung sowie Verfahren zur Fehlerkorrektur

Country Status (2)

Country Link
US (1) US20070255999A1 (de)
DE (1) DE102006016499B4 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7984329B2 (en) * 2007-09-04 2011-07-19 International Business Machines Corporation System and method for providing DRAM device-level repair via address remappings external to the device
US7900084B2 (en) * 2007-12-21 2011-03-01 Intel Corporation Reliable memory for memory controller with multiple channels
JP5212201B2 (ja) * 2009-03-18 2013-06-19 株式会社デンソー 乗員保護システム
JP2012003644A (ja) * 2010-06-21 2012-01-05 Fujitsu Ltd メモリエラー箇所検出装置、及びメモリエラー箇所検出方法。
US9436558B1 (en) * 2010-12-21 2016-09-06 Acronis International Gmbh System and method for fast backup and restoring using sorted hashes
US9792928B2 (en) 2012-11-02 2017-10-17 Hewlett Packard Enterprise Development Lp Tape storage device having at least one redundant read data element
TWI557636B (zh) * 2012-11-12 2016-11-11 慧榮科技股份有限公司 儲存媒體、存取系統及方法
US9087614B2 (en) 2012-11-27 2015-07-21 Samsung Electronics Co., Ltd. Memory modules and memory systems
CN110442298B (zh) * 2018-05-02 2021-01-12 杭州海康威视系统技术有限公司 存储设备异常检测方法及装置、分布式存储系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1054326A1 (de) * 1999-05-18 2000-11-22 Hewlett-Packard Company Speicherfehlerkorrektion mit einen redundanten geschnittenen Speicher und Standard ECC Mechanismus

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL7804674A (nl) * 1978-05-02 1979-11-06 Philips Nv Geheugen met detektie en korrektie van fouten.
JP2583547B2 (ja) * 1988-01-13 1997-02-19 株式会社日立製作所 半導体メモリ
US5134619A (en) * 1990-04-06 1992-07-28 Sf2 Corporation Failure-tolerant mass storage system
US5140592A (en) * 1990-03-02 1992-08-18 Sf2 Corporation Disk array system
US5206865A (en) * 1990-12-17 1993-04-27 Motorola, Inc. Error detection and correction memory system
US5331646A (en) * 1992-05-08 1994-07-19 Compaq Computer Corporation Error correcting code technique for improving reliablility of a disk array
US5367669A (en) * 1993-03-23 1994-11-22 Eclipse Technologies, Inc. Fault tolerant hard disk array controller
US5867640A (en) * 1993-06-01 1999-02-02 Mti Technology Corp. Apparatus and method for improving write-throughput in a redundant array of mass storage devices
US5757823A (en) * 1995-10-03 1998-05-26 International Business Machines Corporation Error detection and correction for four-bit-per-chip memory system
US5691996A (en) * 1995-12-11 1997-11-25 International Business Machines Corporation Memory implemented error detection and correction code with address parity bits
US5768294A (en) * 1995-12-11 1998-06-16 International Business Machines Corporation Memory implemented error detection and correction code capable of detecting errors in fetching data from a wrong address
US5761221A (en) * 1995-12-11 1998-06-02 International Business Machines Corporation Memory implemented error detection and correction code using memory modules
US5841795A (en) * 1996-02-12 1998-11-24 Compaq Computer Corporation Error correction codes
US6223301B1 (en) * 1997-09-30 2001-04-24 Compaq Computer Corporation Fault tolerant memory
US6141789A (en) * 1998-09-24 2000-10-31 Sun Microsystems, Inc. Technique for detecting memory part failures and single, double, and triple bit errors
US6233716B1 (en) * 1998-09-24 2001-05-15 Sun Microsystems, Inc. Technique for partitioning data to correct memory part failures
WO2000041182A1 (en) * 1998-12-30 2000-07-13 Intel Corporation Memory array organization
US6574746B1 (en) * 1999-07-02 2003-06-03 Sun Microsystems, Inc. System and method for improving multi-bit error protection in computer memory systems
US6519736B1 (en) * 1999-11-30 2003-02-11 International Business Machines Corporation Generating special uncorrectable error codes for failure isolation
US6463563B1 (en) * 1999-11-30 2002-10-08 International Business Machines Corporation Single symbol correction double symbol detection code employing a modular H-matrix
US6460157B1 (en) * 1999-11-30 2002-10-01 International Business Machines Corporation Method system and program products for error correction code conversion
US6845472B2 (en) * 2000-01-25 2005-01-18 Hewlett-Packard Development Company, L.P. Memory sub-system error cleansing
US6785785B2 (en) * 2000-01-25 2004-08-31 Hewlett-Packard Development Company, L.P. Method for supporting multi-level stripping of non-homogeneous memory to maximize concurrency
US6715116B2 (en) * 2000-01-26 2004-03-30 Hewlett-Packard Company, L.P. Memory data verify operation
US6751769B2 (en) * 2000-06-06 2004-06-15 International Business Machines Corporation (146,130) error correction code utilizing address information
US6320812B1 (en) * 2000-09-20 2001-11-20 Agilent Technologies, Inc. Error catch RAM for memory tester has SDRAM memory sets configurable for size and speed
US6591394B2 (en) * 2000-12-22 2003-07-08 Matrix Semiconductor, Inc. Three-dimensional memory array and method for storing data bits and ECC bits therein
US7096407B2 (en) * 2003-02-18 2006-08-22 Hewlett-Packard Development Company, L.P. Technique for implementing chipkill in a memory system
US7079446B2 (en) * 2004-05-21 2006-07-18 Integrated Device Technology, Inc. DRAM interface circuits having enhanced skew, slew rate and impedance control
US7398449B1 (en) * 2004-06-16 2008-07-08 Azul Systems, Inc. Encoding 64-bit data nibble error correct and cyclic-redundancy code (CRC) address error detect for use on a 76-bit memory module
US7478307B1 (en) * 2005-05-19 2009-01-13 Sun Microsystems, Inc. Method for improving un-correctable errors in a computer system
US7227797B2 (en) * 2005-08-30 2007-06-05 Hewlett-Packard Development Company, L.P. Hierarchical memory correction system and method
US7895502B2 (en) * 2007-01-04 2011-02-22 International Business Machines Corporation Error control coding methods for memories with subline accesses

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1054326A1 (de) * 1999-05-18 2000-11-22 Hewlett-Packard Company Speicherfehlerkorrektion mit einen redundanten geschnittenen Speicher und Standard ECC Mechanismus

Also Published As

Publication number Publication date
US20070255999A1 (en) 2007-11-01
DE102006016499B4 (de) 2014-11-13

Similar Documents

Publication Publication Date Title
DE102006016499B4 (de) Speichermodulsteuerung, Speichersteuerung und entsprechende Speicheranordnung sowie Verfahren zur Fehlerkorrektur
DE10255872B4 (de) Speichermodul und Verfahren zum Betrieb eines Speichermoduls in einem Datenspeichersystem
DE102005053625B4 (de) Speichermodul mit einer Mehrzahl von Speicherbausteinen
DE102004036888B4 (de) Flashspeichersystem und zugehöriges Datenschreibverfahren
DE112010003345T5 (de) Datenspeichersystem und Verfahren für das Betreiben eines Datenspeichersystems
DE10206689A1 (de) Integrierter Speicher und Verfahren zum Betrieb eines integrierten Speichers
EP1652190A1 (de) Hub-baustein zum anschliessen von einem oder mehreren speich erbausteinen
DE60215687T2 (de) Fehlerkorrektion von multibit-baueinheiten mit unbeschränkter erkennung von doppelfehlern
DE102006019426B4 (de) Speichermodulsteuerung, Speichersteuerung und entsprechende Speicheranordnung sowie Verfahren zur Fehlerkorrektur
EP0353660B1 (de) Verfahren zur Fehlersicherung in Speichersystemen von Datenverarbeitungsanlagen, insbesondere Fernsprechvermittlungsanlagen
DE102006036384A1 (de) Mikroprozessorsystem zur Steuerung bzw. Regelung von zumindest zum Teil sicherheitskritischen Prozessen
EP0922253A1 (de) Fehlererkennung in einem speichersystem
WO1999054819A1 (de) Speicheranordnung mit redundanten speicherzellen und verfahren zum zugriff auf redundante speicherzellen
EP0453609B1 (de) Verfahren zum Testen einer kleinsten adressierbaren Einheit eines RAM's auf über einer bestimmten Zahl liegende Bitfehler
DE10340236B4 (de) Anordnung mit einer Datenverarbeitungseinrichtung und einem Speicher
DE3528902C2 (de) Durch einen EDC-Code gesichertes Speichersystem
EP1777622A2 (de) Instruktionsspeicherabsicherung durch Control Flow Checking
DE2153116A1 (de) Funktionsueberwachter informationsspeicher, insbesondere integrierter halbleiterspeicher
DE102006050542A1 (de) Verfahren zum Übertragen von Signalen zwischen einem Speicherbauelement und einer Speichersteuereinheit
DE10157537C2 (de) Integrierter Speicher und Verfahren zur Reparatur eines integrierten Speichers
DE3442823C2 (de)
EP1639466B1 (de) Verfahren und vorrichtung zur fehlererkennung für einen cachespeicher und entsprechender cachespeicher
DE102006006571A1 (de) Halbleiteranordnung und Verfahren zum Betreiben einer Halbleiteranordnung
DE4028979C2 (de) Einrichtung zur Diagnose von nicht rücklesbaren Ports in Mikrocomputern
EP2921959A1 (de) Verfahren und Anordnung zum effizienten Korrigieren von Ein-Bit-Fehlern

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R081 Change of applicant/patentee

Owner name: INFINEON TECHNOLOGIES AG, DE

Free format text: FORMER OWNER: QIMONDA AG, 81739 MUENCHEN, DE

Owner name: POLARIS INNOVATIONS LTD., IE

Free format text: FORMER OWNER: QIMONDA AG, 81739 MUENCHEN, DE

R082 Change of representative

Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE

R020 Patent grant now final
R081 Change of applicant/patentee

Owner name: POLARIS INNOVATIONS LTD., IE

Free format text: FORMER OWNER: INFINEON TECHNOLOGIES AG, 85579 NEUBIBERG, DE

R082 Change of representative

Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE

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