Processor (computer)

Een centrale verwerkingseenheid (CPU) is een belangrijk onderdeel van elke computer. De CPU stuurt signalen om de andere onderdelen van de computer aan te sturen, bijna zoals een brein een lichaam aanstuurt.

De CPU is een elektronische machine die werkt op basis van een lijst met computerdingen, instructies genaamd. Hij leest de lijst met instructies en voert ze in volgorde uit. Een lijst met instructies die een CPU kan uitvoeren is een computerprogramma.

De kloksnelheid, of snelheid van de interne onderdelen van een CPU, wordt gemeten in hertz (Hz). Moderne processoren draaien vaak zo snel dat in plaats daarvan gigahertz (GHz) wordt gebruikt. Eén GHz is 1.000.000.000 cycli per seconde.

De meeste CPU's in desktopcomputers zijn microprocessoren van Intel of Advanced Micro Devices (meestal afgekort tot AMD). Enkele andere bedrijven die CPU's maken zijn ARM (onlangs gekocht door Nvidia), IBM, en AMD onder ATI Technologies, dat momenteel de leider is. De meeste van hun CPU's worden gebruikt in ingebedde systemen voor meer gespecialiseerde dingen, zoals in mobiele telefoons, auto's, videogameconsoles of in het leger.




  Een Pentium CPU in een computer  Zoom
Een Pentium CPU in een computer  

Soorten CPU's

In de 20e eeuw hebben ingenieurs veel verschillende computerarchitecturen uitgevonden. Tegenwoordig gebruiken de meeste desktopcomputers 32-bits CPU's of 64-bits CPU's. De instructies in een 32-bits CPU zijn goed in het verwerken van gegevens van 32 bits (de meeste instructies "denken" in 32 bits in een 32-bits CPU). Evenzo is een 64-bits CPU goed in het verwerken van gegevens van 64 bits (en vaak ook goed in het verwerken van 32-bits gegevens). De grootte van de gegevens die een CPU het beste verwerkt, wordt vaak de woordgrootte van de CPU genoemd. Veel oude CPU's uit de jaren 70, 80 en begin jaren 90 (en veel moderne embedded systemen) hebben een woordgrootte van 8 of 16 bits. Toen CPU's in het midden van de 20e eeuw werden uitgevonden, hadden ze veel verschillende woordgroottes. Sommige hadden verschillende woordgroottes voor instructies en gegevens. De minder populaire woordgroottes werden later niet meer gebruikt.

De meeste CPU's zijn microprocessoren. Dit betekent dat de CPU slechts één chip is. Sommige chips met microprocessoren erin bevatten ook andere componenten, en zijn complete "computers" op één chip. Dit wordt een microcontroller genoemd.


 

Registers

Wanneer de CPU een computerprogramma uitvoert, moet hij ergens de gegevens opslaan waarop de instructies werken (de gegevens die ze lezen en schrijven). Deze opslagplaats wordt een register genoemd. Een CPU heeft meestal veel registers. Registers moeten zeer snel toegankelijk zijn (lezen en schrijven). Daarom maken ze deel uit van de CPU-chip zelf.


 

Geheugen

Het opslaan van alle gegevens in registers zou de meeste CPU's te ingewikkeld (en erg duur) maken. Daarom worden in registers meestal alleen de gegevens opgeslagen waar de CPU "op dit moment" mee bezig is. De rest van de door het programma gebruikte gegevens wordt opgeslagen in RAM (Random Access Memory). Behalve in microcontrollers wordt RAM meestal buiten de CPU opgeslagen in afzonderlijke chips.

Wanneer de CPU gegevens in het RAM wil lezen of schrijven, geeft hij een adres aan die gegevens. Elke byte in RAM heeft een geheugenadres. De grootte van de adressen is vaak gelijk aan de woordgrootte: Een 32-bits CPU gebruikt 32-bits adressen, enz. Kleinere CPU's, zoals 8-bits CPU's, gebruiken echter vaak adressen die groter zijn dan de woordgrootte. Anders zou de maximale programmalengte te kort zijn.

Omdat de grootte van de adressen beperkt is, is ook de maximale hoeveelheid geheugen beperkt. 32-bits processoren kunnen gewoonlijk slechts tot 4 GB RAM verwerken. Dit is het aantal verschillende bytes dat kan worden geselecteerd met behulp van een 32-bits adres (elk bit kan twee waarden hebben - 0 en 1 - en 232 bytes is 4 GB). Een 64-bits processor zou tot 16 EB RAM kunnen verwerken (16 exabytes, ongeveer 16 miljard GB, of 16 miljard miljard bytes). Het besturingssysteem kan het gebruik van kleinere hoeveelheden beperken.

De informatie die in het RAM wordt opgeslagen is meestal vluchtig. Dit betekent dat deze verdwijnt als de computer wordt uitgeschakeld.

Geheugenbeheereenheden (MMU's) en virtueel geheugen

Moderne CPU's maken vaak gebruik van een geheugenbeheereenheid (MMU). Een MMU is een onderdeel dat adressen van de CPU vertaalt naar (meestal) verschillende RAM-adressen. Bij gebruik van een MMU zijn de adressen die in een programma worden gebruikt (meestal) niet de "echte" adressen waar de gegevens zijn opgeslagen. Dit wordt virtueel (het tegenovergestelde van "echt") geheugen genoemd. Enkele van de redenen waarom het goed is om een MMU te hebben worden hier opgesomd:

  • Een MMU kan het geheugen van andere programma's "verbergen" voor een programma. Dit wordt gedaan door geen adressen te vertalen naar de "verborgen" adressen terwijl het programma draait. Dit is goed omdat het betekent dat programma's het geheugen van andere programma's niet kunnen lezen en wijzigen, wat de veiligheid en stabiliteit ten goede komt. (Programma's kunnen elkaar niet "bespioneren", of "op elkaars tenen trappen").
  • Veel MMU's kunnen sommige delen van het geheugen niet-schrijfbaar, niet-leesbaar of niet-uitvoerbaar maken (wat betekent dat code in dat deel van het geheugen niet kan worden uitgevoerd). Dit kan goed zijn om redenen van stabiliteit en veiligheid, maar ook om andere redenen.
  • Met MMU's kunnen verschillende programma's verschillende "weergaven" van het geheugen hebben. Dit is handig in veel verschillende situaties. Zo zal het bijvoorbeeld altijd mogelijk zijn om de "hoofd"-code van een programma op hetzelfde (virtuele) adres te hebben zonder met andere programma's te botsen. Het is ook handig wanneer er veel verschillende stukken code (uit bibliotheken) zijn die door programma's worden gedeeld.
  • MMU's zorgen ervoor dat code uit bibliotheken op verschillende adressen verschijnt telkens wanneer een programma wordt uitgevoerd. Dit is goed omdat het voor hackers moeilijker is om programma's slechte dingen te laten doen als zij niet weten waar dingen in het geheugen staan. Dit heet randomisatie van de adresruimte.
  • Geavanceerde programma's en besturingssystemen kunnen trucs gebruiken met MMU's om te voorkomen dat gegevens tussen verschillende plaatsen in het geheugen moeten worden gekopieerd.

 

Cache

Op moderne computers is RAM veel trager dan registers, dus de toegang tot RAM vertraagt programma's. Om de toegang tot het geheugen te versnellen, wordt tussen het RAM en de belangrijkste onderdelen van de CPU vaak een sneller type geheugen geplaatst, de zogenaamde cache. De cache is meestal een onderdeel van de CPU-chip zelf, en is per byte veel duurder dan RAM. De cache slaat dezelfde gegevens op als RAM, maar is gewoonlijk veel kleiner. Daarom passen niet alle door het programma gebruikte gegevens in de cache. De cache probeert gegevens op te slaan die waarschijnlijk veel worden gebruikt. Voorbeelden hiervan zijn recent gebruikte gegevens en gegevens die dicht in het geheugen liggen bij recent gebruikte gegevens.

