# Kernspeicher

Der Kernspeicher, Magnetkernspeicher oder auch Ferritkernspeicher (englisch magnetic-core memory oder englisch ferrite-core memory) ist eine frühe Form nichtflüchtigen Speichers mit wahlfreiem Zugriff von Rechnern. Er besteht aus auf Drähten aufgefädelten hartmagnetischen Ringkernen, die durch elektrische Ströme in den Drähten ummagnetisiert und ausgelesen werden können. Das Vorzeichen der magnetischen Remanenz der einzelnen Ringkerne repräsentiert deren Speicherinhalt.
Kernspeicher wurden etwa von 1954 bis 1975 in den damals üblichen Rechnern eingesetzt.
Vom hier beschriebenen Kernspeicher zu unterscheiden ist das Core Rope Memory, das als ROM arbeitet und bei dem das Programm durch die Art der Verdrahtung festgelegt wird. Dieses verwendet ebenfalls Ringkerne, die in diesem Fall jedoch keine Informationen magnetisch speichern, sondern nur als Übertrager arbeiten.

## Geschichte

Die ersten Arbeiten führte 1949 der in Shanghai geborene Physiker An Wang an der Harvard-Universität aus. Im Gegensatz zum MIT war Harvard nicht daran interessiert, seine eigenen Erfindungen patentieren zu lassen. Wang erwarb das Patent selbst unter der Bezeichnung pulse transfer controlling device.
Jay Forresters Gruppe, die am Whirlwind-Projekt am MIT gearbeitet hatte, erfuhr von Wangs Arbeit. Whirlwind brauchte ein schnelles Speichersystem für einen Echtzeit-Flugsimulator. Bisher mussten dafür Laufzeitspeicher verwendet werden. Sogenannte Speicherröhren, basierend auf Kathodenstrahlröhren wie der Williamsröhre oder dem Selectron, erlangten aufgrund von Fertigungsschwierigkeiten und geringer Zuverlässigkeit im Betrieb nie eine bedeutende Marktstellung und wurden Mitte der 1950er Jahre durch Kernspeicher abgelöst.
Zwei Schlüsselerfindungen führten zur Entwicklung des Kernspeichers, welche erst die Entwicklung der in der heutigen Zeit bekannten Computer erlaubte. Die erste, An Wangs, war der write-after-read Cycle (Schreiben-nach-Lesen-Zyklus), der das Problem löste, dass das Auslesen einer Information dieselbe auch zerstört: die magnetische Polarität der Ringkerne kann nur bestimmt werden, indem diese ummagnetisiert werden.
Die zweite, Jay Forresters, war das coincident-current system (zusammenfallende Ströme), welches die Steuerung einer großen Anzahl von Magnetkernen mit einer kleinen Anzahl von Drähten ermöglichte (siehe unten, Funktionsweise). Kernspeicher wurden manuell „gefädelt“. Die Arbeit wurde unter der Lupe durchgeführt und erforderte besondere Fingerfertigkeit. In den späten 1950er Jahren wurden in Asien Fabriken gebaut, in denen Niedriglohnarbeiter die Kernspeicher herstellten. Die Preise wurden so weit gesenkt, dass sowohl der günstige, aber in der Leistung niedrige Trommelspeicher als auch die teuren Hochleistungs-Systeme mit Elektronenröhren in den frühen 1960ern abgelöst werden konnten. Durch die mechanische Komplexität und dadurch voluminöse Bauform war die Kapazität der Kernspeicher begrenzt. Es wurden Ausführungen bis zu einigen Megabytes gebaut. Dazu wurden allerdings schon mehrere Schaltschränke benötigt, bei weniger Platz bzw. Aufwand kam man auf weniger als 100 Kilobytes.
Obwohl die Herstellung der Kernspeicher kurz vor ihrer Automatisierung abgebrochen wurde, folgten die Kosten dem damals noch unbekannten Mooreschen Gesetz. Die Technologiekosten von anfangs ca. einem Dollar pro Datenbit sanken auf ca. 0,01 Dollar pro Datenbit, bis die Kernspeicher in den frühen 1970er Jahren durch den siliziumbasierten RAM abgelöst wurde. Das Patent Wangs war noch bis 1955, als die Technologie bereits benutzt wurde, nicht genehmigt. Mehrere Gerichtsverfahren veranlassten IBM, Wang das Patent für mehrere Millionen Dollar abzukaufen. Wang nutzte das Geld, um die Wang Laboratories zu erweitern.
Kernspeicher gehörten zu einer Familie von Technologien, welche sich die magnetischen Eigenschaften von Werkstoffen zu eigen machten. Neben den Ringkernspeichern wurde beispielsweise auch die Bauform mit Magnetstiftspeichern (bei ICL-Computern in den 1970ern) verwendet. In den 1950er Jahren waren die Elektronenröhren schon ausgereift, aber dennoch anfällig und wegen der geheizten Glühdrähte kurzlebig, instabil und im Energieverbrauch zu hoch. Kernspeicher bildeten eine energiesparende, miniaturisierte und zuverlässige Alternative. Wesentlich war jedoch, dass er, wie der Trommelspeicher, den Speicherinhalt auch bei Abschalten der Betriebsspannung nicht verlor. Nach einem weiteren Miniaturisierungsschritt, den sogenannten Bubble-Memories, wurde er dann durch nichtflüchtige Halbleiterspeicher (EEPROM/Flash-Speicher) erst wirklich abgelöst.

## Beschreibung
### Funktionsweise

Ein Kernspeicher besteht im Wesentlichen aus einer großen Anzahl von magnetisierbaren, hartmagnetischen Ferrit-Kernen, welche zu Ringen geformt sind und daher als Ringkern bezeichnet werden. Hartmagnetisch bedeutet in diesem Zusammenhang, dass jeder Kern ein Datenbit in dem Vorzeichen der Remanenzflussdichte B$_r$ speichern kann. Zum Lesen bzw. Beschreiben der Kerne verlaufen mindestens zwei elektrische und gegenseitig isolierte Drähte durch die Ringöffnungen, wie in nebenstehender Abbildung an einem Kern verdeutlicht.
Der elektrische Strom I$_m$ im Schreibdraht muss zum Beschreiben so groß sein, dass die durch den Strom I$_m$ erzeugte magnetische Koerzitivfeldstärke H$_c$ im magnetischen Kreis des Kernes überschritten wird. Dadurch kommt es in dem hartmagnetischen Werkstoff des Ringes, welcher eine fast quadratische Hystereseschleife aufweist, zu einer Speicherung des Zustandes im Vorzeichen der Remanenzflussdichte. Die Remanenzflussdichte kann zwei stabile Punkte annehmen, welche in der Hystereseschleife mit B$_r$ und −B$_r$ bezeichnet sind.
Gleichzeitig mit dem Schreibvorgang wird in dem zweiten Draht, der Leseleitung, ein Spannungsimpuls induziert, anhand dessen die Orientierung der ursprünglich im Kern gespeicherten Remanenzflussdichte festgestellt werden kann. Die Information kann also nur destruktiv ausgelesen werden. Der ggf. ummagnetisierte Kern muss dann neu beschrieben werden, um den ursprünglichen Dateninhalt wiederherzustellen.
Der Auslesevorgang ist in nebenstehender Abbildung der Hysteresekurven verdeutlicht: War im Kern zuvor eine positive Remanenzflussdichte +B$_r$ gespeichert, kommt es bei dem Einschreiben einer „0“ durch die große Änderung der magnetischen Flussdichte im Kern auf der Leseleitung zu einem Spannungsimpuls U$_l$ in der Größenordnung von einigen 100 mV. In der Hysteresekurve links ist mit Pfeilen gekennzeichnet der Verlauf der Flussdichte verdeutlicht. Nach dem Abschalten des Stromes I$_m$ in der Schreibleitung bleibt im Kern die Remanenzflussdichte −B$_r$ zurück, was dem Zustand „0“ entspricht. War jedoch im Kern bereits zuvor eine negative Remanenzflussdichte −B$_r$ gespeichert, durchläuft die Flussdichte nur einen kleinen Teil der Hysteresekurve und die Änderungsrate ist minimal. Demzufolge ist der Spannungsimpuls auf der Leseleitung ebenfalls minimal. In beiden Fällen befindet sich der Kern nach dem Auslesen im Zustand „0“, und der ursprüngliche Speicherinhalt muss bei Bedarf durch einen inversen Strom −I$_m$ neu geschrieben werden.
Zusätzlich zu den Kernspeichern sind für den Betrieb Leseverstärker notwendig, welche die geringen Spannungsimpulse auf der Leseleitung in passende logische Spannungspegel umwandeln. Zum Beschreiben sind Stromquellen notwendig.

### Anordnung in einer Matrix

Damit nun nicht jeder Kern zwei eigene Drähte und einen eigenen Leseverstärker benötigt, wird folgender Kniff angewendet: Der Strom I$_m$ der Schreibleitung wird auf zwei Drähte aufgeteilt, welche nur noch je die Hälfte der zur Ummagnetisierung erforderlichen Stromstärke führen. Diese X- und Y-Drähte werden in einer Gitterstruktur (Matrix) angeordnet und tragen an jedem Kreuzungspunkt einen Kern. Soll nun ein bestimmter Kern angesprochen werden, so wird je die Hälfte des benötigten Stromes durch den betreffenden X-Draht und den betreffenden Y-Draht beigesteuert. Somit werden andere Kerne entweder nur durch die Hälfte oder gar keine Feldstärke erreicht und ändern ihren Zustand nicht.
Zur Realisierung eines 16-KBit-Speichers sind somit 2×128 Drähte und ebenso viele steuerbare Stromquellen nötig.

### Lesen/Schreiben

Für das Lesen und Schreiben in einer Matrix werden zwei weitere Drähte benötigt, welche durch alle Kerne durchgeschleift werden – der Abtast-Draht (sense-line, S) oder auch S-Draht genannt, und in früheren Kernspeichern auch noch der Blockier-Draht (inhibit-line, Z).
Grundsätzlich wird immer ein Lese- und ein Schreibzyklus gleichzeitig ausgeführt. Im Lesezyklus wird mit den X- und Y-Drähten der entsprechende Kern zur logischen „0“ hin ummagnetisiert. Wenn der Kern schon vorher eine „0“ gespeichert hat, passiert im Lesezyklus nichts, bei der „1“ hingegen wird auf Grund der Ummagnetisierung ein Puls im S-Draht induziert. Im Schreibzyklus wird der Kern wieder in die „1“-Richtung magnetisiert. Im Falle einer vorher gespeicherten „0“ wird während des Schreibzyklus durch den Blockier-Draht ein Strom in gegensätzlicher Richtung geschickt. Dieser reicht aus, die Feldstärke der X- und Y-Drähte so weit abzuschwächen, dass der Kern nicht in die „1“-Richtung ummagnetisiert wird.
Da der Abtast-Draht und der Blockier-Draht nie gleichzeitig benutzt werden, benutzten spätere Systeme nur einen Draht. Eine zusätzliche Steuerung schaltet zwischen den zwei Funktionen um.
Computersysteme mit Kernspeicher nutzen oft aus, dass nicht jeder gelesene Wert überhaupt erhalten bleiben muss: Wenn z. B. zu einem Datenwort ein Wert hinzuaddiert werden soll, wird zunächst nur gelesen (Lesezyklus). Mit dem Schreibzyklus wird gewartet, bis die Addition abgeschlossen ist. Dann wird nicht der ursprüngliche Wert, sondern gleich das Additionsergebnis geschrieben. So kann die Geschwindigkeit gewisser Operationen verdoppelt werden.
Die Gesamtzeit, die für einen Lese-/Schreibzyklus verbraucht wurde, hieß Zykluszeit; sie war ein Maß für die Geschwindigkeit, mit der ein Kernspeicher betrieben werden konnte. Sie war bei Computersystemen der 1960er Jahre oft auch ein grobes Maß für die Gesamtleistung des Systems, so wie später die CPU-Taktrate.

### Physikalische Eigenschaften

