Hoe werkt RAM?

5
264

In je pc zit RAM, in goed Nederlands ook wel eens het werkgeheugen genoemd. Wat is dat voor iets en hoe werkt het?
memory
RAM is een Engelstalige afkorting en staat voor ‘Random Access Memory’ of ‘willekeurig toegankelijk geheugen’. RAM bestaat uit geheugencellen die aan of uit kunnen staan en dus één bit bevatten. Hoe een geheugencel werkt, zullen we verderop uitleggen. De geheugencellen worden in een siliciumplaatje geëtst en zijn onderling verbonden met hun buren. Als we ons een geheugen van 8×8 bits voorstellen, ziet er dat zo uit:

 –OOOOOOOO
 –OOOOOOOO
 –OOOOOOOO
R–OOOOOOOO (horizontaal & verticaal tussen de cellen ook verbindingen)
A–OOOXOOOO
S–OOOOOOOO
 –OOOOOOOO
 –OOOOOOOO
   ||||||||
    
CAS
Als je nu wil weten of de geheugencel op positie ‘X’ de waarde 0 of 1 bevat, dan zet je een welbepaalde elektrische lading op de verbinding voor kolom 4 (van links geteld). Daarmee selecteer je alle geheugencellen in kolom 4 en daartoe behoort ook cel X. Als je nu de aanwezige lading op rij 4 (van onder geteld) uitleest, krijg je de lading van de cel op rij 4 en kolom 4 en dat is dus cel X. Wil je zelf een waarde schrijven in cel X, dan zet je gewoon de gewenste lading op rij 4. De geselecteerde kolom 4 zorgt er dan voor dat cel X die waarde overneemt. Je ziet al dat je, door een rij en een kolom te kiezen, elke willekeurige geheugencel kunt lezen of beschrijven. Daarom heet het dan ook ‘willekeurig toegankelijk geheugen’.
Het kolomadres of CAS (Column Address Strobe) en het rijadres of RAS (Row Address Strobe) vormen samen het adres van de geheugencel.
In ons voorbeeld zijn er maar acht rijen en acht kolommen en dus 64 geheugencellen ofwel 64 bits. In een pc zijn er dat veel meer. Daar moet je immers bijvoorbeeld 512 MiB geheugen adresseren en dat is 512 * 1024 * 1024 bytes * 8 bits = 4.294.967.296 bits. Een moderne pc werkt met een 64 bits breed geheugen en dat wordt door een geheugencontrollerchip omgezet in een rij- en kolomadres. Geheugencellen zitten in je pc in zogenaamde geheugenmodules. Daar bestaan verschillende systemen en verpakkingen voor en het exacte aantal geheugencellen in een module is daar dus afhankelijk van. De meest gebruikte verpakking van tegenwoordig heet DIMM (Dual Inline Memory Module) en die heeft 168 aansluitpennen met daarin onder meer het geheugenadres en de 64 bits voor de data. Overigens zal een geheugencontrollerchip nooit maar één bit uitlezen of schrijven: dat gaat altijd met alle 64 bits tegelijk, voornamelijk omdat dat efficiënter is.

Soorten geheugens
Er is natuurlijk een verschil in het soort verpakking, maar dat verandert niets aan de technologie die een geheugencel samenstelt. Daar bestaan namelijk maar twee soorten systemen voor: statische RAM of SRAM en dynamische RAM of DRAM.
SRAM chipDat zijn leuke termen als je bedenkt dat SRAM als enige perfect werkt: als je er data in wegschrijft, blijft die erin staan zolang het geheugensysteem stroom krijgt. DRAM lijkt meer op het geheugen van een dement persoon: wat je erin schrijft, lekt langzaam maar zeker weg totdat het vergeten is. Tot overmaat van ramp wist het lezen van een geheugencel de inhoud ook! Om dat te voorkomen, moet DRAM heel regelmatig ververst worden. Dus sowieso onmiddellijk na iedere cellezing, maar daarbuiten ook vaak genoeg om het weglekken van de data tegen te gaan. Het nadeel van die verversing is natuurlijk dat ze tijd kost. SRAM is veel sneller, maar ook duurder. Tegenwoordig tref je SRAM voornamelijk aan in pc’s als zogenaamde L2-cache: dat is supersnel geheugen dat tussen de processor in je pc en het gewone DRAM-werkgeheugen in zit en als buffer of cache fungeert. L1-cache bestaat ook: die zit in de processorbehuizing zelf ingebakken en is nog veel sneller. Een processor communiceert dus maar met je werkgeheugen via de L1- en L2-cache. Die L1 en L2 staan overigens voor ‘Level 1’ en ‘Level 2’ of het eerste en tweede niveau.