Vaak is het zinvol om een "cache voor de cache" te hebben, net zoals het zinvol is om een cache voor RAM te hebben. Bij multi-level caching zijn er vele caches, genaamd de L1-cache, de L2-cache, enzovoort. De L1-cache is de snelste (en duurste per byte) cache en staat het dichtst bij de CPU. De L2-cache ligt een stap verder en is langzamer dan de L1-cache, enz. De L1-cache kan vaak worden gezien als een cache voor de L2-cache, enz.


 

Bussen

Computerbussen zijn de draden die door de CPU worden gebruikt om te communiceren met het RAM en andere componenten in de computer. Bijna alle CPU's hebben ten minste een databus - om gegevens te lezen en te schrijven - en een adresbus - om adressen uit te voeren. Andere bussen in de CPU vervoeren gegevens naar verschillende delen van de CPU.


 

Instructiesets

Een instructieset (ook wel ISA - Instruction Set Architecture) is een taal die rechtstreeks door een bepaalde CPU wordt begrepen. Deze talen worden ook wel machinecode of binair genoemd. Hierin staat hoe u de CPU vertelt om verschillende dingen te doen, zoals gegevens uit het geheugen in een register laden, of de waarden uit twee registers optellen. Elke instructie in een instructieset heeft een codering, dat is hoe de instructie wordt geschreven als een reeks bits.

Programma's die zijn geschreven in programmeertalen als C en C++ kunnen niet rechtstreeks door de CPU worden uitgevoerd. Ze moeten worden vertaald naar machinecode voordat de CPU ze kan uitvoeren. Een compiler is een computerprogramma dat deze vertaling uitvoert.

Machinecode is slechts een opeenvolging van 0's en 1's, waardoor het voor mensen moeilijk te lezen is. Om het leesbaarder te maken, worden programma's met machinecode meestal geschreven in assemblagetaal. Assembleertaal gebruikt tekst in plaats van 0-en en 1-en: U schrijft bijvoorbeeld "LD A,0" om de waarde 0 in register A te laden. Een programma dat assemblagetaal vertaalt in machinecode wordt een assembler genoemd.


 

Functionaliteit

Dit zijn enkele van de basisdingen die een CPU kan doen:

  • Lees gegevens uit het geheugen en schrijf gegevens naar het geheugen.
  • Een getal optellen bij een ander getal.
  • Test of een getal groter is dan een ander getal.
  • Een getal van de ene plaats naar de andere verplaatsen (bijvoorbeeld van het ene register naar het andere, of tussen een register en het geheugen).
  • Springt naar een andere plaats in de instructielijst, maar alleen als een bepaalde test waar is (bijvoorbeeld alleen als het ene getal groter is dan het andere).

Zelfs zeer ingewikkelde programma's kunnen worden gemaakt door vele eenvoudige instructies zoals deze te combineren. Dit is mogelijk omdat elke instructie zeer kort duurt. Veel CPU's kunnen tegenwoordig meer dan 1 miljard (1.000.000.000) instructies in één seconde uitvoeren. In het algemeen geldt: hoe meer een CPU in een bepaalde tijd kan doen, hoe sneller hij is. Een manier om de snelheid van een processor te meten is MIPS (Million Instructions Per Second). Flops (Floating-point operations per seconde) en CPU-kloksnelheid (meestal gemeten in gigahertz) zijn ook manieren om te meten hoeveel werk een processor in een bepaalde tijd kan doen.

Een CPU is opgebouwd uit logische poorten; hij heeft geen bewegende delen. De CPU van een computer is elektronisch verbonden met andere onderdelen van de computer, zoals de videokaart of het BIOS. Een computerprogramma kan deze randapparatuur besturen door nummers te lezen of te schrijven naar speciale plaatsen in het geheugen van de computer.


 