Frühe Systeme hatten Zykluszeiten (Lesen und Zurückschreiben) von ca. 20 µs, sie sank Anfang der 1960er Jahre auf 2 µs und erreichte Anfang der 1970er Jahre 0,3 µs. Die möglichen Taktraten zwischen 50 kHz und 3 MHz lagen also in etwa derselben Größenordnung wie die der Heimcomputer der späten 1970er und frühen 1980er Jahre, beispielsweise des Apple II und des Commodore 64.
Datenworte mit 32 Datenbit wurden auf 32 Ebenen (je ein X-Y-Gitter) verteilt, somit kann auf ein ganzes Datenwort in einem Lese-Schreib-Zyklus zugegriffen werden.
Kernspeicher sind nichtflüchtige Speicher – sie erhalten die Information auf unbegrenzte Zeit ohne Strom. Auch sind Kernspeicher robust gegenüber elektromagnetischen Impulsen, hohen Temperaturen und Strahlung. Das sind wichtige Vorteile bei militärischen Anwendungen wie Kampfflugzeugen, aber auch bei Raumfahrzeugen. Selbst mehrere Jahre nach der Verfügbarkeit von Halbleiterspeichern wurden deshalb noch immer Kernspeicher verwendet.
Charakteristisch für Kernspeicher: sie reagieren auf den Strom, nicht auf die Spannung – der Lesedraht liefert jedoch einen Spannungsimpuls. Das war eine wichtige Voraussetzung für hohe Taktraten bei relativ großen geometrischen Ausdehnungen der Speicher.
Der Selektierstrom (half select current) I$_m$/2 war typischerweise 400 mA für die späten kleineren und schnelleren Speicher. Frühere Speicher brauchten größere Ströme.
Der Durchmesser der Ringkerne bewegt sich in der Größenordnung 1 mm bis zu 0,25 mm bei der kürzesten Zugriffszeit.
Eine negative Eigenschaft der Kernspeicher ist die Abhängigkeit der Hysterese von der Temperatur. Der Selektierstrom wird daher von der Steuerung angepasst – mit Hilfe eines Sensors wird die Temperatur gemessen. Der Programmed Data Processor PDP-1 von Digital Equipment Corporation ist ein Beispiel dafür. Andere Systeme umgingen das Problem, indem der Speicher in einem temperaturgeregelten Behälter untergebracht war. Als Beispiele seien hier der IBM 1620 (er brauchte bis zu 30 Minuten, um die Betriebstemperatur von 41 °C zu erreichen) oder der im geheizten Ölbad untergebrachte Speicher des IBM 709 genannt.

### Weitere Bauformen

Der destruktive Auslesevorgang und das zwangsweise Neuschreiben eines gelesenen Bits bei dem klassischen Ringkernspeicher führte in den 1960er und 1970er Jahren zu einer Reihe von Weiterentwicklungen, welche diesen Nachteil beheben. Eine Möglichkeit besteht darin, den magnetischen Kreis so zu konstruieren, dass die Richtungsabhängigkeit der magnetischen Flussdichte ausgenutzt wird. Diese Kerne werden auch als Biax-Kerne bezeichnet.
Dabei werden am quaderförmigen Kern zwei Löcher angebracht, welche orthogonal zueinander stehen. Durch ein Loch wird der Abfragedraht geführt, durch das andere Loch zwei Drähte: der Schreibdraht und der Lesedraht. Bei dem Auslesen des Kernes wird nur durch den Abfragedraht ein Stromimpuls geschickt, welcher je nach Remanenzflussdichte im Kern einen positiven oder negativen Spannungsimpuls am Lesedraht verursacht. Es kommt dadurch aber noch zu keiner dauerhaften Änderung der magnetischen Flussdichte im Kern, der Kern verliert seinen Speicherinhalt nicht. Zum Beschreiben müssen gleichzeitig zwei hinreichend große Stromimpulse in entsprechender Richtung sowohl durch den Abfragedraht als auch durch den orthogonal dazu stehenden Schreibdraht geschickt werden. Erst dadurch wird der Betrag der Koerzitivfeldstärke überschritten und es kommt zum Speichern des neuen Zustandes.
Weitere Kernbauformen, welche unterschiedliche Flussdichteverteilungen in magnetischen Kreisen ausnutzen, werden als Transfluxor bezeichnet. Dabei werden auf den Ringkern zwei unterschiedlich große Löcher asymmetrisch angebracht und dadurch drei Leitungen geführt. Durch die unterschiedlichen Breiten der Schenkel, bedingt durch die Asymmetrie und Größe der Bohrungen im magnetischen Kernmaterial, ergibt sich auch bei dieser konstruktiven Variante die Möglichkeit, den Speicherinhalt nicht destruktiv auslesen zu können.

### Verschiedenes

Die im Technikjargon übliche Bezeichnung core dump, welche insbesondere in der hardwarenahen Programmierung als Ausdruck für einen Speicherauszug in Form einer Momentaufnahme steht, leitet sich von den Kernspeichern ab. Zur Fehlersuche werden alle Kerne (cores) ausgelesen (dump), um so mögliche Programmfehler ausfindig machen zu können.