Basiscomponenten

Laten we even beginnen bij het begin, een digitale computer is een machine die problemen voor mensen kan oplossen door opgegeven instructies uit te voeren. Natuurlijk worden computersystemen de dag van vandaag voor veel meer dan dat gebruikt, denk maar aan bestandsopslag in de cloud, foto's delen met anderen via allerhande kanalen, verspreiden van fake news, enzovoort.

Laten we dus voorlopig even alle fancy stuff achterwege. Als jullie willen weten hoe en waarom computers doen wat ze doen, moeten we het eerst hebben over interne werking en apparatuur. In de volgende hoofdstukken komt verscheidene randapparatuur aan bod en op het einde van de hardwaresecties sluiten we af met een overzicht van enkele veelgebruikte interfaces.

Throwback!

Even terug in de tijd want computers zijn, in tegenstelling tot de mensheid in het scheppingsverhaal, zomaar uit de lucht komen vallen. Nee, daar gaat een lange periode aan vooraf waarbij vele kleine progressies uiteindelijk leiden tot de hardware die we op vandaag kennen.

Maar, wat is er nu dusdanig belangrijk om hier te vermelden? Aangezien de computer een machine is die instructies kan uitvoeren, en instructies gelijk staan aan mathematische functies, waar anders dan te starten met de allereerste rekenmachine?

De allereerste rekenmachine dateert uit het jaar 1642, want toen bouwde de Franse wetenschapper Blaise Pascal een mechanische rekenmachine die kon optellen en aftrekken. Het apparaat was bedoeld om z'n vader, die belastingsinner was, te helpen. Deze machine werd 30 jaar later verder uitgebreid met vermenigvuldigen en delen door de duitser Von Leibniz (zie onderstaande met de hand aangezwengelde machanische calculator).

vonleibniz

Daarna is het wachten geblazen, zo'n 150 jaar, totdat meneer Charles Babbage de Analytical Engine bouwde in 1834. Deze machine is de eerste echte voorloper van wat we op vandaag kennen als een 'computer'. Deze machine bestond uit vier onderdelen:

  • geheugen (memory)
  • loopwerk (berekeningseenheid)
  • invoer (ponskaarten)
  • uitvoer (geponste of gedrukte uitvoer)

Waarbij de berekingseenheid wiskunde operaties uitvoert op basis van de invoer, eventuele tussenberekingen in het geheugen kwijtkan, en het eindresultaat (na x aantal berekeningen) naar de uitvoer wordt gebracht. Deze vier delen vind je op vandaag in heel wat toestellen nog steeds terug want hoe dacht je dat dat bakje in je broekzak nu juist werkt? Oja, laat dit dus een heel belangrijk item zijn.

Terug naar de heer Babbage. Top idee maar in de 19e eeuw was het niet mogelijk om alle mechanische onderdelen perfect te krijgen waardoor zijn machine uiteindelijk nooit gewerkt heeft. Toch kunnen we dit als allereerste voorloper van de hedendaagse machines beschouwen.

babbage

Daarna zijn er nog verschillende pogingen geweest, waaronder pure relaiscomputers (relais = schakelaar = 0 of 1 = binair), maar die zijn in snelheid gepakt door het elektronische tijdperk. De trigger hiervoor was Wereldoorlog II. De Duitsers hielden toen lelijk huis overal ter wereld met hun duikboten (U-boot) en de Amerikanen hadden het plan de transmissies (gecodeerde berichten) van de Duitsers te onderscheppen. Ze bouwden hiervoor van 1943 tot 1946 aan de ENIAC (Electronic Numerical Intergrator And Computer) die spijtig genoeg net te laat kwam (1946). Het was de allereerste elektronische computer die het daglicht had gezien!

De ENIAC was opgebouwd uit 18.000 vacuumbuizen en 1500 relais, woog 30 ton en verbruikte 140kW (ter vergelijking: een normale boormachine verbruikt ongeveer 2000W of 2kW). De machine zelf kon 20 getallen opslaan van ongeveer 10 decimale cijfers. Om dit gevaarte te programmeren moest men zo'n 6000 schakelaars goedzetten!

eniac

Vanaf toen ging alles in sneltempo, net zoals dat in alle technologische branches zo werd. In 1948 werd de eerste transistor (contactloze schakelaar/relais = 0 of 1 = binair) ontworpen, wat aanleiding gaf in 1955 voor een nieuwe machine op basis van transistoren in plaats van vacuumbuizen. De PDP-1 kon 4096 woorden opslaan en 200.000 berekeningen per seconde kon doen. Deze machines werden toen verkocht voor een slordige $120.000 (omgerekend op vandaag $1.146.680,60 of €1.021.497,48). Hetzelfde principe werd gehanteerd tot midden jaren 60 van de vorige eeuw. Op onderstaande afbeelding is te zien hoe deze computer al in een (normaal) lokaal past en er ondertussen ook reeds een (basis)scherm en toetsenbord aan gekoppeld konden worden.

