Computersystemen/Geheugen

Doelstellingen bewerken

Onderstaande doelstellingen komen in meer of mindere mate aan bod. Ze komen uit het leerplan Toegepaste Informatica van de richting informaticabeheer[1]. De cijfers verwijzen naar dit leerplan. De cursieve doelstellingen zijn praktijkoefeningen die aansluiten bij de theorie, maar die in dit Wikibook niet behandeld worden.

  • 1.2.5 De soorten intern geheugen toelichten, onder meer cachegeheugen, werkgeheugen.
  • 1.2.6 De basiswerking van het intern geheugen en de geheugenadressering toelichten.
  • 1.2.7 Het onderscheid tussen (intern) geheugen en permanente gegevensopslag (storage) toelichten.
  • 1.4.3 Actuele types intern geheugen toelichten in functie van hun gebruik.
  • 1.4.6 Aan de hand van technische specificaties diverse uitvoeringen van optionele componenten vergelijken.

Soorten bewerken

Het interne geheugen is een aanduiding voor computergeheugen dat zich op het moederbord bevindt. Traditioneel wordt er voor het interne geheugen een onderscheid gemaakt tussen:

  • ROM-geheugen, bv. BIOS-ROM (voor het bewaren van de startprocedures).
  • RAM-geheugen, toegepast bij bv.:
    • het hoofd- of werkgeheugen;
    • cachegeheugen van een processor;
    • cachegeheugen van een opslagmedium;
    • de CMOS-RAM (voor het bewaren van de BIOS-instellingen).

