Ein Speichermodul oder Speicherriegel ist eine kleine Leiterplatte, auf der mehrere Speicherbausteine (Dynamisches RAM in Form von integrierten Schaltkreisen) aufgelötet sind. Speichermodule bilden oder erweitern den Arbeitsspeicher elektronischer Geräte wie Computer oder Drucker und werden dort in speziell dafür vorgesehene Steckplätze gesteckt.
Die Bezeichnung Speichermodul wird seltener auch für Speicherkarten oder USB-Sticks verwendet.
Inhaltsverzeichnis |
Handelsübliche Modul-Bauformen für Personal Computer sind oder waren:
Herstellerabhängige Modulformen (beispielsweise für Server) und solche für besondere Anforderungen gibt es in großer Zahl, darunter auch DIMMs mit EDO-RAM. Andererseits verwenden andere Gerätetypen (Drucker, RAID-Controller) durchaus gängige PC-Module.
SIMM-Speichermodule (asynchron) sind „unbuffered“ oder „buffered“, DIMM-Speichermodule (synchron, SDR, DDR) entsprechend „unregistered“ oder „registered“. Als Weiterentwicklung der registered-Module sind DDR2-Module und DDR3-Module als Fully Buffered DIMM (FB-DIMM) eingeführt worden.
Gepufferte Module (buffered, registered, fully-buffered) sind beim Zugriff durch die Latenz des Puffers einen Taktzyklus langsamer, dafür sinkt die elektrische Belastung des Speicherinterfaces im Chipsatz bzw. in der CPU. Dies macht solche Module insbesondere für Serveranwendungen mit großem Speicherausbau durch eine höhere Anzahl von Speichermodulen sinnvoll.
Die Speicherkapazität eines Speichermoduls ergibt sich normalerweise als Produkt aus der Speicherkapazität der meist gleichartigen Speicherchips und deren Anzahl.
Als Beispiel sei hier ein Speichermodul genannt, das mit 16 Chips des Typs GM72V16821CT10K bestückt ist. Aus dem Datenblatt erfährt man, dass dieser Chip in 2 Bänken mit je 524.288 Wörtern mit einer Breite von jeweils 16 Bit organisiert ist (2×512K×16). Daraus ergibt sich eine Speicherkapazität pro Chip von 2×524.288×16 Bit = 16.777.216 Bit = 16 Mibit. Mit 16 dieser Chips ergibt sich eine Speicherkapazität des Speichermoduls von 256 Mibit oder – mit 8 Bits pro Byte – 32 MiB.
Manche Speichermodule besitzen ein oder zwei zusätzliche Chips (gleichen oder anderen Typs), die für Fehlerkorrektur- bzw. Paritätsfunktionen zuständig sind. Hier werden für ein Byte häufig 9 Bits verwendet (8 Datenbits und 1 Prüfbit).
Der heute übliche DDR/DDR2-Speicher besitzt 64 Daten-Signalleitungen (beziehungsweise 72 bei ECC). Die einzelnen SDRAM-Chips sind so verschaltet, dass sie die gesamte Breite des Datenbusses belegen. Jeder Chip ist für bestimmte Datenleitungen zuständig. Ein Chip mit einer „×n“-Organisation kann n Datenleitungen versorgen. Für einen Datenbus mit 64 Leitungen sind folglich 64/n Chips mit der Organisation „×n“ erforderlich. Bei Modulen mit mehreren Bänken (siehe unten) sind mehrere Chips (2 oder 4) an den Datenleitungen parallel geschaltet. Folglich enthält ein Modul mit k Bänken 64/n×k Chips mit der Organisation „×n“.
Zusätzliche Eingangsleitungen regeln die Auswahl des Speicherbausteins (Chip Select) und die Schreib- bzw. Leserichtung (R/W) der Daten.
Ebenso wie bei der Größe, wird auch bei der Geschwindigkeit zwischen dem gesamten DIMM und den einzelnen Chips unterschieden. Ein einzelner Chip bezieht sich immer auf die maximale Taktfrequenz (zum Beispiel DDR2-1066, DDR-400, SDRAM 133).
Beim gesamten DIMM hingegen geht es um die Datentransferrate (zum Beispiel PC2-4200, PC3200). Bestückt mit SDRAM-Chips mit DDR2-533, die also eine Taktfrequenz von 266 MHz haben, übertragen sie im DDR2-Modus 4 Datenwörter pro Takt, und man kann die maximale Übertragungsrate beispielsweise folgendermaßen berechnen:
Der Datentransfer-Leistungswert ist nur ein Idealwert und wird in der Praxis nie erreicht. Er ist jedoch zur Klassifizierung von Speicher üblich; im obigen Beispiel wäre es also PC2-4200 aus DDR2-533-Chips, die mit 133 MHz laufen (siehe DDR2-SDRAM).
Ein DIMM lässt sich mit einer unterschiedlichen Anzahl jeweils gleicher Module aufbauen. Das JEDEC-Gremium macht dabei ganz bestimmte Vorgaben zum Aufbau der DIMMs. Erlaubt ist es, Chips einzusetzen, die entweder 4 (nur mit Puffer), 8 oder 16 Datenleitungen (s. o. Leitungen) in Anspruch nehmen. Des weiteren ist immer eine bestimmte Gruppe von DRAM-Chips jeweils einer Bank zugeordnet. Eine Bank oder ein Rank (gemäß JEDEC-Terminologie) ist dabei ein eindeutiger, unabhängig adressierbarer 64 bit breiter Bereich eines Speichermoduls (bei ECC-Modulen 72 bit).[1][2] Jede Bank verhält sich dabei wie ein separates Speichermodul. Daher belasten beispielsweise Zwei-Bank-Module die Busleitungen genau so stark wie zwei Ein-Bank-Module. Es existieren Speichermodule mit einer Bank, zwei oder vier Bänken (Single-, Dual- und Quad-Rank-DIMMs). Da Chipsätze in der Regel nur maximal 8 Bänke verwalten können (bzw. bei hohem Tempo wie DDR-400 zumeist nur 6 Bänke), muss man für großen Speicherausbau (z. B. 8 x 2 GiB = 16 GiB) auf Ein-Bank-Module zurückgreifen, da mit Zwei-Bank-Modulen mit 4 x 2 Bänken bereits alle 8 Bänke belegt wären. Zudem muss in solchen Fällen meist die Geschwindigkeit der RAMs reduziert werden, zum Beispiel von PC3200 auf PC2700, da ansonsten die Interferenzen auf den Leitungen zu groß werden.
Zwischen der einseitigen und beidseitigen Bestückung der Speichermodule mit Speicherchips (Single-Sided/Double-Sided) besteht kein direkter Zusammenhang, d.h. einseitig bestückte Module können zwei Bänke enthalten, und beidseitig bestückte Module können nur eine Bank enthalten.
Werden aufgrund der Speicheranforderungen mehr Bausteine benötigt, als dies nach den Anforderungen der JEDEC Group pro Daten- oder Adressleitung zulässig ist, müssen sogenannte Puffertreiber eingesetzt werden. Diese entkoppeln den Daten- und Adressbus des Moduls vom externen Bus, so dass zum Beispiel statt erlaubter 4 Bausteine je Leitung 8 oder 16 eingesetzt werden können. Das Speichermodul selbst zählt dann nur noch als ein einzelner Eingang.
Nachteilig ist meist, dass diese Puffer selbst wieder Schaltzeiten besitzen, die sich zu den Zugriffszeiten der reinen RAM-Bausteine addieren.
Der Auslöser für einen Schreib- oder Lesevorgang im Hauptspeicher ist normalerweise die CPU. Natürlich kann auch andere Computerperpherie (meist per DMA) auf den Speicher zugreifen, jedoch werden die meisten Operationen von der CPU veranlasst.
Ein wichtiger Parameter für die Zugriffszeit auf diese Daten ist die Column Address Strobe Latency, also die Spaltenadressverzögerung.
Findet die CPU bestimmte Daten nicht in ihrem Cache oder will Daten in den Speicher schreiben, wird der Speichercontroller damit beauftragt. Bei Intel-CPUs werden dazu Befehle über den Front Side Bus an den Speichercontroller, welcher in der Northbridge sitzt, abgeschickt. AMD-CPUs haben einen deutlich kürzeren Weg, da hier der Speichercontroller direkt in der CPU liegt. Der Speichercontroller liest immer komplette 64-Bit-Zeilen (s. o.).
Der Speichercontroller überträgt die Daten bei einem Zugriff auf den RAM in einer genau festgelegten Reihenfolge.
Es existiert eine Vielzahl von Parametern, welche das Zeitverhalten des Speichers steuern. Standardmäßig ist im Speicherriegel ein vom Hersteller eingestelltes Zeitverhalten eingetragen. Bei modernen Bauformen befindet sich dazu ein EEPROM auf dem Riegel, das vom BIOS ausgelesen werden kann und so für eine korrekte Konfiguration sorgt. Durch sogenanntes Tuning durch den Nutzer wird oft versucht, dieses Zeitverhalten zu optimieren, was aber zu Systemabstürzen führen kann.
DDR-Speicher wird auf die folgende Art beschrieben:
Geschwindigkeit | Puffer | tCL | tRCD | tRP | SPD-EPROM-Version | Platinen-Version |
---|---|---|---|---|---|---|
PC3200 | U | 30 | 3 | 3 | 1 | A1 |
Im obigen Beispiel wird ein RAM mit den Parametern PC3200U-30331-A1 beschrieben. Der wichtigste Parameter ist die maximale Geschwindigkeit des Moduls. „PC3200“ kennzeichnet, wie bei Geschwindigkeiten näher erklärt, Speicherriegel, die 3,2 Milliarden Bytes pro Sekunde liefern können. Dadurch kann man recht einfach die Zuordnung von Prozessoren/Chipsätzen und passenden Speichermodulen ermitteln. Ein FSB-400-Prozessor kann ebenfalls nur 3,2 GByte/s über seine Schnittstelle schicken. Aus diesem Grund wäre deshalb dieser Speicher für den entsprechenden Prozessor ausreichend. Das „U“ steht für ungepufferte DIMMs. Nach dem Bindestrich folgen die wichtigen Latenzzeiten und zwar ausgedrückt in Taktzyklen:
Bei DDR-SDRAM gibt es Chips mit einer CL von 2, 2,5 oder 3 Takten Dauer, weshalb man für den CL Parameter zwei Ziffern benötigt (3033 steht für 3,0 - 3 - 3).
DDR2-Speicher wird auf die folgende Art beschrieben:
Kapazität | DIMM-Aufbau | Geschwindigkeit | Puffer | tCL | tRCD | tRP | SPD-EPROM-Version | Platinen-Version |
---|---|---|---|---|---|---|---|---|
512MB | bRxc | PC2-3200 | U | 3 | 3 | 3 | 1 | A1 |
Bei DDR2-Speicher sind nur ganzzahlige Zeiten erlaubt weshalb der CL mit nur einer Zahl angegeben wird. In der JEDC-Spezifikation ist nur für DDR2-Speicher die Kapazitätsgröße vorgesehen. Des Weiteren wird die Angabe zum Aufbau des Riegels verlangt. „1Rx8“ steht für einen Single-Rank-DIMM (s. Rank), welches (x8)SDRAMs enthält (s. Bank) , wobei jeder davon 8 Datenanschlüsse besitzt.
Interessante Parameter sind auch die Betriebsspannung samt Toleranzbereich, Temperatur-Grenzwerte oder weitere Latenzzeiten wie tRAS oder tRC. Solche Parameter sind in der JEDEC-Spezifikation exakt festgelegt und werden deshalb nicht extra ausgewiesen. Die Activate-to-Precharge-Zeit tRAS wird doch gerne angegeben, weil sie für Übertakter interessant ist. Sie steht meist hinter tRP durch einen Bindestrich getrennt, z. B. PC3200-2022-5.
Für Übertakter auch interessant ist die Command Rate (1T/2T), obwohl diese Latenzzeit des Speicherchips keine isolierte Eigenschaft ist. Diese Wartezeit wird dann nötig, wenn viele Chips am Speicherkanal aktiv sind und dadurch die Adressleitungen des Speichercontrollers stärker belastet werden. In der Regel lassen sich bis zu 3 Ranks (ein Double-Rank und ein Single-Rank) mit 1T ansprechen, bei mehr muss man entweder die Command Rate verlängern oder die Taktfrequenz absenken.
Wichtige Parameter zum Zeitverhalten des Speichers sind:
Speichermodule können je nach Bestückung verwendet werden
Für die einfache Fehlererkennung mittels Paritätsbit wird je 8 Bit Wortbreite ein weiteres Bit benötigt, die Module sind folglich 9 Bit (einfaches SIMM), 36 Bit (PS/2-SIMM) oder 72 Bit breit (übliche DIMMs) organisiert. Ein einzelnes DIMM bietet damit auch genügend Bit-Breite für die Nutzung der Fehlerkorrektur (siehe unten), während hierzu mehrere gleichartige PS/2-Module parallel geschaltet werden müssen.
Die Fehlerkorrektur muss außerdem vom Motherboard (Chipsatz und BIOS) unterstützt werden, die zusätzlichen Bits auf den Modulen schaffen nur die Möglichkeit zur Ablage der benötigten Information.
Zur Erkennung von Hauptspeicherfehlern gibt es mehrere Verfahren. Eines dieser Verfahren stammt vom US-Mathematiker Richard W. Hamming, welches in ECC-Speichern zum Einsatz kommt. Der Error Correction Code (ECC) ist eine Art Hashwert über die 64 Bits jeder Speicherzeile. Diese redundanten Informationen werden vom Speichercontroller berechnet und in 8 weiteren Bits abgelegt (bei 32 Bit Speicherzeilen sind es 7 weitere Bits), weshalb ECC-Speicher 72 Bits pro Zeile hat.
ECC kann 1- und 2-Bit-Fehler erkennen sowie 1-Bit-Fehler korrigieren. Multibitfehler können jedoch unbemerkt bleiben. ECC-Speicher kommt in Desktop-PCs kaum zum Einsatz.
Weitere Techniken zur Fehlererkennung sind unter den Namen Chipkill, Active Memory, Memory Resiliency oder Memory RAID bekannt.
DDR-SDRAM
Bustakt | Busbreite | Bezeichnung | Datenrate | Rechnung |
---|---|---|---|---|
133 MHz | 64 Bit | PC2100 | 2,1 GB/s | (133.000.000 Hz x 64 Bit x 2)/8 (Ergebnis in Byte/s) |
166 MHz | 64 Bit | PC2700 | 2,7 GB/s | |
200 MHz | 64 Bit | PC3200 | 3,2 GB/s |
Wenn das Speicherinterface nun Dualchannel ist, kann es die doppelte Datenrate erreichen. AMDs Prozessor Athlon64-FX zum Beispiel besitzt ein Dualchannel-Memory-Interface, der Athlon64 im Sockel 754 verfügt dagegen über ein Singlechannel-Memory-Interface.
Dual-DDR-SDRAM
Bustakt | Busbreite | Bezeichnung | Datenrate | Rechnung |
---|---|---|---|---|
133 MHz | 2×64 Bit | PC2100 | 4,2 GB/s | (133.000.000 Hz × 64 Bit × 2 × 2)/8 (Ergebnis in Byte/s) |
166 MHz | 2×64 Bit | PC2700 | 5,4 GB/s | |
200 MHz | 2×64 Bit | PC3200 | 6,4 GB/s |
DDR2-SDRAM
Bustakt | Busbreite | Bezeichnung | Datenrate | Rechnung |
---|---|---|---|---|
200 MHz | 64 Bit | PC2-3200 | 3,2 GB/s | |
266 MHz | 64 Bit | PC2-4200 | 4,2 GB/s | |
333 MHz | 64 Bit | PC2-5300 | 5,3 GB/s | |
400 MHz | 64 Bit | PC2-6400 | 6,4 GB/s |
Wenn das Speicherinterface nun Dualchannel ist, kann es die doppelte Datenrate erreichen. AMDs Prozessor Athlon64-FX zum Beispiel besitzt ein Dualchannel-Memory-Interface, der Athlon64 im Sockel 754 verfügt dagegen über ein Singlechannel-Memory-Interface.
RDRAM
Bustakt | Busbreite | Bezeichnung | Datenrate |
---|---|---|---|
400 MHz | 16 Bit | PC800 | 1,6 GB/s |
533 MHz | 16 Bit | PC1066 | 2,1 GB/s |
600 MHz | 16 Bit | PC1200 | 2,4 GB/s |
800 MHz | 16 Bit | PC1600 | 3,2 GB/s |
1066 MHz | 16 Bit | PC2100 | 4,3 GB/s |
Dual-RDRAM
Bustakt | Busbreite | Bezeichnung | Datenrate |
---|---|---|---|
400 MHz | 2×16 Bit | PC800 | 3,2 GB/s |
533 MHz | 2×16 Bit | PC1066 | 4,2 GB/s |
600 MHz | 2×16 Bit | PC1200 | 5,0 GB/s |
800 MHz | 2×16 Bit | PC1600 | 6,4 GB/s |
1066 MHz | 2×16 Bit | PC2100 | 8,6 GB/s |
Die Angabe der Datenrate dient nur der Klassifizierung und entspricht daher nicht der Nutzdatenrate.