RAM

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Acht 4164-RAMs auf einer C64-Platine

Mit RAM steht für Random Access Memory und bezeichnet die Speicherbausteine sowie auch den Speicherplatz, den sie zur Verfügung stellen.


Allgemein[Bearbeiten | Quelltext bearbeiten]

Die Abkürzung "RAM" kommt aus dem Englischen und steht für Random Access Memory; zu deutsch: Speicher mit wahlfreiem Zugriff. Hiermit sind Mikrochips bzw. der von ihnen zur Verfügung gestellte Arbeitsspeicher eines Computers gemeint. Das RAM nimmt im Allgemeinen sowohl die Programme als auch die zugehörigen Daten und Variablen auf. Die CPU führt Programme aus, indem sie Befehl für Befehl aus dem RAM ausliest und die den Befehlen entsprechenden Änderungen (von Registern, anderen Speicherstellen im RAM, etc.) durchführt. Auf jede beliebige Speicherzelle kann in beliebiger Reihenfolge zugegriffen werden; daher auch die Bezeichnung Random Access.

RAM-Chips werden aber auch für andere Zwecke verwendet, z.B. als Cache (Pufferspeicher) bei Datenübertragungen (in Diskettenlaufwerken, Festplatte etc.) oder als Videospeicher (VRAM, zur Entlastung des Arbeitsspeichers).

Die Kapazität eines RAM gab man in der C64-Ära meistens in Kilobyte an. Oft wird auch die Organisation der Speicherzellen in der Matrix zur Größenangabe verwendet (Anzahl der Datenwörter multipliziert mit den Bits pro Wort). 64K × 4 bedeutet insgesamt 262.144 Bit, also 32 KByte.


Fehlerhaft hergestellte oder durch Alterung defekte Speicherzellen sind die häufigste Ursache von Speicherfehlern. In der C64-Ära ging man aber noch fälschlicherweise davon aus, dass ionisierende Strahlung der Hauptgrund für derartige Fehler sei. Um Fehler in Speicherbausteinen automatisch zu korrigieren, gibt es mittlerweile verschiedene Technologien. Bekannt ist vor allem die Paritätsprüfung, die eine Datenübertragung teilweise korrigieren kann. Speziell für DRAM gibt es beispielsweise das ECC-Verfahren (Error Correcting Code). Derartige oder ähnliche Technologien waren teilweise auch schon in den 1980er-Jahren verfügbar, wurden beim C64 aber nicht eingesetzt.

In den Glanzzeiten des C64 wurde RAM in Form von DIL-IC (Dual In-Line) gefertigt und verbaut. Später etablierte es sich, mehrere dieser Chips auf kleinen Platinen anzubringen. Diese werden "Single Inline Memory"-Module, kurz SIMM, genannt. Für Commodore-Rechner sind solche RAM-Module aber nicht von Belang, da sie dort noch nicht verbaut wurden.


Es gibt grundsätzlich zwei verschiedene RAM-Varianten: DRAM und SRAM, beides sind sogenannten flüchtige Speicher. Das bedeutet, dass die geschriebenen Informationen verloren gehen, wenn keine Betriebsspannung anliegt. Andere RAM-Varianten haben sich bis heute nicht etabliert. Bisher gibt es keine Technologie, die eine ernsthafte Alternative zu SRAM und DRAM darstellt.


DRAM[Bearbeiten | Quelltext bearbeiten]

  • Dynamisches RAM ist günstiger und mit vergleichsweise höherer Dichte (mehr Speicherplatz pro Chip) herstellbar. Der Speicherinhalt muss aber in regelmäßigen Zyklen aufgefrischt werden (Refresh). Für Hauptspeicher wird normalerweise DRAM benutzt, da hier vergleichsweise viel Speicherplatz benötigt wird.
