-
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.