Home Computer Computer Geschichte Site Map counter

Speicherarchitekturen

Während jeder sich über die Rechengeschwindigkeit des Computers Gedanken macht, CPU's alle par Monate mit neuen Features auf den Markt kommen, scheint der Speicher ein vollkommen ignoriertes Leben zu führen. Zeit in diesem kleinen Aufsatz einmal dem auf den Grund zu gehen.

Einige kleine Erklärungen zu einigen Fachbegriffen.

Speicher kann man sich als ein Feld vorstellen, dessen Inhalt man durch Angabe eines Indexes abrufen kann. Dieser Index wird Adresse genannt und beginnt üblicherweise bei 0. Genauso kann man einen neuen Wert speichern, wenn man diese Adresse an das Speichersubsystem übermittelt mit dem Wunsch einen Wert zu schreiben und diese dann (wenn das Speichersystem signalisiert das es bereit ist) überträgt. Das Lesen und Schreiben sowie das feststellen, wo der Wert sich befindet (wie die Adresse also dekodiert wird) übernehmen die Speicherbausteine oder Controller bei anderen Technologien. Speicher kann flüchtig sein (verliert seine Information beim Ausschalten) oder permanent (die Information bleibt erhalten). Speicher kann nur gelesen werden (typisch für Programme, die man immer benötigt, wie das Betriebssystem oder zumindest das Bootprogramm für den Rechner) oder er kann beschrieben werden. Speicher kann auch bei laufendem Strom seine Information verlieren oder nicht. Im ersten Fall muss sie von einer Logik laufend "aufgefrischt werden".

Die Zugriffszeit ist ein wichtiges Kriterium für einen Speicher. Darunter versteht man die Zeit, die vergeht wenn der Prozessor an das Speichersystem eine Adresse übermittelt, deren Inhalt er auslesen möchte bis er sie erhält. Die Zykluszeit limitiert die Geschwindigkeit eines Rechners, da er dauernd Daten aus dem Arbeitsspeicher holen muss. Beträgt sie z.B. 1 µs, so kann der Rechner nicht öfters als 1 Million mal pro Sekunde Daten vom Speicher abrufen. Wenn er bei jedem Zugriff eine Instruktion ausführt, so ist die Geschwindigkeit auf 1 Million Instruktionen pro Sekunde (MIPS) limitiert.

Das zweite ist damit zusammenhängend: die Bandbreite. Darunter versteht man, wie viele Bits man auf einmal lesen kann. Ein Ausweg, langsame Zykluszeiten zu umgehen, ist es die Bandbreite zu erhöhen. So kann ein Computer, der eigentlich nur 32 Bits auf einmal verarbeitet, eine Speicherbandbreite von 256 Bits haben. Die Idee ist diese: Man lädt 256 Bits auf einmal, wobei die Anordnung so ist, dass pro Speichermodul nur 32 Bits gelesen werden, aber dann eben von acht Speichermodulen gleichzeitig. Die 256 Bits haben aber aufeinanderfolgende Adressen. Der Code ist normalerweise sehr linear, das heißt die nächste Instruktion folgt bei der nächsten Adresse. Wenn dies der Fall ist, und das ist der Regel, dann kann man auf die nächsten 7 Instruktionen ohne Zeitverzögerung zugreifen, also einen viel höhere Geschwindigkeit erreichen, als es aufgrund der Zugriffszeit eigentlich möglich wäre. Wenn man allerdings im Code springen muss, oder eine Variable aus einem anderen Speicherbereich benötigt, dann ist der Speicher wieder so langsam wie es die Zykluszeit vorgibt.