SRAM
Bij statische RAM bestaat iedere geheugencel uit een zogenaamde ‘flip-flop’. Dat is een bijzondere schakeling met vier tot zes transistoren die samen ervoor zorgen dat je een flip-flop op een bepaalde bitwaarde kunt zetten en dat die er dan ook blijft tot je een andere waarde kiest. Vanwege het hogere aantal transistoren en de bijbehorende bedrading is dit type geheugen heel duur om te maken, onder meer ook omdat elke geheugencel minstens vier keer meer plaats nodig heeft dan bij DRAM en je dus minder geheugen kwijt kunt op de standaardmaten van siliciumplaatjes. Omdat je de flip-flop echter op volle elektronische transistorsnelheid kunt bedienen, is de snelheid zeer hoog. We praten hier luttele nanoseconden (nano staat voor één miljardste).



Proefprint met SRAM


DRAM
Bij dynamische RAM bestaat iedere geheugencel uit één transistor en één condensator. Beschouw de transistor als een waterkraan en de condensator als een emmer die je moet vullen met water. Als de emmer voor meer dan de helft gevuld is, beschouwen we die als ‘vol’ en dus ‘1’. Als de emmer voor minder dan de helft vol is, beschouwen we hem als ‘leeg’ en dus ‘0’. Het probleem is dat een dergelijke condensator zijn Verschillende soorten DRAMelektrische lading begint te ‘lekken’, ongeveer alsof onze emmer onderaan een gaatje zou hebben. Een tweede probleem is dat het uitlezen van de lading van de condensator alleen gaat door de lading te verplaatsen naar de lezer: na de lezing is de condensator dus altijd leeg.
Qua tijd hebben deze problemen zware gevolgen. Om een ‘1’-waarde in de geheugencel te krijgen, moet je dus wachten totdat de elektrische lading meer dan de helft van de condensatorcapaciteit gevuld heeft. We praten dan niet meer over transistorsnelheden. Omdat een ‘1’-waarde weglekt en sowieso na lezing verdwijnt, moet die telkens ververst worden. De gemakkelijkste manier is de condensator leeg lezen en onmiddellijk daarna herbeschrijven. De geheugencontrollerchip houdt een teller bij om te weten hoe lang geleden een cel nog gelezen werd. Als die teller een bepaalde waarde overschrijdt, leest hij de cel en herschrijft ze dan. Mocht een geheugencel gelezen worden via een opdracht van de processor, dan vervangt dat natuurlijk een verversing en de geheugencontroller zet dan de teller terug op nul.
Hoe snel kun je nu werken met een DRAM-geheugencel? Dat hangt af van de tijd die je nodig hebt om de geheugencel te lezen en daarna terug weg te schrijven. Mocht de verversing van een geheugencel al bezig zijn als je wil lezen of schrijven, dan moet je wachten tot de verversing afgelopen is. Je snapt het al: in vergelijking met SRAM is dit pokketraag, ruim tientallen malen trager. Bij DRAM mag je denken in termen van meerdere tientallen nanoseconden.

Schema van een DRAM-cel (T=transistor, C=condensator):

