Die Sache mit dem RAM
Zeit mal wieder für einen Aufsatz über Computer – diesmal ein Grundlagenkapitel, wobei ich ja weis, dass wir hier einige gut vorgebildete Leser haben. Die bitte ich schon jetzt um Nachsicht, weil ich mich auf das wesentliche beschränken will, damit alle was davon haben. (Das mache ich eigentlich immer, nur gibt es nicht viele Leser mit der entsprechenden Vorbildung in anderen Gebieten oder sie melden sich nicht).
Das heutige RAM in Form von Halbleiterspeichern entstand Anfang der siebziger Jahre. Vorher gab es zwar schon etwa 10 Jahre lang IC’s mit integrierten Schaltungen, aber sie ersetzten Logikschaltungen, die vorher ganze Platinen einnahmen. Das RAM war lange Zeit noch Ringkernspeicher, also ein magnetischer Speicher, kein elektronischer Speicher.
Kurz nach dem später „statischen“ Speicher genannten, ersten Speicher, der aus den Transistoren der Logikschaltungen bestand, wurde das dynamische RAM erfunden. Beim statischen RAM bestand eine Speicherstelle aus 4 Transistoren, die ein Flip-Flop bildeten. Sie speicherten ein Bit. Eine DRAM Speicherstelle bestand nur aus einem Transistor und einem Kondensator, der noch dazu in die Tiefe des Substrats ging. Der Transistor lies die Ladung im Substrat passieren oder eben nicht. Verglichen mit dem statischen RAM benötigte diese Speicherstelle nur ein Viertel des Platzes – oder es gab Speicherchips mit viermal so viel Kapazität zum gleichen Preis. Später wurde das Verhältnis noch extremer, weil auch der gesamte Aufbau eines DRAM’s viel einfach ist und es weniger Leitungen gibt.
Der einzige Nachteil war, dass der Speicher seine Information von alleine vergisst und das auch bei anliegender Stromversorgung. Sie musste regelmäßig „aufgefrischt“ werden – dazu wird jede Speicherstelle ausgelesen und der Inhalt erneut geschrieben. Während dieser Zeit ist sie nicht ansprechbar. Das erfordert eine eigene Logik, die jedoch weil sich der Speicher schnell durchsetzte bald in die Mikroprozessoren eingebaut wurde.
Anfangs war so der einzige Vorteil des statischen Speichers, dass er unkomplizierter war. Der Geschwindigkeitsvorteil von statischem Speicher durch den fehlenden Refresh liegt im einstelligen Prozentbereich. Doch diesem Siegeszug folgte Ernüchterung.
In den folgenden Jahren steig die Taktfrequenz von Mikroprozessoren schnell an. 1974 wurden 2 MHz erreicht, 1978 schon 4 MHz, 1982 waren es 8 MHz und 1985 waren es es 16 MHz. Dem musste die mittlere Zugriffszeit des Speichers folgen. Darunter ist folgendes zu verstehen: Soll ein Bit oder Byte gelesen werden, so legt der Prozessor zuerst die Adresse, von der gelesen wird, auf den Adressbus, signalisiert dann durch ein Signal, dass der Speicherbaustein die Adresse übernehmen kann, danach liest der Speicherbaustein die Daten aus und legt sie auf den Datenbus und signalisiert in einem vierten Zyklus durch ein weiteres Signal, dass diese vom Prozessor gelesen werden können. Das bedeutet, es werden 4 Takte benötigt um ein Byte auszulesen, je schneller die Prozessoren wurden, desto kleiner musste diese Zykluszeit werden. Anfangs war das kein Problem. Speicher war sogar schneller als die Prozessoren. So konstruierte 1976 Texas Instruments den Prozessor TMS9900, der seinen Registersatz im Speicher ablegte – eine Fehlentscheidung, denn später sank die Zugriffszeit kaum noch.
Bis zu einer Zugriffszeit von 100 bis 120 ns, das entspricht bei Prozessoren, die 4 Takte pro Byte brauchen, einem Takt von 8 bis 10 MHz, folgte der Speicher den Prozessoren, dann gelang es kaum noch das Auslesen von DRAM zu beschleunigen. Doch eine Rückkehr zu dem statischen Speicher war nicht mehr möglich. Er wäre nicht finanzierbar gewesen. Durch den gleichen Aufbau wie die Logikschaltungen ist er allerdings deutlich schneller. Bei den schnelleren 286 Prozessoren bürgerte sich daher ein Begriff ein: Wartetakte. Entweder man bezahlte viel für schnellen Speicher oder man verzichtete auf Leistung, indem nach jedem Zugriff der Prozessor einen oder zwei Takte lang Däumchen drehte.
So übernahm man ein Konzept, dass sich schon bei den Großrechnern bewährte. Dort war das Problem durch die viel höheren Taktfrequenzen schon ein Jahrzehnt vorher aufgetreten. Die Lösung bestand in einem zwischengeschalteten, kleinen Speicher, dem Cache. Er bestand aus schnellem statischen Speicher, hatte aber nur einen Bruchteil der Größe des eigentlichen Hauptspeichers. Der Cache wurde in kleinen Einheiten, den Cache-Lines organisiert. Jede nahm eine Kopie von zusammenhängenden Teilen des Hauptspeichers auf. Eine Logik merkte sich welche Cache Lines als letztes genutzt wurden und verwarf den Inhalt der Lines, deren Zugriff lang zurück lag wenn neue Daten vom Hauptspeicher benötigt wurden. Später wurden die Algorithmen noch perfektioniert. Die 386er Generation hatte den Cache in eigenen Bausteinen auf der Platine, beim 486er gab es schon ein zweistufiges Konzept (ein kleiner L1 Cache auf dem Prozessor, ein größerer auf dem Mainboard, heute gibt es bis zu 3 Cache Levels, die aber meist alle im Prozessor verbaut sind.
Sie machen inzwischen einen Großteil der Transistorzahl der Prozessoren aus, bei Serverprozessoren mit großen Caches bis zu 90%. Das liegt auch darin, dass ein Cache je schneller er sein muss, mehr Transistoren pro Bit braucht. Üblich sind bei L1-Caches 8 Transistoren pro Bit und bei L2 Caches sind es 6 Transistoren. Jede Stufe ist etwas langsamer als die vorherige, dafür um so größer.
Das löst aber das Problem der langsamen Zugriffszeit nur bedingt. Sie liegt heute bei 30 bis 40 ns, das heißt ohne Caches würde man maximal 25 MHz Takt bedienen können. Die Lösung war das synchrone RAM. Es nutzt eine Eigenschaft von Code aus – im Normalfall benötigt man ja nicht die Daten von Ziig unterschiedlichen Positionen vom Speicher, sondern Variablen liegen hintereinander und Code wird weitgehend sequentiell durchlaufen. SDRAM und das darauf aufbauende DDR RAM liefern nun nach dem ersten Datenwort mit jedem Takt ein weiteres. (DDR RAM: pro Takt zwei, daher das „double Data Rate“) Je nach Speicherbaustein 8 bis 16 Stück. Für diese wird dann ¾ der Zugriffszeit eingespart.
Das zweite, was aber nur bedingt möglich ist, um die Geschwindigkeit zu steigern, ist die Verbreiterung des Datenbusses, also einfach mehr Leitungen die mehr Daten parallel übertragen. Bei Prozessoren setzt die Bauform von RAM-Modulen hier eine Grenze. Die Pins kann man nicht zu nah aneinander rücken, um nicht zu riskieren, dass es Probleme beim Einsetzen der kleinen Platinen gibt. Bei Grafikkarten, wo der Speicher direkt verlötet wird, gibt es jetzt schon 256 Datenleitungen, einige Karten arbeiten sogar mit 512. Im PC Bereich muss man bisher mit 64 auskommen. 256 Datenleistungen bedeuten natürlich bei gleich schnellem Speicher die vierfache Transferleistung. Das Grafikkarten so hohe Anforderungen haben verwundert nicht: Bei PC Programmen ändert sich der Code überhaupt nie, Daten nur teilweise. Bei dem Inhalt des Bildschirmspeichers ändert dieser sich bei Aktion Spielen dauernd. Es kommt also darauf an möglichst viele Daten hin und her zu schaufeln. Dafür sind Caches die häufig benutzte Codeteile zwischenspeichern nicht so wichtig.
Die immer höhere Geschwindigkeit macht es auch nötig den Speicher recht nahe an den Prozessor zu bringen. Bei den alten PC’s konnte man den Speicher noch auf Modulen und Zusatzkarten einbauen. Das wäre heute undenkbar. Neben der langen Signallaufzeit über die lange Strecke passiert er auch einige Logikbausteine die das Signal verzögern und dazu kommt noch ein zeitintensives Busprotokoll. Das elektrische Signale legen in Leiterbahnen etwa 200.000 km/s zurück. Klingt nach viel, aber bei 3 GHz bedeutet dass, das ein Signal maximal 7 cm weit kommt, bis der nächste Takt kommt. Der Speicher muss also direkt an den Prozessor herangebracht werden und wenn sie mal ihr Mainboard ansehen, stellen sie auch fest, dass er sich direkt neben dem Prozessor befindet.
Ich vermute mal, wenn SSD noch schneller werden, werden diese auch bald nicht mehr an einer SATA Leitung hängen, sondern direkt an dem Prozessor angebracht werden.
Das RAM (Hauptspeicher) breiter anzusprechen als im PC Bereich üblich, wurde aber regelmäßig im Server Bereich gemacht:
SGI hatte in den 90ern Server mit 256 und 512 Bit breitem Hauptspeicher plus ECC Bits. Die Probleme waren:
– viele baugleiche RAM Riegel erforderlich, mischen von unterschiedlichen Größen war wenn, dann nur sehr eingeschränkt möglich
– die CPU mußte auf ein spezielle CPU Board verlötet werden, ein Sockel war nicht möglich.
Sun hatte bei der T1 CPU in der Sun T2000 vier komplette Speichersysteme parallel an die CPU angeschlossen.
– es konnten nur gleich große RAM Riegel eingebaut werden, entweder zwei oder vier pro Speicher Subsystem.
– die CPU war auf einem 24 Layer CPU Board verlötet, das IO Board wurde dann aus Kostengründen mit einem Flachbandkabel verbunden.
d.h. man kann mehr RAM parallel anschließen als bei sktuellen PCs möglich, aber
– die CPUs müssen verlötet weden, Sockel sind nicht möglich.
–> die Kosten für die CPU fallen deutlich eher an.
–> unterschiedliche CPU Varianten verteuern die Lagerhaltung.
– das CPU Board braucht viele Layer um die ganzen Leitungen unterzubringen.
–> das CPU Board ist teuer
–> das Design des CPU Boards dauert länger.
–> in der Regel wird ein zusätzliches I/O Board für die PCIe Slots und andere
Konnectoren benötigt.
Bei Grafikkarten nutzt man den zusätzlichen Vorteil, das RAM auch zu verlöten.
Damit sind zwischen Grafikprozessor und RAM keine Steckverbindungen vorhanden; die elektrischen Eigenschaften der Leitungen sind besser definiert, so daß die Verbindung zwischen Grafikprozessor und RAM mit einer höheren Frequenz betrieben werden kann, als wenn Steckmodule verwendet würden.
Geschichtliches:
Beim Atari ST und beim original Amiga war das RAM bei 8MHz noch schnell genug, daß der Videoprozessor und die CPU abwechselnd auf das RAM zugreifen konnten, ohne das die CPU dabei gebremst wurde.
Spätere Upgrades der CPU auf 16/24/32MHz wurden dann durch den Videoprozessor ausgebremst, so daß die CPU nur beim Zugriff auf ROM oder FastRAM mit voller Geschwindigkeit laufen konnte.
(FastRAM war ein zusätzlicher Speicherbereich, der nicht als Bildschirmspeicher genutzt werden konnte.)
Ein nächster Schritt könnten wohl sog. ReRAM“-Speichermodule werden.
Diese Memristor-Speichertechnologie (Resistive Random Access Memory) soll sehr flexibel sein und sich wahlweise wie Flash, DRAM oder eine Festplatte verhalten. Nicht so schnell wie normaler RAM, dafür aber nicht flüchtig. Hergestellt werden diese Speicher mit der bisherigen Technologie, wie man sie aus der Chipfertigung kennt. Erste Produkte will HP wohl schon in einem Jahr auf den Markt bringen.
LG Frank
> Der Speicher muss also direkt an den Prozessor herangebracht
> werden und wenn sie mal ihr Mainboard ansehen, stellen sie auch
> fest, dass er sich direkt neben dem Prozessor befindet.
Bei Server ist das aber nicht der Fall dort gibt es imme noch Module wo der Ram reingesteckt wird.
> Ich vermute mal, wenn SSD noch schneller werden, werden diese
> auch bald nicht mehr an einer SATA Leitung hängen, sondern
> direkt an dem Prozessor angebracht werden.
Das ist unsinn. Das Problem besteht beim Ram nur weil alle Komponenten mit einen gemeinsamen Takt arbeiten. Es muss aus dem Grund sichergestellt werden das die Daten auch in diesem Takt in der letzen Ecke ankommen.
Festplatten laufen aber mit einen eigenem Takt. Es ist überhaupt kein Problem das Kabel auch 100m lang zu machen (Fibre Channel). Bei SATA ist die Länge nur wegen der Dämpfung im Kabel begrenzt und nicht wegen der Laufzeit der Signale.