PatentDe  


Dokumentenidentifikation DE102005053625A1 14.06.2007
Titel Speichermodul mit einer Mehrzahl von Speicherbausteinen
Anmelder Infineon Technologies AG, 81669 München, DE
Erfinder Ruckerbauer, Hermann, 94554 Moos, DE
Vertreter Wilhelm & Beck, 80639 München
DE-Anmeldedatum 10.11.2005
DE-Aktenzeichen 102005053625
Offenlegungstag 14.06.2007
Veröffentlichungstag im Patentblatt 14.06.2007
IPC-Hauptklasse G11C 29/52(2006.01)A, F, I, 20051110, B, H, DE
Zusammenfassung Beschrieben wird ein Speichermodul zur Speicherung von Daten in Form von Codewörtern, die aus jeweils N Nutzbits und P Prüfbits bestehen, wobei N/P eine natürliche Zahl V ist. Das Modul enthält Speicherbausteine (MN, MP) gleicher Speicherkapazität, von denen eine Teilmenge den Prüfbits und die Restmenge den Nutzbits dediziert ist. Jeweils KN Nutzbit-Speicherbausteine (MN) bilden einen Rank (RK), der adressierbar ist, um an L Datenanschlüssen (DQ) jedes dieser Bausteine eine jeweils zugeordnete Gruppe von L Bits in Parallelform ein- und auszugeben. Eine Verbindungseinrichtung (NL, PL) dient zum Übertragen von Bitpaketen, die jeweils L · KN Nutzbits und Q Prüfbits enthalten, im Parallelformat zwischen einer gemeinsamen Schnittstelle (INT) des Speichermoduls und einer selektierbaren Gruppe der Speicherbausteine. Erfindungsgemäß ist KN = V/R, mit R gleich einer ganzen Zahl > 1, und es sind eine oder mehrere Gruppen (RG) von jeweils R Ranks vorgesehen. Q ist gleich P/R, und für jede Rank-Gruppe (RG) ist jeweils genau ein individuell zugeordneter Prüfbit-Speicherbaustein (MP) vorgesehen.

Beschreibung[de]

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 Speichercontroller 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 korrigieren. 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 unmö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 genannten 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 S*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üfbit-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 gelesen 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 Speicherbausteine 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 hinsichtlich 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


Anspruch[de]
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, enthaltend:

eine Mehrzahl von Speicherbausteinen (MN, MP) 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 (RK) zusammengefasst sind, der als Ganzes adressierbar ist, um an L Datenanschlüssen (DQ) jedes dieser Bausteine eine jeweils zugeordnete Gruppe von L Bits in Parallelform ein- und auszugeben,

eine Verbindungseinrichtung (NL, PL) zum Übertragen von Bitpaketen, die jeweils L*KN Nutzbits und Q Prüfbits enthalten, im Parallelformat zwischen einer gemeinsamen Schnittstelle (INT) des Speichermoduls und einer selektierbaren Gruppe der Speicherbausteine,

dadurch gekennzeichnet,

dass KN = V/R ist, mit R gleich einer ganzen Zahl >1,

und dass eine oder mehrere Gruppen (RG) von jeweils R Ranks vorgesehen sind

und dass Q = P/R ist und für jede Rank-Gruppe (RG) jeweils genau ein individuell zugeordneter Prüfbit-Speicherbaustein (MP) vorgesehen ist.
Speichermodul nach Anspruch 1, dadurch gekennzeichnet,

dass in jedem Prüfbit-Speicherbaustein (MP0; MP1) jeweils R disjunkte Speicherbereiche (A0, A1) definiert sind, deren jeder jeweils einem Rank (RK00 bzw. RK01; RK10 bzw. RK11) der zugeordneten Rank-Gruppe (RG0; RG1) individuell zugeordnet ist,

und dass zum Schreiben und Lesen von Codewörtern am Speichermodul eine Zugriff-Steuereinrichtung (CAB, CA, S0, S1) vorgesehen ist, die aktivierbar ist, um für jedes Bitpaket jeweils einen dem betreffenden Bitpaket zugeordneten Rank (RK00, RK01; RK10, RK11) der selben Rank-Gruppe (RG0; RG1) zu selektieren und dabei jedesmal an allen Nutzbit-Bausteinen (MN0:3) des selektierten Rank jeweils L Nutzbits ein- bzw. auszugeben, und gleichzeitig an dem der betreffenden Rank-Gruppe zugeordneten Prüfbit-Speicherbaustein (MP0; MP1) denjenigen Bereich (A0; A1) zu selektieren, der dem selektierten Rank zugeordnet ist, und dabei jedesmal L/R Prüfbits an diesem Prüfbit-Baustein ein- bzw. auszugeben.
Speichermodul nach Anspruch 2, dadurch gekennzeichnet,

dass jeder Speicherbaustein ein Prefetchregister (PF) aufweist zur Zwischenspeicherung eines Burst, der die am betreffenden Speicherbaustein zu schreibenden Bits von m ≥2 aufeinander folgenden Bitpaketen enthält,

und dass die Zugriffsteuereinrichtung (CAB, CA, S0, S1) im Schreibbetrieb aktivierbar ist, um an jedem selektierten Speicherbaustein nach Eingabe der Bits eines Burst den Inhalt des betreffenden Prefetchregisters im Parallelformat an zugeordnete Speicherzellen zu übertragen.
Speichermodul nach Anspruch 2, dadurch gekennzeichnet,

dass jeder Speicherbaustein ein Prefetchregister (PF) aufweist zur Zwischenspeicherung eines Burst, der die am betreffenden Speicherbaustein zu lesenden Bits von m ≥2 aufeinander folgenden Bitpaketen enthält,

und dass die Zugriffsteuereinrichtung (CAB, CA, S0, S1) im Lesebetrieb aktivierbar ist, um an jedem selektierten Speicherbaustein die Bits eines auszugebenden Burst im Parallelformat aus zugeordneten Speicherzellen in das betreffende Prefetchregister zu übertragen.
Speichermodul nach Anspruch 3 oder 4, gekennzeichnet durch eine derartige Bemessung der Burstlänge m, dass der Ausdruck KN*L*m/N eine natürliche Zahl ist.






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com