-
Die
Erfindung betrifft ein Speichermodul, das mehrere Speicherbausteine
vom RAM-Typ enthält, gemäß dem Oberbegriff
des Patentanspruchs 1. Das Akronym RAM steht bekanntlich für Schreib-Lese-Speicher
mit direktem und wahlfreiem Zugriff auf die Speicherzellen (Random
Access Memory). Bevorzugtes, jedoch nicht ausschließliches
Anwendungsgebiet der Erfindung sind Speicheranordnungen mit dynamischen
RAM-Bausteinen (so genannte DRAM-Bausteine), wie sie als Arbeitsspeicher
in Computern gebräuchlich
sind.
-
Speicherbausteine
der oben erwähnten
Gattung haben üblicherweise
einen Datenport mit einer Mehrzahl L paralleler Datenanschlüsse (Datenpins), um
jeweils eine Gruppe von L Nutzbits in Parallelform ein- und auszugeben.
Bei den derzeit üblichen Speicherbausteinen
ist die Zahl L vorzugsweise eine ganzzahlige Potenz von 2 und wird
durch entsprechende Konfigurierung des Bausteins festgelegt; gebräuchlich
sind Konfigurationen als x4-Baustein (L=4), als x8-Baustein (L=8)
und als x16-Baustein (L=16). Als Quelle der einzugebenden Daten (Schreibdaten)
und Senke der ausgegebenen Daten (Lesedaten) dient üblicherweise
ein Controller, welcher auch die Steuer- und Adressbits liefert,
um den Betrieb des Speicherbausteins zu steuern und diejenigen Speicherzellen
des Speicherbausteins zu selektieren, in welche die eingegebenen
Nutzbits geschrieben werden sollen und aus denen die auszugebenden
Daten gelesen werden sollen.
-
Die Übertragung
der L-Bit-Gruppen zwischen den Datenanschlüssen des Speicherbausteins und
dem Controller erfolgt taktgesteuert über ein Bündel von L parallelen Leitungen.
Bei einem Betrieb mit "einfacher
Datenrate" (SDR
= Single Data Rate) ist der Takt dieser Übertragung gleich dem Speichertakt,
d.h. mit jedem Speichertakt werden genau L Bits an L selektierten
Speicherzellen gleichzeitig geschrieben bzw. gelesen. Im Falle eines
Betriebs mit m-facher Datenrate, erfolgt die Datenübertragung zwischen
dem Speicherbaustein und dem Controller mit einer Taktrate, die
doppelt so schnell ist wie die Taktrate der Speicherzugriffe (m=2,
Double Data Rate DDR) oder viermal so schnell (m=4, DDR2) oder achtmal
so schnell (m=8, DDR3). In diesen Fällen werden bei jedem Speichertakt
parallel m verschiedene L-Zellen-Gruppen (in m verschiedenen Bereichen
des Bausteins) für
einen Zugriff adressiert, um m L-Bit-Wörter parallel zu schreiben
oder zu lesen. Die externe Übertragung
der Wörter
erfolgt hingegen seriell mit m-facher Speichertaktrate, wobei für die Parallel/Serien-Umsetzung beim Lesen
und für
die Serien/Parallel-Umsetzung beim Schreiben ein Prefetchregister
verwendet wird, um die m L-Bit-Wörter
eines jeden Zugriffs zu sammeln.
-
Zur
Realisierung von RAM-Datenspeichern mit hoher Speicherkapazität und/oder
mit hohem Datendurchsatz ist es üblich,
eine Mehrzahl gleichartiger Speicherbausteine, die jeweils auf einem
Chip integriert sind, gleiche Speicherkapazität haben und für gleiche
x-Konfiguration (also auch gleiche Anzahl L von Datenanschlüssen) konstruiert
oder eingestellt sind, zu einem Modul auf einer Platine zusammenzufassen.
Beim Stand der Technik sind solche Module so organisiert, dass jeweils
auf K Bausteine des Moduls gleichzeitig im Parallelbetrieb zugegriffen
wird, um bei jedem Zugriff ein Datenwort, das aus L*K Parallelbits
besteht, einzuschreiben oder auszulesen (das Symbol * steht hier
und im Folgenden als Multiplikationszeichen; ein Schrägstrich
/ steht für
Division). Jede Gruppe von K Bausteinen, auf die jeweils gleichzeitig
im Parallelbetrieb zugegriffen wird, bezeichnet man auch als "Rank". Ein Speichermodul kann
eine Mehrzahl R solcher Ranks oder nur einen einzigen Rank (R=1)
umfassen.
-
Im
Betrieb ist das Modul mit einem einzigen Speichercontrol ler verbunden,
der die einzuschreibenden Daten sendet und die ausgelesenen Daten empfängt und
außerdem
Steuerbits für
den Speicherbetrieb sendet. Diese Steuerbits umfassen Befehls- und Einstellbits
zum Steuern der Betriebszustände
der Speicherbausteine und Selektionsbits zur Auswahl der jeweils
anzusprechenden Speicherbausteine innerhalb des Moduls und zur Adressierung
der Speicherzellen innerhalb der jeweils ausgewählten Bausteine. Für die Übertragung
der L*K-Bit-Datenwörter zwischen
Speichermodul und Controller ist gewöhnlich ein Datenbus mit L*K
parallelen Leitungen vorgesehen, die sich auf der Platine des Moduls
in K sogenannte "Lanes" auffächern, deren
jede aus L parallelen Leitungen besteht und mit einem jeweils zugeordneten
Speicherbaustein in jedem Rank des Moduls verbunden ist. Die Zahl
L wird deswegen auch als Lanebreite bezeichnet.
-
Sowohl
beim Übertragen
der Daten zwischen Modul und Controller als auch beim Speichern der
Daten im Modul können
Bitfehler auftreten, so dass die sogenannte "Integrität" der Daten nicht immer sichergestellt
ist. Durch geeignete Codierung der Datenwörter ist es möglich, solche
Fehler mit gewisser Wahrscheinlichkeit zu erkennen und gewünschtenfalls
auch zu korrigieren. Jede derartige Codierung besteht im Prinzip
darin, den eigentlichen "Nutzbits", welche die Nutzinformation
eines Datenwortes beschreiben, ein oder mehrere "Prüfbits" hinzuzufügen, die
nach einem gewählten
Algorithmus aus den Nutzbits errechnet sind.
-
Für Speichermodule,
bei denen eine Verbesserung der Datenintegrität erwünscht ist, wird mittlerweile
ein Fehlerkorrekturcode (ECC = Error Correction Code) nach Art eines
Hamming-Codes bevorzugt,
bei welchem jedes Codewort aus 72 Bits besteht, von denen 64 Bits
die Nutzbits bilden und 8 Bits die Prüfbits bilden, also N=64 und
P=8 ("64+8"-Code). Dieser Code
und der üblicherweise
zugrundegelegte Hamming-Algorithmus erlauben es, das Auftreten eines
einzigen Bitfehlers innerhalb des Codewortes nicht nur zu erkennen
sondern auch zu korri gieren. Treten genau 2 Bitfehler innerhalb
eines Codewortes auf, so kann dieser Umstand mit Sicherheit erkannt
werden, allerdings ohne die Möglichkeit
einer Korrektur dieser Fehler (das Auftreten von mehr als 2 Fehlern
innerhalb eines Codewortes wird hingegen nicht mit Sicherheit erkannt).
Es hat sich gezeigt, dass bei der heutigen Speichertechnologie die
Wahrscheinlichkeit des Auftretens von mehr als einem Bitfehler pro
72-Bit-Codewort vernachlässigbar
klein ist, so dass der erwähnte
64+8-Hammingcode in der Praxis genügt. Ein Fehlerkorrektur-Algorithmus
kann aber auch so konzipiert sein, dass sich im ausgelesenen Codewort
ein Fehler korrigieren lässt,
der durch Ausfall eines ganzen Speicherbausteins entsteht.
-
Für die Speicherung
von ECC-Daten (also Daten, die mit Fehlerkorrekturcode codiert sind)
in einem Speichermodul sind verschiedene Schemata bekannt, deren
gemeinsames Merkmal darin besteht, dass jedes Codewort in so viele
gleichgroße Blöcke aufgeteilt
wird, wie Speicherbausteine in jedem Rank enthalten sind. Im Falle
des bevorzugten 64+8-Codes kann dies z.B. erfolgen durch Aufteilung der
insgesamt 72 Bits in acht 9-Bit-Blöcke, deren jeder in einem von
acht Speicherbausteinen innerhalb eines Rank gespeichert wird. In
diesem Fall müssen die
Speicherbausteine als x9-Bausteine konfiguriert sein. Diese ansonsten
ungebräuchliche
Konfiguration erfordert eine Spezialanfertigung der Bausteine. Die
Adressierung erfolgt dabei wie bei einem x8-Baustein, nur dass pro
Adresse eine Gruppe von 9 Speicherzellen selektiert wird und 9 Datenpins
am Datenanschluss verwendet werden, um über 9 Datenleitungen auf die
adressierte Gruppe zuzugreifen. Die Aufteilung der Bits eines jeden
ECC-Codewortes erfolgt so, dass in jedem Baustein jeweils acht Nutzbits
und ein Prüfbit
an einer adressierten 9-Zellen-Gruppe gespeichert werden. Dies hat
allerdings den Nachteil, dass bei Ausfall eines ganzen Bausteins
immer auch ein Prüfbit
ausfällt.
Mithin wird die oben erwähnte Technik,
die eine Fehlerkorrektur bei Ausfall eines ganzen Bausteins erlaubt,
wesentlich erschwert oder gar un möglich.
-
Des
Weiteren sind x9-Bausteine nicht vorteilhaft, wenn sie auch zur
Bildung eines Moduls für
einen Datenbetrieb ohne ECC verwendet werden sollen. Ein Hersteller
von Speichermodulen möchte
in der Lage sein, sowohl ECC-Module als auch Nicht-ECC-Module zu liefern,
je nach aktueller Nachfrage. Hierbei ist es für den Hersteller aus Gründen der
Vorratshaltung wichtig, dass die in seinem Vorrat enthaltenen Speicherbausteine
alle vom gleichen Typ sind. Besteht dieser Vorrat aus x9-Bausteinen und
soll hiermit ein Nicht-ECC-Modul bestückt werden, dann wird Speicherplatz
verschenkt. Dies sei verdeutlicht an dem Beispielsfall, dass das Nicht-ECC-Modul
zur Speicherung von 64-Bit-Wörtern
ausgelegt werden soll, aufgeteilt in acht 8-Bit-Blöcke für einen
Rank von acht Speicherbausteinen. In diesem Fall liegt die neunte
Datenleitung an jedem x9-Baustein brach, und dementsprechend bleibt
in jeder adressierten 9-Zellen-Gruppe eine Zelle ungenutzt.
-
Aus
diesen und anderen Gründen
wird in der Praxis bevorzugt ein alternatives Schema angewendet,
bei welchem Nutzbits und Prüfbits
in getrennten Speicherbausteinen gespeichert werden. Hierbei sind
in jedem Rank neben der Mehrzahl KN gleichartiger
Speicherbausteine, die zur Speicherung der Nutzbits dienen, jeweils
eine Anzahl KP zusätzlicher Bausteine der gleichen
Bauart und Größe und auch gleicher
x-Konfiguration zur Speicherung der Prüfbits vorgesehen. Die Gleichartigkeit
aller Bausteine ist wünschenswert,
und zwar aus den bereits oben angesprochenen wirtschaftlichen Gründen und
aus Kompatibilitätsgründen hinsichtlich
der Adressenstruktur. Aus den gleichen Gründen ist es nicht nur wünschenswert
sondern praktisch unumgänglich, dass
die Zahl L eine ganzzahlige Potenz ≥2 von 2 ist (also L = 4, 8, ...),
denn x1- und x2-Bausteine entsprechen nicht der gängigen Speichertechnologie, sind
also nicht marktüblich
und wären
auch wegen des geringen Datendurchsatzes unvorteilhaft.
-
Damit
bei Verwendung eines Fehlerkorrekturcodes, der N Nutzbits und P
Prüfbits
enthält,
die gesamte verfügbare
Speicherkapazität
in einem Modul, das nach dem vorstehend beschriebenen Schema aufgebaut
ist, voll ausgenutzt wird, müssen
somit folgende Bedingungen erfüllt
werden:
- (a) L soll eine ganzzahlige Potenz ≥2 von 2 sein;
- (b) N/L muss eine natürliche
Zahl sein;
- (c) P/L muss eine natürliche
Zahl sein;
- (d) KN = N/L;
- (e) KP = P/L.
-
Im
Falle des bevorzugten 64+8-Codes, also für N=64 und P=8, kann L somit
nur gleich 8 oder gleich 4 sein. Bei Verwendung von x8-Bausteinen
ergibt sich somit KN=8 und KP=1.
Bei Verwendung von x4-Bausteinen ergäbe sich KN=16
und KP=2. Der Datenbus zwischen dem Modul
und dem Controller besteht in diesen Fällen aus N+P = 72 parallelen
Leiterbahnen, wobei 64 Leiterbahnen dediziert sind, um die 64 Nutzbits
jedes Codewortes zwischen dem Controller und den Nutzbit-Speicherbausteinen
des jeweils selektierten Rank zu übertragen. Die restlichen 8
Leiterbahnen sind dediziert zur Übertragung
der 8 Prüfbits
des Codewortes zwischen dem Controller und dem (oder den) Prüfbit-Speicherbaustein(en). Die
Adressenbits für
die Selektion der Speicherzellen innerhalb der Bausteine des jeweils
ausgewählten Rank
sind für
alle diese Bausteine identisch.
-
Ein
Modul der vorstehend beschriebenen Art kann optional auch für eine Datenspeicherung
ohne Fehlerkorrekturcode eingesetzt werden. Hierbei werden mit jedem
Takt nur 64 Nutzbits über
die dedizierten 64 Nutzbit-Leiterbahnen des Bus zwischen dem Controller
und den Speicherbausteinen des ausgewählten Rank übertragen. Die übrigen 8
Leiterbahnen des Bus und auch der (oder die) Prüfbit-Speicherbaustein(e) in
jedem Rank bleiben dann ungenutzt.
-
Es
gibt Fälle,
in denen es problematisch wird, alle oben ge nannten Bedingungen
(a) bis (e) zu erfüllen.
Ein solcher Fall ist z.B. gegeben, wenn die Taktrate der Datenübertragung
zwischen Controller und Modul derart hoch ist, dass für jeden
Bitstrom eine differentielle, also zweiadrige Leitung im Bus und
in den Lanes verwendet werden muss. Diese Situation kann sich insbesondere
ergeben im Falle eines Betriebs mit mehrfacher Datenrate.
-
Um
für jeden
Bitstrom im Bus eine zweiadrige Leitung bereitzustellen, könnte man
die Anzahl der Leiterbahnen im Bus verdoppeln, was aber oft unerwünscht ist,
u.a. aus Platzgründen.
Somit bleibt als Ausweg nur die Reduzierung der effektiven Busbreite
auf die Hälfte.
Das heißt,
auf den N+P vorhandenen Leiterbahnen können statt N+P Parallelbits nur
(N+P)/2 Parallelbits übertragen
werden. Jedes (N+P)-Bit-Codewort des Fehlerkorrekturcodes muss also
in zwei aufeinander folgende Teile aufgespalten werden. Im Falle
des bevorzugten 64+8-Codes
bedeutet dies, dass jedes Teil-Codewort 36 parallele Bits enthält, nämlich 32
Nutzbits und 4 Prüfbits.
-
Für diesen
Fall könnten
die oben erwähnten Bedingungen
(a) bis (e) nur erfüllt
werden, wenn man alle Bausteine als x4-Bausteine konfiguriert, die Anzahl KN der Nutzbit-Speicherbausteine pro Rank gleich
8 wählt
und für
jeden Rank einen gleichartigen neunten Baustein als Prüfbit-Baustein
vorsieht. Je höher
aber die Datenrate und somit der Prefetch m ist, desto höher wird
auch der momentane Stromverbrauch eines Speicherbausteins pro Zugriff,
so dass es wünschenswert
ist, die Anzahl gleichzeitig zu adressierender Speicherbeausteine
kleiner zu halten.
-
Eine
Alternative besteht darin, nach wie vor x8-Bausteine zu verwenden,
aber die Anzahl KN der Nutzbit-Speicherbausteine
pro Rank auf ½*N/L
(also auf N/2L) zu vermindern. Für
den Fall des bevorzugten 64+8-Codes bedeutet dies, dass KN=4 ist, also um die Hälfte kleiner als es die obige
Bedingung (d) fordert. Dies hat aber zur Folge, dass der zusätzliche Prüf bit-Speicherbaustein
im Rank nur halb so viele Bits zu speichern hat wie jeder Nutzbit-Speicherbaustein.
Wenn alle Bausteine einander gleich sein sollen, was aus den oben
erwähnten
Gründen
zweckmäßig ist,
dann wird die vorhandene Gesamt-Speicherkapazität des Moduls
nicht vollständig
ausgenutzt, was unwirtschaftlich ist. Dieser Nachteil könnte zwar
dadurch beseitigt werden, dass man zur Prüfbit-Speicherung in jedem Rank
einen Speicherbaustein halber Kapazität ("Half-Dense Memory Device") verwendet, der
aber häufig
nicht ohne weiteres verfügbar
ist oder aber zu einer älteren
Technologie-Generation
gehört,
deren Produkte nicht ohne weiteres mit der aktuellen Generation
kombinierbar ist (z.B. aus Gründen
der Versorgungsspannung). Ein Ausweg wäre, den zusätzlichen Prüfbit-Speicherbaustein ganz
wegzulassen und alle übrigen
4 Bausteine als x9-Bausteine konfigurieren. Hiermit ergäben sich aber
die Nachteile, wie sie weiter oben in Verbindung mit der x9-Konfiguration
beschrieben wurden.
-
Die
vorstehende beschriebene Situation ist nur ein Beispiel zur Veranschaulichung
der Probleme, die sich ergeben könnten,
wenn die Anzahl KN der Nutzbit-Speicherbausteine
pro Rank aus irgendwelchen Gründen
kleiner wäre
als das Verhältnis
N/L. Eine solche Situation könnte
sich nicht nur aufgrund einer erwünschten Zweiadrigkeit der Busleitungen ergeben,
sondern z.B. auch dann, wenn ein Fehlerkorrekturcode verwendet würde, bei
welchem das Verhältnis
N/P nicht gleich L ist.
-
Die
Aufgabe der Erfindung besteht allgemein darin, ein mit einer Mehrzahl
gleicher Speicherbausteine bestücktes
Speichermodul für
die Speicherung von Daten so auszubilden, dass es bei guter Ausnutzung
der vorhandenen Speicherkapazität
für ein
ECC-Datenformat betrieben werden kann. Diese Aufgabe wird erfindungsgemäß durch
die im Patentanspruch 1 aufgeführten
Merkmale eines Speichermoduls gelöst.
-
Demgemäß wird die
Erfindung realisiert in einem Speichermodul zur Speicherung von
Daten in Form von Codewörtern,
die aus jeweils N Nutzbits und P Prüfbits zur Fehlerkorrektur bestehen,
wobei das Verhältnis
N/P eine ganze Zahl V ist. Das Modul enthält eine Mehrzahl von Speicherbausteinen
vom RAM-Typ, die alle gleiche Speicherkapazität haben und von denen eine
Teilmenge den Prüfbits
und die Restmenge den Nutzbits dediziert ist, wobei jeweils KN Nutzbit-Speicherbausteine (MN) in einem
Rank zusammengefasst sind, der als Ganzes adressierbar ist, um an
L Datenanschlüssen
jedes dieser Bausteine eine jeweils zugeordnete Gruppe von L Bits
in Parallelform ein- und auszugeben. Das Modul enthält ferner
eine Verbindungseinrichtung zum Übertragen von
Bitpaketen, die jeweils L*KN Nutzbits und
Q Prüfbits
enthalten, im Parallelformat zwischen einer gemeinsamen Schnittstelle
des Moduls und einer selektierbaren Gruppe der Speicherbausteine.
Die Erfindung ist dadurch gekennzeichnet, dass KN =
V/R ist, mit R gleich einer ganzen Zahl >1, und dass eine oder mehrere Gruppen
von jeweils R Ranks vorgesehen sind und dass Q = P/R ist und für jede Rank-Gruppe jeweils genau
ein individuell zugeordneter Prüfbit-Speicherbaustein
vorgesehen ist.
-
Die
Erfindung beseitigt die oben erwähnten Probleme
und bringt mehrere Vorteile. Es lassen sich gleichzeitig mehrere
Forderungen erfüllen,
die sich auf den ersten Blick zu widersprechen scheinen:
Erstens
kann der Spitzen-Stromverbrauch bei jedem Zugriff relativ gering
gehalten werden, weil die Anzahl der gleichzeitig zu adressierenden
Speicherbausteine pro Zugriff relativ klein gehalten werden kann.
-
Zweitens
lässt sich
die insgesamt vorhandene Speicherkapazität im Betrieb mit ECC-Datenformat
voll ausnutzen, obwohl einerseits alle Speicherbausteine (also sowohl
die Nutzbit- als
auch die Prüfbit-Speicherbausteine)
einander gleich sind und andererseits die Anzahl KN der
Nutzbit-Bausteine pro Rank kleiner ist als N/L.
-
Drittens
kann die Breite des Datenports an der Schnittstelle und somit die
Breite des Datenbusses zwischen dem Modul und einem Controller wesentlich
kleiner gewählt
werden als die Breite der ECC-Codewörter. Dies erlaubt eine zweiadrige
Konfiguration der Busleitungen für
hohe Datenraten, ohne dass die Anzahl der Leiterbahnen doppelt so hoch
wie die Anzahl der Bits pro Codewort sein müsste.
-
Viertens
ist die Lanebreite L nicht beschränkt auf ganzzahlige Bruchteile
der Anzahl N der Nutzbits pro Codewort, d.h. die obige Bedingung
(b) braucht nicht unbedingt erfüllt
zu werden.
-
Fünftens kann
das Modul auch für
einen Betrieb mit normalem Datenformat (also einem Nicht-ECC-Format)
verwendet werden, ohne dass die Konfiguration der Speicherbausteine
geändert werden
müsste.
-
Es
ist zu betonen, dass alle diese Vorteile erzielt werden können, ohne
dass es notwendig ist, irgendeine der obigen Bedingungen (b) bis
(e) zu erfüllen.
Dies erhöht
die Flexibilität
des Konstrukteurs von Speichermodulen.
-
Vorteilhafte
Ausgestaltungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
Zur näheren
Erläuterung
der Erfindung wird nachstehend ein Ausführungsbeispiel anhand von Zeichnungen beschrieben.
-
1 zeigt
das Schema des Aufbaus eines erfindungsgemäßen Speichermoduls für ECC-Codewörter, die
jeweils N=64 Nutzbits und P=8 Prüfbits umfassen;
-
2 veranschaulicht
die Aufteilung der Bits eines (64+8)-ECC-Codewortes an einem Speichermodul
nach 1 bei einem Betrieb mit einfacher Datenrate (SDR-Betrieb).
-
3 und 4 veranschaulichen
zwei Alternativen für
die Aufteilung der Bits eines (64+8)-ECC-Codewortes beim Schreiben
und Lesen an einem Speichermodul nach 1 beim Betrieb mit
4 × 8-Prefetch
(vierfache Datenrate, DDR2).
-
5 veranschaulicht
die Aufteilung der Bits eines (64+8)-ECC-Codewortes beim Schreiben und Lesen
an einem Speichermodul nach 1 beim Betrieb
mit 8 × 6-Prefetch.
-
In
der 1 sind gleichartige Elemente mit den selben Buchstabenkombinationen
bezeichnet, denen jeweils eine Zahl oder Zahlenkombination zur Identifizierung
des betreffenden Elementes nach gestellt ist. Ein Doppelpunkt zwischen
zwei Zahlen bedeutet das Wort "bis"; so ist z.B. "MN0:3" zu lesen als "MN1 bis MN4".
-
Das
in 1 schematisch dargestellte Speichermodul enthält zwei
Rank-Gruppen RG0 und RG1, deren jede R=2 Ranks RK00, RK01 bzw. RK10, RK11
umfasst. Jeder Rank enthält
KN=4 Nutzbit-Speicherbausteine MN0:3, deren
jeder einen bidirektionalen Datenport DQ mit L=8 Pins zur Ein- und Ausgabe
einer Gruppe von L=8 parallelen Bits aufweist, die an einer jeweils
selektierten Gruppe von L=8 Speicherzellen (L-Zellen-Gruppe) geschrieben bzw.
gelesen werden sollen. Die Selektion der betreffenden 8-Zellen-Gruppe
erfolgt abhängig
vom Muster einer Mehrzahl von Adressbits, die an zugeordneten Pins
eines Steuer- und Adressanschlusses CA empfangen werden. In der 1 ist
in jedem Nutzbit-Speicherbaustein eine derartige 8-Zellen-Gruppe symbolisch
durch jeweils 8 nebeneinander liegende kleine Quadrate dargestellt.
-
Bei
einem Betrieb mit m-facher Datenrate wird mit jedem Speichertakt
gleichzeitig auf eine Anzahl m von L-Zellen-Gruppen zugegriffen,
wie weiter oben beschrieben. Hierzu enthält jeder Nutzbit-Speicherbaustein
MN ein Prefetchregister PF zur Zwischenspeicherung von m*L Bits,
die als ein Burst der Breite L und Länge m über den Datenport DQ ein- und
ausgegeben werden. Bei einem Betrieb mit "einfacher Datenrate" (SDR = Single Data Rate) ist m=1.
-
Das
Modul enthält
für jede
Rank-Gruppe RG0 und RG1 jeweils einen individuell zugeordneten Prüfbit-Speicherbaustein
MP0 bzw. MP1. Alle Speicherbausteine, also die insgesamt 16 Nutzbit-Speicherbausteine
und die beiden Prüfbit-Seicherbausteine,
sind hinsichtlich ihrer Speicherkapazität und hinsichtlich der "Breite" L ihrer Datenports
DQ einander gleich. Beim dargestellten Ausführungsbeispiel (L=8) ist somit
jeder Speicherbaustein als x8-Baustein konfiguriert. In der 1 ist
in jedem Prüfbit-Speicherbaustein
ebenfalls eine 8-Zellen-Gruppe eingezeichnet, eine gestrichelt gezeichnete
Trennlinie symbolisiert eine Unterteilung jeder 8-Zellen-Gruppe
in R=2 gleich große
Segmente A0 und A1 (jeweils 4 Zellen).
-
Es
sind insgesamt KN=4 Nutzbit-Lanes NL0:3
vorgesehen, deren jede L=8 Bits parallel übertragen kann. Jede dieser
Nutzbit-Lanes ist
mit den DQ-Anschlüssen
jeweils eines individuell zugeordneten Nutzbit-Speicherbausteins
in jedem Rank verbunden. Das heißt, die Lane NL0 ist mit den
Nutzbit-Bausteinen MN0 aller Ranks verbunden, die Lane NL1 ist mit
den Nutzbit-Bausteinen
MN1 aller Ranks verbunden, usw., wie in 1 gezeigt.
Die anderen Enden der Nutzbit-Lanes NL0:3 sind mit entsprechenden
Anschlüssen
einer gemeinsamen Schnittstelle (Interface) INT verbunden. Zusätzlich ist
eine Prüfbit-Lane
PL vorgesehen, die L/2 = 4 Bits im Parallelformat zwischen zugeordneten
Anschlüssen
der Schnittstelle INT und Datenpins der Prüfbit-Bausteine MP0, MP1 parallel übertragen
kann.
-
Der
Steuer- und Adressanschluss CA jedes Speicherbausteins empfängt neben
den Selektionsbits zur Aktivierung des betreffenden Bausteins ("Chip Select") und zur Adressierung
der Speicherzellengruppen (jeweils eine 8-Zellen-Gruppe im SDR-Betrieb und m 8-Zellen-Gruppen
bei einem Betrieb mit m*8-Prefetch)
weitere Steuerbits für
die Steuerung und Einstellung des Betriebs des Speicherbausteins.
Da jeweils alle KN=4 Speicherbausteine eines
Rank gleichzeitig aktiviert werden sollen, genügt für die Baustein-Selektion die
Angabe der Rank-Gruppe und die Angabe des Rank innerhalb der Rank-Gruppe. Beim gezeigten
Ausführungsbeispiel
ist hierzu eine 2-Bit-Information
erforderlich. Die Anzahl der Adressbits für die Selektion der Zellengruppe
innerhalb eines Speicherbausteins ist natürlich abhängig von der Größe (Speicherkapazität) des Bausteins.
-
Die
Baustein-Selektionsbits und Zellengruppen-Adressbits und auch die
weiteren Steuerbits zur Betriebssteuerung können den CA-Anschlüssen aller Speicherbausteinen
des Moduls über
einen gemeinsamen internen Steuerbus CAB angelegt werden, dessen
Leitungen mit entsprechenden Anschlüssen der Schnittstelle INT
verbunden sind, wie in 1 gezeigt. In diesem Fall müssten an
jedem Speicherbaustein zwei Chip-Select-Pins und ein Decoder vorgesehen
sein, um die 2-Bit-Information zur Aktivierung des Bausteins zu
decodieren. Ist nur ein Chip-Select-Pin vorhanden, dann wäre am Anfang des
Steuerbus bzw. in der Schnittstelle INT ein gemeinsamer Decoder
vorzusehen, der abhängig
von der 2-Bit-Information eine von vier Busleitungen innerhalb des
Steuerbus CAB aktiviert,
- – deren erste zu dem Chip-Select-Pin
aller Nutzbit-Speicherbausteine des Rank RK00 und des Prüfbit-Bausteins
MP0 führt
- – und
deren zweite zu dem Chip-Select-Pin aller Nutzbit-Speicherbausteine
des Rank RK01 und des Prüfbit-Bausteins
MP0 führt
- – und
deren dritte zu dem Chip-Select-Pin aller Nutzbit-Speicherbausteine
des Rank RK10 und des Prüfbit-Bausteins
MP1 führt
- – und
deren vierte zu dem Chip-Select-Pin aller Nutzbit-Speicherbausteine
des Rank RK11 und des Prüfbit-Bausteins
MP1 führt.
-
In
jedem Fall ist also aus den Selektionsbits am CA-Anschluss eines
selektierten Prüfbit-Speicherbausteins
auch eine Information ableitbar, die angibt, welcher Rank innerhalb
der diesem Prüfbit-Baustein
zugeordneten Rank-Gruppe selektiert ist.
-
Abhängig von
dieser Information wird am Prüfbit-Baustein
entschieden, auf welches Segment A0 oder A1 einer jeden adressierten
8-Zellen-Gruppe zum Schreiben oder Lesen von 4 Prüfbits an
dieser Zellengruppe zugegriffen werden soll.
-
Wie
erwähnt,
kann ein ECC-Speichermodul der in 1 gezeigten
Art ausgelegt sein für
einen Betrieb mit einfacher Datenrate (SDR-Betrieb, m=1) oder für einen
Betrieb mit mehrfacher Datenrate (m>1). Je nach Betriebsart kann es unterschiedliche Schemata
geben für
die Aufteilung der Codewortbits in Bitpakete, für die Reihenfolge der Übertragung
der Bitpakete zwischen den Speicherbausteinen und der gemeinsamen
Schnittstelle INT und für
die Zuordnung der Bits eines jeden Bitpaketes zu den Speicherbausteinen.
-
Die 2 bis 5 zeigen
in Schaubildern einige solcher Schemata. In jeder dieser Figuren
sind die Bits als kleine Quadrate symbolisiert, in denen Zahlen
von 0 bis 63 zur Nummerierung der N=64 Nutzbits eines Codewortes
eingetragen sind, und Zahlen 0 bis 7 zur Nummerierung der P=8 Prüfbits eines
Codewortes. Die Darstellungen beziehen sich auf die Zugriffe an
der Rank-Gruppe RG0 und am zugeordneten Prüfbit-Speicherbaustein MP0. Jede Figur zeigt
eine Gesamtmatrix von m*R Spalten und L*KN +
KN/R Zeilen. Jede dieser Spalten enthält die Bits
jeweils eines Bitpaketes, das in einer einzigen Periode der Übertragungstaktfolge
t1, t2, ... zwischen der gemeinsamen Schnittstelle INT und den Datenanschlüssen DQ
der jeweils selektierten Speicherbausteine übertragen wird.
-
In
jeder der 2 bis 5 ist die
dargestellte Gesamtmatrix aufgeteilt ein einzelne Blöcke, jeweils
einen für
jeden der Nutzbit-Speicherbausteine MN0:3 jedes Rank RK00, RK01
der ausgewählten Rank-Gruppe
RG0 und jeweils einen für
jeden Speicherbereich A0, A1 des zugeordneten Prüfbit-Bausteins MP0. Jeder Block
bildet eine Teilmatrix, welche jeweils alle Bits enthält, die
am betreffenden Speicherbaustein bzw. Speicherbereich bei einem Speicherzugriff
geschrieben oder gele sen werden.
-
Die 2 zeigt
die Aufteilung der Codewort-Bits im SDR-Betrieb. Beim SDR-Betrieb ist m=1, und
das Schreiben eines Codewortes erfolgt in R aufeinander folgenden
Zugriffen auf die selbe Rank-Gruppe. Bei jedem Zugriff soll für jedes
der Codewörter
nur ein Paket von jeweils N/R = N/2 = 32 Nutzbits und P/R = P/2
= 4 Prüfbits
des betreffenden Codewortes geschrieben werden. In einer ersten Taktperiode
t1, zum Schreiben des ersten Bitpaketes des Codewortes, werden alle
vier Speicherbausteine M0:3 des ersten Rank RK00 der Rank-Gruppe
RG0 und der zugeordnete Prüfbit-Baustein
MP0 selektiert, unter Adressierung einer Gruppe ZGn von
L=8 Speicherzellen in jedem dieser Bausteine. Gleichzeitig wird
das erste Bitpaket, bestehend aus den ersten 32 Nutzbits D0:31,
parallel und in gleichmäßiger Aufteilung
zu jeweils L=8 Bits an die KN=4 Nutzbit-Lanes NL0:3 gelegt, und
die ersten L/R = 4 Prüfbits
P0:3 werden an die Prüfbit-Lane
PL gelegt. Ein Schreibbefehl an den CA-Anschlüssen bewirkt, dass die Nutzbits
D0:31 in die adressierten Zellengruppen ZGn der Bausteine
MN0:3 des Rank RK00 geschrieben werden und dass die 4 Prüfbits P0:3
in das Segment A0 der adressierten Zellengruppe ZGn des
Prüfbit-Bausteins
MP0 geschrieben werden. Die gezielte Selektion des Segmentes kann
durch irgendeinen geeigneten Mechanismus erfolgen, wie er weiter
unten beschrieben wird.
-
In
einer zweiten Taktperiode t2, zum Schreiben des zweiten Bitpaketes
des selben Codewortes, werden alle Nutzbit-Speicherbausteine MN0:3
des zweiten Rank RK01 der selben Rank-Gruppe RG0 und der selbe Prüfbit-Baustein
MP0 selektiert, unter Verwendung der gleichen Zellengruppen-Adressierung
wie beim ersten Bitpaket. Gleichzeitig werden die zweiten 32 Nutzbits
D32:63 des zu schreibenden Codewortes parallel an die Gruppe der
vier Nutzbit-Lanes NL0:3 gelegt, und die zweiten 4 Prüfbits P4:7
werden an die Prüfbit-Lane
PL gelegt. Ein Schreibbefehl an den CA-Anschlüssen bewirkt nun, dass die
Nutzbits D32:63 in die adressierten Zellengruppen ZGn der Bausteine
MN0:3 des Rank RK01 geschrieben werden und dass die 4 Prüfbits P0:3
in das Segment A1 der adressierten Zellengruppe ZGn des
Prüfbit-Bausteins
MP0 geschrieben werden. Hiermit sind alle 64 Nutzbits des Codewortes
in der Rank-Gruppe
RG0 gespeichert, und die 8 Prüfbits des
Codewortes sind im zugeordneten Prüfbit-Baustein MP0 gespeichert.
-
Das
Schreiben von B aufeinander folgenden Codewörtern im SDR-Betrieb kann folgendermaßen geschehen:
Zunächst
wird der oben beschriebene erste Zugriff B-mal hintereinander durchgeführt, und bei
jeder Wiederholung wird nur die Zellengruppen-Adressierung geändert, z.B.
durch einen internen Adresszähler,
um nacheinander B Zellengruppen ZGn, ZGn+1, ZGn+2, usw.
an den selben selektierten Speicherbausteinen zu adressieren. Gleichzeitig mit
jeder Zellengruppen-Adressierung wird das erste Bitpaket eines jeweils
anderen der B Codewörter
an die Lanes NL0:3 und PL gelegt. Dann wird der oben beschriebene
zweite Zugriff B-mal hintereinander durchgeführt, und bei jeder Wiederholung
wird wiederum nur die Zellengruppen-Adressierung geändert, um
nacheinander B Zellengruppen ZGn, ZGn+1, ZGn+2, usw.
an den selben selektierten Speicherbausteinen zu adressieren. Gleichzeitig
mit jeder Zellengruppen-Adressierung wird das zweite Bitpaket eines jeweils
anderen der B Codewörter
an die Lanes NL0:3 und PL gelegt.
-
Das
Auslesen eines Codewortes oder eines Codewort-Burst im SDR-Betrieb
erfolgt ebenfalls durch zwei zeitlich getrennte Zugriffe für jedes
der beiden Bitpakete nach dem gleichen Selektions-Schema, wie es
vorstehend für
das Schreiben beschrieben wurde.
-
Um
bei jedem Zugriff das jeweils gewünschte Segment A0 oder A1 im
Prüfbit-Speicherbaustein
zu selektieren, kann eine geeignete Selektionseinrichtung verwendet
werden, welche die Datenübertragung
zwischen der Prüfbit-Lane
PL und der adressierten Zellengruppe wahlweise entweder über ein erstes
Segment von 4 Datenpins am DQ-Anschluss des Bausteins laufen lässt (z.B.
die Pins Nr. 0:3), das zu den vier Zellen des Segmentes A0 der adressierten
Zellengruppe führt,
oder über
das andere Datenpin-Segment (Pins Nr. 4:7), das zu den vier Zellen des
Segmentes A1 der adressierten Zellengruppe führt.
-
In
der 1 ist diese Selektionseinrichtung symbolisiert
durch eine Verzweigung der 4-Bit-Lane PL auf zwei 4-Pin-Segmente
des 8-Pin-Datenanschlusses DQ, wobei für jeden Zweig eine zugeordnete
Blockierungseinrichtung S0 bzw. S1 im Speicherbaustein selektiv
wirksam gemacht werden kann. Diese Einrichtungen werden gesteuert
durch die am CA-Anschluss ableitbare Information darüber, welcher
der beiden Ranks in der zugeordneten Rank-Gruppe selektiert ist.
Bei Selektion des ersten Rank (z.B. RK00) wird S1 aktiviert, um
die Datenübertragung
zwischen dem Zellengruppen-Segment A1 und der Lane PL zu blockieren,
und bei Selektion des zweiten Rank (z.B. RK01) wird S0 aktiviert,
um die Datenübertragung
zwischen dem Zellengruppen-Segment A0 und der Lane PL zu blockieren.
-
In
der Praxis kann die selektive Blockierung beim Schreiben durch Maskierungsmittel
innerhalb des Bausteins erfolgen, wie sie in vielen handelsüblichen
Speicherchips vorgesehen sind. Die selektive Blockierung der Lesedaten
kann ermöglicht
werden, indem die Ausgangstreiber an den internen Datenleitungen
des Speicherbausteins als Treiber mit Tristate-Ausgang konfiguriert
werden und jeweils diejenigen Ausgänge, von denen keine Daten
an die zugeordneten Datenpins übertragen
werden sollen, in den hochohmigen Zustand (sogenannter "Z-Zustand") geschaltet werden.
Eine andere Möglichkeit
besteht darin, bei jedem Lesezugriff den Inhalt der gesamten adressierten
Zellengruppe (also beider Segmente) des Prüfbit-Speicherbausteins über dessen
L=8 Datenpins und eine Prüfbit-Lane
der Breite L an den Controller CNT zu übertragen und im Controller
diejenigen Bits zu ignorieren, die nicht aus demjenigen Bereich
des Prüfbit-Speicherbausteins
stammen, der dem jeweils selektierten Rank zugeordnet ist.
-
Ein
Betrieb mit mehrfacher Datenrate, also mit m>1, läuft
im Prinzip ähnlich
wie es oben für
den SDR-Betrieb beschrieben wurde. Der Unterschied besteht darin,
dass bei jedem Speichertakt gleichzeitig m disjunkte Gruppen von
jeweils L=8 Speicherzellen adressiert werden, um m verschiedene 8-Bit-Gruppen an diesen
Zellengruppen gleichzeitig zu schreiben oder zu lesen.
-
Im
Betrieb mit m-facher Datenrate können durch
R=2 Schreib- oder
Leseoperationen am Modul nach 1 insgesamt
m (64+8)-Codewörter geschrieben
bzw. gelesen werden. Es gibt verschiedene Möglichkeiten, in welcher Art
und Reihenfolge die m*2 Bitpakete, die für die Übertragung der m Codewörter zwischen
den Speicherbausteinen und der Schnittstelle des Moduls benötigt werden,
auf die R=2 Ranks einer Rank-Gruppe aufgeteilt werden können. Nachstehend
seien zwei Alternativen beschrieben:
Gemäß einer ersten Alternative,
die in der 3 für das Beispiel m=4 veranschaulicht
ist, werden für
das Schreiben zunächst,
in m=4 aufeinander folgenden Perioden t1 bis t4 des Übertragungstaktes,
nacheinander alle m Bitpakete, welche die ersten m/2 = 2 vollständigen Codewörter #1
und #2 bilden, mit hoher Datenrate an die Nutzbit-Speicherbausteine
MN0:3 des ersten Rank (z.B. RK00) einer Rank-Gruppe (z.B. RG0) und
an den zugeordneten Prüfbit-Baustein
(MP0) übertragen.
In jedem Baustein werden die betreffenden Bits der m aufeinander
folgenden Pakete jeweils in einem Prefetchregister gesammelt, bevor
ein Schreibbefehl dafür
sorgt, dass sie parallel in die m adressierten Zellengruppen der
Nutzbit-Speicherbausteine bzw. in die Segmente A0 der m adressierten
Zellengruppen des zugeordneten Prüfbit-Bausteins geschrieben
werden. Anschließend
erfolgt das gleiche Spiel am zweiten Rank (z.B. RK01) der selben
Rank-Gruppe und am selben Prüfbit-Baustein
mit den m Bitpaketen, welche die übrigen m/2 = 2 Codewörter #3
und #4 bilden, wobei im Prüfbit-Baustein
die Segmente A1 der m adressierten Zellengruppen selektiert werden.
Jeder der in 3 gezeichneten Blöcke (Teilmatrizen)
gibt den Inhalt des Prefetchregisters des betreffenden Speicherbausteins
wieder.
-
Gemäß einer
der zweiten Alternative, die in der 4 veranschaulicht
ist, werden für
das Schreiben zunächst,
in m aufeinander folgenden Perioden t1 bis t4 des Übertragungstaktes,
die ersten Bitpakete (Nutzbits 0:31, Prüfbits 0:3) von m=4 verschiedenen
Codewörtern
#1, #2, #3, #4 nacheinander mit hoher Datenrate an die Nutzbit-Speicherbausteine MN0:3
des ersten Rank (z.B. RK00) einer Rank-Gruppe (z.B. RG0) und an
den zugeordneten Prüfbit-Baustein
(MP0) gesendet. In jedem Baustein werden die betreffenden Bits der
m aufeinander folgenden Pakete jeweils in einem Prefetchregister
gesammelt, bevor ein Schreibbefehl dafür sorgt, dass sie parallel
in die m adressierten Zellengruppen der Nutzbit-Speicherbausteine
bzw. in die Segmente A0 der m adressierten Zellengruppen des zugeordneten Prüfbit-Bausteins
geschrieben werden. Anschließend,
in vier weiteren Taktperioden t5 bis t8, erfolgt das gleiche Spiel
am zweiten Rank (z.B. RK01) der selben Rank-Gruppe und am selben Prüfbit-Baustein mit
den zweiten Bitpaketen (Nutzbits 32:63, Prüfbits 4:7) der Codewörter #1
bis #4, wobei im Prüfbit-Baustein
die Segmente A1 der m adressierten Zellengruppen selektiert werden.
Auch in 4 gibt jeder gezeichneten Blöcke den
Inhalt des Prefetchregisters des betreffenden Speicherbausteins
wieder.
-
Die
in 4 veranschaulichte Alternative hat den Vorteil,
dass, wenn eine einzige Datenleitung in irgendeiner Lane oder im
externen Datenbus ausfällt oder
fehlerhaft überträgt, nur
1 Bit pro Datenwort fehlerhaft wird, also leicht korrigiert werden
kann. Bei der ersten Alternative nach 3 werden
in einem solchen Fall mehr als 1 Bit pro Datenwort fehlerhaft.
-
Im
Lesebetrieb mit m-facher Datenrate sorgt zunächst ein Lesebefehl dafür, dass
die an den Speicherbausteinen des jeweils selektierten Rank auszugebenden
Bits von jeweils m Bitpaketen aus den zugeordneten Speicherzellen
in die Prefetchregister übertragen
werden, bevor sie mit hoher Datenrate in m aufeinander folgenden Übertragungstakten an
die Schnittstelle des Moduls übertragen
werden.
-
Das
Schreiben und Lesen an der anderen Rank-Gruppe RG1 erfolgt in der
gleichen Weise, wie es vorstehend für die Rank-Gruppe RG0 beschrieben wurde. Natürlich kann
das Modul gewünschtenfalls
nur eine einzige Rank-Gruppe oder mehr als zwei Rank-Gruppen enthalten,
die alle in der gleichen Weise ausgebildet sein und betrieben werden
können,
wie vorstehend beschrieben.
-
Bei
der beschriebenen Ausführungsform nach 1 sind
die ersten Segmente A0 aller 8-Zellen-Gruppen innerhalb eines Prüfbit-Speicherbausteins
zusammengenommen als ein erster Speicherbereich anzusehen, und die
zweiten Segmente A1 aller 8-Zellen-Gruppen bilden demnach einen
zweiten Speicherbereich. Diese Bereichseinteilung hat den Vorteil,
dass alle Bausteine als x8-Bausteine konfiguriert sind, also die
gleiche x-Konfiguration haben.
-
Alternativ
können
die Prüfbit-Bausteine
auch als x4-Bausteine konfiguriert sein, so dass eine individuelle
Adressierung von 4-Zellen-Gruppen möglich ist. In diesem Fall kann
die halbe Anzahl aller dieser Zellengruppen den einen Speicherbereich
A0 bilden, während
die übrigen
Zellengruppen den anderen Speicherbereich A1 bilden. Dies hat den
Vorteil, dass die Maskierung von Bits bem Schreiben und Lesen entfällt.
-
Die
Schnittstelle INT ist in 1 als simpler Durchgangsport
dargestellt, der alle vier 8-Bit-Lanes NL0:3 und die 4-Bit-Lane
PL und auch den Steuerbus CAB mit entsprechenden Leitungen eines
externen Steuer- und Datenbusses CADB verbinden kann, der seinerseits
mit einem Speichercontroller CNT verbunden ist. Gewünschtenfalls
kann innerhalb der Schnittstelle INT ein Puffer in Form eines FIFO-Registers (nicht
gezeigt) vorgesehen werden.
-
Im
gezeigten Fall enthält
der externe Bus CADB neben den Befehlsbitleitungen und Selektionsbitleitungen
insgesamt 36 Datenleitungen für
das Senden und Empfangen von gleichzeitig 32 Nutzbits und 4 Prüfbits. Der
Controller CNT sendet die Steuerbits für die Selektion der Speicherzellen
und für
die Betriebssteuerung der Speicherbausteine und bestimmt auch den
Takt der Speicherzugriffe am Modul. Die Codierung der zu speichernden
Daten (also die Bildung der ECC-Codewörter durch Hinzufügung der P
Prüfbits
zu jeweils N Nutzbits) und die Fehlerprüfung und Fehlerkorrektur der
Nutzbits der ausgelesenen ECC-Codewörter kann wie üblich durch
einen geeigneten ECC-Codierer bzw. eine geeignete Fehlerkorrekturschaltung
im Controller erfolgen.
-
Ein
Speichermodul der in 1 gezeigten Art kann ohne tiefgreifende Änderungen
auch zur Speicherung von Datenwörtern
verwendet werden, die keine Prüfbits
enthalten (Nicht-ECC-Betrieb). Hierbei
werden die Prüfbit-Speicherbausteine
nicht genutzt, und gewünschtenfalls
kann man in diesem Fall ein Schreiben oder Lesen von jeweils 64
Parallelbits pro Zugriff ermöglichen,
indem man in der Schnittstelle INT die vier 8-Bit-Lanes für jedes Rank der jeweils selben
Rank-Gruppe voneinander getrennt hält, so dass sich 8 getrennte
8-Bit-Lanes ergeben, die über
64 Leitungen in einem externen Bus mit dem Controller verbunden
werden können.
Bei einer solchen Konfiguration wird jede Rank-Gruppe funktionell
zu einem einzigen Rank. Wenn im externen Bus CADB für jedes
Bit eines Bitpaketes eines ECC-Codewortes jeweils eine zweiadrige
Leitung vorgesehen ist, also 36 Leiterpaare im Falle von (64+8)-Bit-Codewörtern und
mithin 72 Leiter, dann können
im Nicht-ECC-Betrieb
64 Leiter als 64 einadrige Leitungen für die Parallel-Übertragung
eines 64-Bit-Datenwortes genutzt werden.
-
Die
Erfindung ist nicht. auf die in 1 gezeigte
Ausführungsform
beschränkt.
Abhängig
von den Werten für
D, P und L und je nach der Datenbreite des externen Busses CADB
können
auch mehr als zwei Ranks pro Rank-Gruppe vorgesehen sein, wobei
die Anzahl der Speicherbereiche in jedem Prüfbit-Speicherbaustein entsprechend
erhöht
sein muss (bei entsprechender Verkleinerung der Bereiche). Des Weiteren
ist zu erwähnen,
dass die Anzahl der Rank-Gruppen auch kleiner oder größer sein
kann als 2, je nach der gewünschten
Gesamt-Speicherkapazität
des Moduls.
-
Bei
den vorstehend behandelten Ausführungsformen
ist der Quotient N/(KN*L) eine natürliche Zahl
(also eine ganze Zahl ≥1),
was wiederum vorausetzt, dass auch der Quotient N/L eine natürliche Zahl
ist. Ein erfindungsgemäßes Speichermodul
ist jedoch nicht auf diese Ganzzahligkeit beschränkt. Im Grunde kann ein erfindungsgemäßes Speichermodul mit
jeder beliebigen Lanebreite L realisiert werden. Ist der Quotient
N/(KN*L) keine natürliche Zahl, dann lässt sich
ein Codewort nicht in eine ganze Zahl von aufeinander folgenden
Bitpaketen zur Übertragung zwischen
der gemeinsamen Schnittstelle INT und den Speicherbausteinen teilen.
Um dennoch allen Bitpaketen die gleiche Breite zu geben, kann man
in mindestens einem der Bitpakete für jeden Speicherzugriff eine
geeignete Anzahl von Füllbits
einfügen. Im
Schreibbetrieb werden die Füllbits
seitens des Controllers eingefügt
und beim Schreiben in den betreffenden Speicherbausteinen maskiert.
Im Lesebetrieb werden die Füllbits
in den Speicherbausteinen eingefügt
und im Controller maskiert.
-
Die
Einfügung
von Füllbits
kann allerdings den Durchsatz des Moduls (Anzahl der übertragenen Codewortbits
pro Zeiteinheit) verringern. Es ist jedoch möglich, Füllbits zu vermeiden, indem
man die Speicherbausteine mit einem Prefetch für einen Burst betreibt, dessen
Länge m
so bemessen ist, dass der Quotient (KN*L*m)/N
eine natürliche
Zahl ist.
-
In
der 5 ist als Beispiel veranschaulicht, wie die Aufteilung
der Bits von (64+8)-Codewörtern auf
die Speicherbau steine eines Moduls nach 1 ohne Füllbits erfolgen
kann, wenn die Lanebreite L gleich 6 ist. In diesem Fall ist der
Quotient N/(KN*L) gleich 64/24 = 2 + 2/3,
also nicht ganzzahlig wie in den Fällen gemäß den 2 bis 4.
Die vorstehende Bedingung, dass (KN*L*m)/N
eine natürliche Zahl
ist, wird erfüllt,
wenn m gleich 8 (oder einem Vielfachen von 8) ist. In der 5 ist
der Fall m=8 gezeigt. Somit enthalten die Speicherbausteine jeweils ein
Prefetchregister zur Zwischenspeicherung eines Burst von L*m = 6*8
= 48 Bits, der jeweils N/KN Bits dreier
Codewörter
aufnehmen kann.
-
Beim
Beispiel nach 5 erfolgt zunächst ein
erster Speicherzugriff am Modul, bei welchem alle Nutzbits und Prüfbits dreier
erster Codewörter
#1 bis #3 über
die Lanes NL0:3 und PL zwischen der Schnittstelle INT und den Prefetchregistern
der Nutzbit-Speicherbausteine MN0:3 des ersten Rank RK0 und dem
Prefetchregister des Prüfbit-Speicherbausteins
MP0 übertragen
werden. Dies geschieht durch einen Burst von m=8 aufeinander folgenden
Bitpaketen über
m=8 Perioden t1 bis t8 des Übertragungstaktes,
wobei jedes Bitpaket KN*L = 4*6 = 24 Nutzbits und
L/R = 6/2 = 3 Prüfbits
enthält.
Dann folgt ein zweiter Speicherzugriff, bei welchem in ähnlicher
Weise alle Nutzbits und Prüfbits
dreier weiterer Codewörter #4
bis #6 über
die gleichen Lanes NL0:3 und PL zwischen der Schnittstelle INT und
den Prefetchregistern der Nutzbit-Speicherbausteine MN0:3 des zweiten
Rank RK0 und dem Prefetchregister des Prüfbit-Speicherbausteins MP0 übertragen
werden. Dies geschieht in m=8 aufeinander folgenden Bitpaketen über m=8
Perioden t9 bis t16 des Übertragungstaktes.
-
Die Übertragung
der Bits wischen den Prefetchregistern und den Speicherzellen der
betreffenden Bausteine kann innerhalb einer einzigen Taktperiode
in Parallelform erfolgen, oder in mehreren aufeinander folgen Taktperioden
in Gruppen zu jeweils mehreren Bits, vorzugsweise zu jeweils m Bits
(oder einem ganzzahligen Vielfachen davon). Wenn, wie beim Beispiel
nach 5, m=8 ist, dann können die Speicherbausteine
hin sichtlich der Zugriffe auf die Speicherzellen als x8-Bausteine
konfiguriert sein, obwohl die Lanebreite L nicht gleich 8 ist.
-
Ein
erfindungsgemäßes Speichermodul kann
auch in Verbindung mit einem Controller verwendet werden, der den
Datenburst, welcher die jeweils zu schreibende Bitpakete enthält, und
einen "Steuerburst", welcher Befehls-
und Selektionsbits enthält, über die
selben Leitungen eines Busses sendet, und zwar zeitlich nacheinander,
jeweils als Burst gleicher Breite, die der Anzahl der Leitungen
des besagten Busses entspricht. Auch für den Lesebetrieb kann der
Controller die notwendigen Steuerbits als Burst über die besagten Busleitungen
senden, bevor das eigentliche Auslesen der Codewörter erfolgt. Die gelesenen
Codewortbits können
hierbei über
die selben Lanes und Busleitungen wie die zu schreibenden Codewortbits übertragen
werden, oder über
gesonderte Datenleitungen. Im letzteren Fall kann die Burstbreite
für die
Lesebits anders sein als die Burstbreite für die Schreibbits.
-
Es
sei darauf hingewiesen, dass der im vorstehenden Text und in den
Patentansprüchen
verwendete Begriff "natürliche Zahl" jeweils "ganze Zahl ≥1" bedeutet, also eine
positive ganze Zahl ausschließlich
Null. Es liegt in der Natur der Sache, dass alle im vorstehenden
Text und in den Patentansprüchen
genannten Parameter N, P, KN, KP,
R, L, B und m solche natürlichen
Zahlen sind, auch wenn dieser Umstand nicht jedesmal ausdrücklich erwähnt wird.
-
- A0:1
- Speicherbereiche
- CA
- Steueranschluss
- CAB
- interner
Steuerbus
- CADB
- externer
Bus
- CNT
- Speichercontroller
- NL0:3
- Nutzbit-Lanes
- DQ
- Datenanschlüsse
- INT
- Modul-Schnittstelle
- MN0:3
- Nutzbit-Speicherbausteine
- MP0:1
- Prüfbit-Bausteine
- PL
- Prüfbit-Lane
- RG0:1
- Rank-Gruppen
- RK00:11
- Ranks
- S0:1
- Blockierungseinrichtungen