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:
- Registers (waaronder een instructieregister)
- ALU
- Program counter en adresregister
- Klein intern geheugen en/of interface naar werkgeheugen
- Interrupt-mechanisme
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.
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:- Lading vasthouden: regelmatig opnieuw opladen (SRAM refresh cycle)
- Lading vasthouden: opsluiten in isolerend materiaal (bv FLASH memory)
- Magnetisatie (bv ringkern-geheugen)
- Lading vasthouden en wissen met UV-licht (EPROM)
- Magnetiseren, bv. bij magneetband, magneetstrook en harddisk
- Magnetiseren van magneetjes met spiegeltjes zoals bij CD-R/W
- Doorbranden van verbinden op kruispunten
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:
- Lees van adres A en stop de waarde in register R1
- Lees van adres B en stop de waarde in register R2
- Bereken (R1 + R2) en zet het resultaat in ALU
- 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.
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.
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