Opbouw van een computer

Je kunt op diverse manieren een computer samenstellen. Een veel gebruikte (of de meest gebruikte) architectuur gaat uit van een processor, geheugen en interfaces om met de buitenwereld te communiceren.

We beginnen met een minimale setup en breiden die daarna uit tot de desktop of laptop computer zoals we die kennen.

Wat hebben we minimaal nodig ?

Processor (a.k.a. CPU)

De processor of CPU (Central Processing Unit) is het hart van de computer. In de loop der jaren zijn er veel verschillende processoren op de markt gekomen, zoals 8080, Z80, 6502, 68000, 80386, 80486, Pentium, Pentium, G3, G4 en nog veel meer.

De processor kan opdrachten (instructies) uitvoeren die in veel gevallen data uit een geheugen lezen of er juist in schrijven of een berekening uitvoeren. Met die basisfuncties kun je programma's uitvoeren. Een programma is in essentie een lijst uit te voeren opdrachten, waarbij data gelezen, geschreven of veranderd moeten worden.

De belangrijkste onderdelen van een CPU zijn:

Kloksnelheid

Een CPU kan een bepaald aantal opdrachten per seconde uitvoeren. De maximum-snelheid verschilt per type. De snelheid waarmee een processor werkt wordt de "kloksnelheid" genoemd omdat er een (meestal externe) klok is die de CPU een aantal keren per seconde een signaal geeft dat de volgende opdracht uitgevoerd moet worden.



Bij moderne processoren kan die kloksnelheid wel 2 GigaHertz zijn. Dat betekent dus dat de CPU dan 2 miljard (2.000.000.000) opdrachten per seconde uitvoert, als we voor het gemak even aannemen dat één instructie in één klok-cyclus uitgevoerd kan worden.
Moderne processoren kunnen per klok-cyclus meerdere instructies uitvoeren, waardoor de effectieve snelheid factoren omhoog gaat.

Het aantal opdrachten (instructies) per seconde wordt uitgedrukt in MIPS: Mega-instructies-per-seconde. Dat is niet precies hetzelfde als de kloksnelheid omdat sommige opdrachten meer klok-cycli nodig hebben dan andere en de architectuur van de processor bepaalt ook nog eens hoe efficient deze met zijn klok-cycli omspringt. Eigenlijk zegt het aantal MIPS heel weinig over de prestaties van een computer.

Waarom moet een CPU zo veel instructies per seconde uitvoeren ?

RAM geheugen

RAM staat voor Random Access Memory, wat betekent dat je elke willekeurige plaats in zo'n geheugen direct kunt lezen of schrijven en niet aan het begin hoeft te beginnen en telkens een stapje verder te zetten tot je bij de plaats bent die je nodig hebt.

Meestal wordt met RAM ook bedoeld dat je dit geheugen kunt gebruiken om in te schrijven, terwijl dat met ROM geheugen niet kan (zie verderop). Het grote werkgeheugen van de computer bestaat meestal uit RAM geheugen. Je kunt dan bijvoorbeeld zeggen: mijn computer heeft 512 Megabyte RAM.

Als je de computer uitschakelt verdwijnen alle gegevens die in de RAM stonden. RAM wordt daarom vooral voor tijdelijke gegevens gebruikt, zoals de programma's die actief zijn.

Dit is overigens wel aan het veranderen. Het zal waarschijnlijk binnen enkele jaren normaal worden dat computers NVM (non-volatile memory) als werkgeheugen krijgen: geheugen dat zijn gegevens bewaart, ook als de stroom wegvalt.

ROM geheugen

ROM betekent Read Only Memory, ofwel: daar kun je alleen uit lezen. De gegevens worden er van tevoren in gezet en kunnen dan niet meer veranderen. Als je de computer uitschakelt blijven alle gegevens die in de ROM stonden bewaard. Daarin verschilt ROM ook van RAM en deze eigenschap maakt het ook geschikt om het opstartprogramma van een computer te bevatten.