transistor1

pdp1

In 1964 slaagde men erin om meerdere (enkele tientallen) transistoren op één geïntegreerd circuit (IC - Integrated Circuit) te plaatsen. Op die manier werden de computers kleiner, sneller en goedkoper en wie profiteert daar nu niet van? De volgende 15 jaar volgen de kleine aanpassingen elkaar op maar uiteindelijk bleef de binnenkant ongeveer hetzelfde.

En dan, in 1980 kwam men op de proppen met VLSI (Very Large Scale Integration). VLSI heeft als grote voordeel dat er nu honderdduizenden, tot zelfs enkele miljoenen en miljarden, transistoren op één enkele chip geplaatst kunnen worden. Tot zover waren de meeste computers weggelegd voor grote bedrijven en educatieve instituten zoals MIT en als je de grootte bekijkt van de PDP-1 versta je vast wel waarom. Met de doorbraak van VLSI werd het nu voor de thuisgebruiker ook mogelijk om een computer aan te schaffen. Dit is nog een zeer groot kantelpunt in de evolutie van de computersystemen: de personal computer (PC) was geboren.

Sinds dan stijgt het aantal transistoren op dezelfde oppervlakte in sneltempo. Dit komt omdat de grootte van de transistoren zelf kleiner en kleiner wordt. Het blijkt zelfs dat daar een wetmatigheid aan gekoppeld kan worden, beter bekend als de Wet van Moore. Op de eerste figuur die je de evolutie van de grootte van de transistor ten opzichte van de tweede afbeelding, wat dan weer de snelheid van machines aantoont (een verdubbeling elke twee jaar). Op deze laatste zie je ook mooi de verschillende stadia in de evolutie van de computer (mechanisch, buizen, transistoren, geïntegreerde circuits).

wetvmoore1

wetvmoore2

Maar laten we wel nog steeds duidelijk zijn. De computer, en enig ander apparaat op vandaag maakt nog steeds gebruik van het invoer/uitvoer, geheugen en een berekeningsmodule die wiskundige operaties uitvoert. Dat is niet gewijzigd sinds 1834, al doen we dit nu wel heel wat sneller en kunnen we dat ook op een veel kleinere schaal. Misschien ooit wel met quantumcomputing ...

quantum

Moederbord

Wacht even! Je vertelde net dat de processor (rekeneenheid), het geheugen en de in- en uitvoer de belangrijkste elementen waren en je begint over een moederbord? Jazeker, het moederbord is de link in vele apparaten tussen (minstens) die drie elementen, daarom krijgt het moederbord in dit overzicht toch nog de prioriteit over deze andere basiscomponenten. Het moederbord koppelt niet alleen het geheugen en de processor aan elkaar maar zorgt ook voor de connectie van bijvoorbeeld USB poorten, harde schijven, uitgangen voor video en audio en nog zoveel meer met het systeem.

Laten we beginnen met te kijken welke vorm een moederbord nu exact heeft. Op zich levert elk moederbord voornamelijk dezelfde taken maar waar een moederbord vooral voor gekozen wordt, is de vorm. Ik kan jullie op een presenteerblaadje meegeven dat een moederbord van een PC niet zal passen in een smartphone. Omgekeerd kan dat wel maar waarom zou je? Het grotere moederbord is dan meestal weer veel krachtiger en heeft meer uitbreidingsmogelijkheden (usb poorten, audio, grafische capaciteiten, enz.). Deze eigenschap heet men de vormfactor van een moederbord en bepaalt over het algemeen ook de grootte van het computersysteem dat er rond gebouwd wordt.

De meeste vormen voor PC's zijn industrie standaarden waar fabrikanten zich toch min of meer aan houden. Zo kan een moederbord van ASUS bij kapot gaan vervangen worden door ééntje van Gigabyte, daar de bevestigingspunten hetzelfde zijn. Op onderstaande afbeelding zie je de courantste modellen en hun groottes ten opzichte van elkaar. Je kan ook zien dat het soms ook mogelijk is om een kleiner moederbord te gebruiken op een bestaande configuratie omdat ze ook nog dezelfde bevestigingspunten hebben. Voor meer informatie over de ATX standaarden (vanaf 1995) kan je op https://en.wikipedia.org/wiki/ATX terecht.

Form Factor Moederbord.

Je begrijpt nu vast wel waarom er hele grote Personal Computers of PC's bestaan en dat er ook kleintjes (thin clients) op de markt zijn, afhankelijk van hun grootte zal er al dan niet een andere vormfactor van moederbord aanwezig zijn. Zo is het moederbord van een gewone PC, een thin client, een RaspberryPi en een iPhone volledig verschillend, doch hebben ze dezelfde functie. Bij hetzelfde soort apparaten, bijvoorbeeld smartphones, zul je wel veel gelijkenissen vinden.