Aufbau und Refresh: Jede einzelne Speicherzelle besteht im DRAM aus einem Kondensator und einem Transistor. Der Kondensator kann Ladung enthalten oder leer sein, durch diese Zustände kann pro Speicherzelle ein Bit geschrieben werden. Der Transistor schaltet nach Bedarf, um den Kondensator wahlweise auszulesen oder ihn neu zu beschreiben. Da Kondensatoren ihre Ladung aber grundsätzlich nicht dauerhaft halten können, ist der Refresh nötig. Durch regelmäßiges Auslesen der Zelle wird festgestellt, ob sie aktuell mit Ladung gefüllt ist. Ist das der Fall, wird sie erneut frisch aufgeladen um den Verlust der Ladung zu verhindern. Der Vorgang wird im Intervall von Millisekunden ausgeführt. Bei einem C64 wird das Timing für den Refresh vom VIC gesteuert.

SRAM[Bearbeiten | Quelltext bearbeiten]

  • Statisches RAM hingegen wird aufgrund seiner höheren Geschwindigkeit oft als Cache (Puffer, Zwischenspeicher) verwendet. Bei den Spielkonsolen der 1980er Jahre wurde auch als Haupt- oder Grafikspeicher häufig SRAM verbaut. Eine Konsole für Module braucht verglichen mit einem Heimcomputer nur sehr wenig RAM, der höhere Preis fiel daher nicht stark ins Gewicht. In Kombination mit einer Batterie, einem Akku, oder einer anderen geeigneten Stromquelle wurde SRAM manchmal auch in den Spiele-Cartridges verbaut. So kann man seinen Spielstand auf lange Dauer abspeichern - bis eines Tages die Batterie erschöpft ist. Allerdings belastet ein SRAM diese ohnehin nur minimalistisch, da er im Standby-Modus deutlich stromsparender ist, als DRAM im Betriebszustand. Im Gegensatz zu diesem benötigt er keinen Refresh, der Energieverbrauch ist dafür aber beim Schreiben deutlich höher. In der C64-Ära war eine Betriebsspannung von 5V üblich, der Stromverbrauch des SRAM betrug aber lediglich wenige Nanoampere.
Aufbau und Standby: Die einzelnen Speicherzellen sind auch von Grund auf anders konstruiert: Auch hier kann jede einzelne Zelle ein Bit speichern, als Speicher dient aber kein Kondensator, sondern ein Flip-Flop[1]. Ein Flip-Flop ist eine einfache Schaltung, die zwei verschiedene Signale ausgeben kann. Wechselt man zwischen diesen beiden Signalen, kann man auf diese Weise ein Bit darstellen. Im Vergleich zur Konstruktion des DRAM kann die Speicherzelle eines SRAM deutlich schneller ausgelesen werden. Für den Aufbau des Flip-Flop gibt es zahlreiche Variationen, die einzelnen Zellen bestehen dabei mindestens aus zwei, meist aber aus vier oder mehr Transistoren. Je mehr Transistoren pro Speicherzelle verbaut werden, desto mehr Funktionen und Eigenschaften kann die Zelle ausführen. Ein weiterer Unterschied zum DRAM sind die drei unterschiedlichen Zustände, die ein SRAM annehmen kann. Neben dem Lese- und dem Speicherzustand gibt es beim statischen RAM auch noch ein Standby. Die Zelle wartet dabei untätig auf den nächsten Zugriff. Als Faustregel gilt, dass eine SRAM-Speicherzelle etwa 20 mal so groß ist, wie eine zeitgemäße DRAM-Zelle. Dafür kann sie auch um ein vielfaches schneller ausgelesen werden.


RAM im C64[Bearbeiten | Quelltext bearbeiten]

Hauptspeicher[Bearbeiten | Quelltext bearbeiten]