Het (intern) geheugen (memory) mag niet verward worden met de permanente gegevensopslag (storage). Deze laatste wordt gebruikt voor de opslag van (veel) data (gegevens of programma's) die vaak voor lange tijd bewaard moet kunnen worden. Denk bv. aan een HDD, SSD of SD-kaartje. Dit wordt besproken bij opslagmedia.

Soms blijkt het werkgeheugen te klein te zijn en dan is er nood aan virtueel geheugen. Dit wordt besproken bij de geheugenbeheerder als onderdeel van de functie van een besturingssysteem.

ROM bewerken

ROM is een type van een niet-vluchtig (non-volatile) geheugen. Strikt gezien staat ROM voor read-only memory, maar zoals je merkt aan onderstaande evolutie van ROM is het ‘alleen lezen’ niet altijd meer van toepassing.

  • MROM (Mask ROM) wordt in de chipfabriek van de nodige gegevens voorzien en kan daarna niet meer gewijzigd worden. Dus héél moeilijk te hacken, maar kan dus ook geen updates krijgen (bv. omwille van stabiliteit of veiligheid).
  • EPROM (Erasable Programmable ROM) kan gewist worden met ultraviolet licht, om daarna nieuwe inhoud te voorzien. In de begindagen van BIOS werd deze manier gebruikt voor de BIOS-ROM.
  • EEPROM (Electrically Erasable PROM) kan (delen van) dit geheugen via een elektrische spanning wissen en opnieuw van inhoud voorzien. Dit gaat dus al een stuk gemakkelijker in vgl. met EPROM (zowel voor updates ed., maar helaas ook voor eventuele hackers). Als toepassingen heb je de BIOS EEPROM of het EEPROM geheugen van de Arduino. Het flashgeheugen werkt ook op basis van deze EEPROM-techniek.

RAM bewerken

RAM-geheugen (ook bekend als het geheugen, hoofdgeheugen of werkgeheugen) is random-access memory. Dit wijst op het feit dat de data, zowel lezen als schrijven, in ongeveer dezelfde tijd kan gebeuren, onafhankelijk van de fysieke plaats waar de data staat.[2] Het gaat hier om vluchtig (volatile) geheugen: als de spanning wegvalt, wordt de data “vergeten”. Dat is een duidelijk nadeel, maar het voordeel is dat het een heel snelle geheugenvorm is. Het kan dat het RAM-geheugen te vervangen is of uit te breiden valt (bv. met RAM-latjes of RAM-modules bij desktops, laptops en servers) of dat het vast geïntegreerd is met het systeem (smartphones, videokaart, Raspberry Pi, Arduino, cachegeheugen CPU,...).

Bij sommige systemen zijn er enkele gigabytes ter beschikking (bij de meeste dekstops, laptops en smartphones) en hoef je je geen zorgen te maken om apps te sluiten. Het RAM-geheugen verbruikt vaak sowieso energie en als een applicatie die niet gesloten is terug wordt geopend, dan moet deze vaak van een trager opslagmedium komen (wat energie en tijd kost). Slimme besturingssystemen zullen de software in de achtergrond laten draaien, zelfs als de eindgebruiker deze heeft gesloten. Bij andere toepassingen heeft een afweging in kostprijs, grootte en/of verbruik ervoor gezorgd dat er een stuk minder RAM-geheugen aanwezig is (bv. Raspberry Pi, Arduino). De keuze van besturingssysteem en software wordt dan belangrijk. Ook in gebruik moet men rekening houden om ongebruikte programma's sneller te sluiten.[3]

Er zijn verschillende types van RAM-geheugen, zoals T-RAM, Z-RAM, MRAM[4], NVRAM,… Wij beperken ons tot de twee bekendste: DRAM en SRAM:

  • Dynamic RAM is de eenvoudigste constructie: ze vereist een veel kleinere oppervlakte dan SRAM en is dus goedkoper in productie. DRAM kan slechts enkele milliseconden zijn informatie behouden. Het gevolg hiervan is dat vele malen per seconde een refresh moet gebeuren. DRAM wordt gebruikt voor het werkgeheugen. Verder wordt SDRAM besproken.
  • Static RAM is complexer in opbouw t.o.v. DRAM: ze vereist een grotere oppervlakte en is duurder in productie. SRAM hoeft geen refresh en is bovendien sneller dan DRAM. SRAM wordt gebruikt voor het (duurdere) cachegeheugen. Dit cachegeheugen bevindt zich (fysisch) zeer dicht bij de CPU. Daar het vaak op dezelfde chip als de CPU zit, is het al besproken bij het hoofdstuk van de processor.

Ook de GPU heeft nood aan (video)geheugen:

  • Bij shared graphics memory heeft de grafische chip geen eigen geheugen, maar wordt het hoofdgeheugen gebruikt, dat dan moet gedeeld worden met de CPU en andere componenten.
  • Bij dedicated memory heeft de GPU eigen grafisch geheugen op de chip kan dit uitgevoerd zijn met DDR, VRAM, WRAM, MDRAM, gDDR2-gDDR5,… Merk op dat DDR en gDDR twee verschillende technieken zijn! Dit geheugen is bijna altijd vast geïntegreerd op de videokaart.

SDRAM bewerken

SDRAM (Synchronous DRAM) gaat van DDR SDRAM tot DDR4 SDRAM. In opeenvolgende versies zorgt men niet alleen voor geheugenmodules met grotere capaciteit en hogere snelheid, maar ook het energieverbruik krijgt meer aandacht.

Werking bewerken

 
Logische organisatie van een DRAM-chip

Uit het hoofdstuk van computerbussen weten we al hoe het gegevenstransport tussen het geheugen en de CPU gebeurt. Maar hoe werkt dit binnenin het RAM-geheugen? Hardwarematig bestaan de geheugencellen van de DRAM-chip uit miniscule transistoren die door een bepaalde lading vast te houden informatie kunnen bewaren. Bekijken we het op een logische manier, dan kunnen we dit geheugen bekijken als een geordende tabel met rijen en kolommen. In ieder knooppunt van een rij en een kolom kan 1 informatiebit bewaard worden (0 of 1). Als meerdere bits worden uitgelezen spreekt met over 'woorden'.

Het lezen van een bit gaat ongeveer als volgt te werk.

  1. Via de RW-lijn wordt aangegeven dat er zal worden gelezen (read) i.p.v. geschreven (write).
  2. De helft van het adres wordt op de adresingangen (A) gezet. De RAS-lijn (Row Address Strobe) wordt geactiveerd. De rijadresdecoder (groen, verticaal) decodeert het adres en selecteert een rij uit de matrix (blauw) van geheugenelementen. Deze rij wordt gekopieerd naar de buffer (rood).
  3. De andere helft van het adres op de adresingangen gezet en de CAS-lijn (Column Address Strobe) geactiveerd. De kolomadresdecoder (groen) decodeert het adres. De juiste bit wordt geplaatst op de datalijn.

Specificaties bewerken

Specificaties zoals de capaciteit, de spanning waarop de RAM-module werkt (bv. 1,2 volt) of het aantal aansluitpunten hoeft geen verdere uitleg.

Snelheid bewerken

Er zijn heel wat DDR-generaties, waarvan we van enkele hun kenmerken bekijken:

Standaardnaam I/O bus clock
(MHz)
Data rate
(MT/s)
Modulenaam Peak transfer rate
(MB/s)
DDR2-667C
DDR2-667D
333,33 666,67 PC2-5300 5333,33
DDR3-800 400 800 PC3-6400 6400
DDR3-2133 1066,67 2133,33 PC3-17000 17066,67
DDR4-2400 1200 2400 PC4-19200 19200

De cijfers zijn niet toevallig. Zo is de data rate dubbel zo groot als de I/O bus clock, omdat het hier gaat over DDR (zie basiskennis informatica > snelheid > transfers). Als je de data rate vermenigvuldigt met 64 bit (want de bus is zo breed) en deelt door 8 (8 bits is 1 byte), dan bekom je de peak transfer rate. Je merkt dat in de standaardnaam de data rate vermeld is en de peak transfer rate in de modulenaam.

data rate = 2 * (IO bus clock)
peak transfer rate = data rate * (64/8)

Multi-channel memory architecture[5] bewerken

 

Wat betekent precies dual, triple of quadchannel geheugen? We weten al dat de communicatie tussen geheugen en processor gebeurt via de databus. Standaard is die bus 64 bit breed, wat betekent dat er 64 “draden” zijn. In de geschiedenis van de computer bleef de processorsnelheid maar toenemen, waarbij de geheugentechnologie dit niet kon bijbenen. Vandaar heeft men dual channel bedacht: de technologie van de geheugenmodules bleef quasi hetzelfde, maar het aantal “draden” werd verdubbeld. Hierdoor verdubbelt ook de beschikbare bandbreedte. De bus wordt dan 128 bits breed.

Het verhaal stopt hier niet, daar de geheugenmodules nog steeds 64 bit hardware blijft. Willen we dus kunnen gebruikmaken van deze dubbele bandbreedte, dan moeten we twee identieke geheugenmodules gebruiken.

Hoe kan je deze techniek beschikbaar maken, bv. bij een moederbord met dual channel en 4 RAM slots:

  • Het moederbord moet dual channel ondersteunen (meer specifiek de geheugencontroller van het moederbord).
  • Je moet twee of vier geheugenmodules hebben. Per paar moeten ze identiek (type en capaciteit) zijn aan elkaar.
  • Het paar kan je niet willekeurig installeren: je moet de handleiding nalezen hoe je ze moet installeren. Heel vaak wordt dit met kleuren aangegeven.

Bij het voorbeeld uit de afbeelding:

  • Vier identieke RAM-modules van elk 2 GB kan je om het even waar installeren.
  • Bij twee identieke RAM-modules van 2 GB en twee identieke van 1 GB, zullen deze van 2 GB in het eerste en derde slot moeten en de andere in de overige slots.
  • Eén module van 8 GB zal een even grote capaciteit hebben als in het eerste voorbeeld, maar deze setup zal zonder dual channel werken. Dit betekent dat er 64 bits per klokcyclus verwerkt zullen worden.
  • Als je twee identieke RAM-modules van 4 GB in de eerste twee slots stop, zal je een totale capaciteit hebben van 8 GB, maar zonder dual channel.

Drie belangrijke opmerkingen:

  • Dual channel is geen synoniem voor DDR=double data rate (zie basiskennis informatica > snelheid > transfers)! DDR ed. heeft te maken met hoe men het kloksignaal gebruikt.
  • De verdubbeling bij bv. dual channel is enkel een theoretische verdubbeling op het geheugendeelsysteem. Het gebruik van dual channel betekent dus zeker geen verdubbeling van de snelheid van het volledige systeem! Als een bakker een machine aanschaft die dubbel zo snel kan kneden, zal het brood niet dubbel zo snel klaar zijn, omdat o.a. de oven nog dezelfde is.
  • Dit is een technologie die geïmplementeerd wordt op het moederbord, waarbij dus de techniek van geheugenmodules hetzelfde blijft, of ze nu werken in single channel of in multi channel modus.

Bij triple en quad-channel archituren is het verhaal gelijklopend. In de handleiding van het moederbord vind je vaak de aangeraden (recommended) manier terug om de modules te installeren, zodat je de best mogelijke prestaties haalt.

Bouwvorm bewerken

De geheugenmodules zijn DIMM-modules (dual in-line memory modules): de naam verwijst naar het feit dat er aan beide zijden aansluitpunten zijn. Voor laptops is er SO-DIMM, een kleiner alternatief (small outline).

Timings bewerken

Bij de specificaties vind je vaak timings terug, bv. CL15 15-15-29. Ter info geven we mee wat deze concreet betekenen:

  • CAS Latency (CL) 15
  • RAS-to-CAS-Delay (tRCD) 15
  • RAS-Precharge-Time (tRP) 15
  • Row-Active-Time (tRAS) 29

Het belangrijkste is dat je weet deze deze het aantal kloktikken illustreren i.v.m. vertragingen (latencies) die de snelheid van het RAM-geheugen bepalen. Hoe lager deze waarden, hoe beter de prestatie. Zo zit er een zekere tijd tussen het zenden van het kolomadres en het ontvangen van de data (bepaald door de CAS latency). Precharge heeft dan weer te maken met het refresh-circuit. Bij sommige geheugenmodules kan je deze timings lager zetten en daarmee het geheugen overklokken. Daardoor kan het wel zijn dat je systeem minder stabiel wordt!

ECC bewerken

ECC-geheugen (Error-correcting code memory) is een type RAM die de meeste bitfouten kan ontdekken en corrigeren om zo internal data corruption tegen te gaan. ECC-geheugenchips worden speciaal gemaakt voor wetenschappelijke of financiële computers: daar wil je zeker niet dat je iets opslaat in het RAM-geheugen, om dan iets anders terug te lezen. Bij consumentencomputers vind je ze meestal niet terug.

Aansluiten en testen bewerken

 
 
Memtest

Het RAM-geheugen kan rechtstreeks geïntegreerd zijn op het moederbord of in een chip, waardoor je deze niet kan vervangen. In het geval van een desktop, server of laptop kan je dit bijna altijd wél doen. Het vraagt wel wat voorbereiding:

  • De handleiding is een belangrijke bron van informatie.
    • Zoek welke types jouw moederbord ondersteunt. Vaak zijn de hoofdversies compatibel met elkaar, maar als je ze samen gebruikt, kan het zijn dat er teruggeklokt wordt naar de traagste. Zo kan je bv. een setup hebben met een DDR3-1600 geheugenmodule en een vrij RAM-slot. Als je het systeem uitbreidt met een DDR3-800 geheugenmodule heb je wel een toegenomen capaciteit, maar kan de snelheid (drastisch) afnemen als je moederbord terugklokt naar de traagste geheugenmodule. DDR2 en DDR3 geheugenmodules zijn onderling niet compatibel.
    • Zoek de totale maximumcapaciteit dat het moederbord ondersteunt. Er kan ook een beperking zijn van maximumcapaciteit per RAM-module.
    • Controleer in de handleiding waar je welke RAM-modules moet plaatsen op optimaal gebruik te maken van een eventuele multi-channel memory architecture. Vaak kan je afgaan op het kleur, maar lees toch best de handleiding na. Heb je bv. 4 RAM-slots en 4 identieke RAM-modules, dan maakt het uiteraard niet uit.
  • Onderzoek wat jouw concrete mogelijkheden zijn.
    • Als er geen vrije RAM-slots zijn zal je één of meerdere bestaande RAM-modules moet opofferen om extra capaciteit te hebben. Hopelijk kan je deze ergens anders gebruiken of vind je er een tweedehands markt voor.
    • Het kan te overwegen zijn om bestaande RAM-modules te vervangen door een compatibele, maar snellere module. Verwacht hier echter geen wonderen van, want de vermelde snelheden zijn altijd theoretisch en bovendien wordt de snelheid ook door andere componenten van het systeem bepaald.
    • Compatibele modules kan je in principe door elkaar gebruiken, maar als je de keuze hebt is het beter om hetzelfde type, capaciteit en van dezelfde fabrikant te nemen.
  • Let goed op bij het aansluiten
    • Zorg ervoor dat de (vaak witte of zwarte) vastzetpunten naar buiten gekanteld zijn.
    • Bekijk de inkepingen in de RAM-modules en stem dit overeen met de RAM-slots. Lijkt het niet te passen? Dan heb je een RAM-module vast dat zeker niet compatibel is
    • Voor het vaszetten van de RAM-module moet je enige druk uitoefenen. Vaak zullen de aansluitpunten vanzelf de RAM-module vaszetten, maar eventueel moet je ze extra vastklikken, om zeker te zijn.

Problemen met de pc kunnen soms te wijten zijn aan het RAM-geheugen. Het kan dat dit duidelijk wordt gemaakt door beep-geluiden (verkeerde RAM, slechte RAM,...). Het kan ook subtieler zijn dan dat. Als je pc willekeurig lijkt te crashen, dan kan dat zijn dat een programma in een slecht werkende RAM-chip wordt geladen. Wil je RAM-geheugen testen, dan kan dat met Memtest86+. Doorheen de jaren kan stof of trillingen zorgen dat het contact niet meer zo goed is. Het verwijderen van stof en de modules opnieuw vastzetten kan een probleem oplossen.

  1. Meer informatie op leerplan D/2015/7841/003
  2. Een veel uitgebreidere uitleg staat in het artikel 'How RAM Works'.
  3. Zie bv. het uitgebreide artikel 'Memories of an Arduino' die de verschillende geheugenvormen van Arduino bespreekt.
  4. Zie bv. het Tweakers.net-artikel 'Meer dan 20 techbedrijven richten zich gezamenlijk op mram-ontwikkeling' uit 2013 dat het heeft over meer dan 20 techbedrijven die zich richten op MRAM-ontwikkeling.
  5. Bron: Hardware Secrets, met Everything You Need to Know About the Dual-, Triple-, and Quad-Channel Memory Architectures. Het Tweakers.net-artikel Laptopgeheugen: Het verschil tussen single- en dualchannel is ook interessant
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.