Moederbord PCThin Client
PCThin Client
Raspberry PiiPhone
RaspberryPiiPhone

Hou daarnaast nog rekening met op maat gemaakte moederborden. Niet elk apparaat dat gemaakt wordt kan zomaar gebruikmaken van standaard moederborden. Bij gewone PC's lukt dat nog, maar wat doe je bij een digitale bloeddrukmeter, of een slimme schakelaar, of neem nu nog maar een smartphone? Daar moet voor elk model, laat staan elke vorm, een specifiek moederbord gemaakt worden om alle elektronische componenten (camera, microfoon, speaker, usb connector, scherm of andere sensoren) correct te plaatsen en met elkaar te verbinden.

Elk moederbord dat gekocht kan worden op de markt heeft een lijst van specificaties die de aankoper of de gebruiker vertelt tot wat het moederbord in kwestie in staat is. Belangrijkste zaken daarbij zijn:

  • Processor socket
  • Chipset
  • Interfaces
  • Geheugenmodules

Meer informatie over deze specificaties en de link met andere hardware komt aan bod in volgende hoofstukken en in een labo-opdracht.

Processor

En dan komen we nu toch aan bij de processor, het hart van je computersysteem. De processor verwerkt alle instructies dat het krijgt op hardwareniveau. Dat wil zeggen dat als jij op je PC een handeling doet (bijvoorbeeld het opslaan van een bestand), dat eerst vertaald wordt door de software in instructies die begrijpbaar zijn voor de processor. De processor handelt al deze instructies (soms wel een paar 1000 voor slechts één actie) af na elkaar. Afhankelijk van hoe snel je processor deze instructies kan afwerken, bepaalt dat voornamelijk de snelheid van je computersysteem (of apparaat). Naast deze korte omschrijving is de processor ook een stukje hardware waar mogelijke klanten naar kijken bij het kopen van een nieuwe laptop, PC of smartphone. Op dat moment vliegen de benamingen rond je hoofd: Intel i3, i7, AMD Athlon, AMD A-series, Apple A9, ARM, ... Zou het niet leuker zijn als je zou weten naar wat je aan het kijken bent?

Intel Core i5 Processorbehuizing.

De processor in bovenstaande afbeelding ziet er aan de buitenkant uit gelijk de meeste andere processoren die voorkomen in PC systemen. Bovenaan is er niets en deze zijde hangt meestal tegen een koelelement aan (omdat processoren vrij warm kunnen worden door het Joule effect, zie lessen elektriciteit). Onderaan zijn er een aantal connecties. Hoeveel dat er zijn, en hoe ze eruit zien (pootjes of pads) hangt af van de socket op het moederbord. De socket is de plaats waar de processor geplaatst wordt. Veelal wordt een moederbord gemaakt op basis van de specificaties van een bepaalde processorreeks (bv van Intel of AMD). Als we kijken naar de specificaties van bijvoorbeeld een Intel i5 8600T dan zien we bij één van de specificaties het volgende:

SocketSocket FCLGA1151

Dan wil dat zeggen dat deze processor enkel maar past op een socket FCLGA1151. Deze specificatie moet dan ook terug te vinden zijn bij de specificaties van het gebruikte moederbord of je nieuw aangekochte processor zal niet passen in de socket die daar voorzien werd. Het is dus best om ofwel een volledig pakket moederbord + processor aan te schaffen of eerst de specificaties van het moederbord te bekijken zodat je naar de juiste processor op zoek kan gaan. Je kan ook de omgekeerde weg nemen en de processor aanschaffen, en daarna een moederbord aankopen met de juiste socket.

Niet alle processoren zien eruit als op voorgaande afbeelding. Vroegere versies (slotted) werden in een open slot op het moederbord geplaatst, hoewel deze niet veel meer voorkomen.

Slotted processor.

Een andere variant die vandaag wel meer en meer voorkomt (smartphones, embedded systems) zijn embedded processoren (ARMv7), te zien op onderstaande afbeelding. Embedded processoren zijn rechtstreeks gesoldeerd op het moederbord en kunnen maar moeilijk vervangen worden (wat de huidige wegwerpmaatschappij en die fabrikanten ten goede komt natuurlijk).

Embedded processor.

De processor zelf wordt ook wel eens CPU genoemd, ofwel Central Processing Unit, en vormt het brein van de computer. De functie van de processor is het uitvoeren van programma's die in het hoofdgeheugen (zie later) staan door de instructies van dat programma op te halen, te analyseren en uit te voeren.

De processor bestaat uit een aantal afzonderlijke delen. Vooreerst is er de Besturingseenheid, die verantwoordelijk is voor het ophalen van instructies uit het hoofdgeheugen. Daarnaast is er de ALU (Arithmetische Logische Eenheid of Unit) die operaties uitvoert (optellen, vermenigvuldigen, logische AND, ...). Het laatste onderdeel is het (supersnelle!) register, dat tussenresultaten en besturingsinformatie kan opslaan. Deze onderverdeling kan je in onderstaande afbeelding zien.