Der C64 verfügt über einen Arbeitsspeicher von insgesamt 64 KByte (65536 Byte). Davon sind ca. 39 KByte für BASIC-Programme nutzbar. Wie auch beim VC-20 konnte BASIC V2 nur das unmittelbar "sichtbare" RAM, also hier die knapp 40 KByte nutzen. Ein Verwendung des vom ROM überdeckten RAMs wurde erst mit ab BASIC 3.5 mit der Integration von Bankswitching realisiert.
In der ursprünglichen Version des C64 wurden acht DRAM-Bausteine vom Typ 4164 (je 8 KByte) eingebaut. Die letzten beiden Versionen der Hauptplatine, ASSY 250466 und die ASSY 250469, enthielten stattdessen DRAM-Bausteine vom Typ 4464 (je 32 KByte). Der Refresh wird beim C64 vom VIC gesteuert.

Farbspeicher[Bearbeiten | Quelltext bearbeiten]

Zusätzlich enthält der C64 noch einen IC mit 512 Byte SRAM des Typs 2114 als Farb-RAM.
Bei den Revisonen der ASSY-250469-Mainboards wurden der 2114 und andere Schaltkreise durch einen 64-poligen Multifunktions-Chip ersetzt. Das war für Kunden eher vorteilhaft, da die 2114-RAM vereinzelter Hersteller durchaus defektanfällig sein können. Der Multifunktions-Chip ist ein sehr robuster IC und geht nur in seltenen Fällen kaputt.

Speichererweiterungen[Bearbeiten | Quelltext bearbeiten]

Die Erweiterung des Speichers des C64 kann auf verschiedene Wege geschehen. Details dazu siehe Artikel Speichererweiterung.


Typische SRAM-Chips[Bearbeiten | Quelltext bearbeiten]

2114 - 1K x 4 (512 Byte)[Bearbeiten | Quelltext bearbeiten]

Ein 2114-RAM als Farb-RAM in einem C64
  • 512 Byte Farb-RAM von C64, Max Machine und VC20 (1 Stück)
  • 1 KByte Hauptspeicher ($0000-$03ff) im VC20 (2 Stück)
  • 2 KByte Hauptspeicher in einigen 1541-Modellen (4 Stück)
  • 1 KByte Hauptspeicher in der Spielkonsole ColecoVision (2 Stück)
  • 512 Byte Grafikspeicher in der Spielkonsole Intellivision (1 Stück)
  • 1 KByte Hauptspeicher in der Spielkonsole Vectrex (2 Stück)
  • Speicher im Sinclair ZX80
  • Speicher in einigen Sinclair-ZX81-Modellen
  • In vielen Arcade-Automaten der 1980er Jahre
    +---+--+---+
 A6 |1  +--+ 18| VCC
 A5 |2       17| A7
 A4 |3       16| A8
 A3 |4       15| A9
 A0 |5  2114 14| D1
 A1 |6       13| D2
 A2 |7       12| D3
/CS |8       11| D4
GND |9       10| /WE
    +----------+


6116 - 2K x 8 (2 KByte)[Bearbeiten | Quelltext bearbeiten]

Ein neuwertiger 6116-RAM
  • 2 KNibbles Farb-RAM im C128, das jeweils obere Nibble bleibt unbenutzt (1 Stück)
  • 4 KByte Hauptspeicher ($1000-$1fff) im VC20 (2 Stück)
  • 2 KByte RAM ($0000-$07ff) in der 1570 und der 1571 (1 Stück)
  • 2 KByte RAM in einigen 1551-Modellen (1 Stück)
  • 2 KByte Hauptspeicher in einigen 1541-Modellen (1 Stück)
  • 2 KByte Hauptspeicher und 2 KByte Video-Speicher in der Spielkonsole NES (jeweils 1 Stück)
  • 2 KByte Hauptspeicher in der Max Machine (1 Stück)
  • 4 KByte Hauptspeicher in der Spielkonsole Atari 7800 (2 Stück)
  • 2 KByte RAM im MultiMAX Cartridge (1 Stück)
  • 2 KByte RAM im Max Basic Cartridge (1 Stück)
    +---+--+---+
 A7 |1  +--+ 24| VCC
 A6 |2       23| A8
 A5 |3       22| A9
 A4 |4       21| /WE
 A3 |5  2016 20| /OE
 A2 |6  oder 19| A10
 A1 |7  6116 18| /CS
 A0 |8       17| D7
 D0 |9       16| D6
 D1 |10      15| D5
 D2 |11      14| D4