Instructiepijplijnen

Elke instructie die door een CPU wordt uitgevoerd, gebeurt gewoonlijk in vele stappen. Bijvoorbeeld, de stappen om een instructie "INC A" uit te voeren (de in register A opgeslagen waarde met één verhogen) op een eenvoudige CPU kunnen de volgende zijn:

  • Lees de instructie uit het geheugen,
  • de instructie decoderen (uitzoeken wat de instructie doet), en
  • voeg er één toe aan register A.

Verschillende delen van de CPU doen deze verschillende dingen. Vaak is het mogelijk om sommige stappen van verschillende instructies tegelijkertijd uit te voeren, waardoor de CPU sneller wordt. We kunnen bijvoorbeeld een instructie uit het geheugen lezen op hetzelfde moment dat we een andere instructie decoderen, aangezien die stappen verschillende modules gebruiken. Dit kan worden gezien als het hebben van veel instructies tegelijk "in de pijplijn". In het beste geval werken alle modules tegelijk aan verschillende instructies, maar dat is niet altijd mogelijk.


 

Meerdere kernen

Multi-core processoren werden veel gebruikelijker in het begin van de 21e eeuw. Dit betekent dat er veel processoren op dezelfde chip zijn gebouwd, zodat ze veel instructies tegelijk kunnen uitvoeren. Sommige processoren kunnen tot vierenzestig kernen hebben, zoals de komende AMD Epyc "Milan" serie. Zelfs processoren voor consumenten hebben veel kernen, zoals de 16-core AMD Ryzen 9 5950x.


 

Multithreading

Sommige processoren beschikken over een technologie die bekend staat als multithreading. Dit is het uitvoeren van meer dan één "thread" van instructies in een besturingssysteem. Veel moderne processoren gebruiken dit om de prestaties te verhogen bij zware programma's met meerdere threads, zoals benchmarkprogramma's.


 

Fabrikanten

De volgende bedrijven maken computer-CPU's:

  • ARM
  • Intel
  • Advanced Micro Devices
  • MCST
  • SRISA
  • Sun Microsystems

 

Verdere informatie



 

Vragen en antwoorden

V: Wat is een CPU?


A: Een CPU (centrale verwerkingseenheid) is een belangrijk onderdeel van elke computer. Hij zendt signalen uit om de andere onderdelen van de computer te besturen, bijna zoals een brein een lichaam bestuurt. De CPU is een elektronische machine die werkt op basis van een lijst met instructies om bepaalde taken uit te voeren.

V: Hoe werkt de CPU?


A: De CPU leest de lijst met instructies en voert ze in volgorde uit. Een lijst met instructies die een CPU kan uitvoeren is een computerprogramma.

V: Waarin wordt de kloksnelheid van een CPU gemeten?


A: De kloksnelheid van de interne onderdelen van een CPU wordt gemeten in hertz (Hz). Moderne processoren draaien vaak zo snel dat in plaats daarvan gigahertz (GHz) wordt gebruikt - één GHz is 1.000.000.000 cycli per seconde.

V: Wie zijn sommige bedrijven die CPU's maken?


A: Enkele bedrijven die CPU's maken zijn Intel, Advanced Micro Devices (AMD), ARM (onlangs gekocht door Nvidia), IBM en AMD onder ATI Technologies, dat momenteel marktleider is.

V: Waar worden de meeste CPU's gebruikt?


A: De meeste CPU's die worden gebruikt in desktopcomputers zijn microprocessoren van Intel of AMD, terwijl de meeste andere worden gebruikt in ingebedde systemen voor meer gespecialiseerde zaken zoals mobiele telefoons, auto's, videogameconsoles of militaire toepassingen.

AlegsaOnline.com - 2020 / 2023 - License CC3