De eerste computers
Hoe werkt kerngeheugen (core memory)
Histechniek
Servers » TechTalk » Historisch perspectief » Hoe werkt kerngeheugen

Core memory

-

-

Hoe werkt kerngeheugen? (core memory)

Wij raden u aan eerst de inleiding kerngeheugen te lezen.

Kerngeheugen of core memory werd gebruikt vanaf de jaren 1950 tot 1970 en later. In vergelijking met de vorige geheugentypes kad kerngeheugen talrijke voordelen:

  • een snelle toegangstijd (het was geen mechanisch geheugen meer),
  • een hoge betrouwbaarheid en
  • een architectuur die men kon aanpassen aan de computer.
Terwijl computers tegenwoordig allemaal een databus hebben die een veelvoud van 8 is, hadden de computers toen een databus met een niet gestandardiseerde busbreedte.

Kerngeheugen bewaart zijn magnetisatie en is dus een permanent geheugen dat niet gewist wordt bij een stroomonderbreking (maar kerngeheugen werd niet gebruikt als permanent geheugen).

Kerngeheugen wordt met een stroom aangestuurd (en niet met een spanning): kerngeheugen was dus bijzonder aantrekkelijk samen met transistoren (in plaats van radiobuizen).

We weten al dat een stroom door een geleider een magnetisch veld produceert, dat een ferrietkraaltje het magnetisch veld concentreert en de magnetisatie bewaart als de stroom onderbroken wordt.

Selectie van een kern: de X en Y lijnen

Het is natuurlijk niet interessant als men één geleider (met de bijhorende electronica) nodig heeft om één bit op te slaan. We gaan de hysterese van kernmateriaal gebruiken om één kern te selecteren. De kernen worden in een roosterstruktuur gemonteerd. Door iedere kern lopen er twee selectiedraden, X en Y. Door iedere draad loopt er een halve stroom.

Als voorbeeld hebben we een kerngeheugen met 16 kernen en tweemaal 4 selectiedraden. We sturen een halve stroom door een X en een Y draad:

  1. We hebben één kern die een voldoende magnetisch veld ontvangt en die beinvloed kan worden (+0.5 +0.5 stroom)
  2. We hebben 6 kernen die ene halve stroom ontvangen en niet beinvloed worden (+0.5 stroom)
  3. We hebben 9 kernen waardoor geen stroom loopt.

Daardoor is het mogelijk één kern te selecteren door middel van een X, Y adres. De hysterese van de kernen voert eigenlijk een logische AND funktie uit: slechts als beide halve selectiestromen aanwezig zijn wordt de kern beïnvloed. Indien we bijvoorbeeld tweemaal 8 selectielijnen hebben hebben we een geheugen van 64 bits (8×8). De adresbus van de denkbeeldige processor moet dan eenbreedte hebben van 6 bits (binaire waarden 000 000 tot 111 111, 0 tot 63 decimaal). Een schakeling zet de 6 bits brede adresbus om in tweemaal 8 selectielijnen.

Er is een truc die ervoor kan zorgen dat het aantal selectielijnen op één vlak gehalveerd kan worden, dat is de coïncidentieschakeling. Indien de stromen in beide draden in dezelfde richting lopen (+0.5 +0.5) dan worden de stromen opgeteld en wordt de kern beinvloed. Indien de stroom in tegengestelde richting is, dan is het resulterend magnetisch veld nul. Deze handeling wordt niet vaak toegepast omdat de stuurelectronica daardoor complexer wordt.

  • Linkse kern: stroom door X positief, stroom door Y positief, resulterend magnetisch veld positief (+0.5 +0.5 = +1.0)
  • Rechtse kern: stroom door X negatief, stroom door Y positief, resulterend magnetisch veld nul (-0.5 +0.5 = 0.0)

Met één draad is het mogelijk twee kernen aan te sturen in het Y vlak naargelang de polariteit:

  • Stroom door X positief: schrijven van een 1
    • Y positief: schrijven in de linkse kern
    • Y negatief: schrijven in de rechtse kern
  • Stroom door X is negatief: schrijven van een 0
    • Y positief: schrijven in de rechtse kern
    • Y negatief: schrijven in de linkse kern
Deze complexe schakeling was enkel realiseerbaar met geïntegreerde schakelingen

Lezen van de magnetische informatie in een kern: de sense-lijn