GND |12      13| D3
    +----------+


Typische DRAM-Chips[Bearbeiten | Quelltext bearbeiten]

4116 - 16K x 1 (2 KByte)[Bearbeiten | Quelltext bearbeiten]

Vier der insgesamt acht 4116-RAM eines ZX Spectrum
  • Hauptspeicher auf einigen PET-Platinen
  • 16 KByte "Lower RAM" in ZX Spectrum 16K und Spectrum 48K (8 Stück)
  • 16 KByte Video-RAM in der Spielkonsole ColecoVision (8 Stück)
  • Speicher im Apple II+
  • Speicher im TI-99/4A
    +---+--+---+
VEE |1  +--+ 16| GND
  D |2       15| /CAS
/WE |3       14| Q
/RAS|4  4116 13| A6
 A0 |5       12| A3
 A2 |6       11| A4
 A1 |7       10| A5
VDD |8        9| VCC
    +----------+
  • Benötigt -5, +5 und +12 V


4164 - 64 K x 1 (8 KByte)[Bearbeiten | Quelltext bearbeiten]

Zwei neuwertige 4164-RAM
  • 64 KByte Hauptspeicher auf älteren C64-Platinen (8 Stück)
  • 64 KByte Hauptspeicher im Plus/4 (8 Stück)
  • 128 KByte Hauptspeicher im C128 (16 Stück)
  • 128 KByte Hauptspeicher auf älteren Spectrum 128-Platinen
  • 64 KByte Hauptspeicher im CPC 464 (8 Stück)
  • 128 KByte Hauptspeicher im Apple//c (16 Stück)
  • Zum Aufrüsten eines Spectrum 16K auf 48 KByte
  • In der REU 1700 verwendet (16 Stück)
  • 48 KByte "Upper RAM" im Spectrum 48K (8 Stück, jeweils nur halb genutzt)
(Als Alternative zu voll genutzten 4532- oder 3732-RAM)
  • Einige Modelle eignen sich modifiziert als Ersatz für einen 4116-RAM
    +---+--+---+
    |1  +--+ 16| GND
  D |2       15| /CAS
/WE |3       14| Q
/RAS|4  4164 13| A6
 A0 |5       12| A3
 A2 |6       11| A4
 A1 |7       10| A5
VCC |8        9| A7
    +----------+


4416 - 16 K x 4 (8 KByte)[Bearbeiten | Quelltext bearbeiten]

Ein 4416-RAM aus einem C16-Board
    +---+--+---+
/OE |1  +--+ 18| GND
 D0 |2       17| D3
 D1 |3       16| /CAS
/WE |4       15| D2
/RAS|5  4416 14| A0
 A6 |6       13| A1
 A5 |7       12| A2
 A4 |8       11| A3
VCC |9       10| A7
    +----------+


4464 - 64 K x 4 (32 KByte)[Bearbeiten | Quelltext bearbeiten]

Zwei 4464-RAMs auf einem C16-Board (aufgerüstet)
  • Hauptspeicher auf neueren C64-Platinen (2 Stück)
  • Hauptspeicher und VDC-RAM in C128DCR und C128CR (6 Stück)
  • Hauptspeicher auf neueren Spectrum 128-Platinen (4 Stück)
  • Zum Aufrüsten des Speichers bei C16 und C116
  • Zum Aufrüsten des VDC-RAM beim C128
  • 64KByte Speicher in der Handheld-Konsole Lynx (2 Stück)
  • Zum Aufrüsten des Speichers bei Atari 600XL und Atari 800XL auf 64KByte (2 Stück)
  • Grafikspeicher auf vielen ISA-Grafikkarten in der zweiten Hälfte der 1980er Jahre (bis zu 72 Stück)
  • Eignet sich wegen identischem Pinout und kompatibler Matrix als Ersatz für einen 4416-RAM
    +---+--+---+