CAS-LIJN
/
RAS-LIJN –[ T

–||– AARDE
C


DRAM-modules
Zoals hoger beschreven komt elke geheugencel overeen met één bit en heeft een uniek adres dat bepaald wordt door de kruising van een rij en een kolom. Alleen kunnen we moeilijk al deze adreslijnen voor elke bit afzonderlijk naar buiten voeren, want dan zou onze geheugenmodule miljoenen en miljoenen DRAM modules met 512 Mbits capaciteitaansluitpennen nodig hebben. Daarom groepeert de fabrikant alle geheugencellen die verbonden zijn met eenzelfde rij en eenzelfde kolom in een matrixstructuur. Deze matrices worden dan nogmaals gegroepeerd in geheugenbanken. Een moderne SDRAM-chip heeft vier zulke geheugenbanken en op een SDRAM DIMM vind je acht of zestien chips. Een SDRAM DIMM heeft veertien adreslijnen en een 64-bit datalijn. Een DIMM met acht chips gebruikt 8-bit SDRAM-chips en als je een DIMM ziet met 16 chips dan heeft hij 4-bit SDRAM-chips aan boord.

SDRAM
In de loop der jaren is de industrie met verschillende technologieën op de proppen gekomen om de toegangstijd van DRAM’s te verbeteren. En dat is wel degelijk flink verbeterd. De meest gebruikte technologie van tegenwoordig heet SDRAM en dat staat voor ‘Synchronous Dynamic Random Access Memory’. In feite slaat dat ‘synchroon’ niet op het geheugen zelf, maar op het feit dat het synchroon werkt met de processorklok. De snelheid van SDRAM wordt dan ook niet meer in ns opgegeven, maar in MHz. Zo kun je makkelijker zien met welke werksnelheid van de computer je deze geheugens kunt combineren. Zo kon je een tijdje terug PC133 SDRAM’s kopen: dat betekende dat ze bestemd waren voor systemen met een busfrequentie van 133 MHz (dat is de frequentie waarop de microprocessor met de geheugencontroller babbelt). Aangezien MHz staat voor miljoenen trillingen per seconde, kun je dat omrekenen naar ns: 133 MHz komt dan overeen met een toegangstijd van 7,52 ns. In DDR SDRAM van 256 MBfeite is dat niet de toegangstijd van de geheugenchips: een geheugencontroller moet immers verschillende stappen doorlopen (de zogenaamde ‘access cycles’ of toegangscycli) om aan de data in de geheugencellen te geraken en dat heeft onder meer te maken met die groeperingen. Laten we even een voorbeeld bekijken van een dergelijke geheugenleesoperatie als de microprocessor data vraagt die niet in de L1- of L2-caches voorradig is.

Leeswerk
De cpu moet eerst en vooral een aanvraag sturen naar de chipset (met daarin de geheugencontroller). Dit neemt één klokcyclus in beslag. De chipset zendt nu het rijadres via de 14 adreslijnen naar de juiste DIMM. Dat adres gaat dan naar àlle chips op die DIMM tegelijk. Overigens worden alle rijen met hetzelfde rijadres samen een ‘pagina’ genoemd. Het zenden van een rijadres naar een DIMM noemen we dan ook wel het openen van een pagina in die DIMM. De volgende stap is het lezen van alle geheugenbanken met het juiste rijadres. Deze leesbewerking binnen de geheugenbanken duurt ongeveer twee tot drie klokcycli. Bij een rijadres hoort een kolomadres en dat zorgt er dan voor dat we de juiste cellen aanspreken. Dat duurt nog eens twee tot drie klokcycli. De inhoud van de geheugencellen gaan nu naar de uitvoerbuffer van de DIMM, zodat de chipset ze kan lezen. Dat levert het eerste geheugenwoord van 8 bytes op. Het juiste rijadres zit nog steeds in het systeem, dus de volgende 24 bytes lezen (om tot 32 bytes te komen) gaat vlotter. Een interne teller zorgt ervoor dat de geheugencellen van de volgende kolommen telkens naar buiten gezonden worden. Per klokcyclus wordt op deze manier één woord (8 bytes) naar de uitvoerbuffer van de DIMM gestuurd. Dit heet ook wel ‘burst mode’ (denk aan een uitbarsting van data).



168 pin ecc sdram dimm van 512 MB


De opgegeven snelheid van 266 MHz van bijvoorbeeld PC2100 DIMM slaat dus alleen op de snelheid van de klokcycli waarmee de bovenvermelde stappen gevolgd kunnen worden. Hoe lang duurt het nu echt om de leesoperatie te voltrekken? Laten we even tellen: 1 klokcyclus voor de cpu-aanvraag + 1 klokcyclus voor de communicatie van de geheugencontroller met de DIMM + 2 à 3 klokcycli voor het openen van de pagina + 1 cyclus om de data te versturen + ca. 2 cycli om de data van de DIMM-uitvoerbuffer naar de processor te sturen. Dat wil zeggen dat je een goeie 8 klokcycli nodig hebt om het eerste woord van 8 bytes (64 bits) te lezen.



184 pin PC2100 ddr sdram dimm van 256 MB


Voor de volgende drie woorden heb je telkens één klokcyclus nodig. Bijgevolg heb je ruim 11 klokcycli nodig om één processorwoord van 32 bytes (voor een 32-bit processor) in te lezen. En als je de systeembussnelheid (‘front side bus’ of FSB) van de computer kent, weet je ook hoe lang een klokcyclus duurt. Voor een systeembussnelheid van pakweg 133 MHz zoals je die in moderne pc’s aantreft duurt een klokcyclus 7,52 ns. Een dergelijke pc heeft dus 11*7,52 = 82,72 ns nodig om één woord van 32 bytes in te lezen. De processor in je pc draait echter zelf op een veel hogere snelheid en zal dus tussendoor moeten wachten op de systeembus, want die draait immers een aantal malen trager. Bijgevolg moet je het aantal klokcycli vermenigvuldigen met de vermenigvuldigingsfactor van de processor. Dus als je processor een 8x-type is, moet hij in totaal 11*8 en dus ten minste 88 van zijn klokcycli wachten vooraleer het eerste woord van zijn data beschikbaar is.

Vorig artikelOh Canterwood, oh Canterwood
Volgend artikelVerkoopt als zoete broodjes

5 REACTIES

  1. thanks for the wonderful explanation, now i really understand how the internal memory works

  2. ik heb een packard bell club 1450 en wil graag sd-ram bij steken tot hoeveel kan ik gaan het is wel een pc100

Reacties zijn gesloten.