We hebben nu een geheugen dat we kunnen beschrijven, maar hoe kunnen we de gegevens lezen? Als een kern van polariteit verandert wordt er een klein magnetisch veld opgewekt (de kern werkt in feite al een kleine ringkerntransfo). Om de verandering van magnetisatie te meten hebben we een draad die door alle kernen loopt, de sense draad.

Als de kern niet van polariteit wisselt is de geïnduceerde spanning minimaal, als de kern wel van polariteit wisselt is de opgewekte spanning hoger.

Het lezen wist de informatie, daarom moet de data opnieuw geschreven worden na de uitlezing. Omdat de processoren vaak met een READ-MODIFY-WRITE cyclus werken wacht de geheugencontroller een processorcyclus: zo wordt er vermeden dat een onnodige schrijfcyclus uitgevoerd wordt.

In het voorbeeld hieronder duurt de puls 2µs. In recentere systemen is de pulsduur korter dan 1µs. Deze tijd is nodig om de zelfinduktie van de kern te overwinnen. Hoe kleiner de kern, hoe sneller dat die reageert.

Dit is het electrisch signaal dat opgevangen wordt als er geen verandering van de magnetisatie van de geselecteerde kern gebeurt. De kleine pieken worden veroorzaakt door capaciteiten tussen de verschillende draden. Deze pieken kunnen gemakkelijk onderdrukt worden.
De kern reageert als een kleine zelfinductie en de spanning aan de sense-draad treed pas op na een bepaalde tijd. De meting is positief als de spanning boven de 20mV blijft tussen 0.6µs en 0.8µs.

Dit is ons voorbeeld, met selectiedraden en meetdraad (en coïncidentieschakeling):

De meeste kerngeheugens gebruiken geen coïncidentieschakeling omdat dit de stuurelectronica verzwaart.

Schrijven van een kern: de inhibit-lijn

Blauw en groen: selectielijnen x, y
Paars: Sense
Orange: Inhibit

Er is een extra draad die gebruikt wordt in oudere kerngeheugens: de inhibit-lijn. Deze draad loopt door alle kernen zoals de sense-draad, maar om storingen te vermijden loopt de draad samen met de X (of Y) draad.

De inhibit-lijn bevat de data die geschreven moet worden (zoals de sense lijn de gelezen data bevat). Men had gewoon de volledige schrijfopdracht kunnen tegenhouden als men een "0" zou willen schrijven, maar dit zou de stuurelectronica veel te complex gemaakt hebben. Men gebruikt liever een adressering die los staat van de databus. In recentere systemen wordt de sense draad dan ook als inhibit draad gebruikt.

In het werkgeheugen vormen de bits woorden. De woorden vormen de basiseenheid van de computer en een woord vormt een geheel. De huidige computers werken standaard met woorden van 8 bits (men gebruikt hiervoor de benamin bytes), maar bij de eerste computers was er geen standardisatie: computers gebruikten woorden van 12, 22, 24,... bits. De databus is even breed als de wordlengte, dus 12, 22, 24... bits breed. Bij de huidige computers is de datalengte een veelvoud van de byte, dus 8, 16, 32, 64 of 128 bits.

In het voorbeeld rechts gebruikt de computer een woordlengte van 7 bits. De geheugenkaders worden op elkaar gestapeld en de selectiedraden worden voor alle kaders gebruikt. Alle bits van een woord worden dus samen aangesproken.

Het gebruik van een inhibit-draad brengt een technische vereenvoudiging met zich mee: de selectiedraden dienen enkel om een kern te selecteren, het niet-schrijven wordt bereikt door een stroom van halve intensiteit en omgekeerde polariteit door de inhibit draad te sturen. Daardoor wordt het schrijven onderdrukt: +0.5 +0.5 -0.5 = +0.5 (selectiedraden min inhibit). De resulterende stroom is te laag om de kern te beinvloeden.

  • Bij het lezen wordt de informatie gelezen door de sense-lijn. Het signaal van de sense-lijn wordt na versterking direct op de databus gezet.

  • Bij het schrijven wordt de informatie van de databus gehaald en er wordt indien nodig een inhibit signaal gegenereerd.

Ieder kader heeft zijn eigen inhibit/sense lijn waarvan het signaal op de databus geplaatst wordt. De adressering is van toepassing op alle kernen van de geheugenstack. Als er een datawoord gelezen wordt op positie (x,y), dan worden alle bits simultaan gelezen op alle kaders, want de draden voor de adressering worden in serie aangesloten.