/OE |1  +--+ 18| GND
 D0 |2       17| D3
 D1 |3       16| /CAS
/WE |4       15| D2
/RAS|5  4464 14| A0
 A6 |6       13| A1
 A5 |7       12| A2
 A4 |8       11| A3
VCC |9       10| A7
    +----------+


41256/41257 - 256 K x 1 (32 KByte)[Bearbeiten | Quelltext bearbeiten]

  • In der REU 1764 verwendet (8 Stück)
  • In der REU 1750 verwendet (16 Stück)
  • Zum Aufrüsten von REU 1700 und 1764
  • Eignet sich modifiziert als Ersatz für einen 4164-RAM
     +---+--+---+
  A8 |1  +--+ 16| GND
   D |2       15| /CAS
 /WE |3       14| Q
 /RAS|4 41256 13| A6
  A0 |5 41257 12| A3
  A2 |6       11| A4
  A1 |7       10| A5
 VCC |8        9| A7
     +----------+


44256/44258 - 256 K x 4 (128 KByte)[Bearbeiten | Quelltext bearbeiten]

Vier 44256-RAMs auf einer Amiga500-Speichererweiterung
  • Als RAM auf Speichererweiterungen für den Amiga 500 (4 Stück bei der Standarderweiterung auf insgesamt 1 MByte)
  • Als RAM auf Steckkarten für Amiga 2000/3000/4000
    +---+--+---+
 D0 |1  +--+ 20| GND
 D1 |2       19| D3
/WE |3       18| D2
/RAS|4       17| /CAS
    |5 44256 16| /OE
 A0 |6 44258 15| A8
 A1 |7       14| A7
 A2 |8       13| A6
 A3 |9       12| A5
VCC |10      11| A4
    +----------+


Modifikationen von DRAM-Chips[Bearbeiten | Quelltext bearbeiten]

Verwendung eines 4164-Chips statt eines 4116-Chips
  1. Voraussetzung: Der 4164-RAM-Baustein muss mit 128 Refresh-Zyklen arbeiten können.
  2. Pin 1 und 8 (VCC) hoch biegen, so dass sie nicht mehr in die Fassung passen.
  3. Pin 8 und Pin 9 (A7) mit leitendem Draht verbinden.
  4. Pin 1 und 8 so abkneifen, dass keine anderen Bauteile berührt werden können.
  5. Baustein dann so in die Fassung einsetzen.

Vor der Verwendung eines 4164 als Ersatz für einen defekten 4116 muss vorher verifiziert werden, dass der betreffende 4164 einen Refresh mit 128 Zyklen (7-Bit) benötigt. Die einzige Möglichkeit dies zu überprüfen, ist das Datenblatt.
Die Verwendung eines 4164 mit einem Refresh mit 256 Zyklen (8-Bit), würde sehr wahrscheinlich zu einem instabilen System führen.


Verwendung eines 41256-Chips statt eines 4164-Chips
  1. Pin 1 (A8) und Pin 16 (GND) mit leitendem Draht verbinden.
  2. Baustein dann so in die Fassung einsetzen.


Zugriffszeit[Bearbeiten | Quelltext bearbeiten]

Wie auch heute beim PC muss man also nicht nur die passende Speichergröße auswählen, sondern auch wissen, wo die Grenze für die Access Time, also die Zugriffszeit, liegt.
In der Praxis heißt das bei einem C64, dass ein 4164- oder 4464-DRAM nicht langsamer als 350 ns sein darf (Im Internet ist auch häufig von 200 ns die Rede). Unterhalb dieses Grenzwertes ist der RAM schnell genug und funktioniert. Man braucht auch keinerlei Bedenken haben, dass ein RAM "zu schnell" sein könnte, weder der RAM selbst noch der C64 haben damit ein Problem. Ebenso ist es beim C64 vollkommen unbedenklich, RAM-Chips mit verschiedenen Zugriffszeiten auf dem gleichen Board zu verbauen, solange jeder einzelne schnell genug ist.