Erg verwarrend is dat ROM geheugen meestal ook "random access" is, dus eigenlijk is ROM dan een soort RAM, maar dan alleen leesbaar en niet beschrijfbaar.

Ook bij CD's wordt de term ROM gebruikt: denk aan CDROM.

Typen geheugen

Bij het verhaal over silicium zagen we al dat je met een paar transistoren een geheugen-element kunt maken. Dergelijk geheugen kan alleen iets onthouden als er stroompjes lopen die de 'bits' onthouden en als de stroom wegvalt werkt het niet meer. Er zijn echter diverse andere manieren om bits te onthouden. Hieronder een onvolledig lijstje: Voor het programmeren

Geprogrammeerd: er zijn wat verbindingen verdwenen

I/O

I/O komt van input/output ofwel 'iets de computer in' of 'iets de computer uit'.

Voorbeeld van een programma in deze minimale computer

Stel dat je de computer wilt laten uitrekenen hoeveel 40 plus 2 is. Dat gaat ongeveer als volgt.

Voor het gemak gaan we ervan uit dat ons programma al in het het RAM geheugen staat zodat de processor het daaruit kan lezen. Het kan daar bijvoorbeeld in gezet zijn door het letter voor letter in te typen.

Stel dat ons programma bestaat uit korte opdrachten die de processor begrijpt. De processor begint met het uitvoeren van ons programma door een speciaal register (Program Counter) te laten wijzen naar de eerste opdracht van ons programma en telkens na het uitvoeren van een opdracht de Program Counter te verhogen zodat die wijst naar de volgende opdracht in het geheugen.

Ons programma bestaat uit het volgende rijtje opdrachten:

  1. Lees van adres A en stop de waarde in register R1
  2. Lees van adres B en stop de waarde in register R2
  3. Bereken (R1 + R2) en zet het resultaat in ALU
  4. Schrijf de inhoud van ALU op adres C

Als we nu van tevoren op adres A het getal 40 zetten en op adres B het getal 2, dan komt na afloop van het programma het getal 42 op adres C te staan.

Een computer maken waar we echt iets aan hebben

De configuratie tot zover is zeer beperkt. Om een computer te bouwen waarmee we serieuze programma's kunnen uitvoeren, CD's beluisteren, internetten en bladmuziek uitprinten hebben we iets meer nodig.

Toetsenbord

Vaak wel handig voor het invoeren van gegevens in een computer. Er zijn natuurlijk legio andere manieren om data in de computer te krijgen.

Noem een paar andere manieren om data in de computer te krijgen. Denk niet alleen aan je laptop of desktop, maar alles waar een CPU in zit, dus ook je mobiele telefoon, een moderne vaatwasser of espresso-apparaat.

Monitor

Een beeldscherm is een manier voor de computer om allerlei resultaten van berekeningen aan ons te laten zien. In veel gevallen zien we dat als windows, plaatjes, tekst etc.

Er zijn ook allerlei andere manieren waarop een computer gegevens naar buiten kan brengen.

Noem een paar andere manieren waarop een computer gegevens naar buiten kan brengen. Ook hier weer: denk verder dan je laptop...

Mouse of tablet

Tja... lijkt me duidelijk.

Harddisk

Als RAM geheugen per Megabyte evenveel zou kosten als een harddisk, net zo weinig stroom zou gebruiken en de gegevens niet zouden verdwijnen als de stroom uitgaat zouden we het liefst het hele werkgeheugen van de computer uit RAM opbouwen want dat is veel sneller dan een harddisk.

Een harddisk-drive bestaat uit een of meer snel ronddraaiende schijven waarop gegevens staan die door een lees/schrijfkop kunnen worden gelezen of geschreven. Omdat zo'n lees/schrijfkop op een mechanische arm zit duurt het even voor je de gegevens krijgt waar je om vraagt. RAM geheugen is veel sneller omdat daar alleen de elektronen bewegen en niet allerlei mechanieken.

Toch is een harddisk ondanks de traagheid zeer interessant: een harddisk is per Megabyte veel goedkoper dan RAM en gebruikt een stuk minder stroom. Bovendien blijven de gegevens erop staan als je de stroom uitzet.

Tracks, heads, sectors, blocks en cylinders

Een disk-drive bevat een of meer ronddraaiende schijven. Bij elke schijf kunnen één of twee "koppen" (heads) actief zijn voor lezen en schrijven van gegevens. Hoezo twee ? Een voor de bovenkant en een voor de onderkant van een schijf.

Een cirkelvormig spoor op de schijf noemen we een track. Elke schijf is onderverdeeld in een aantal sectoren (sectors) en het stukje van een track dat binnen één sector valt is een block. Een block kan een aantal (blocksize) bytes bevatten.

Wanneer een drive meerdere schijven bevat onstaat er een denkbeeldige cylinder als je van alle schijven dezelfde track bekijkt.

Hoe bereken je nou uit deze gegevens het aantal bytes dat je in je hard disk kunt opslaan ? Nou gewoon, de hele boel met elkaar vermenigvuldigen:


  aantal bytes = cylinders * heads * sectors * blocksize

Partitioneren

Je kunt een harddisk als één groot reservoir van bytes gebruiken, maar vaak is het handig om een aantal van elkaar gescheiden gebieden aan te wijzen, bijvoorbeeld als je verschillende besturingssystemen wilt gebruiken. Dit aanwijzen van gebieden wordt partitioneren genoemd en de gebieden heten partities.

Formatteren

Het aanbrengen van de indeling van tracks en sectoren en hoe die geinterpreteerd moeten worden wordt formatteren genoemd.

Fragmentatie

Fragmentatie van een filesysteem (bv. harddisk of memory stick) ontstaat wanneer je uit een opeengepakte rij files een file verwijdert en het gat dat ontstaat maar deels opgevuld kan worden met een (deel van een) nieuwe file. Er blijft dan een stukje ruimte over dat niet gebruikt kan worden om een hele file in op te slaan. Als er veel van die loze stukjes zijn gaat dan ten koste van de bruikbare ruimte en worden files over het hele systeem verspreid waardoor het langer duurt om ze te lezen.

Een oplossing is dan "defragmenteren" door bijvoorbeeld alle files naar het begin van het filesysteem te schuiven zodat aan het eind weer nieuwe ruimte ontstaat. Een betere oplossing is een filesysteem te gebruiken dat files op een slimme manier neerzet zodat fragmentatie nauwelijks aan de orde is.

UNIX filesystem

Je folders (mappen) en files (bestanden) zijn op een bepaalde manier georganiseerd. Het UNIX filesystem wordt bij OSX, Linux en diverse andere systemen gebruikt. Hier staan voorbeelden, een beschrijving hoe je er doorheen kunt navigeren en de volledig uitgeschreven namen.

Virtueel geheugen en MMU

Om het werkgeheugen van de computer groter te laten lijken dan het werkelijk is wordt gebruik gemaakt van virtueel geheugen. Het besturingssyteem zorgt er (geholpen door de hardware) voor dat delen van programma's en gegevens die tijdelijk niet in het geheugen hoeven te staan op een harddisk geschreven worden en weer teruggelezen worden als ze weer nodig zijn.

Multi processor architectuur

Met meerdere processoren kun je een computer sneller laten werken terwijl de kloksnelheid gelijk blijft.

Coprocessor

Veelal gebruikt voor heftig rekenwerk en grafische output.

Netwerk-interface

Wireless of via een draadje: we willen kunnen communiceren met andere computers.

Geluidskaart

Ga ik misschien later nog beschrijven.

Generieke interfaces: USB, firewire

Ga ik misschien later nog beschrijven.

Printer, scanner, webcam