Nog een paar technische gegevens (recente types kerngeheugen):

  • halve selectiestroom: 250 à 350mA
  • responstijd: 1µs.
  • Grootte van een kern: < 1mm
  • maximaal aantal bits per kader: 4096 (64×64)

Geheugenkernen en selectiekernen

Het is technisch niet mogelijk een groter aantal bits op een kader te plaatsen, want de storingen worden anders te sterk zodanig dat het correct lezen van een bit niet meer mogelijk is. De storingen zijn afkomstig van de half-geselecteerde bits (63 + 63 in dit geval) die allemaal een klein stoorveld produceren.

Om het stooreffekt te beperken zijn alle bits afwisselend links en recht gekanteld: de storing veroorzaakt door een kern wordt geneutraliseerd door de storing in de omgekeerde richting van de volgende kern. Zelfs met deze verbetering kan men een lijn niet onbeperkt uitbreiden, want de signaal/ruisafstand wordt gaandeweg slechter.

Een geheugen van 4096 bits heeft tweemaal 64 selectielijnen nodig (64×64 = 4096). Dat is toch een beetje veel, terwijl kerngeheugen juist gebruikt werd om het aantal electronische schakelingen te beperken.

In plaats van één ferrietkern te gebruiken had men twee transistoren kunnen gebruiken om de data op te slaan. Dit wordt tegenwoordig gedaan, met geheugen-IC's die miljoenen transistoren bevatten. Maar toen had een transistor een diameter van 8.9mm (TO-5 behuizing), terwijl een ferrietkern een millimeter groot was. De omweg via het kerngeheugen was dus noodzakelijk.

Maar men heeft gemerkt dat de kernen ook als transformator gebruikt konden worden, het is trouwens de omschakeling van het magnetisch veld in de kern die gelezen wordt door de sense-draad. Hier ook gebruikt men twee stromen die te zwak zijn om het magnetisch veld van de kernen te doen omslaan. Het is enkel op het kruispunt van twee selectielijnen dat de stroom (en dus het magnetisch veld) voldoende is om de magnetisatie van de kern te doen omschakelen. Bij de omschakeling ontstaat er een inpuls op het secundair.

Onze geheugen van 4096 bits kan nu aangestuurd worden met tweemaal 8 lijnen (8×8 = 64). De adresbus moet 12 bits breed zijn om het geheugen van 4096 bits te bereiken. Hier ook worden er meerdere roosters opgestapeld om woorden van 8, 12, 16 bits te vormen, naargelang de architectuur van de processor (databus).

De kernen die voor de selectie gebruikt worden zijn groter omdat de stroom hoger moet liggen. Er worden ook meerdere lussen rond de kern gelegd zodat men het magnetisch veld bereikt kan worden met een lagere stroom.

We hebben dus een geheugenmodule met 4096 bits kerngeheugen en tweemaal 64 selectiekernen (ringkerntransfo's). Het aantal selectiekernen ligt vast, ongeacht de woordbredte (aantal bits per woord).

De ferrietkernen die als transformator gebruikt worden zijn niet vergelijkbaar met de ferrietkernen die in transformatoren van schakelende voedingen gebruikt worden. De ferrietkernen in schakelende voedingen zijn van het "zachte" soort, die gemakkelijk gemagnetiseerd kunnen worden (dus minder verliezen veroorzaken). De ferrietkernen bij de selectietransfos zijn van het "harde" soort waarbij een sterk magnetisch veld nodig is om de magnetisatie te doen omschakelen. Dit is nodig zodat slechts één transfo omschakelt, de transfo die op het kruispunt van de twee selectielijnen zit.

De selectiekernen hebben nog een extra draad (bias) om een permanent veld te produceren die het schakelen correct laat verlopen. De selectietransfos vervormen echter de selectiepulsen voor het kerngeheugen, daarom dat er slechts één trap selectietransfos gebruikt kan worden.

De foto rechts toont een bord met selectiekernen van een IMB 1400 (de voorloper van de IBM System/360). Iedere kern heeft twee primaire wikkelingen en een secundaire wikkeling. De secundaire wikkeling is de wikkeling die niet doorloopt naar een andere kern (de schuin geplaatste wikkeling).

Lees verder: Halt and Catch Fire!

Links to relevant pages - Liens vers d'autres pages au contenu similaire - Links naar gelijkaardige pagina's

-