DE102005053625A1 - Speichermodul mit einer Mehrzahl von Speicherbausteinen - Google Patents

Speichermodul mit einer Mehrzahl von Speicherbausteinen Download PDF

Info

Publication number
DE102005053625A1
DE102005053625A1 DE102005053625A DE102005053625A DE102005053625A1 DE 102005053625 A1 DE102005053625 A1 DE 102005053625A1 DE 102005053625 A DE102005053625 A DE 102005053625A DE 102005053625 A DE102005053625 A DE 102005053625A DE 102005053625 A1 DE102005053625 A1 DE 102005053625A1
Authority
DE
Germany
Prior art keywords
bits
memory
rank
bit
memory module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE102005053625A
Other languages
English (en)
Other versions
DE102005053625B4 (de
Inventor
Hermann Ruckerbauer
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE102005053625A priority Critical patent/DE102005053625B4/de
Priority to US11/559,323 priority patent/US7650457B2/en
Publication of DE102005053625A1 publication Critical patent/DE102005053625A1/de
Application granted granted Critical
Publication of DE102005053625B4 publication Critical patent/DE102005053625B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports

Abstract

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 K¶N¶ 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 È K¶N¶ Nutzbits und Q Prüfbits enthalten, im Parallelformat zwischen einer gemeinsamen Schnittstelle (INT) des Speichermoduls und einer selektierbaren Gruppe der Speicherbausteine. Erfindungsgemäß ist K¶N¶ = 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.

Description

  • 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

Claims (5)

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
DE102005053625A 2005-11-10 2005-11-10 Speichermodul mit einer Mehrzahl von Speicherbausteinen Expired - Fee Related DE102005053625B4 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102005053625A DE102005053625B4 (de) 2005-11-10 2005-11-10 Speichermodul mit einer Mehrzahl von Speicherbausteinen
US11/559,323 US7650457B2 (en) 2005-11-10 2006-11-13 Memory module comprising a plurality of memory devices

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102005053625A DE102005053625B4 (de) 2005-11-10 2005-11-10 Speichermodul mit einer Mehrzahl von Speicherbausteinen

Publications (2)

Publication Number Publication Date
DE102005053625A1 true DE102005053625A1 (de) 2007-06-14
DE102005053625B4 DE102005053625B4 (de) 2007-10-25

Family

ID=38055701

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102005053625A Expired - Fee Related DE102005053625B4 (de) 2005-11-10 2005-11-10 Speichermodul mit einer Mehrzahl von Speicherbausteinen

Country Status (2)

Country Link
US (1) US7650457B2 (de)
DE (1) DE102005053625B4 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2657039C1 (ru) * 2015-03-02 2018-06-08 Альфред Кэрхер Гмбх Унд Ко. Кг Роторная форсунка для моечного аппарата высокого давления

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101460839B1 (ko) * 2008-01-17 2014-11-11 암페놀 코포레이션 인터포저 조립체 및 방법
US8103928B2 (en) * 2008-08-04 2012-01-24 Micron Technology, Inc. Multiple device apparatus, systems, and methods
US8321758B2 (en) * 2008-08-05 2012-11-27 Advanced Micro Devices, Inc. Data error correction device and methods thereof
KR100968461B1 (ko) * 2008-12-08 2010-07-07 주식회사 하이닉스반도체 메모리 모듈 및 데이터 입출력 시스템
US8261174B2 (en) 2009-01-13 2012-09-04 International Business Machines Corporation Protecting and migrating memory lines
US8484529B2 (en) 2010-06-24 2013-07-09 International Business Machines Corporation Error correction and detection in a redundant memory system
US8898511B2 (en) 2010-06-24 2014-11-25 International Business Machines Corporation Homogeneous recovery in a redundant memory system
US8631271B2 (en) 2010-06-24 2014-01-14 International Business Machines Corporation Heterogeneous recovery in a redundant memory system
US8549378B2 (en) * 2010-06-24 2013-10-01 International Business Machines Corporation RAIM system using decoding of virtual ECC
US8522122B2 (en) 2011-01-29 2013-08-27 International Business Machines Corporation Correcting memory device and memory channel failures in the presence of known memory device failures
US8527836B2 (en) * 2011-07-01 2013-09-03 Intel Corporation Rank-specific cyclic redundancy check
US9128834B2 (en) 2013-09-24 2015-09-08 International Business Machines Corporation Implementing memory module communications with a host processor in multiported memory configurations
US10884958B2 (en) * 2018-06-25 2021-01-05 Intel Corporation DIMM for a high bandwidth memory channel
US10963404B2 (en) * 2018-06-25 2021-03-30 Intel Corporation High bandwidth DIMM
US11699471B2 (en) 2019-09-25 2023-07-11 Intel Corporation Synchronous dynamic random access memory (SDRAM) dual in-line memory module (DIMM) having increased per data pin bandwidth

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005015564A1 (en) * 2003-08-06 2005-02-17 Netlist, Inc. Non-standard dual in-line memory modules with more than two ranks of memory per module and multiple serial-presence-detect devices to simulate multiple modules

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7383416B2 (en) * 2005-05-17 2008-06-03 Infineon Technologies Ag Method for setting a second rank address from a first rank address in a memory module
US7414312B2 (en) * 2005-05-24 2008-08-19 Kingston Technology Corp. Memory-module board layout for use with memory chips of different data widths
US7263019B2 (en) * 2005-09-15 2007-08-28 Infineon Technologies Ag Serial presence detect functionality on memory component

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005015564A1 (en) * 2003-08-06 2005-02-17 Netlist, Inc. Non-standard dual in-line memory modules with more than two ranks of memory per module and multiple serial-presence-detect devices to simulate multiple modules

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Micron Technology, Inc.: DDR SDRAM SMALL-OUTLINE DIMM MT18VDDF12872H-1GB. Produktspezifikation 2004 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2657039C1 (ru) * 2015-03-02 2018-06-08 Альфред Кэрхер Гмбх Унд Ко. Кг Роторная форсунка для моечного аппарата высокого давления

Also Published As

Publication number Publication date
DE102005053625B4 (de) 2007-10-25
US20070150792A1 (en) 2007-06-28
US7650457B2 (en) 2010-01-19

Similar Documents

Publication Publication Date Title
DE102005053625B4 (de) Speichermodul mit einer Mehrzahl von Speicherbausteinen
DE102004036888B4 (de) Flashspeichersystem und zugehöriges Datenschreibverfahren
DE10255872B4 (de) Speichermodul und Verfahren zum Betrieb eines Speichermoduls in einem Datenspeichersystem
DE69932962T2 (de) Kodierungsverfahren und Speicheranordnung
DE102006032327B4 (de) Halbleiterspeichermodul und -System
DE60016220T2 (de) Speichererweiterungsmodul mit einer vielzahl von speicherbanken und einer banksteuerungschaltung
DE102012204991B4 (de) Speichereinrichtungen, Systeme und Verfahren unter Verwendung einer Befehls/Adressenkalibrierung
DE102005055185B4 (de) Halbleiterspeichermodul
DE2948159A1 (de) Integrierter speicherbaustein mit waehlbaren betriebsfunktionen
DE3638632A1 (de) Halbleiterspeicher
DE102006016499B4 (de) Speichermodulsteuerung, Speichersteuerung und entsprechende Speicheranordnung sowie Verfahren zur Fehlerkorrektur
DE102007008180A1 (de) Halbleiterspeicherelement, Speichersystem und Daten-Sende-/Empfangssystem
DE102006035612A1 (de) Speicherpuffer für ein FB-Dimm
DE112018005762T5 (de) Neuschreiben von datenobjekten auf speichermedien mit sequenziellem zugriff
DE3618136C2 (de)
DE102005043547A1 (de) Speichermodul, Speichervorrichtung und Verfahren zum Betreiben einer Speichervorrichtung
DE102016205281A1 (de) Fehlersicherung von unter verwendung von headern mit variabler länge gespeicherten daten
DE10306149A1 (de) Verfahren und Schaltung zum Zuweisen von Speicheranordnungs-Adressen
DE102004003352A1 (de) Systeme und Verfahren zum Puffern von Daten zwischen einer Übereinstimmungscachesteuerung und einem Speicher
DE102004033387B4 (de) Digitale RAM-Speicherschaltung mit erweiterter Befehlsstruktur
DE10307548A1 (de) Synchrones Speichersystem sowie Verfahren und Protokoll zur Kommunikation in einem synchronen Speichersystem
EP1222545A1 (de) Verfahren und schaltungsanordnung zum speichern von datenworten in einem ram modul
DE102007062930A1 (de) Speichervorrichtung mit mehreren Konfigurationen
DE10157537C2 (de) Integrierter Speicher und Verfahren zur Reparatur eines integrierten Speichers
DE3009317A1 (de) Hybrid-assoziativspeicher

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee