Processor (computer)

Een centrale verwerkingseenheid (CPU) is een belangrijk onderdeel van elke computer. De CPU stuurt signalen om de andere delen van de computer te besturen, bijna zoals een brein een lichaam bestuurt.

De CPU is een elektronische machine die werkt op een lijst van computer dingen om te doen, genaamd instructies. Het leest de lijst met instructies en voert ze allemaal in volgorde uit (voert ze 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 lopen 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 die worden gebruikt in desktopcomputers (thuis) zijn microprocessoren die zijn gemaakt door Intel of Advanced Micro Devices (meestal afgekort tot AMD). Enkele andere bedrijven die CPU's maken zijn ARM, IBM en AMD onder ATI Technologies, dat op dit moment marktleider is. De meeste van hun CPU's worden gebruikt in embedded systemen voor meer gespecialiseerde dingen, zoals in mobiele telefoons, auto's, spelconsoles of in het leger.

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

Soorten CPU's

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

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

Registreert

Wanneer de CPU een computerprogramma uitvoert, moet het ergens de gegevens opslaan waarop de instructies werken (de gegevens die ze lezen en schrijven). Deze opslag wordt een register genoemd. Een CPU heeft meestal veel registers. Registers moeten zeer snel toegankelijk zijn (om te kunnen 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 slaan registers meestal alleen de gegevens op waar de CPU "op dit moment" mee bezig is. De rest van de gegevens die door het programma worden gebruikt, worden opgeslagen in het RAM (geheugen). Behalve in microcontrollers wordt het RAM meestal buiten de CPU in aparte chips opgeslagen.

Wanneer de CPU data in RAM wil lezen of schrijven, geeft hij een adres aan die data. Elke byte in RAM heeft een geheugenadres. De grootte van de adressen is vaak gelijk aan de grootte van het woord: Een 32-bits CPU gebruikt 32-bits adressen, enz. Echter, kleinere CPU's, zoals 8-bit CPU's, gebruiken 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 meestal maar 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 kan tot 16 EB RAM verwerken (16 exabytes, ongeveer 16 miljard GB, of 16 miljard bytes). Het besturingssysteem kan zich beperken tot het gebruik van kleinere hoeveelheden.

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

Cache

Op moderne computers is RAM veel langzamer dan registers, dus toegang tot RAM vertraagt programma's. Om de toegang tot het geheugen te versnellen, wordt vaak een sneller type geheugen, een cache genaamd, tussen het RAM en de hoofdonderdelen van de CPU geplaatst. 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 meestal veel kleiner. Het is daarom mogelijk dat alle gegevens die door het programma worden gebruikt niet in de cache passen. De cache probeert gegevens op te slaan die waarschijnlijk veel gebruikt zullen worden. Voorbeelden hiervan zijn recentelijk gebruikte gegevens en gegevens die in het geheugen sluiten op 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. In multi-level caching zijn er veel caches, genaamd de L1 cache, de L2 cache, en ga zo maar door. De L1-cache is de snelste (en duurste per byte) cache en staat het dichtst bij de CPU. De L2-cache is een stap verwijderd en is langzamer dan de L1-cache, enz. De L1 cache kan vaak gezien worden als een cache voor de L2 cache, etc.

Bussen

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

Instructiesets

Een instructieset (ook wel ISA - Instructieset-architectuur genoemd) is een taal die direct door een bepaalde CPU wordt begrepen. Deze talen worden ook wel machinecode of binair genoemd. Ze zeggen hoe je de CPU vertelt om verschillende dingen te doen, zoals het laden van gegevens uit het geheugen in een register, of het toevoegen van de waarden uit twee registers. Elke instructie in een instructieset heeft een codering, dat is hoe de instructie wordt geschreven als een opeenvolging van bits.

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

De machinecode is slechts een opeenvolging van 0s en 1s, wat het moeilijk maakt voor mensen om het te lezen. Om het leesbaarder te maken, worden machinecodeprogramma's meestal in assemblagetaal geschreven. Assemblagetaal gebruikt tekst in plaats van 0s en 1s: Je zou "LD A,0" kunnen schrijven om de waarde 0 te laden in bijvoorbeeld register A. Een programma dat assemblagetaal vertaalt naar machinecode wordt een assembler genoemd.

Functionaliteit

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

  • Lees gegevens uit het geheugen en schrijf gegevens naar het geheugen.
  • Voeg een nummer toe aan een ander nummer.
  • Test om te zien of het ene getal groter is dan het andere.
  • Verplaats een nummer van de ene plaats naar de andere (bijvoorbeeld van het ene register naar het andere, of tussen een register en het geheugen).
  • Ga naar een andere plaats op de instructielijst, maar alleen als een bepaalde test waar is (bijvoorbeeld, alleen als het ene getal groter is dan het andere).

Zelfs zeer gecompliceerde programma's kunnen worden gemaakt door het combineren van vele eenvoudige instructies zoals deze. Dit is mogelijk omdat elke instructie zeer korte tijd in beslag neemt. Veel CPU's kunnen tegenwoordig meer dan 1 miljard (1.000.000.000) instructies in één seconde uitvoeren. In het algemeen geldt dat hoe meer een CPU kan doen in een bepaalde tijd, hoe sneller het 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 kan doen in een bepaalde tijd.

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

Instructiepijpleidingen

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

  • Lees de instructie uit het geheugen,
  • de instructie te decoderen (uitzoeken wat de instructie doet), en
  • voeg er een toe om A te registreren.

Verschillende delen van de CPU doen deze verschillende dingen. Vaak is het mogelijk om enkele stappen van verschillende instructies tegelijkertijd uit te voeren, wat de CPU sneller maakt. Zo kunnen we bijvoorbeeld een instructie uit het geheugen lezen op hetzelfde moment dat we een andere instructie decoderen, omdat die stappen verschillende modules gebruiken. Dit kan worden opgevat als het hebben van veel instructies "in de pijplijn" tegelijk. In het beste geval werken alle modules met verschillende instructies tegelijk, maar dit is niet altijd mogelijk.

Geheugenbeheerseenheden (MMU's) en virtueel geheugen

Moderne CPU's maken vaak gebruik van een geheugenbeheerseenheid (MMU). Een MMU is een component die adressen uit 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 worden opgeslagen. Dit wordt virtueel (het tegenovergestelde van "echt") geheugen genoemd. Een paar van de redenen waarom het goed is om een MMU te hebben staan hieronder vermeld:

  • 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 stappen").
  • Veel MMU's kunnen sommige delen van het geheugen niet-schrijfbaar, niet-leesbaar of niet-uitvoerbaar maken (wat betekent dat code die in dat deel van het geheugen is opgeslagen niet kan worden uitgevoerd). Dit kan goed zijn voor de stabiliteit en de veiligheid, maar ook voor andere redenen.
  • MMU's laten verschillende programma's toe om verschillende "views" van het geheugen te hebben. Dit is handig in veel verschillende situaties. Zo is het bijvoorbeeld altijd mogelijk om de "hoofd"-code van een programma op hetzelfde (virtuele) adres te hebben zonder te botsen met andere programma's. Het is ook handig als er veel verschillende stukjes code (uit bibliotheken) tussen programma's worden gedeeld.
  • MMU's staan toe dat code van bibliotheken op verschillende adressen verschijnt telkens wanneer een programma wordt uitgevoerd. Dit is goed omdat het niet weten waar dingen in het geheugen zitten het voor hackers vaak moeilijker maakt om programma's slechte dingen te laten doen. Dit wordt randomisatie van de adresruimte genoemd.
  • Geavanceerde programma's en besturingssystemen kunnen trucjes gebruiken met MMU's om te voorkomen dat gegevens tussen verschillende plaatsen in het geheugen moeten worden gekopieerd.

Meerdere kernen

Multi-core processoren werden gemeengoed in het begin van de 21e eeuw. Dit betekent dat ze veel processoren hebben die op dezelfde chip zijn gebouwd, zodat ze veel instructies tegelijk kunnen uitvoeren. Sommige processoren kunnen tot tweeëndertig kernen hebben, zoals de AMD Epyc 7601.

Fabrikanten

De volgende bedrijven maken computer CPU's:

  • ARM
  • Intel
  • Geavanceerde micro-apparaten
  • MCST
  • SRISA
  • Zonnemicrosystemen

Meer informatie

  • Microprocessor
  • ALU
  • Uitvoeringseenheid
  • Drijvende punteenheid
  • Intel
  • AMD

AlegsaOnline.com - 2020 / 2021 - License CC3