|
CPU+Mainboard-FAQ >> 8. Arbeitsspeicher/Hauptspeicher - RAM |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() 0. Inhaltsangabe 1. Über diese FAQ 2. Mainboards 3. CPUs 4. CPU-Kühlung 5. Schnittstellen 6. IRQs 7. BIOS 8. RAM 8.1 RAM-Grundl... 8.2 Terminolog... 8.3 Bauformen 8.4 Kennzahlen... 8.5 Test von R... 8.6 Was man be... 9. Uebertakten 10. Fehlersuche 11. Treiber 12. Montage 13. Links 14. Schlusswort |
8. Arbeitsspeicher/Hauptspeicher - RAM
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Kapazität [MBit] | Organisation [Tiefe x Datenleitungen] | Bänke | Adressbits | Page Length | |
|---|---|---|---|---|---|
| Row | Column | ||||
| 16 | 4 M x 4 | 2 | 12 | 9 | 512 |
| 64 | 4 M x 16 | 4 | 12 | 8 | 256 |
| 64 | 8 M x 8 | 4 | 12 | 9 | 512 |
| 64 | 16 M x 4 | 4 | 12 | 10 | 1024 |
| 128 | 8 M x 16 | 4 | 12 | 9 | 512 |
| 128 | 16 M x 8 | 4 | 12 | 10 | 1024 |
| 128 | 32 M x 4 | 4 | 12 | 11 | 2048 |
| 256 (4) | 16 M x 16 | 4 | 13 | 9 | 512 |
| 256 (4) | 32 M x 8 | 4 | 13 | 10 | 1024 |
| 256 (4) | 64 M x 4 | 4 | 13 | 11 | 2048 |
| 512 (4, 5) | 64 M x 8 | 4 | 13 | 11 | 2048 |
| 512 (4, 5) | 128 M x 4 | 4 | 13 | 12 | 4096 |
(4) 256- und 512-MBit-Chips brauchen einen 8K-Refresh (7.8 µs). (5) 512-MBit-Chips werden noch selten in grosser Serie hergestellt, es stehen deshalb evtl. noch nicht alle Daten zur Verfügung.
| Kapazität [MBit] | Organisation [Tiefe x Datenleitung | 32MByte / 4Mx64 | 64MByte / 8Mx64 | 128MByte /16Mx64 | 256MByte / 32Mx64 | 512MByte /64Mx64 | 1GByte /128Mx64 | 2GByte /256Mx64 |
|---|---|---|---|---|---|---|---|---|
| Anzahl der SDRAM-Chips pro Modul / Anzahl der Rows / Page Size pro Row | ||||||||
| 16 | 4 M x 4 | 16(2)/1 /4K | - | - | - | - | - | - |
| 64 | 4 M x 16 | 4/1/2K | - | - | - | - | - | - |
| 64 | 8 M x 8 | - | 8/1/4K | 16(1)/2 /4K | - | - | - | - |
| 64 | 16 M x 4 | - | - | 16(2)/1 /8K | 32(3)/2 /8K | - | - | - |
| 128 | 8 M x 16 | - | 4/1/4K | - | - | - | - | - |
| 128 | 16 M x 8 | - | - | 8/1/8K | 16(1)/2 /8K | - | - | - |
| 128 | 32 M x 4 | - | - | - | 16(2)/1 /16K | 32(3)/2 /16K | - | - |
| 256 (4) | 16 M x 16 | - | - | 4/1/4K | - | - | - | - |
| 256 (4) | 32 M x 8 | - | - | - | 8/1/8K | 16(1)/2 /8K | - | - |
| 256 (4) | 64 M x 4 | - | - | - | - | 16(2)/1 /16K | 32(3)/2 /16K | - |
| 512 (4, 5) | 64 M x 8 | - | - | - | - | 8/1/16K | 16(1)/2 /16K | - |
| 512 (4, 5) | 128 M x 4 | - | - | - | - | - | 16(2)/1 /32K | 32(3)/2 /32K |
Anmerkungen:
Die Modulbezeichnung 8 M x 64 steht für ein als "Non-Parity" oder auch
"Non-ECC" bezeichnetes 64-MByte-Modul. Für EC- oder ECC-Fehlerkorrektur
benötigt man Module mit zusätzlichen Chips und 8 weiteren Datenleitungen,
weshalb man ein 64-MByte-ECC-DIMM auch unter der Bezeichnung "8 M x 72"
findet. Das gilt sinngemäss auch für die anderen Kapazitäten.
(1) Auf solchen doppelseitig bestückten ("zweireihigen" oder "dual-row"
oder "double-sided") DIMMs (DS-DIMM) sind die Datenleitungen von je zwei
Chips parallel geschaltet.
(2) Bei solchen doppelseitig bestückten DIMMs sind keine Datenleitungen
parallel geschaltet, es handelt sich also elektrisch um
Single-Sided-Module (SS-DIMMs, "single-row", "einreihig"). Diese sind laut
PC133-Spezifikation als ungepufferte DIMMs (unbuffered DIMMs) nicht
vorgesehen, sondern nur als Registered DIMMs.
(3) 32-Chip-Module doppelter Bauhöhe ("double stack") entsprechen nicht
der PC100-/PC133-Spezifikation; es sind hier nur Registered DIMMs mit
übereinander angebrachten Chips (teilweise in einem Gehäuse) zulässig
(Stacked DIMMs).
(4) 256- und 512-MBit-Chips brauchen einen 8K-Refresh (7.8 µs).
(5) 512-MBit-Chips werden noch selten in grosser Serie hergestellt, es
stehen deshalb evtl. noch nicht alle Daten zur Verfügung.
Seit es Heimcomputer gibt, wird DRAM in CMOS-Technologie gefertigt.
Doch auch diese Technologie wird immer weiter entwickelt, so dass höhere
Packungsdichten, geringere Strukturgrössen und niedrigere
Versorgungsspannungen erreicht werden, die alle ein Ziel haben:
Vergrösserung der wirtschaftlich herstellbaren RAM-Grösse und Erhöhung der
Geschwindigkeit. Aus diesem Grund sind mit der Zeit immer neue Bauformen
(siehe 8.3) für RAM entwickelt worden.
Ein recht verständlich geschriebener Artikel zu den Grundlagen von RAM
(allerdings in englischer Sprache) findet sich hier:
http://arstechnica.com/paedia/r/ram_guide/ram_guide.part1-1.html
c't 17/00 Seite 166ff:
http://www.heise.de/ct/Redaktion/ciw/speicher.html c't 06/02 Seite
262ff, c't 08/02 seite 282ff.
Einige Betriffe tauchen in diesem Kapitel immer wieder auf.
Hier nicht relevante, aber auch interessante RAM-Typen:
Seit den Anfangszeiten der PCs haben sich die RAM-Bauformen mehrmals
verändert, um der höheren Kapazität der RAM-Chips, aber auch der sich
ändernden Speicherbusbreite Rechnung zu tragen.
Zu XT-Zeiten (bis Ende der 80er Jahre) waren Speicherchips oft einzeln
auf dem Mainboard untergebracht - die DIPs (Dual Inline Package) waren
zuerst eingelötet, später auch gesockelt. Die Speicheraufrüstung war somit
kein Zuckerschlecken. Zudem waren die Signalwege lang, was aber aufgrund
der damals noch hohen Zugriffszeiten (120 ns und mehr, beim IBM-XT z.B.
200 ns, später aber auch 80, z.T. gar - sehr teuer - 70 ns) nicht weiter
ins Gewicht fiel.
Später wurden Steckmodule eingeführt. Die 30-poligen SIMMs (Single
Inline Memory Module, diese Module haben eine Kontaktleiste unten) mit
jeweils 8 bzw. mit Parity 9 Bit breitem Speicherbus gab es in Kapazitäten
von 256 KB, 1 MB, später 4 MB und sehr selten 16 MB. Sie müssen in
Systemen mit 16-Bit-Speicherbus (286, 386SX) immer paarweise, in Systemen
mit 32-Bit-Speicherbus (386DX, 486) gar jeweils zu viert verbaut werden.
Auf 30-poligen SIMMs findet man zumeist Fastpage-DRAM, die
Versorgungsspannung liegt bei 5 V.
Elektrisch gleich, aber mit Stiften statt einer Kontaktleiste, kamen
SIPPs daher - diese passten in billige Stecksockel. SIPPs gab es mit
Kapazitäten von bis zu 1 MB; sie waren v.a. in 286- und 386SX-Systemen
üblich. Sie waren im übrigen beliebte "Opfer" von Umlötaktionen zwecks
Weiterverwendung in Rechnern mit 30-Pin-Sockeln.
PS/2-SIMMs, die, wie der Name schon sagt, ihre Wurzeln beim IBM PS/2
haben, sind 32 Bit breit (mit Parity 36 Bit; es gab auch Module mit
"halber" Parität, diese waren jedoch im PC-Bereich nicht üblich) und haben
72 Anschlüsse an der Kontaktleiste an der Unterkante. Es gab sie in
Kapazitäten von 1 MB bis zu 16 MB (mit Fastpage-DRAM) bzw. bis zu 64 MB
(mit EDO-DRAM). In 486ern sind sie einzeln einsetzbar (es sei denn, der
Chipsatz verwendet nicht abschaltbares Interleaving, wie der Intel Saturn
[82420]), in Systemen mit 64-Bit-Speicherbus (Pentium etc.) müssen sie
paarweise eingesetzt werden. Fastpage-Module lassen sich bis einem
Speichertakt von ca. 66 MHz betreiben, EDO-Module bis 83 MHz (jeweils bei
einer Zugriffszeit von 60 ns). Die übliche Versorgungsspannung beträgt
5V.
Damals[tm] gab es übrigens Adapter, die die Verwendung von 4 30-poligen
SIMMs in einem PS/2-Slot erlaubten - kein Wunder, kosteten doch 16 MB RAM
noch 500 Mark oder mehr.
DIMMs (Dual Inline Memory Module) unterscheiden sich von SIMMs dadurch,
dass die Kontakte auf beiden Seiten nicht durchverbunden, sondern
selbständig sind. Sie sind 64 Bit (bzw. mit Parity/ECC 72 Bit) breit und
haben 168 Anschlüsse an ihrer Kontaktleiste. Die verfügbaren Kapazitäten
reichen von 8 bis 1024 MB, dabei kommt im PC-Bereich fast ausschliesslich
SDRAM zum Einsatz, während bei älteren Apple-Rechnern auch EDO-DIMMs (die
aber zumindest bei 66 MHz Speichertakt auch von etlichen PC-Chipsätzen
unterstützt werden) oder gar Fastpage-DIMMs verwendet wurden. Bei DIMMs
unterscheidet man ausserdem noch nach dem zulässigen Takt - PC100-Module
sind für 100 MHz ausgelegt, PC133-Module für 133 MHz. PC66-Module wurden
nur nachträglich so genannt - sie unterscheiden sich von ihren neueren
Verwandten durch längere Zugriffszeiten (10/12 ns) und das Fehlen eines
sogenannten SPD-EEPROMs, das Informationen über den Hersteller und
zulässige Timings enthält. Im übrigen lassen sich gute PC100-Module oft
auch bei 133 MHz betreiben, allerdings meist nur mit konservativeren
Timings.
Bei SDRAM-Modulen unterscheidet man weiterhin zwischen "registered" und
"unbuffered". "Registered"-Module haben zusätzliche Pufferchips, um die
elektrische Belastung für den Mainboard-Chipsatz zu reduzieren; die
jeweils grössten verfügbaren Module sind wegen der hohen Chipanzahl nur
als Registered-Module verfügbar.
SDRAM-DIMMs benötigen eine Versorgungsspannung von 3.3 V. Verwendet
werden sie hauptsächlich in Pentium-2/3- und Athlon-Systemen, daneben auch
in einigen (Super-)Sockel-7-Systemen und neuerdings auch in
Pentium-4-Systemen.
Auf einigen Sockel-7-Boards kann man sowohl PS/2-SIMMs als auch
SDRAM-DIMMs betreiben, allerdings gibt es dabei ein paar Tücken - siehe
8.6.1.
Vor allem in Notebooks werden SO-DIMM-Module verwendet. Diese haben
eine kleinere Bauform, um Platz zu sparen und sind damit nicht
pinkompatibel zu anderen DIMMs. Ansonsten gelten für sie die selben
Standards wie für normale DIMMs.
184-polige DIMMs werden für zwei völlig unterschiedliche (und inkompatible) Speichertypen eingesetzt: Rambus-DRAM und DDR-SDRAM.
Rambus-Speicher der erten Generation (bis PC1200) arbeitet mit einem
nur 16 Bit breiten Datenbus, wird dafür aber mit bis zu 600 MHz getaktet
und arbeitet genau wie DDR-SRDRAM im DDR-Verfahren. Dies führt zu hoher
Speicherbandbreite, aber auch zu hohen Latenzzeiten. Rambus-DRAM wird
derzeit in einigen Pentium-3-System und in vielen Pentium-4-Systemen
verwendet. 184-polige RIMMs gibt es momentan in verschiedenen
Organisationen. Zunächst wurden RIMMs mit 2 mal 16 Speicherfeldern
hergestellt (2x16d-Organisation). Um Kosten zu sparen wurde dann die sog.
4i-Organisation vorgestellt, bei der die RIMMs nur noch 4 Speicherfelder
haben. Laut Rambus hat dies keinen Einfluss auf die Performance, hilft
aber beim Kostensparen. Rambus Inc. stellt im übrigen selbst keine
Speicherchips her, sondern lizenziert nur die Technologie.
DDR-SDRAM unterscheidet sich von normalem SDRAM dadurch, dass sowohl an
der steigenden als auch an der fallenden Flanke des Taktsignals Daten
übertragen werden können. Darüber hinaus wird es auch mit 2.5V statt 3.3V
betrieben. Die Bezeichnungen für DDR-SDRAM sind indes verwirrend - DDR200
entspricht PC1600 und wird mit 100 MHz getaktet, DDR266 wird auch als
PC2100 bezeichnet und ist für 133 MHz vorgesehen.
Die Chipsätze i850E und SiS-658 sind momentan die Einzigen, die
überhaupt 32Bit-RIMMs ansprechen können. Diese "RIMM 3200" bzw. "RIMM
4200" haben die gleiche Modulbreite wie PC800-RIMMs, jedoch haben sie 232
Pins statt nur 184 Pins und lassen sich daher nicht in die 16Bit
RIMM-Slots einsetzen. Durch die Verdopplung der Datenbusbreite bereits im
RIMM verdoppelt sich die Bandbreite, so dass man nicht mehr 2 Module
braucht, um auf die für den P4 nötige Bandbreite zu kommen. 32Bit-RIMMs
sind noch selten anzutreffen und werden deshalb teilweise den Mainboards
bereits beigelegt.
DRAM muss zum Erhalt des Speicherinhalts immer wieder ausgelesen und
neu geschrieben werden. Diesen Auffrischungsvorgang nennt man "Refresh".
Standard SDRAM-Speicher braucht alle 64ms eine solche Auffrischung. Der
Refresh besteht darin, dass der Lese-/Schreib- verstärker ("Sense Amp")
die Speicherzeilen ausliest und wieder neu schreibt. Ein Taktsignal mit
einer Takt-Periode von 15.6µs sorgt dafür, dass nach 64ms exakt 4096
Zeilen neu geschrieben wurde. Dieser Vorgang wird als "4K-Refresh"
bezeichnet und wird bei allen 16-, 64- und 128MBit-SDRAM verwendet. Erst
ab 256MBit SDRAMs legt man einen Zahn zu und füllt in 64ms 8192 Zeilen neu
auf ("8K-Refresh"). Dies geschieht mit einer Takt-Periode von 7.8µs. Der
Chipsatz muss den Refresh nicht regelmässig alle 15.6µs senden. Es reicht
aus, wenn kurz vor Ablauf der 64ms 4096 Refresh-Befehle hintereinander
gegeben werden. Dieser Vorgang wird auch "Burst-Refresh" genannt.
Soll der Inhalt einer bestimmten Zelle gelesen oder dort etwas geschrieben werden, so muss die genaue Adresse angegeben werden, an der sich diese Daten befinden. Zuerst muss (bei mehreren Modulen) die richtige Chip-Reihe ausgewählt werden. Dort wird vom Chipsatz dann vor dem Zugriff die Chip-Select-Leitung (CS) eingeschaltet. Erst dann wird per Bank-Select (BS) die gewünschte Speicherbank aktiviert. Nun muss der Chipsatz noch Zeile (Row) und Spalte (Column) angeben. Dies geschieht aber auf denselben Datenleitungen hintereinander; bei den 168-poligen DIMMs sind das 13 Leitungen. Somit beträgt die maximale Anzahl an Zeilen oder Spalten 2^13 = 8192. Mehr geht nicht bei diesem DIMM-Typ.
Die Kennzahlen "RAS" und "CAS" oder Ähnliches hört man immer wieder.
Was diese zu bedeuten haben soll hier kurz erklärt werden. Auch in den
folgenden Abschnitten befinden sich häppchenweise weitere Parameter - das
Weiterlesen lohnt sich also ;).
Damit ein SDRAM-Chip bei der Adressübergabe überhaupt weiss, um welchen
Adressteil es sich grade handelt, gibt es die Signalleitungen "RAS" (Row
Adress Strobe) und CAS (Column Adress Strobe). Werden also grade die
Zeilenbits übertragen, ist RAS aktiv, bei den Spaltenbits eben CAS. Diese
Art der Übertragung spart nicht nur zusätzliche Leitungen, sondern sorgt
auch noch für einen anderen Effekt. Der Bank-Select-Befehl kann
gleichzeitig mit der ersten Zeilenadresse gesendet werden. Liegt genau
diese Signalkombination ("Aktive- Kommando") an, lesen die Sense Amps die
entsprechenden Zeilen komplett aus und puffern den Inhalt. Dieser Vorgang
geht aber nicht beliebig schnell, weshalb die Daten erst nach einer
gewissen Wartezeit in den Sense Amps bereitliegen. Diese Zeitverzögerung
heisst "RAS-to-CAS-Delay", kurz "t_RCD" ("_" bedeutet tiefgestellte
Zeichen). Erst nach der Zeit t_RCD kann die Spaltenadresse vom Chipsatz an
die ensprechenden Sense Amps geschickt werden. Die Zeit vom Befehl bis zum
Anliegen des entsprechenden Spaltenbits im Ausgangsregister ("Latch") für
die jeweilige Datenleitung heisst "CAS Latency" (CL, auch t_CL). Von
diesen Datenleitungen liest der Chipsatz schliesslich die angeforderten
Daten.
Vor allen in Servern müssen Speichermodule zwei besondere Anforderungen
erfüllen:
Viel Speicher belastet vor allem die Adressleitungen sehr stark.
Deshalb empfiehlt es sich hier auf gepufferte Speicherriegel zurück zu
greifen. Diese werden auch als "Registered DIMMs" bezeichnet, da auf den
Modulen spezielle Register-Chips verbaut werden. Bei den sonst üblichen
"unbuffered" DIMMs sind sowohl die Datenleitungen, als auch die
Adressleitungen parallel geschaltet. Registered DIMMs entlasten die
Adress-Treiberleitungen, damit der Chipsatz stabiler arbeiten kann.
Zusätzlich befindet sich auf den Registered DIMMs häufig neben den
Pufferbausteinen noch ein PLL-Baustein, um das Taktsignal aufzubereiten.
Damit wird der Taktsignaltreiber des Mainboards entlastet. Da die
Pufferbausteine etwas Zeit schlucken, verschieben sich die Eingangssignale
an den Ausgängen der Pufferbausteine aber ab 100MHz Taktfrequenz um einen
Taktzyklus. Daher sind Registered DIMMs bei der Adressierung genau einen
Takt langsamer als Unbuffered DIMMs.
Bei EDO- und PC66-Speicher spricht man nicht von Registered RAM, sondern
von Buffered DIMMs.
"ECC" steht für "Error Correction Code". Per ECC lassen sich
1-Bit-Fehler erkennen und korrigieren und 2-Bit-Fehler noch erkennen. Bei
PCxxx-SDRAM nutzt man bei 64 Bit Datenpfadbreite 8 zusätzliche Leitungen
und pro 64 Bit gespeicherte Daten 8 zusätzliche Bits; daher haben Module
mit ECC immer mehr Speicherchips als "Non-Parity"-Module.
Während des Bootvorgangs muss das BIOS eines PCs mit ECC-Hauptspeicher
das RAM zunächst mit bekannten Werten initialisieren, damit auch die
Prüfbits in den ECC-Zusatzbausteinen abgelegt werden können.
Schreibzugriffe mit aktiviertem ECC dauern manchmal etwas länger, wenn
nicht ein Datensatz mit voller Datenbusbreite anliegt. Der Chipsatz muss
dann nämlich die zur vollständigen "Zeile" fehlenden Bits erst aus dem RAM
lesen, um die neue Prüfsumme bilden zu können. Erst dann schreibt er die
neuen Daten. Wie stark genau der Leistungsverlust durch ECC ist, hängt vom
Chipsatz, dem Betriebssystem und der laufenden Software ab -
Erfahrungswerte gibt es keine.
In Desktop-Systemen macht ECC nur sehr begrenzt Sinn, da die Fehlerraten bei heutigen Speichermodulen sehr klein sind. Sinn macht der Einsatz von ECC vor allem in Servern, wo Daten Tage oder Wochen im RAM stehen und damit die Wahrscheinlichkeit von kippenden Bits erhöht ist. In solchen Servern wird aber häufig in regelmässigen Abständen der Speicherinhalt komplett ausgelesen und neu geschrieben ("Memory Scrubbing"), um eben diese Fehler gar nicht erst zuzulassen.
Es gibt Chipsätze, die zwingend Registered- und/oder ECC-SDRAM benötigen (z.B. ServerSet III von Server Works). Andererseits gibt es auch Chipätze und Mainboards, die mit ECC und/oder Registered SDRAM nichts anfangen können (z.B. Intels i815 "Solano"; obwohl es einige BIOSse von Mainboards gibt, die Registered DIMMs trotzdem erkennen). Hier sollte man sich unbedingt vor dem RAM-Kauf erkundigen, welcher RAM für die eigenen Ansprüche am ehesten vernünftig erscheint.
Nach dem Lesezugriff auf ein Speicherfeld ist der Inhalt der kompletten
Speicherzelle immer noch in den Sense Amps gepuffert. Das gilt aber auch
für alle anderen Speicherbausteine der aktiven Reihe eines Speichermoduls,
da ja alle diese Chips dieselben Befehle und Adressen erhalten. Daher ist
die Anzahl der Sense Amps eine wichtige Grösse für Speichermodule, und
wird als "Page Size" bezeichnet. Je nach Speicherorganisation beträgt die
Grösse des Puffers durch die Sense Amps 2, 4, 8 oder 16KByte.
Dieser Puffer wird im sog. Burst-Modus ausgenutzt: Werden aus der
gleichen Zeile des Speicherfeldes Daten angefordert, kann der Speicher
ohne erneute Adressierung mit nur einem Taktschritt ausgegeben werden. Die
Burst-Länge entspricht dabei maximal der Anzahl der Spalten des
Speicherfeldes. Die PC-SDRAM-Spezifikation verlangt als mögliche
Burst-Längen jedoch nur 1, 2 oder 4 Daten.
Die Breite der Cache-Line des L2-Caches von Pentium-Prozessoren beträgt
32 Bytes. Das entspricht dem Vierfachen der Speicherbusbreite von 64Bit.
Intel Chipsätze arbeiten daher mit einer Burst Length von 4. Weil der AMD
Athlon aber mit doppelt so langen Cache-Lines arbeitet wie der Pentium,
fordert z.B. der AMD Irongate-Chipsatz (AMD 750) immer die Daten aus 8
Spalten einer Zeile gleichzeitig an, was eine Burst-Length von 8
ermöglicht.
Das ist aber noch nicht notwendigerweise das Ende des optimierten
Zugriffs. Möchte man beim nächsten Lesezugriff Daten aus einer bereits
adressierten Speicherzeile haben ("Page Hit"), so fällt nur noch die
CAS-Latency an Wartezeit an, da keine Zeilen-Adressübergabe mehr nötig
ist, es fällt also keine RAS-to-CAS-Delay an.
Wenn rechtzeitig vor dem Ende eines Bursts eine neue Spaltenadress
empfangen wird, kann sich der nächste Burst lückenlos anschliessen.
Werden jedoch Daten aus einer anderen Speicherzeile angefordert ("Page
Miss"), so müssen die Sense Amps den aktuell gepufferten Inhalt
zurückschreiben, da der Inhalt bei Lesevorgang gelöscht wird. Die für den
Rückschreibvorgang benötigte Zeit wird auch "RAS Precharge Time" ("t_RP")
genannt.
Nur wärend des Bursts erreicht SDRAM seine maximale Übertragungsrate. Denn nur wenn wirklich bei jedem Taktschritt ein Datenwort übertragen wird, stimmt die Rechnung von 8Byte x 100MHz = 800MB/s. für z.B. PC100-SDRAM. Fallen Latenzzeiten an, sinkt logischerweise auch die maximale Transferrate. Es gibt aber Tricks der Chipsätze, mit denen diese Latenzzeiten umgangen oder möglichst vermieden werden können.
Wie ja jetzt bekannt ist, sind Speicherfelder in Bänke aufgeteilt.
Jedes Speicherfeld verfügt über eigene Sense Amps (zur Erinnerung: Das
waren die Lese- und Schreibverstärker). Der Chipsatz kann nun beim
Abspeichern der Daten nicht nur zeilenweise in einer Bank vorgehen,
sondern er kann die Bits auch zeilenweise auf die Bänke verschachtelt
verteilen. Beim Umschalten zwischen zwei Bänken muss zwar die
Row-Active-to-Row-Active-Delay (t_RRD) eingehalten werden, aber dadurch
kommt es beim Burst-Zugriff nicht mehr zu Verzögerungen: Es ist jetzt
möglich, eine Bank zu adressieren, während eine andere grade Daten liefert
oder eben beschrieben wird. Grade beim Transport von grossen Datenblöcken
(sequenzieller Datenzugriff) lässt sich so geschickt eine grosse Anzahl
von Adressiervorgängen "verstecken". Diese Verschachtelung von Zugriffen
auf Speicherbänke bezeichnet man als "Bank Interleaving". 16MBit-Chips
haben nur 2 interne Bänke und können deshalb (innerhalb eines Moduls) nur
2-Way-Interleaving durchführen. Neuere Module mit 64MBit oder mehr pro
Chip haben vier interne Bänke und beherrschen 4-Way-Interleaving.
Bank Interleaving bringt vor allem bei grossen Datenpaketen enorme
Vorteile. Für zufällige Zugriffe auf kleine Speicherblöcke wird ein
anderer Trick verwendet, um höhere Durchsätze zu erziehlen: Die sog. "Page
Open Policy".
Als "Page" werden alle Zeilen mit gleicher Adresse in einer bestimmten
Bank aller Chips eines Moduls bezeichnet. Eine "geöffnete" Page ist also
nichts weiteres als eine Zeilenadresse, deren Inhalt grade in den
entsprechenden Sense Amps gepuffert wird. Wird nach einem Zugriff auf
diese bestimmte Page eine andere Bank angesprochen, so kann der Chipsatz
die erstgenannte Page offen halten, oder schliessen. Das Schliessen
erfolgt entweder durch Anlegen einer anderen Adresse, oder durch das
Verschicken des Precharge-Kommandos. Im Auto-Precharge-Modus (AP-Modus)
schliesst der Chipsatz automatisch eine noch geöffnete Page. Hält jedoch
der Chipsatz die entsprechende Page offen, so kann bei einem
entsprechenden späteren Zugriff ein Teil der notwendigen Adressierung
eingespart werden. Es stellt sich also ein "Page Hit" ein, der schneller
als ein "Page Miss" abgearbeitet werden kann.
Leider kann man eine Page nicht beliebig lang offen halten.
Spätestens nach Ablauf des nächsten Refresh-Intervalls müssen die Sense
Amps freigegeben werden. Aber meist lange davor läuft schon die "Row
Active Time" (t_RAS) ab, die üblicherweise um die 100µs beträgt, was
immerhin 10.000 Takten bei 100MHz entspricht! Der Parameter t_RAS hat auch
einen Minimalwert, der dann besagt, wie lange eine Page mindestens
geöffnet sein muss, bevor sie der Chipsatz via Precharge schliessen
darf.
Die Summe aus t_RAS und t_RP, umgerechnet in Taktperioden, ergibt die
sog. "RAS Cycle Time" (t_RC).
Es lässt sich nur sehr schwer abschätzen, welches Ausmass an
Beschleunigung eine "Open Page Policy" gegenüber einer "Closed Page
Policy" gibt. Die gute Datenübertragung des Intel 440BX bei zufälligen
Speicherzugriffen wird jedoch der ausgeklügelten Page Policy
zugeschrieben.
Der Wert "t_AC" wird in den Spezifikationen als "Output Valid From
Clock" bezeichnet; die Buchstaben "AC" deuten auf die unscharfe und
deshalb missverständliche Bezeichnung "Data Access Time", also auf die
Zugriffszeit hin.
Signale auf den Datenleitungen sind letztlich nichts anderes als
Spannungspegel. Da diese Pegel eine gewisse Einschwingzeit benötigen,
braucht es einige Zeit, bis der Signalwert dem erwünschten Datenwert
entspricht. Genau diese Einschwingzeit meint "t_AC". Bei den älteren Typen
(EDO, FPM) hingegen bezeichnet der Wert "t_RAC" die Dauer zwischen Anlegen
der Zeilenadresse und dem Bereitstellen gültiger Datenwerte. Bei FPM- und
EDO-RAM ist die Zugriffszeit neben maximalen Taktfrequenz das wesentlich
entscheidende Kriterium für den maximal erreichbaren Datendurchsatz.
Bei SDRAM hingegen beeinflussen neben der Taktfrequenz auch noch die
Latenzzeiten CL, t_RCD und t_RP noch die "Zugriffszeit". Trotzdem bleibt
t_AC eine wichtige Kenngrösse: Hält ein Speicherchip den für eine
Frequenzklasse spezifizierten Wert nicht ein, so entstehen daraus beim
Zugriff auf den SDRAM Datenfehler.
Die "Zugriffszeiten" von z.B. EDO- und SDRAM weichen damit stark
voneinander ab, was eben durch den Unterschied von t_AC zu t_RAC bedingt
ist; SDRAMs sind also nicht notwendigerweise durch die kleineren Zahlen
bei der Zugrffszeit schneller.
Früher galt: Je geringer die Zugriffszeit der RAM-Module, desto höheren
Takt machen sie mit bzw. desto aggressiver kann das RAM-Timing eingestellt
werden. Dies ist auch heute noch so, nur ist dies zugunsten anderer
Bezeichnungen aus dem Bewusstsein verschwunden. Typische Zugriffszeiten
liegen bei Fastpage-DRAM bei 100 (alte 30-Pin-SIMMs) bis zu 60 ns (späte
30-Pin- und PS/2-SIMMs), Zu 486er-Zeiten hatten PS/2-SIMMs oft
Zugriffszeiten von 70 ns. EDO-DRAM wurde in PC üblicherweise mit 60 ns
Zugriffszeit verbaut; gleichwohl fanden sich auf Grafikkarten auch Chips
mit 35 ns.
Hier eine Tabelle der Kennwerte für SDRAM-DIMMs:
| Parameter | Symbol | Einheit | PC66 | PC100 | PC133 |
|---|---|---|---|---|---|
| Taktperiode | t_CK | [ns] | 15 | 10 | 7.5 |
| CAS Latency = 2 | CL | [ns] | 30 | 20 | 15 |
| CAS Latency = 3 | CL | [ns] | 45 | 30 | 22.5 |
| RAS-to-CAS-Delay = 2 | t_RCD | [ns] | 30 | 20 | 15 |
| RAS-to-CAS-Delay = 3 | t_RCD | [ns] | 45 | 30 | 22.5 |
| RAS Precharge Time = 2 | t_RP | [ns] | 30 | 20 | 15 |
| RAS Precharge Time = 3 | t_RP | [ns] | 45 | 30 | 22.5 |
| Output Valid from Clock | t_AC | [ns] | 9.0 | 6.0 | 5.4 |
| Sonderfall (1): Output Valid from Clock | t_AC | [ns] | 10.0 | 7.0 | 7.0 |
| RAS Cycle Time bei t_RP=3 | t_RC | [Takte] | 8 | 8 | 9 |
| RAS Cycle Time bei t_RP=2 | t_RC | [Takte] | 8 | 7 | 8 |
| RAS Active Time | t_RAS | [Takte] | 5 | 5 | 6 |
(1) Bei nur 2 verwendeten SDRAM-Reihen im System (2 einseitige oder ein doppelseitiges DIMM)
Immer wieder taucht die Frage auf, welcher RAM denn schneller ist, und
für welche Latenzzeiten dies gilt. In der Regel sieht diese Reihenfolge so
aus (">" steht für "schneller als"):
PC133-222 > PC133-333 > PC100-222 > PC100-333. Es gibt aber bei
Speicherzugriffen durchaus einige Ausnahmefälle, wo das so nicht mehr ganz
zutrifft. Ausserdem ist der Geschwindigkeitsgewinn von z.B. PC133-222
gegenüber PC133-333 äusserst gering (2-5% maximal).
Damit der User mit einem DIMM nicht allzu ungewiss da steht, sollten
sich auf den Modulen Aufkleber befinden, die genauen Aufschluss darüber
geben, was man da nun wirklich in der Hand hält. Leider gibt es hier 2
voneinander abweichende Spezifikationen.
Intel´s PC133-Spezifikation Rev. 1.7 (siehe dazu auch
ftp://download.intel.com/technology/memory/pc133sdram/spec/sdram133.pdf)
definiert die Parameter folgendermassen:
"PC100-abc-defG", mit_
Die langsamsten DIMMs für PC100 tragen also die Bezeichnung
"PC100-333-620". Das schnellste DIMM für PC133 müsste als "PC133-222-520"
ausgezeichnet sein.
Leider definiert VIAs PC133-Spezifikation Rev. 0.4 (siehe dazu auch
http://www.via.com.tw/pdf/validation/PC133Urev040.pdf) die Angabe der
Parameter etwas anders:
"PC133m-abc-dde", mit:
Dummerweise findet man diese Angaben aber selten vollständig vor. Oft findet man Kürzel wie "PC133-3" oder ähnliches. Hier wird häufig nur die CAS Latency (CL) angegeben, und nimmt danach an, dass die anderen beiden Werte t_RCD und t_RP den gleichen Wert annehmen.
Das waren noch Zeiten: Bei der Verwendung von EDO- und FPM-RAM war es
noch die Aufgabe des Users, über das BIOS die "richtigen" Speichertimings
im BIOS einzutragen. Dabei war die Anzahl der Parameter aber noch
überschaubar.
Das ist seit den SDRAMs nicht mehr der Fall, hier müssen äusserst viele
Parameter eingestellt werden. Damit das nicht Aufgabe des Users wird,
sollte alle DIMMs mit sogenannten "SPD(Serial-Presence-Detect)-EEPROMS"
ausgestatten sein. In diesen kleinen Chips sind alle Infos enthalten, die
der Chipsatz braucht, um beim Bootvorgang den Speicher richtig zu
initialisieren. Dabei können die einzelne Werte auch während dem
Bootvorgang vom Chipsatz überschrieben werden, etwa um die CAS Latency
manuell zu ändern etc. Die Daten im SPD-EEPROM (2KBit gross) können vom
System via "System Management Bus" (SMB) ausgelesen werden (der Bus ist
eine Variante des I²C-Bus). Nach aktueller Spezifikation 1.2B (zu finden
unter
http://developer.intel.com/technology/memory/pcsdram/spec/index.htm;
baut auf der alten JEDEC-Spec. vom Juli 1996 auf, die sich unter
http://www.jedec.org/download/pub21/default.cfm befindet) sind jedoch
nur nur 128KB Nutzdaten vorgesehen.
Nicht nur Speicherzellen können defekt sein, auch das SPD-EEPROM kann durchaus defekt oder schlecht (bzw. falsch) programmiert sein. Um dies zu testen, gibt es das Testprogramm "ctSPD" unter http://www.heise.de/ct/ftp/ctspd.shtml, welches man sich unbedingt downloaden sollte, da grade das SPD häufig eine Fehlerursache ist.
Unterschiedlicher RAM hat auch unterschiedlich hohe Bandbreiten. Um
hier den Überblick nicht zu verlieren, gibt es hier eine Tabelle, in der
die maximalen Bandbreiten angegeben sind. Nicht vergessen sollte man
jedoch dabei, dass die tatsächliche Bandbreite enorm von der Angegebenen
abweichen kann. Angeführt sind hier auch noch nicht fertig spezifizierte
und daher nicht erhältliche RAM-Arten.
| DRAM-Typ | Name | RAM- Speed [MHz] | DDR/ QDR | Bus- Breite [Bit] | 1 Kanal Bandbreite [MByte/s] | 2 Kanal Bandbreite [MByte/s] |
|---|---|---|---|---|---|---|
| SDRAM | PC 66 | 66 | - | 64 | 533 | 1066 |
| PC 100 | 100 | - | 64 | 800 | 1600 | |
| PC 133 | 133 | - | 64 | 1066 | 2133 | |
| PC 150(1) | 150 | - | 64 | 1200 | 2400 | |
| DDR- SDRAM | PC 1600 DDR 200 | 100 | DDR | 64 | 1600 | 3200 |
| PC 2100 DDR 266 | 133 | DDR | 64 | 2133 | 4266 | |
| PC 2400(1) | 150 | DDR | 64 | 2400 | 4800 | |
| PC 2700 DDR 333 | 166 | DDR | 64 | 2666 | 5333 | |
| PC 3200 DDR 400 | 200 | DDR | 64 | 3200 | 6400 | |
| QDR- SDRAM | PC 1600 QDR 400 | 100 | QDR | 64 | 3200 | 6400 |
| PC 2100 QDR 533 | 133 | QDR | 64 | 4266 | 8533 | |
| PC 2700 QDR 666 | 166 | QDR | 64 | 5333 | 10666 | |
| DDR-II SDRAM | PC 3200 | 200 | DDR | 64 | 3200 | 6400 |
| PC 4300 | 266 | DDR | 64 | 4266 | 8533 | |
| PC 5400 | 333 | DDR | 64 | 5333 | 10666 | |
| Rambus (2x16d- RDRAM) | PC 600(2) | 266 | DDR | 16 | 1066 | 2133 |
| PC 600 | 300 | DDR | 16 | 1200 | 2400 | |
| PC 700(3) | 300 | DDR | 16 | 1200 | 2400 | |
| PC 700(4) | 354 | DDR | 16 | 1424 | 2848 | |
| PC 800(5) | 400 | DDR | 16 | 1600 | 3200 | |
| Rambus Hastings 4i-RDRAM | PC 1066 | 533 | DDR | 16 | 2133 | 4266 |
| PC 1200 | 600 | DDR | 16 | 2400 | 4800 | |
| Rambus 32 Bit Module | PC 3200 RIMM 3200 | 400 | DDR | 32 | 3200 | - (6) |
| PC 4266 RIMM 4200 | 533 | DDR | 32 | 4266 | - (6) | |
| PC 4800 RIMM 4800 | 600 | DDR | 32 | 4800 | - (6) | |
| Rambus 64 Bit Module | PC 8533 | 533 | DDR | 64 | 8533 | - (6) |
| PC 9600 | 600 | DDR | 64 | 9600 | - (6) |
(1) PC 150 und PC 2400 sind keine Spezifikationen im echten Sinne; es
sind lediglich Bezeichnungen von übertakteten Modulen nach PC133- bzw.
PC2100-Standard
(2) Wird der Prozessor mit 133 MHz FSB betrieben, läuft Rambus PC600 nur
mit 266 MHz statt mit 300 MHz
(3) Wird der Prozessor mit 100 MHz FSB betrieben, läuft Rambus PC700 nur
mit 300 MHz statt mit 354 MHz
(4) Rambus PC 700 läuft nur auf dem Chipsatz Intel i820
(5) Rambus PC 800 läuft immer mit 400 MHz, egal wie der FSB betrieben
wird
(6) 32Bit- und 64Bit-RIMMs werden (noch) nicht in Dual-Channel-
Konfiguration verwendet, da dies bereits im Modul geschieht
Mit genügender Sicherheit kann man defekte RAM-Module nur im Labor
ermitteln. Somit kann man mit Programmen zum Speichertest eigentlich nur
Fehler nachweisen, nicht aber die Fehlerfreiheit. Eine Aussage auf die
Fehlerfreiheit auf dem betrefffenden Board ist jedoch nichtsdestotrotz
möglich.
Verdachtsmomente sind:
Man sollte natürlich vorher nachsehen, was für Speichermodule der
Rechenknecht denn haben will. Bei älteren Rechnern sind dies meist
PS/2-SIMMs (weisse Sockel, meistens EDO-RAM), bei neueren DIMMs (längere
braune Sockel, zumeist SDRAM [168-polig] oder DDR-SDRAM [184-polig]) oder
seltener RIMMs (Rambus-DRAM, 184-polig). Bei sehr alten Rechnern findet
man 30-Pin-SIMMs (ausnahmlos Fastpage; leider gehören dazu wie zu
PS/2-SIMMs weisse Sockel, aber meistens sind hier 8 Stück oder mehr
vorhanden, während Sockel für PS/2-SIMMs meistens zu viert auftauchen). In
Rechnern mit 64-Bit-Speicherbus (also Pentium oder höher) müssen
PS/2-SIMMs immer paarweise eingesetzt werden; dies trifft auch für einige
486er-Boards zu (nämlich solche mit dem i420 "Saturn", in denen man
gleichzeitig auch nur Fastpage-Module einsetzen kann, keine EDOs).
30-Pin-SIMMs (bei PCs meistens mit Parität, gelegentlich auch mit
Dummy-Parität) müssen bei 286- und 386SX-Systemen paarweise, bei 386DX-
und 486-Systemen gleich im Viererpack eingesetzt werden. Bei bestimmten
Chipsätzen (i840, i850, i860) müssen Rambus-Module paarweise verbaut
werden.
Auf einigen Sockel-7-Boards kann man sowohl PS/2-SIMMs als auch
SDRAM-DIMMs betreiben, allerdings selten zusammen - tut man dies trotz der
Warnung im Handbuch (es gab aber einen Fall, in dem dies auch
fälschlicherweise zugelassen wurde), kann es passieren, dass man die DIMMs
mit 5V grillt.
Alle Modultypen sind zum Glück verpolungssicher. (Wobei es mancher
schon geschafft hat, 3.5"-Disketten verkehrtherum einzuliegen, obwohl das
eigentlich auch nicht geht - also: Keine Gewalt gegen Speichermodule! ;)
Einzig PS/2-Module mit Fastpage- oder EDO-RAM kommen in gleicher Bauform
daher - alle anderen Module passen nicht in fremde Slots.
Es gibt im übrigen Adapter, um je vier 30-Pin-SIMM-Module in PS/2-Slots zu betreiben. Das macht aber meist keinen Sinn, da diese Adapter oft teuer sind und 30-Pin-SIMMs meist nur eine recht geringe Kapazität haben. Weiterhin sind 30-Pin-SIMMs üblicherweise langsamer als PS/2-Module. Diese Adapter waren interessant, als 16 MB RAM noch 1000 Mark und mehr kosteten.
Das bloße Vorhandensein entsprechender Speichersockel bedeutet noch
lange nicht, dass man dort beliebig grosse oder beliebig organisierte
Module des jeweiligen Speichertyps einsetzen kann!
Ältere 386er- und 486er-Boards mit 30-Pin-Sockeln schlucken des öfteren
keine 4-MB-Module mit 3 statt 9 Chips. Noch ältere 286er- und 386er-Boards
(1990/91 und früher) kommen oft nur mit 1-MB-Modulen zurecht.
Bei 486ern mit PS/2-Sockeln muss man aufpassen, dass man mit EDO-Modulen
nicht paarweise bestückt, da diese nicht kompatibel mit dem oft
verwendeten Interleaving sind; lässt sich dieses gar nicht deaktivieren
(i420), muss zwangsläufig paarweise mit den schwerer zu bekommenden
Fastpage-Modulen bestückt werden.
Auf Boards mit Intel 430VX-Chipsatz finden sich oft sowohl Sockel für
PS/2-SIMMs als auch für SDRAM-DIMMs. Letztere verlocken dazu, schnell mal
ein billiges neues SDRAM-Modul einzubauen, was aber entweder dazu führt,
dass das Modul nicht passt (weil es leider doch ein Sockel für EDO- und
nicht für SDRAM-DIMMs war), gar nichts geht (die PS/2-SIMMs müssen vorher
übrigens raus und die Spannung für den Speicher will auf 3.3 V statt 5 V
eingestellt sein, sonst gibt's SDRAM-Toast!) oder nur ein Bruchteil des
Moduls erkannt wird. Wenn gar nichts geht, liegt das daran, dass heutige
DIMMs 4-clock-Module sind (4 unabhängige Taktsignale), während v.a. frühe
SDRAM-Boards noch auf 2-clock-Module ausgelegt sind. Wenn nur ein
Bruchteil des Speichers erkannt wird, ist der Chipsatz schuld: Der i430VX
unterstützt Speicherchips von maximal 16 MBit, macht bei einem Module mit
16 Stück davon 32 Megabyte. Solche alten PC66-Module sind nicht besonders
leicht zu finden.
Nicht ganz so schlimm sieht es bei dem beliebten 440BX-Chipsatz von Intel
aus: Dieser unterstützt ohne weiteres Speicherchips von bis zu 64 MBit,
wird bei 128-MBit-Chips aber wählerisch: 16Mx8 soll es sein, nicht 32Mx4,
sonst wird nur das halbe Modul erkannt. Ein mit den richtig organisierten
Chips bestücktes 256-MB-SDRAM-Modul (512 MB oder grösseres kann man ganz
vergessen) hat folglich 16 Stück davon (Beispiel: Infineon
HYS64V32220GU-7/7.5). Übrigens empfiehlt es sich, bei Bestückung mit 3
oder mehr Modulen Registered-Module zu nehmen (Haken: entweder komplett
registered oder gar nicht!). Noch etwas: Wie es scheint, unterstützen
offenbar auch i430TX und i440LX 16Mx8-Chips (laut Datenblatt gehen maximal
64 MBit große Chips) - jedenfalls legen dies Erfahrungen in den NGs nahe.
Offiziell ist das natürlich nicht, und eine Funktionsgarantie kann auch
nicht gegeben werden (schließlich spielen auch Boarddesign und - s.u. -
BIOS eine Rolle). Beim i430TX kommt erschwerend hinzu, dass dessen
L2-Cache maximal 64 MB des Speichers abdeckt, sofern man keinen AMD K6-3,
K6-2+ oder K6-3+ einsetzt.
Eine Beschränkung etwas anderer Art lauert bei Intels 815-Chipsatz:
Dieser unterstützt insgesamt maximal 512 MB RAM. Zudem lassen sich bei 133
MHz Speichertakt nur noch 2 statt 3 doppelseitige Module einsetzen.
Ach ja: Gelegentlich kann man in ein Board nicht einmal soviel Speicher
einsetzen, wie man angesichts der Sockelzahl und der maximalen Modulgrösse
erwarten würde; hier schlägt dann gern ein zu altes BIOS zu. Ein
BIOS-Update sorgt dann in vielen Fällen für eine komplette Erkennung des
Speichers.
Welcher Chipsatz wie große Speicherchips unterstützt, kann man
nachlesen...
a) in 2.2.1 und 2.2.3 oder b)
http://users.erols.com/chare/chipsets.htm