CPU interne werking.

De processor werkt alle instructies af met behulp van de Von Neumann cyclus. Deze cyclus wordt ook wel eens de fetch-decode-execute cyclus (haal-decodeer-uitvoer) genoemd omdat deze cyclus tot in de oneindigheid herhaald wordt.

Von Neumann Cyclus.

Om alles nu eens bij elkaar te zetten krijgen we deze afbeelding:

Rekenmachine Von Leibniz - 1672

Een programma bevat een lijst van instructies die afgewerkt horen te worden door de processor. De Von Neumann cyclus gaat de instructie ophalen uit het werkgeheugen (RAM) die op dat moment verwerkt moet worden (beslist door de besturingseenheid). Wanneer blijkt dat het gaat over een optelling van twee getallen (hou er rekening mee dat alles hier binair is!!) worden die getallen eerst opgehaald in het werkgeheugen en in het register van de CPU geplaatst. De volgende stap is dan voor de ALU (bewerkingen die vertaald/gedecodeerd worden) om die beide getallen (binair) te gaan optellen. Daarna wordt het resultaat teruggeschreven naar de registers. De besturingseenheid zal indien nodig deze uitkomst terugsturen naar het werkgeheugen. Op dit moment is er één Von Neumann cyclus afgewerkt. Deze cyclus herhaalt zich dan zolang het programma loopt (een besturingssysteem is ook een combinatie van programma's, dus quasi oneindig).

Hoeveel verschillende instructies kan een processor afwerken? Het soort, en het aantal verschillende instructies (optellen, delen, machten, wortels, ...) dat een processor kan uitvoeren staat vast (by design, de binnenkant van een processor kan niets nieuws leren) en alles wat de processor kan uitvoeren is daarop gebaseerd. Dit noemt men de instructieset van een processor.

In het begin hadden processoren een kleine instructieset (zo was de instructieset van de machine van Von Leibniz gelimiteerd tot optellen, aftrekken, vermenigvuldigen en delen), zijnde het aantal verschillende functies de processor kon uitvoeren. De drang naar snellere processoren heeft ervoor gezord dat er nood was aan complexere en gewoon meer instructies.

Tot zover weten we dus dat de processor (met zijn interne componenten) instructies uitvoert in de volgorde van één of meerdere Von-Neumann cycli. De vraag is nu nog hoe snel we dat kunnen doen. Wel, daarvoor gebruiken we een kloksignaal. Een instructie kan afgewerkt worden in slechts één klokssignaal, of in meerdere. Dit kloksignaal is een standvaste wijziging van een laag elektrisch signaal naar een hoog elektrisch signaal en vice versa.

Kloksignaal.

Sommige processoren zullen enkel werken op de wijziging van laag naar hoog, of van hoog naar laag, of beide (verdubbelen snelheid). Bij de verkoop van hedendaagse computers staat die kloksnelheid veelal meegegeven. Zo kan de processorsnelheid gelijk zijn aan 2,3GHz/s, dat wil zeggen dat de processor 2,3 miljard keer per seconde een deel van een instructie kan afwerken. Stel dat een instructie 8 klokslagen nodig heeft dan zou de processor die instructie 287 miljoen keer per seconde kunnen uitvoeren. Een processor is dus waanzinnig snel, al lijkt dat soms tegen te vallen wanneer je een computersysteem gebruikt. Het is dus de bedoeling om die verwerkingssnelheid van processoren zo hoog mogelijk te krijgen. Hoe meer instructies (simpel of complex) de processor kan uitvoeren in een kleinere tijd, hoe sneller de processor (en tevens de computer) wordt.

Eén enkele processor kan in snelheid (kloksignaal hoger maken) opgedreven worden maar daar komt men ondertussen tegen de limiet aan te zitten. Om de processoren toch sneller te maken bestaat er ook zoiets als multi-core en multi-cpu. Beide hebben ze er belang bij om parallelisme toe te laten, zodat twee of meer instructies op hetzelfde moment, en dus sneller in de tijd, afgehandeld kunnen worden.

Onderstaande oplijsting geeft een overzicht van deze drie vormen.

  • Multi-CPU is zoals het woord zelf zegt, meerdere fysische CPU's binnen een computersysteem. Elke CPU bevat een ALU en krijgt z'n eigen instructie te verwerken, waardoor meerdere instructies tegelijkertijd afgehandeld kunnen worden.

    Multi-CPU.

  • Multi-Core lijkt daar heel sterk op maar in dit geval zijn de verschillende ALU's gesitueerd in dezelfde behuizing. Registers en cache worden hier gedeeld door de verschillende ALU terwijl dat dit voor multi-cpu ook in meervoud bestaat. Elke ALU binnen zo'n CPU noemt men een core. Op vandaag kent men de begrippen dual core, quad core, octa core en multicore.

    Multi-core.

Het laatste item waar we iets dienen te vertellen bij processoren is de bitlengte waarmee zo'n processor werkt. In essentie is dit niet meer en niet minder dan de hoeveelheid data die per klokcyclus verstuurd kan worden. Bij een 32-bit processor kunnen er 32 bits per klokcyclus verstuurd worden. Niet geheel onlogisch is dat bij een 64-bit processor dus 64 bits. Velen onder jullie kennen waarschijnlijk wel deze benamingen. En daarbij weten jullie ook dat jullie eigen processor op vandaag waarschijnlijk wel een 64-bit architectuur heeft, maar kennen jullie ook 8,12 of 16-bit? Ja, de eerste 'processoren' werkten soms maar op basis van een 8-bit architectuur (vb. intel 8080, 1974).

Intel 8080.

Het belangrijkste om hierover te weten is dat de kernel (zie verder bij software) en de software (veelal het besturingssysteem) die geschreven wordt voor een 32-bit of een 64-bit systeem dus anders is. Men moet hierbij vooral rekening houden met de maximale lengte van de data bij het uitvoeren van instructies en commando's. Dit is de voornaamste reden dat je op een 32-bit systeem geen 64-bit software kan gebruiken. De kernel weet niet wat hij met een 64-bit woord moet doen, en kan het meer dan waarschijnlijk ook niet helemaal lezen. Omgekeerd lukt natuurlijk wel, de overige plaatsen worden opgevuld zodat dezelfde waarde in 64-bit verschijnt als dat het geval zou zijn in een 32-bit systeem.

32vs64

Geheugen

En dan is het nu tijd om de tweede belangrijke component onder handen te nemen. In het geheugen, of beter bekend als werkgeheugen, zit alle informatie van het besturingssysteem dat op dat moment nodig is om het draaiende te houden (programma's waaruit het besturingssysteem opgebouwd is, evenals achtergrondprogramma's en gebruikersprogramma's). Het is belangrijk om weten dat het geheugen zeer snel gelezen moet kunnen worden door de processor. De reden daarvoor is dat alles dat gebeurt (wat je ziet op het scherm) eerst door de processor opgehaald moet worden, verwerkt moet worden, en het uiteindelijke restultaat teruggestuurd moet worden naar datzelfde geheugen (meerdere Von Neumann cycli). Het is daarom ten zeerste aangeraden om de programma's en bijhorende instructies ergens dichtbij en snel bereikbaar te hebben om ze ook snel te kunnen uitvoeren. Daarvoor ligt binnen een computersysteem het geheugen eerst en vooral dichtbij de processor en is er een snelle verbinding (bus - zie hoofdstuk 3.4) tussen de processor en het hoofdgeheugen (RAM geheugen).

Geheugens bevatten programma's en documenten (maar ook niet enkel dat) in de vorm van digitale data, zijnde een digitale 0 of digitale 1. Elk van deze bits moet dus ergens fysiek bijgehouden worden. Je begrijpt vast wel dat wanneer we meer programma's, en data, snel moeten kunnen aanspreken dat we ooit wel op de limiet komen. Ongetwijfeld zullen de termen 4GB RAM, 8GB RAM en 16GB RAM jullie wel iets zeggen... maar waarom is dat nu juist?

Wel, telkens je een programma opent (set van instructies) moet daarvoor plaats voorzien worden in het snelle hoofdgeheugen dat nauw samenwerkt met de processor. Het programma zelf wordt ingeladen vanaf een andere mediadrager, bijvoorbeeld de harde schijf of een USBstick. Eens het programma geladen is worden instructies naar de processor gestuurd.

Zolang een programma in gebruik is of een document openstaat wordt dat stukje geheugen bezet en is er geen plaats voor iets ander. Enkel wanneer een programma of document afgesloten wordt kan er plaats vrijkomen voor iets anders. Dit is het fenomeen dat men merkt bij het traag werken van de computer. Op dat moment is er geen vrije plaats meer op het geheugen om nog iets extra te openen of uit te voeren. De snelste manier om dan iets te doen is om iets anders af te sluiten. Je ziet nu snel dat hoe groter het geheugen is, hoe minder snel je tegen die limiet gaat aanlopen.

Geheugens zijn er ook al bij sinds het begin van de computers. In hoofdstuk 2 zagen we dat de PDP-1 machine 4096 woorden kon opslaan. Op vandaag is dat een héél pak meer. Het bewijst enkel dat de evolutie op dit vlak ook niet stilgestaan heeft. Er zijn in de loop der tijd verschillende geheugens ontwikkeld, elk heeft zijn voordelen bij verschillende toepassingen.

Een eerste onderverdeling kunnen we maken als volgt:

  • RAM: Random Access Memory
  • ROM: Read Only Memory

Een verdere beschrijving van deze twee types komt in volgende subsecties aan bod.

RAM

RAM of Random Access Memory is geheugen dat gelezen en geschreven kan worden. Het maakt ook niet uit hoeveel keer dit gebeurt. Grote nadeel aan RAM geheugen is het feit dat de data vluchtig is, met andere woorden dat als de stroom uitvalt de data ook verdwijnt, een fenomeen jullie waarschijnlijk wel al eens aan der lijve ondervonden hebben.

Binnen deze strekking van vluchtig geheugen kunnen we nog een opdeling doen:

  • SRAM: Static RAM
    Snel en zeer betrouwbaar RAM. Is wel te duur om in grote getallen te gebruiken binnen een computersysteem en wordt voornamelijk gebruikt voor L1 en L2 caches (zie verder).

  • DRAM: Dynamic RAM
    Minder duur, snel genoeg maar minder betrouwbaar dan SRAM. Ideaal om dit te gebruiken als hoofdgeheugen aangezien we daar (veel) meer van nodig hebben. Bij defect gaan van een geheugenmodule is het dan ook relatief goedkoop (en zelf, behalve bij embedded systemen) te herstellen.

DRAM is het best bekend onder de benaming die we allemaal gebruiken bij de aanschaf van een computersysteem, het RAM. Elke computer voor thuisgebruik maakt gebruik van dit type. Woorden zoals DDR2, DDR3 en DDR4 zullen misschien wel bekend klinken. Voor de gamers onder jullie zal GDDR4 en GDDR5 ook wel een belletje doen rinkelen.

De nummers zijn zoals gedacht nieuwere versies van het originele DRAM. Midden jaren 90 van vorige eeuw gebruikte men SDRAM (Synchronous of Single Data Rate RAM). Het RAM werkte op een bepaalde klokfrequentie maar enkel op de positieve flank van dat kloksignaal (100 - 166 MHz). Op elke positieve flank kan data verstuurd of ontvangen worden.

SDRAM werd snel voorbijgestoken door DDR RAM (Double Data Rate RAM) omstreeks het jaar 2002. Het woord zegt het zelf, double data rate, verdubbelen van de werksnelheid door ook gebruik te maken van de negatieve flank van het kloksignaal om data te versturen of te ontvangen.

De volgende versies (2, 3 en 4) zijn evoluties van het originele DDR RAM. Ze zorgen, samen met een hogere kloksnelheid, voor een verlaagde energieconsumptie, doch snellere dataoverdracht. Een vergelijkend overzicht kan je vinden in afbeelding 3.14. Let vooral op de stijgende kloksnelheid en de stijgende transfersnelheid. In de specificaties van het moederbord staat ook welke versie, met welke kloksnelheid, van RAM geheugen er verwacht wordt.

DDR Vergelijking.

Een RAM module is (meestal) een rechthoekig groen latje met zwarte IC's op. Die zwarte IC's zijn geheugenmodules. Als er 8 geheugenmodules van 64MB aanwezig zijn op zo'n latje dan is dat een totaal geheugen van 512MB. Meerdere van die latjes samen zorgt dan bijvoorbeeld voor 2GB (de dag van vandaag niet meer voldoende om Windows op te starten). De RAM latjes worden in memory slots op het moederbord geplaatst:

RAM latje op moederbord.

DDR RAM bestaat in meerdere vormen waarvan de twee meest gebruikte DIMM en SODIMM zijn. DIMM wordt in de grotere computersystemen gebruikt. SODIMM (Small Outline DIMM) is iets kleiner en is voornamelijk in laptops terug te vinden. In onderstaande tabel kan je het verschil tussen beide zien.

DIMMSODIMM
DIMM memory.SODIMM Memory.

Op embedded systemen worden de RAM chips (IC's) rechtstreeks op het moederbord gesoldeerd (vb: Raspberry Pi kan je krijgen in 1,2 of 4GB RAM, afhankelijk van je keuze zit er dan een andere geheugenchip op je device).

RPI4 Memory.

In de volgende afbeelding zien we dat er ook verschillen zijn in de opeenvolgende versies van DIMM DDR geheugenelementen (zelfde geldt voor SODIMM modules).

:warning: OPGELET!

Weet hierover dit: ze zijn niet uitwisselbaar. Je kan geen DDR3 geheugen plaatsen op een moederbord dat gemaakt werd om met DDR2 te werken. Eerst en vooral zal het geheugen gewoon niet passen. Let hiervoor vooral op de plaats van de inkeping en het aantal connecties.

DDR differences.

Ten tweede moet er ook voldaan worden aan de werksnelheidvoorwaarde (DDR versie + kloksnelheid van het DDR latje) van het moederbord en de processor. Je moet heel goed opletten bij deze specificaties. Bekijken we bijvoorbeeld de geheugenspecificaties van het Asus ROG STRIX Z390-H moederbord dan krijgen we dit:

MB RAM Specs.

Let er dus op dat je voor dit moederbord kies voor DDR4 latjes met snelheden van 2666, 2400 of 2133 MHz (OC staat voor overclock snelheden). Dual channel wordt hier ondersteund maar is geen voorwaarde.

Jammer genoeg eindigt het hier nog niet helemaal. Ook de processor heeft een pak specificaties en daar zitten ook voorwaarden over het geheugen bij. Dus best nog eens controleren als zowel moederbord, processor en werkgeheugen compatibel zijn met elkaar.

Oefenen op het vinden van de juiste componenten wordt in de labosessies verder behandeld.

ROM

ROM of Read Only Memory heeft de vervelende eigenschap van alle data te verliezen bij stroomuitval niet. Naast dit voordeel is het grote nadeel dan wel dat dit soort geheugen ofwel niet overschrijfbaar is, ofwel slechts een eindig aantal keer beschreven kan worden en dus niet geschikt is als werkgeheugen binnen het computersysteem.

Bij dit geheugen moeten we geen onderscheid meer maken maar meer een evolutie. De eerste ROM componenten waren af fabriek geprogrammeerd. Ze konden ook maar één keer beschreven worden. De inhoud was dus vast en kon nooit meer gewijzigd worden en hadden meestal een vaste onwijzigbare taak.

Later werd programmable ROM op de markt gebracht, wat slechts één keer geprogrammeerd kon worden (wat een verbetering!?). Dit werd dan PROM of Programmable ROM genoemd.

Nog later werd dat nog verbeterd en kon men met behulp van UV-licht het ROM wissen en daarna tot zo'n 1000 keer programmeren (EPROM of Erasable PROM).

EPROM.

De laatste versie van ROM kan nu ook elektrisch gewist en herschreven worden, nu tot zo'n 100.000 keer, en wordt EEPROM (Electrically Erasable PROM).

De meest gebruike toepassingen voor ROM geheugens zijn nog steeds toepassingen die slechts één functie moeten uitvoeren en binnen een computersysteem is dat het BIOS (Basic Input Output System). Het BIOS is een programma dat zorgt dat het computersysteem correct kan opstarten. Indien dit op RAM geplaatst zou worden zou je een computersysteem slechts één maal kunnen opstarten (RAM = vluchtig). Meer informatie over het BIOS kan je verder in deze cursus terugvinden. Weet daarnaast ook wanneer je dit BIOS probeert te overschrijven (bijvoorbeeld bij een update) en er loopt iets verkeerd, dat het volledige systeem onbruikbaar wordt. Op sommige moederborden kan je de BIOS chip (ROM) vervangen.

BIOS.

Het BIOS heeft ook instellingen en die zijn dan weer op een klein RAM geheugen te vinden (omdat die kunnen wijzigen). Maar omdat RAM geheugen volatiel is plaatst men een kleine batterij (knoopcel) bij zodat deze RAM chip nooit zonder stroom raakt. Dit principe wordt wel eens NVRAM (Non Volatile RAM) genoemd.

Cache

Om nog een snelheidswinst te boeken worden op de processorchip (op de chip zelf naast de cpu en het register) ook nog cache geheugens geplaatst. Op die manier moeten tijdelijke waarden (resultaat van een berekening in de ALU) niet meer naar het werkgeheugen gestuurd worden maar wordt die data rechtstreeks opgeslagen en opgehaald op de processor zelf. Vroeger was dat slechts één stukje cache (SRAM) per processor, ondertussen zijn er dat bij de nieuwste generaties drie. De drie niveau's hebben volgende functies:

  • L1: eerstelijns cache om instructies en tijdelijke data in de processor op te slaan, meestal niet groter dan 64 KiloByte.
  • L2: tweedelijns cache om die instructies op te slaan die minder frequent gebruikt worden dan die in L1 maar toch nog snelheidswinst opleveren als die lokaal aanwezig zijn. Deze cache is groter dan L1 en kan tot 512 KB groot worden.
  • L3: derdelijns, zelfde reden als bij L2 maar deze is overkoepelend voor de gehele processor. L1 en L2 cache zijn aanwezig per core. L3 cache is ook iets groter en kan oplopen van 1 tot 8 MegaByte.

L123 Cache.

In bovenstaande afbeelding zie je het eerste, tweede en derdelijns cachegeheugen dat voorkomt binnen een computersysteem. Hier zie je dat bij een dual core processor elke core twee L1 caches heeft, aangevuld met elk een L2 cache. Daarnaast is er ook een overkoepelende L3 cache aanwezig die data uit beide cores kan bevatten.

Bussen

Wat is een bus? Simpele vraag als je het hebt over de rijdende gevaartes op de weg. Maar wat is een computerbus? Een computerbus is een verzameling van elektrische lijnen/connecties en een bepaald protocol om dataoverdracht te bewerkstelligen. Een computerbus kan bestaan uit één of meerdere lijnen. Afhankelijk van het protocol zal de data op de één of andere manier verstuurd worden van het éne hardwarecomponent naar het andere.

De meestgebruikte setup voor een bus bestaat uit:

  • een datalijn waarover de effectieve data verstuurd wordt.
  • een adreslijn die aangeeft welk apparaat er die data moet ontvangen of verzenden.
  • een controlelijn die ervoor zorgt ervoor dat dat apparaat weet welke actie (lezen, schrijven, wachten, ...) het moet uitvoeren.

Ook voor protocollen die maar één lijn gebruiken zal gelijkaardige informatie via het protocol verstuurd worden. Een visuele voorstelling kan je vinden in onderstaande afbeelding:

Bussysteem.

Let wel op, dit is hoe een bus eruit kan zien. Er bestaan ook varianten waar er slechts één elektrische lijn gebruik wordt voor zowel het adres, de data en de controle door te sturen. Je begrijpt ondertussen vast wel dat beide zijden hetzelfde protocol (de manier waarop data verstuurd wordt) moeten praten. Denk maar aan een Fransman en een Engelsman die in hun eigen taal tegen elkaar praten, daar wordt ook niemand iets wijzer van!

Bussen hebben in dit lijstje een belangrijke plaats gekregen omdat ze de lijm zijn tussen de basiscomponenten van een computersysteem. Eerder zagen we reeds dat het geheugen en de processor verbonden zijn (de besturingseenheid gaat via de Von Neumann cyclus instructies ophalen in het werkgeheugen) door een bus maar dat is lang niet de enige connectie. Op het moederbord zitten ook standaard bussen tussen de componenten en externe connecties. Het is belangrijk dat er een moederbord aanwezig is die deze connectie legt anders zouden dit allemaal verschillende componenten zijn die met losse draden of kabels aan elkaar zouden hangen. Het moederbord schept dus orde in alle verschillende bussystemen en zorgt ervoor dat alles ordentelijk geïmplementeerd wordt op één enkele print.

Er zijn in een computersysteem een aantal bussen aanwezig en die worden allemaal geïnterconnecteerd met behulp van bridges of bruggen. Dit zijn de omvormers van de éne soort bus (want ze werken niet allemaal met hetzelfde aantal lijnen of hetzelfde protocol) naar de andere. Over het algemeen zijn er twee, de northbridge en de southbridge.

Bussen op MB.

Op bovenstaande afbeelding kan je deze twee bruggen zien en welke bussen, in een normale computer, ermee geconnecteerd zijn. Dit zijn computerchips met enkel maar deze specifieke functie en ze (north en south samen) worden ook wel eens de chipset van het moederbord genoemd.

Op het moederbord van een PC kan je de bruggen ook ontdekken met het blote oog. De northbridge staat zoals schematisch werd weergegeven dichter bij de processor. De southbridge staat dan weer dichter bij de interfaces voor randapparatuur

North & South Bridge op MB.

Er zijn ook moederborden waar de northbridge ingebakken zit in de processor en enkel de southbridge zichtbaar is. Er zijn daarnaast ook systemen waar ze beide geïmplementeerd zijn in dezelfde chip (meestal kleinere, maar krachtige, devices).

Meer informatie over de randapparatuur en interfaces die ze connecteren volgt in de aansluitende hoofdstukken. Wat ons nu wel interesseert zijn de verschillende bussen die af fabriek beschikbaar zijn binnen een chipset. Als we even teruggrijpen naar vorige afbeelding, dan zien we daar een aantal afkortingen die van belang zijn. We overlopen even de belangrijkste bussen:

  • FSB of Front Side Bus: verbindt de processor rechtstreeks met de northbridge en is een zeer snelle bus (ze moet namelijk de snelheid van de processor kunnen volgen).
  • Memory Bus: verbindt het werkgeheugen (RAM, 3.3) rechtstreeks met de northbridge. Dit komt de connectie met de processor zeker ten goede.
  • PCI of Peripheral Component Interconnect was een eerste bus om systemen uit te breiden met randapparatuur. Denk daarbij vooral aan grafische kaarten en expansiemogelijkheden.
  • SATA of Serial AT Attachment: verbindt over het algemeen mediadragers (HDD, SSD, CD- en DVD spelers) met het systeem.
  • USB of Universal Serial Bus: verbindt allerhande randapparatuur met het systeem en vervangt ondertussen beetje bij beetje de Super I/O bus die vroeger instond voor toetsenbord, muis, printer, etc.

In de volgende hoofdstukken komen bovenstaande interfaces, samen met hun bijhorende randapparatuur zeker nog terug. Verschillende randapparaten gebruiken nog andere bussen (vooral dan die geconnecteerd met de south bridge), die zullen dan ten gepaste tijde aangehaald worden.

We eindigen dit hoofdstuk hier, zonder de laatste component te behandelen, zijnde in- en uitvoer. Aangezien dit gegeven zo divers is (in de jaren 80 werkte men met ponskaarten maar die zijn al even achterhaald, net als de diskette) wordt hier een hoofdstuk aan geweid die elk jaar wat up-to-date gehouden wordt. Lees gerust verder!