Eine hohe Bandbreite findet man heute vor allem bei Grafikkarten. Während bei einer Anwendung die Daten im Speicher sich nur wenig und langsam ändern (sie surfen z.B. mit dem Browser, dann ändert sich der Code des Browsers über die Sitzung nicht und der Speicher in dem die Seiten stehen nur wenig, denn jede Seite lesen sie einige Sekunden lang, was für den Computer eine halbe Ewigkeit ist. Dagegen wird bei Spielen 20-100 mal pro Sekunde der komplette Bildschirminhalt neuberechnet und so in diesem Zeitraum der komplette Speicherinhalt ausgetauscht. Damit dies auch bei schnellen Bausteinen überhaupt geht haben Grafikkarten je nach Marktsegment bis zu 512 Datenleitungen.

Da beide Zeiten nicht identisch sind gibt man bei manchen Speichern daher die "Random Acess Time" (auslesen einer beliebigen Adresse) und die "sequentiell Read Time" (auslesen von mehreren aufeinanderfolgenden Adressen) an.

Die Anfänge - Speicher gab's nicht

Die ersten Rechner hatten keinen Arbeitsspeicher, in der Form wie wir ihn kennen, also als größeren Datenspeicher, aber auch Programmspeicher. Die allerersten Exemplare waren noch nicht einmal frei programmierbar, sondern konnte nur bestimmte Spezialaufgaben lösen, wie z.B. Differenzieren oder Integrieren. Durch die Verschaltung wurde das Programm festgelegt. Bestimmte Schalter waren dann Speicherzellen.

Das galt dann auch bei den ersten universell nutzbaren Computern wie ENIAC. Sie hatten keinen Programmspeicher, sondern sie wurden für jede Aufgabe "neuverdrahtet". Ein Wochenschaubericht über ENIAC berichtet dann auch "Dieser Computer berechnet die Flugbahn die ein Geschoss in 30 Sekunden durchläuft in 10 Sekunden. Das Programmieren dauerte zwei Tage". Auch hier wurden einige der rund 18.000 Röhren für das Speichern von Zwischenergebnissen genutzt. Das Programm steckte in der Verschaltung des Rechners. Einen Datenspeicher in der heutigen Form gab es nicht.

John Neumann skizzierte in einem Aufsatz eine andere Architektur, die wir heute nach ihm bezeichnen: die "von Neumann Architektur". Demnach sind die elementaren Bestandteile eines Computers folgende:

  1. Ein Rechenwerk, das Berechnungen durchführt, aber auch andere Befehle wie logische Verknüpfungen etc.
  2. Ein Steuertriebwerk, dass die Daten die vom Arbeitsspeicher kommen, als Befehle interpretiert und entsprechend das Rechenwerk ansteuert
  3. Der Arbeitsspeicher der sowohl Daten wie auch Befehle enthält.
  4. Die Ein/Ausgabeeinheit die mit der Außenwelt kommuniziert (Peripheriegeräte)

Von Neumann schlug diese Architektur für den ENIAC Nachfolger EDVAC vor. Später konnte man beweisen, dass diese Architektur eine universelle Rechenmaschine abbildet, Die folgenden Rechner realisierten auch diese Architektur und auch ihr PC arbeitet nach ihr. Später gab es noch eine Variante, die Harvard Architektur. Bei ihr gibt es einen Speicher für Programme und einen für Daten. Das klingt zuerst aufwendiger, hat aber einige Vorteile. Zum einen erlauben zwei Bussysteme mehr Daten zu übertragen und man kann auch gleichzeitig Daten und Befehle laden und speichern. Daten- wie auch Programmbus können unterschiedlich groß sein und unterschiedlich schnell. Signalverarbeitungsprozessoren verarbeiten z.B. sehr große Datenmengen wie Videoströme, das Programm selbst ist aber relativ kompakt. So kann der Programmspeicher klein sein und aus EEPROMS bestehen (siehe unten) und der Speicher für Daten sehr groß und aus schnellem RAM. Befehle, die mehrere Worte auf einmal laden (SIMD, Single Instruction, Multiple Data) können dann einen sehr breiten Datenbus einsetzen um viele Daten auf einmal zu laden. Umgekehrt haben Mikrocontroller oft einen sehr kleinen Datenspeicher, da sie dort nur Variablen ablegen, aber vielleicht einen großen Programmspeicher für ein komplexes Programm. Solche Konstruktionen machen auch den Code effizienter. Wenn der Datenspeicher z.B. nur 64 KB groß ist reichen für die Adressen um ihn anzusprechen 16 Bit, wenn der Programmspeicher größer ist braucht man dagegen 24 oder 32 Bit um hier Adressen anzusprechen.

Die Entwicklung der ersten Speicher

Doch wie speichert man Information? Bis man sie wie heute in Chips speicherte war rs ein lander Weg. Anfangs dominierten vollkommen andere Technologien. Wobei wir bei allen Technologien vom Arbeitsspeicher reden - natürlich musste auch der Massenspeicher entwickelt werden, der Daten dauerhaft aufnimmt und viel größer dimensioniert ist, aber auch viel langsamer war. Der erste Massenspeicher war der schon damals in mechanischen/elektromechanischen Zähl- und Sortiermaschinen eingesetzte Lochstreifen oder die kompakte Form der Lochkarte. Das Prinzip war sehr einfach: Der Streifen mit Löchern für ein Bit durchlief einen Leser, bei dem Federn einen Metallstift mit geringem Druck gegen eine elektrisch leitende Unterlage pressten. War ein Loch an einer Stelle so war dort ein "1"-Bit, sonst war es ein "0" Bit. Synchronisationsbits am Rand gewährleisteten, dass immer an der richtigen Stelle gelesen wurde.

Doch für den Arbeitsspeicher musste etwas schnelleres her. Die dem ENIAC nachfolgenden Rechner EDVAC und UNIAC benutzten Verzögerungsspeicher. EDVAC war der erste Rechner der nach von Neumanns Architekturvorschlag entstand, er hatte die Architektur für diesen Rechner entwickelt. Wie UNIVAC war er nun durch ein Programm das im Speicher abgelegt wurde frei programmierbar. Als Speicher wurden mit Quecksilber gefüllte Röhren eingesetzt. Sie wurden im zweiten Weltkrieg in Deutschland entwickelt um die RADAR-Anzeige zu verbessern. Ein RADAR liefert ein Echo für jedes Objekt, egal ob es sich bewegt oder nicht. Eine Antenne streicht die Umgebung ab und die Echos wurden auf einem Bildschirm, der nachleuchtete dargestellt. Das Problem war, dass das Militär nur an sich bewegenden Zielen interessiert war, aber auch nicht bewegende ein Echo erzeugten, das das Finden der wahren Ziele erschwerte. Die Lösung war die RADAR-Impulse aufzusplittern. Ein Impuls ging weiter zu dem Röhrenmonitor, das zweite durch eine Verzögerungsleitung wo es um ein Vielfaches der Zeitdifferenz zwischen dem Aussenden zweier Impulse verzögert wurde. Danach wurde das Signal zur Kathode invertiert und von diesem abgezogen. Gab es ein sich bewegendes Ziel so blieb das Signal, sonst löschte es sich aus. Diese Vorgehensweise ging, weil ein Radar gepulst kurz hintereinander Sendeimpulse aussandte und von jedem Objekt daher auch wenn die Antenne sich bewegte mehrere empfing.

VerzögerungsspeicherDiese Verzögerungsröhren waren mit Quecksilber gefüllte, hermetisch verschlossene Röhren. Am Ende saß ein piezoelektrischer Kristall, also ein Kristall der durch Anlegen von Strom Druck aufbaut. Das erzeugte einen Impuls im Quecksilber, eine Welle, die sich mit Schallgeschwindigkeit durch das Quecksilber bewegte (etwa 1,45 km/s). Am Ende traf der Puls auf einen weiteren piezoelektrischen Kristall, der nun durch den ausgeübten Druck mit einem Strom-Impuls abgab - den Gleichen wie beim Eingangsimpuls, nur schwächer.

Der Verzögerungsspeicher war nun eine Variation dieses Prinzips. Am Ende der Röhre wurde der Impuls ausgelesen, verstärkt und wieder vorne eingespeist. Sonst wäre die Information verlorengegangen. So wurde das Signal gleichzeitig gelesen und "refresht". Es handelte sich also um flüchtigen Speicher wie heute unser Arbeitsspeicher. Ein Vorteil war, dass mehr als eine Welle durch das Quecksilber laufen konnte. Beim EDVAC nahm jede Röhre 576 Bit auf, beim UNIVAC 120 Bit. Der mechnaische Aufwand war aber enorm. Man musste Sorge tragen, dass es keine Reflexionen an den Wänden gab und den Strahl begrenzen. Quecksilber wurde wegen der akustischen Eigenschaften und dem ähnlichen akustischen Widerstand wie die Piezokristalle verwendet, aber es war teuer, giftig und schwer. Zudem waren die Eigenschaften am besten bei einer Temperatur von 40°C, weshalb die Röhren beheizt werden mussten.

Im UNIVAC machten die sieben Speichereinheiten, jede mit 18 Speicherröhren für einen 1000 Wort Speicher einen eigenen Raum aus. Die Zugriffszeit betrug 222 Mikrosekunden. Der Speicher war also nicht gerade handlich. Er wurde nur kurz eingesetzt von 1947 bis 1949.

Eine Variation des physikalischen Prinzips der Verzögerungsleitung, die es nur nicht in einer Flüssigkeit gibt, waren magnetische Verzögerungsspeicher aus Nickeldraht. Wird Nickeldraht aufgewickelt, umgibt einen Elektromagneten und ein einzelner Impuls wird durch ihn hindurch geschickt, so induziert er im ferromagnetischen Nickel ein Magnetfeld, das gegen ihn wirkt. Der Draht kann als LC-Element angesehen werden und die Leitungsgeschwindigkeit sinkt stark ab. Da man den Draht auf einer gegebenen Fläche beliebig oft aufwickeln konnte, konnte man damit einen sehr leistungsfähigen und gleichzeitig preiswerten Speicher entwickeln. Je länger er war, desto höher die Kapazität, aber auch die Zugriffszeit sank ab. Derartige Speicher wurde bis in die sechziger Jahre eingesetzt. Ein auf einer Fläche von 30 x 30 cm aufgewickelter Draht konnte bis zu 1024 Bit aufnehmen.

Trommelspeicher

Eine Mischung zwischen Massenspeicher und Arbeitsspeicher war der Trommelspeicher. Er ist der älteste hier vorgestellte Speicher und wurde schon vor den ersten Computern 1932 erfunden und von dem Österreicher Gustav Tauschek patentiert. Sein Patent speicherte immerhin 500.000 Bits, was für die damalige Zeit eine enorme Speicherkapazität war. Der Trommelspeicher kann als Vorläufer der Festplatte angesehen werden. Anders als bei dieser wurde aber keine flache Scheibe eingesetzt, sondern ein Zylinder oder ein Hohlzylinder. Auf der Außenseite befand sich eine ferromagnetische Beschichtung und die Schreib-/Leseköpfe. Ein Vergleich zu den Anfängen der Aufzeichnung von Audiosignalen drängt sich auf. Das erfolgte auch zuerst auf einem Wachszylinder, bevor man die Schallplatte aus Schellack erfand.

Das Prinzip ist das gleiche wie bei der Festplatte: ein Schreib-/Lesekopf legt beim Schreiben einen Strom an, das erzeugte Magnetfeld magnetisiert das darunter liegende ferromagnetische Material an dieser Stelle und beim Lesen induziert das Magnetfeld an dieser Stelle einen Strom, der verstärkt wird.

Ein wesentlicher Unterschied zu einem Festplattenlaufwerk ist, dass nicht der Schreiblesekopf bewegt wird, sondern es pro Spur einen eigenen Kopf gibt, der nicht bewegt werden muss. Damit entfallen die Spurwechselzeiten, die bei einer Festplatte den Hauptteil der Zeit ausmachen die man braucht, um eine Information einer anderen Spur auszulesen. Auf der anderen Seite ist, gemessen am Volumen und Gewicht, die Speicherkapazität begrenzt und wenn der Trommelspeicher auch für einen Massenspeicher eine kurze Zugriffszeit hat, dann ist sie doch für einen Arbeitsspeicher lang. Für einen Massenspeicher ist dagegen die Speichergröße gemessen an der Größe des Speichers klein.

TrommelspeicherTypischerweise rotierte ein Trommelspeicher mit 6000 bis 12.500 U/Min. Beim Einsatz als Massenspeicher eher langsamer, dafür hatte er eine höhere Kapazität. Am Ende seiner Einsatzära, zu Ende der sechziger Jahre erreichten Trommelspeicher Kapazitäten von 10 MBit bei Zugriffszeiten von 10 ms. Beim Einsatz als Arbeitsspeicher setzte man mehr als einen Schreib/Lesekopf pro Spur ein (so konnte man Daten schon nach einer halben oder Viertelumdrehung einlesen) und der Speicher rotierte schneller. In der IBM 650 wurde Trommelspeicher als Arbeitsspeicher genutzt. Hier rotierte die Trommel mit 12.500 U/min und hatte eine mittlere Zugriffszeit von 2,5 ms. Allerdings war die Architektur der IBM 650 auf den Trommelspeicher optimiert. Jedes Befehlswort enthielt die Adresse wo man das nächste Wort laden sollte. Der Grund: War das Wort gelesen und ausgeführt, so war die Stelle an der Oberfläche, wo das nächste Wort bei linearer Adressierung schon am Schreib/Lesekopf vorbeigezogen. Wenn nun die Adresse die im Befehlswort abgelegt wurde, genau der Adresse entsprach, die der Schreib/Lesekopf überflog, so gab es keine Zeitverzögerung. Ein Befehl der 46 Worte einer Spur in einer Rotation einlas und addierte erreichte so eine Ausführgeschwindigkeit von 5 ms (Dauer für eine Rotation) für diese 46 Worte. Bei diesem Trommelspeicher lag die Kapazität bei 2.000 Worten zu je 10 Bit in 40 Spuren zu je 50 Worten pro Spur. (insgesamt nur 2,5 kbyte)

Obwohl die Trommelspeicher recht schwer waren, wurden sie auch für Trägerraketen eingesetzt. Der Bordrechner ASC-15 der Titan II und III setzte einen Trommelspeicher ein und auch der erste Bordrechner der Centaur (ein Librascope 3) nutzt diese Technologie. Der Trommelspeicher hatte den Vorteil, dass er zwar langsam war, aber sehr preiswert. Vor allem im Ostblock wurde er noch bis weit in den siebziger Jahren eingesetzt. Im Westen hörte der Einsatz mit dem billiger werdenden Magnetkernspeicher Ende der sechziger Jahre auf.

Kernspeicher

Fast zeitgleich zum Einsatz des Verzögerungsspeichers wurde auch Magnetkernspeicher entwickelt. Der erste Einsatz war 1953 auf dem MIT Whirlwind Computer. Magnetkernspeicher ist ein nichtflüchtiger Speicher. Er besteht aus kleinen Eisenringen, aufgezogen auf eine Drahtmatrix. Eisen ist ein ferromagnetisches Material. es kann durch ein durch Strom induziertes Magnetfeld magnetisiert werden. Das Prinzip: Ein kleiner Eisenring wird von mindestens zwei isolierten Drähten durchflossen. Im einen, dem Schreibdraht, wird ein Strom hineingeschickt, der ausreicht, dass die im Kern induzierte magnetische Feldstärke ausreicht, die Magnetisierung des Eisenkerns zu kippen. Gleichzeitig verursacht dieses Kippen im zweiten Draht, dem Lesedraht ein Spannungsimpuls induziert dessen Höhe davon abhängig ist, welchen Status der Ringkern vorher hatte.

Ringkernspeicher DetailansichtSoweit das Prinzip mit einem Kern, der dann genau ein Bit speichert. Bei einem Magnetkernspeichermodul war es aber nicht ein Bit, sondern viele in einer X-Y Matrix aufgehängt. Hier kam das gleiche Prinzip zum Einsatz, nur war nun der Schreibdraht in zwei Drähte aufgespalten. Je einen für die X-Achse und einen für die Y-Achse. Nur am Kreuzungspunkt beider Drähte reichte der Spannungsimpuls aus die Feldstärke des Magnetkerns an dieser Kreuzung umzudrehen. Der Lesedraht durchzog als driter Draht diagonal den Magnetkernspeicher.

Durch die Magnetisierung behielt der Speicher seine Information, was durchaus praktisch war, da man bei einem Absturz noch den kompletten Speicherinhalt hatte, die Untersuchung dessen nannte sich dann "Core-Dump". Er verlor aber auch die Information beim Auslesen, da man um sie zu gewinnen, eine neue Information über den Schreibdraht aufbringen musste. Daher musste nach dem Lesen die gerade ausgelesene Information neu beschrieben werden.

Magnetkernspeicher wurde sehr lange eingesetzt von 1955 bis etwa 1980. Seit 1975 jedoch immer seltener.  Anfangs waren die Ringe noch gut sichtbar und wurden von Hand aufgefädelt und größer als ein 1 mm (der erste eingesetzte Speicher in der IBM 405 hatte Ringe mit 6 mm Außendurchmesser). Später war es möglich die Ringe maschinell aufzufädeln, was den Speicher extrem verbilligte und die Ringe konnten nun viel kleiner werden. Die letzten Module hatte nur noch 0,25 mm große Ringe. Die letzten Module nahmen bis zu 262.144 Ringkerne auf und waren etwa so groß wie ein DIN-A4 Blatt. Das maschinelle Auffädeln verbilligte den Speicher. So sanken die Herstellungskosten von anfangs 1 Dollar pro Bit auf 1 Ct pro Bit im Jahre 1980.  Allerdings war dies damals zehnmal teuer als Halbleiterspeicher.

Ringkernspeicher foitografiert von Konstantin LanzetNachteilig am Ringkernspeicher war, dass er zum einen temperaturanfällig war. Es wurde jeweils einer der beiden möglichen Zustände der Magnetisierung für die Definition einer "1" genutzt. Da der Strom für das Beschreiben von der Temperatur abhängig war, wurde je nach gewähltem Zustand der Kernspeicher entweder auf 41°C geheizt oder gekühlt.

Ein Nachteil hatte aber auch der Magnetkernspeicher: Seine Zugriffszeit stieg nur langsam an. Der erste hatte eine Zugriffszeit von 6 µs, der letzte eine von 0,6 µs. Zum Schluss gab es auch Ringkernspeicher mit 0,2 und 0,11 µs Zugriffszeit, doch kamen sie zu spät auf den Markt. Das ist zwar der Faktor 10, aber bedenkt man dass dazwischen fast drei Jahrzehnte liegen, so sieht man, dass die Zugriffszeit kaum gesteigert wurde. Sie stieg mit der Verkleinerung der Ringkerne, und dem waren Grenzen gesetzt.

Eine Variante des beschreibbaren Kernspeichers waren ROM (Read only Memory) aus Kernspeicher. Bei einem ROM waren die Ringe vormagnetisiert waren und wurden nur noch ausgelesen. Dies erlaubte es die Anzahl der Ringe enorm zu verkleinern. Ein Beispiel war der Speicher des Apollo Guidance Computers (AGC). Er hatte einen kleinen Speicher für Variablen, der beschreibbar war und aus "normalem" Ringkernspeicher bestand. Der größte Teil war aber nicht beschreibbar. Die Technik war folgende. Ein magnetisierter Eisenkern wurde entweder von einem Draht durchzogen (eine "1" oder der Draht führte an der Außenseite vorbei.  Pro Ringkern wurden dabei 12 Drähte von unterschiedlichen Datenwörtern eingesetzt. Das bedeutet dass ein Ringkern 12 Bits speichern konnte, er wurde praktisch mehrfach genutzt für die Speicherung eines Bits in 12 Wörtern. Die Verdrahtung erfolgte halbmaschinell, indem die Positionierung der Kerne durch eine Maschine erfolgte, aber ältere Damen die Nadel mit den Drähten zogen. Sie waren besonders ausgesucht, da sie die Gemütsruhe hatten diese monotone Arbeit über Stunden fehlerfrei zu erledigen.

Ringkernspeicher wurde z.b. bei Gemini, Apollo, Skylab, aber auch der ersten Generation der Space Shuttle Rechner eingesetzt. Ab Mitte der siebziger Jahre wurde er in der irdischen Datentechnik von Halbleiterspeicher ersetzt.

Eine Variation des Kernspeichers war die Plated Wire Technologie oder Plated Wire Memory. Dabei wurde ein mit einer Nickel/Eisenlegierung, also ferromagnetischer Legierung, beschichteter Draht als Speicher benutzt. Je nachdem wie das Magnetfeld beschaffen war veränderte er den Strom den man durch den Draht schickte. Das Prinzip war das gleiche, es gab nur zwei Unterschiede: Die Drähte benötigten mehr Platz. Im Space Shuttle Triebwerkskontroller wurden sie noch in der ersten Generation eingesetzt (obwohl zum Entwicklungsbeginn 1972 schon Halbleiterspeicher verfügbar war). Auf einer Platine von 30 x 30 cm Größe waren auf beiden Seiten Drähte im Abstand von 0,254 mm gespannt. Trotzdem speicherte diese Platine wenn sie beidseitig genutzt wurde nur 32768 Bit. Jeder Draht speicherte mehrere Bits, dafür gab es quer über den Draht mehrere Word-Bänder bei dem jeweils ein Teil des Drahtes magnetisiert wurde. Beim obigen Speicher des Space Shuttles waren dies z.B. 17 Bänder für ein 16 Bit Wort und ein Paritätsbit.

Der Speicher hatte also einen sehr hohen Platzbedarf. Der wichtigste Vorteil war, dass eine maschinelle Fertigung viel leichter möglich war als beim Ringkernspeicher, bei dem sehr lange das manuelle Auffädeln der Ferritkerne dominierte. Plated Wire war auch etwas schneller als Ringkernspeicher, aber trotzdem noch erheblich langsamer als SRAM. Plated Wire Memory wurde in Univac Rechnern und Honeywell rechnern eingesetzt, unter anderem im Viking Bordcomputer und Space Shuttle Main Engine Controller.

Das Foto oben von Konstantin Lanzet (Quelle) zeigt ein 1024 Bit Speichermodul.

Halbleiterspeicher

Prinzipiell kann man auch mit Halbleiterbausteinen einen Speicher aufbauen, nur tat man dies sehr lange nicht. Transistoren wurden in den späten vierziger Jahren erfunden und ersetzten in den fünfziger Jahren die Vakuumröhren in den Rechnern, doch der Speicher blieb als Magnetkernspeicher ausgelegt, nur die Logik wurde durch Transistoren ersetzt. Der Grund: Ein Transistor ist ein Schalter. Er hat nicht die Möglichkeit einen Zustand zu speichern, sondern kann nur den Zustand wechseln (von ein nach aus und umkehrt). Um ein Bit zu speichern muss man vier Transistoren so anordnen, dass sie ein Flip-.Flop bilden. Sie speichern ein Bit indem der Ausgang eines Transistors einen zweiten Transistor umkippen lässt. Bei einer geeigneten Verschaltung hat eine Anordnung von 4 Transistoren dann genau zwei Zustände, die man auch als "0" oder "1" interpretieren kann. Zwei weitere Transistoren braucht man um das Bit auszulesen und zu speichern. So braucht man 6 Transistoren für ein Bit (6T-Speicherzelle). Es gibt auch Varianten mit 8 oder 10 Transtoren (8T und 10T Speicherzellen), die schneller auslesbar und schreibbar sind.

Doch bei Transistoren die einzeln hergestellt wurden und teurer als Ringkerne waren, war diese Technologie einfach zu teuer um damit Speicher zu produzieren. 6T Zellen wurden nur für den Speicher der CPU, die Register verwendet oder später als die Zykluszeit der Rechner schneller als die Zugriffszeit des Ringerkernspeichers war, für Caches. Das war ein kleiner Speicher aus Halbleiterbausteinen, der als Zwischenspeicher fungiert. Wenn ein Codeblock durchlaufen wird, so gibt es meist wenige Sprünge und wenn dann oft über kleine Distanzen. Wenn man daher einen kleinen Speicher aus Flip-Flops vom langsamen Ringkernspeicher füllt dann hat man eine gute Chance, dass die nächste Instruktion in diesem kleinen, aber schnellen Speicher steckt. Dasselbe gilt für Variablen. Variablen einer Routine stehen hintereinander im Speicher. Wenn man einen zweiten Cache für die Daten anlegt kann man auch auf sie schnell zugreifen. So konnte man die Rechengeschwindigkeit weiter steigern, auch wenn der Speicher kaum in der Geschwindigkeit anstieg. Das Prinzip wird bis heute angewandt (s.u.)

Die integrierten Schaltungen änderten dies. Anders als bei einzelne Transistoren musste man nicht eine Platine maschinell oder von Hand mit Tausenden von Einzelelementen bestücken und verdrahten, sondern diese wurden schon bei der Herstellung verdrahtet. Vor allem zeichnete sich bald ab, dass man die Anzahl der Transistoren pro Schaltung in 2-3 Jahren verdoppeln konnte, während immer mehr Transistoren bald Probleme bei der Bestückung und Verdrahtung der Platinen  aufwarfen.

Intel 1101Speicherbausteine waren sogar das ideale Anwendungsfeld für integrierte Schaltungen, denn die Schaltung stand fest. Sie wurde bei der Herstellung festgelegt und konnte nicht geändert werden. Während aber vielleicht jeder Hersteller andere Vorstellungen hatte,was seine Logikschaltung können musste brauchten alle Speicherbausteine. Noch dazu waren die Schaltung sehr einfach, denn es waren einheitliche Felder aus Flip-Flops mit der entsprechenden Logik an der Peripherie um Adressen zu dekodieren und Daten vom Bus zu lesen oder zu speichern.

Die ersten integrierten Schaltungen kamen 1960/61 auf den Markt. Die ersten zehn Jahre war das Wachstum nur mäßig. Es wurden verschiedene Technologien ausprobiert. Die Übertragung der Fertigung von Transistoren als Einzelexemplare auf die integrierten Schaltungen war zwar folgerichtig und führte auch zu schnellen Speicherbausteinen, aber die Integrationsdichte war sehr niedrig. Der Durchbruch war die MOS Technik, MOS steht für Metalloxidsemiconductor. Auf eine Metallschicht wurde Silizium aufgebracht und darüber eine Metalloxidschicht und eine weitere Metallschicht. Die Metalloxidschicht wirkt als Isolator. Die Metallschichten als Leitungen und das Silizium als halbleitendes Element wird dotiert um einen Transistor zu bilden. Vergleichen mit der vorher eingesetzten Bipolartechnik verbrauchten diese Schaltungen weniger Strom und konnten dichter gepackt werden, waren aber auch langsamer. Mit dem Einzug der MOS Technologie in die Fertigung wurden Speicherchips sehr rasch billiger und massenhaft produziert. 1970 passten 1024 Bit auf einen Chip, 1980 waren es 65536 und 1990 waren es 4 Millionen und 2000 schon 128 Millionen. Bild links: Das Intel 1101 SRAM mit einer Speicherkapazität von 1 Kbit aus dem Jahre 1969. (c) des Bildes: Intel Cooperation

SRAM und DRAM

Die ersten Speicherbausteine waren statische Speicher oder SRAM (Static Random Access Memory). Dieser Ausdruck ist schlecht gewählt, er suggeriert, dass der Speicher nicht flüchtig ist, das ist er aber durchaus. SRAM besteht aus oben beschriebenen Flip-Flops also einem 6T-Zellentyp, Mit der Einführung der MOS-Technologie Ende der sechziger Jahre wuchs die Kapazität derartiger Bausteine schnell an. Intel fertigte z.B. zuerst Speicherchips in Bipolartechnologie, die schnell schalteten, aber nur 64 Bit speicherten. Ihr erster Chip mit MOS-Technologie speicherte dagegen 1024 Bit, das sechzehnfache und war noch billiger in der Herstellung.

SRAM verdrängte ab 1970 den Ringkernspeicher. In Großrechnern, wo der Preis nicht so wichtig war die die Geschwindigkeit wurden auch Bausteine in der ECL- oder Bipolartechnologie eingesetzt. Sie schaltete 10 bis 30-mal schneller als SRAM, aber die Zahl der Bits pro Chips war wegen des hohen Wärmeverbrauchs dieser Bausteine begrenzt. Der Supercomputer Cray-1 setzte auf Speicher in ECL Technologie mit Schaltzeiten von 15 ns, SRAM erreichte dagegen nur 150 ns zu dieser Zeit. Die Firma hielt auch lange an dieser Technologie fest und wechselte erst Mitte der achtziger Jahre auf SRAM und in den Neunzigern auf DRAM.

Intel 1103 (c) Intel CorporationMitte der siebziger Jahre wurde der statische Speicher auf dem Massenmarkt vom dynamischen Speicher verdrängt. Dynamischer Speicher oder DRAM (Dynamic Random Access Memory) besteht aus einem Kondensator und einem Transistor. Der Kondensator ist eine Schicht im Silizium die so dotiert ist, dass sie elektrische Leitungen aufnehmen kann. Diese Technologie liegt allen Halbleitern zugrunde. Ein Unterschied zu der Dotierung von Transistoren ist aber das die Fläche des Kondensators etwas größer ist und viel stärker in die Tiefe geht. Darüber oder daneben, je nach Technologie liegt ein Transistor. Er ist normalerweise im Sperrschichtbetrieb, lässt also keine Ladung passieren. Wird von außen Strom angelegt, indem er durch die Adresscodierung angesprochen wird, so lässt er die Ladung des Kondensators heraus, die dann als "1" interpretiert wird. Danach muss der Kondensator erneut aufgeladen werden. Das "D" im Namen zeigt aber einen Nachteil auf: Auch ohne Abrufen des Inhalts ist im Halbleitermaterial Silizium die Ladung des Kondensators nicht stabil, er entlädt sich von alleine und muss alle paar Millisekunden "aufgefrischt" werden. Dazu werden die Speicherzellen einer Zeile (es handelt sich wie bei allen Speicherbausteinen um eine zweidimensionale Matrix) in einen Zeilenpuffer übertragen, das Signal verstärkt und zurückgeschrieben. Heute machen dies die Speicherbausteine alleine, die ersten Exemplare mussten noch von der CPU aufgefrischt werden. Bild rechts: Das Intel 1103 DRAM mit einer Speicherkapazität von 1 Kbit aus dem Jahre 1970. (c) des Bildes: Intel Cooperation

Der Siegeszug von dynamischen Speicher liegt darin begründet, dass Kondensator und Transistor nur ein Viertel der Fläche eines Flip-Flops benötigen und trotzdem der Chip einfacher zu fertigen ist (es gibt weniger Transistoren und weniger Verbindungen zwischen ihnen). DRAM war, als er erstmals angeboten wurde viermal billiger als statischer Speicher. Mit dem Rückgang der Produktionszahlen ist der Unterschied sogar noch angestiegen.

Statischer Speicher hat aber nicht ausgedient. Er hat einen Vorteil: Viel kürzere Zugriffszeiten. Aus ihm besteht der Cache, den seit Mitte der achtziger Jahre auch Mikrocomputer haben, als ihre Taktfrequenz so hoch wurde, dass dynamische Speicher zu langsam wurden. Früher waren dies eigene Bausteine auf dem Motherboard, heute ist der Cache im Prozessor integriert, bei manchen Prozessoren für Server gibt es auch noch zusätzlichen statischen Speicher als Cache auf der Platine. Heute gibt es mehrere Ebenen, genannt L1, L2 und L3-Cache, vielleicht bald auch L4 Cache. Der Prozessor schaut zuerst im L1-Cache nach ob er Daten findet. Dieser Cache ist der schnellste und daher oft aus 10T Zellen aufgebaut. Findet er sie nicht, so wird im L2 Cache nachgeschaut. Er ist größer, aber langsamer, hier muss der Prozessor schon warten. Er kann dann aus langsameren 8T Zellen bestehen. Findet er ihn nicht so wird im L3 Cache nachgeschaut, der sich dann schon außerhalb des Prozessors befinden kann. Er besteht dann aus einfach 6T Zellen und ist noch langsamer. Eine Logik sorgt dafür, dass möglichst viel im Cache steht, lädt also Daten vorausschauend aus dem Arbeitsspeicher in den L3 Cache und von dort in die höheren Caches. Frei gegeben werden dabei immer die Bereiche die am längsten nicht benötigt werden. Dazu wird der Cache in kleine Einheiten, die Cachelines aufgeteilt und für jede Cacheline gemerkt wann der letzte Zugriff erfolgt.

SDRAM und DDR-RAM

Seit seiner Erfindung ist DRAM kaum schneller geworden, was an seinem Funktionsprinzip liegt. Einen Kondensator kann man weder schnell laden, noch entladen. 1977 betrug die Zykluszeit eines neuerschienen 16 KBits Chips 250 ns. Das bedeutet: Von der Anforderung von einer Adresse lesen zu wollen bis das Datum übermittelt war vergingen 250 ns. Der Kehrwert davon (4 MHz) war die Taktrate, die ein Prozessor aufweisen dürfte, wenn er dies in einem Maschinenzyklus macht. Beginnend ab 1982 waren Prozessoren mit 8-10 MHz Taktfrequenz schneller als das DRAM und man begann zuerst Wartetakte einzuführen. Das war bei der 80286-Generation noch eine Lösung, da nicht jeder Befehl auf den Speicher zugriff, viele Befehle bearbeiteten ja die Daten in der CPU. Beim 80386 und der Motorola 68020, die 1985 erschienen, lagen die Taktfrequenzen nun schon bei 16-.20 MHz und die Befehle wurden schneller ausgeführt. Ab da begann man mit dem Einbau von Caches zuerst auf dem Motherboard, ab dem 486 auch in den CPU Kern. Heute machen die Transistoren der Caches den größten Teil der rund 2 Milliarden Transistoren eines Mitte 2012 aktuellen Intel Prozessors aus.

Da seitdem die Zugriffszeit von DRAM nur langsam sank besann man sich auf andere Mittel. Beim schnellsten Speicher derzeit, DDR3 beträgt die Zykluszeit 5-10 ns. Das ist zwar 50-mal mehr als 1977, doch die Taktfrequenz der Prozessoren stieg um das 800-Fache und sie brauchen weniger Zyklen für einen Befehl. (damals rund 8, heute 1-2). Ohne Tricks würde DD3 RAM maximal 200 MHz schnelle Prozessoren mit Daten versorgen können. Insbesondere in den letzten 10 Jahren sank die Zugriffszeit kaum noch 1999 war 100 MHz SDRAM der Standard (Zykluszeit 10 ns), heute ist es 400 MHz DDR-RAM (Zykluszeit 5 ns), also nur eine Verdoppelung in 13 Jahren.

Der erste Schritt war in den neunziger Jahren SD-RAM. Das "S" steht für Synchronous DRAM. Dieser Speicher ist nun mit dem Systemtakt verbunden, vorher war er unabhängig davon, wodurch man entweder Wartetakte einbauen musste (wenn er langsamer war) oder auf Performance verzichtete (wenn er schneller war, was ab Ende der siebziger Jahre bei aktuellen Prozessoren nicht mehr vorkam). Damit war aber auch nicht mehr jeder Systemtakt möglich. SD-RAM gab es mit 66,100 und 133 MHz. Eine weitere Optimierung war, dass die Speicherbausteine zusammengefasst waren und immer 64 Bit auf einmal abgaben, die aus zumeist 16 Bausteinen stammten. Damit konnte man die Schreib/Lesezugriffe verteilen und die höhere Bandbreite verglichen zu dem vorher üblichen Abrufen von 8 oder 16 Bits beschleunigte das System. Das besondere aber war, dass die Speicherbausteine nach dem ersten Datenwort automatisch beim nächsten Takt das nächste lieferten an der Adresse+1. Dies ging weil sie schon beim ersten Zugriff den nächsten "anschickten", der normalerweise 2-3 Taktzyklen benötigte. Beim Schreiben speichert ein SD-RAM die Information zwischen, weil das Schreiben ebenso 2-3 Zyklen dauert und wenn dieselben Daten sofort wieder gelesen werden, könnte er sie sonst nicht so schnell liefern. Üblich ist, dass ein SD-RAM Modul 8 Datenwörter hintereinander liefert, weil ein Eintrag im Cache, eine sogenannte Cache-Line 64 Bytes umfasst. (64 Bit x 8 Zyklen = 512 Bit = 64 Byte).

Der DDR-RAM hat nun nur noch eine kleine Änderung die sich im Namen niederschlägt: DDR steht für Double Data Rate. Er überträgt nach dem ersten Zugriff bei jedem Taktsignal zwei Datenworte, eines bei der aufsteigenden Flanke und eines bei der absteigenden Flanke. Der interne Speichertakt ist also doppelt so hoch wie der Systemtakt. Der Systemtakt wird normalerweise recht niedrig sein, damit auch das Bussysteme (Steckkarten) damit zurechtkommt und DDR-RAM erspart so einen eigenen Systemtakt für den Speicher. Bei DDR-RAM ist es üblich die Anzahl der Transfers pro Sekunde anzugeben. "DDR3 RAM-1600" überträgt z.b. 1600 Millionen Transfers pro Sekunde. Da jeder Transfer immer 64 Bits umfasst sind dies 12,8 Gigabyte pro Sekunde als Maximalwert.

Allerdings findet man auf jedem Chip im Datenblatt noch Timings in der Form "5-5-5". Und die zeigen, dass eben die Speicherchips nicht ganz so schnell sind wie uns die Spezifikation mit den vielen Millionen Transfers glauben machen will. Die erste Zeit ist die Column Address Strobe Latency (kurz CL oder „CAS Latency“), sie gibt an, wie viel Zeit vergeht, zwischen dem Anlagen einer Adresse an den Speicherchip und dem Auftauchen ersten Daten an der Ausgangsleitung. Sie ist direkt mit der Zugriffszeit gekoppelt und da diese kaum schneller geworden ist, steigt dieser Faktor (in Taktzyklen) laufend an. 1999 betrug sie bei 100 MHz SD-RAM noch 2 Takte entsprechend 20 ns. Heute sind es bei DD3-RAM und 2000 MegaTransfers zwischen 7 und 10 Zyklen, womit die Zugriffszeit nur auf 7 bis 10 ns gesunken ist - der Faktor 2-3 in 12 Jahren.

Die beiden folgenden Zeiten stehen dann für das Anlegen der Spalteninformation und dem Zeitpunkt des Vorladens einer Speicherzelle beim kontinuierlichen Zugriff. Sie spielen eine Rolle, wenn der Speicherzugriff über eine Zeile hinaus geht. Beide Werte sind ebenfalls größer als 1 Takt. Im Extremfall, wenn man durch ein Programm wild Daten aus völlig unterschiedlichen Speicherbereichen abruft, addieren sich alle Zeiten und ein Chip mit 9-9-9 braucht dann 27 Takte bis er die Daten liefert - er könnte dann zwar die nächsten 7 Datenworte innerhalb der nächsten 4 Takte liefern, doch wenn man beim nächsten Abrufen wieder Daten von einer anderen Speicherregion haben will, nützt dies nichts. Anstatt mit 400 MHz würde in diesem Falle der Speicher nur mit 15 MHz laufen.

In der Praxis ist es so, dass alle Zugriffe über den Cache gehen und immer komplette Cachelines eingelesen werden und auch bei normalen Programmen die nächsten Daten mit großer Wahrscheinlichkeit auf den folgenden Adressen sitzen. Die Verringerung der Zeiten für "extreme Editions" erfolgen entweder durch besonders teuren, getesteten und vorselektierten oder gekühlten Speicher (meistens mit höherer Spannung betrieben, um die kürzeren Zeiten zu ermöglichen) bringen aufgrund dieser Tatsache nur wenig. Benchmarktests brachten bei solchen "extreme" Modulen Beschleunigungen maximal im Bereich von 5-10%. Wichtiger ist es wenn ein System mehrere Speicherkanäle hat (auch erkennbar an der Anzahl der Steckplätze) diese möglichst alle zu belegen, da so bei zwei Speicherkanälen nur jeder zweite auf ein Modul geht und so die Performance viel stärker ansteigen kann.

Festwertspeicher

EPROMSpeicher der nicht verändert werden kann wird im Fachchinesisch ROM genannt: Read Only Memory. Hier wurden integrierte Schaltungen viel früher eingesetzt. Das damals hergestellte Maskenprogrammierte ROM war nach der Herstellung nicht mehr veränderbar. Es bestand nur aus einer Matrix von Transistoren, maximal einem pro Speicherzelle. Es gab verschiedene Techniken. Eine sehr einfache legte an eine "1" einen Transistor im Durchlassbetrieb und bei einer "0" einen im Sperrbetrieb. Jeweils ein Eingang wurde mit den Leitungen der Spalten und Zeilenadressierung verbunden und der Ausgang mit der Leseleitung. Solche ROM's waren sehr preiswert herzustellen, sie waren sogar weniger komplex als DRAM Bausteine. Aber für jedes ROM benötigt man eine eigene Maske, daher lohnte sich die Herstellung nur bei einer endgültigen Softwareversion für den Massenmarkt. In den achtziger Jahren bestand bei den zahlreichen Heimcomputern der größte Teil des Speichers aus solchen maskenprogrammierten ROMs. Dort saß das Betriebssystem und der BASIC Interpreter. Sie waren sofort nach dem Einschalten bereit, Befehle entgegenzunehmen.

1972 entdeckte man bei Intel bei der Untersuchung von Defekten bei Speicherchips das EPROM. Ein EPROM hat eine abgelöste dotierte Schicht, ein sogenanntes Floating Gate. Bei dem Anlegen von hohen Spannungen, viel höher als die normalen Betriebsspannungen, wurden durch einen Feldeffekt Elektronen in diese Schicht verschoben und bei den normalen Spannungen konnten sie sie nicht mehr verlassen: Sie verschieben aber die Ansteuerspannung des darunterliegenden Transistors, der dadurch schon bei niedrigen Spannungen im Durchlassbetrieb ist und eine "1" repräsentiert. (Bild links von "Qucikfix", Quelle)

EPROMs waren mehrmals beschreibbar (etwa 100-200 mal), aber man musste sie dazu mit UV-Licht löschen. Das machte die EPROM teuer, weil man ein Gehäuse mit UV-durchlässigem Quarzglas brauchte. Später entstand auf dieser Technologie das EEPROM. Es ist durch eine höhere Programmierspannung löschbar. Auf einer ähnlichen Technologie basieren Flash Speicher. Der wichtigste Unterschied ist das in einem EEPROM einzelne Bytes gelöscht werden können, bei Flash Speicher werden immer komplette Blöcke mit neuem Inhalt überschrieben. Typische Blockgrößen sind 512 KByte.

Mit dem Einzug von portablen Medien (USB-Sticks, Speicherkarten aber auch vielen Geräten mit viel Intelligenz und damit viel Festwertspeicher (Smartphones, Organizer etc.), sind Flashspeicher zu einem Massenmedium geworden von denen viel mehr hergestellt wird als Arbeitsspeicher. Heute können sie auch eine PC-Festplatte ersetzen (SSD: Solid State Disk).

Die Flash-Speicherchips dabei durchaus riesig und heute kann man in einer Zelle auch zwei oder drei Bits speichern. allerdings sind solche Zellen etwas langsamer und können nicht so oft beschrieben werden wie Flash Speicher mit nur einer Zelle. Die Beschränkung der Schreibzyklen auf 10.000 bei Zellen mit mehreren Bits und 100.000 bei Zellen mit einem Bit fangen die Kontroller ab, indem sie die einzelnen Blöcke möglichst gleich oft beschreiben und dabei auch Daten verschieben.

Zum Nachlesen:

ct 8/2006 und 6/2008 über die Details des Timings von DDR-Speicher und die Bedeutung der Zeitparameter

John Palfmann & Doron Swade: The Dream Machine exploring the Computer Age

Mindell: Digital Apollo

William K. Kaufmann J. Smart: Simulierte Welten

Artikel erstellt am 1.11.2012

Zum Thema Computer ist auch von mir ein Buch erschienen. "Computergeschichte(n)" beinhaltet, das was der Titel aussagt: einzelne Episoden aus der Frühzeit des PC. Es sind Episoden aus den Lebensläufen von Ed Roberts, Bill Gates, Steve Jobs, Stephen Wozniak, Gary Kildall, Adam Osborne, Jack Tramiel und Chuck Peddle und wie sie den PC schufen.

Das Buch wird abgerundet durch eine kurze Erklärung der Computertechnik vor dem PC, sowie einer Zusammenfassung was danach geschah, als die Claims abgesteckt waren. Ich habe versucht ein Buch zu schreiben, dass sie dahingehend von anderen Büchern abhebt, dass es nicht nur Geschichte erzählt sondern auch erklärt warum bestimmte Produkte erfolgreich waren, also auf die Technik eingeht.

Die 2014 erschienene zweite Auflage wurde aktualisiert und leicht erweitert. Die umfangreichste Änderung ist ein 60 Seiten starkes Kapitel über Seymour Cray und die von ihm entworfenen Supercomputer. Bedingt durch Preissenkungen bei Neuauflagen ist es mit 19,90 Euro trotz gestiegenem Umfang um 5 Euro billiger als die erste Auflage. Es ist auch als e-Book für 10,99 Euro erschienen.

Mehr über das Buch auf dieser eigenen Seite.

Hier geht's zur Gesamtübersicht meiner Bücher mit direkten Links zum BOD-Buchshop. Die Bücher sind aber auch direkt im Buchhandel bestellbar (da ich über sehr spezielle Themen schreibe, wird man sie wohl kaum in der Auslage finden) und sie sind natürlich in den gängigen Online-Plattformen wie Amazon, Libri, Buecher.de erhältlich.


© des Textes: Bernd Leitenberger. Jede Veröffentlichung dieses Textes im Ganzen oder in Auszügen darf nur mit Zustimmung des Urhebers erfolgen.
Sitemap Kontakt Impressum / Datenschutz Neues Hier werben / advertisment here Buchshop Bücher vom Autor Top 99