Die RAM-Chips des C64 wurden fast immer mit 100, 120 oder 150 ns gefertigt. In der Praxis ist die Zugriffszeit des Speichers für Commodore-Liebhaber somit kein Thema.

Beispiel: Ein 4164-2 Speicherbaustein hat eine Zugriffszeit von 120 ns (Nanosekunden) und kann problemlos durch einen schnelleren Baustein 4164-10 (100 ns) ersetzt werden. Will man ihn aber durch einen 4164-20 (200 ns) tauschen, sollte man sich vorher informieren ob dieser eventuell zu langsam für das betreffende System sein könnte.


Üblicherweise steht die Zugriffszeit am Ende des IC-Codes:

  • -20 oder -2 = 200 ns
  • -15 = 150 ns
  • -12 = 120 ns
  • -10 = 100 ns
  • -8 = 80 ns
  • -7 = 70 ns


Die Angabe auf dem Chip bietet aber leider nicht immer Gewissheit:

  • In eher seltenen Fällen schreiben Hersteller statt der Zugriffszeit die RAS Cycle Time auf den Chip. Das ist die Zeit, die ein einzelner Taktzyklus des RAM benötigt - Die Zugriffszeit ist dagegen die RAS Access Time.
  • Einige Hersteller haben auch ein komplett eigenes System, beispielsweise ist es bei den 2114-RAM nicht ungewöhnlich Angaben wie 2114AL-1, 2114AL-2, 2114AL-3 oder 2114AL-5 vorzufinden. Dass es sich dabei um Zugriffszeiten von 100, 120, 150, 200, und 250 Nanosekunden handelt, kann man in diesem Fall mit dem zugehörigen Datenblatt in Erfahrung bringen.


Cross-Reference-Tabelle[Bearbeiten | Quelltext bearbeiten]

Anhand der Cross-Reference-Tabelle kann man die Typenbezeichnung der einzelnen Hersteller für die RAM-Chips ersehen. Obwohl elektrisch und mechanisch praktisch identisch, hat jeder Hersteller sein eigenes System, die entsprechenden Speicherchips zu kennzeichnen. Während die vorangestellten Buchstaben oft einen Hinweis auf den Hersteller geben, gibt die darauf folgende Ziffernfolge oft die Größe und Organisation des Speichers an. Darauf folgt oft ein oder mehrere Buchstaben, die meist die Gehäuseform bezeichnen. Schließlich folgt dann wiederum eine oder mehrere Ziffern, zum Beispiel "-15", damit wird eine Aussage über die maximale Zugriffsgeschwindigkeit gemacht.


Speicherbausteine, die in Commodore-Computern eingebaut sind
Hersteller
2114 4164 4464
Fujitsu ? MB8264 ?
Hitachi HM472114 HM4864 ?
Intel P2114 D2164 ?
Matsushita Panasonic MN2114 MN4164 MN41464
Micron Technology ? MT4264 ?
Mitsubishi ? M5K4164 ?
MOSTEK ? MK4564N ?
Motorola ? MCM 6665 ?
National Semiconductor MM2114 MM4164 ?
NEC uPD2114 D4164 D41464
OKI M2114
MSM2114
M3764
MSM3764
M41464
MSM41464
Samsung ? KM4164 ?
Sanyo LC3514 LM3364 ?
Sharp ? LH2164 LH2464
Solid State Scientific SCM2114 ? ?
Texas Instruments ? ? TMS4464
Toshiba TMM2114AP TMM4164 ?

Identifikation des Herstellers anhand des Logos auf dem Chip.[2]


Weblinks[Bearbeiten | Quelltext bearbeiten]

WP-W11.png Wikipedia: Random Access Memory
WP-W11.png Wikipedia: Speichererweiterung
WP-W11.png Wikipedia: Static random-access memory
WP-W11.png Wikipedia: Dynamic Random Access Memory


Quellen