Een centrale verwerkingseenheid (Central Processing Unit, oftewel CPU) is het ‘brein’ van een computer en voert de instructies uit die een besturingssysteem en de daarboven draaiende software geven. In de loop der jaren hebben CPUs een grote ontwikkeling doorgemaakt, van processoren met één CPU core tot multi-core systemen. Tegenwoordig hoor je vaak termen als single-core, dual-core, quad-core of zelfs octa-core langskomen, en daarnaast wordt er over threads gesproken. Maar wat zijn deze CPU-cores precies, en waarin verschillen ze van threads?
Wat is een CPU-core?
Een CPU-core (ook wel ‘processorcore’ genoemd) is het fysieke rekenhart binnen een CPU. Elke core kan beschouwd worden als een aparte mini-processor die zelfstandig instructies kan uitvoeren. Vroeger, in de tijd van de single-core CPU’s, had een processor maar één core en kon er feitelijk slechts één hoofdtaak (of één reeks instructies) tegelijk worden uitgevoerd. Tegenwoordig zijn de meeste CPU’s multi-core, wat betekent dat er meerdere cores aanwezig zijn in één fysieke processorbehuizing. Deze cores kunnen tegelijkertijd verschillende taken uitvoeren. Een aantal belangrijke eigenschappen van een CPU core zijn:
- Een CPU core heeft zijn eigen reken- en besturingseenheden. Dat betekent dat elke core binnen de CPU eigen bronnen (zoals een ALU – Arithmetic Logic Unit) heeft om instructies te verwerken.
- Vaak heeft elke core een eigen cachegeheugen (L1- en L2-cache) om snelle toegang te hebben tot veelgebruikte data en instructies. Daarnaast is er meestal een gedeelde L3-cache die door alle cores binnen dezelfde CPU gedeeld wordt. Hoe beter de cache-architectuur, des te sneller de cores kunnen werken, omdat het hoofdgeheugen (RAM) relatief traag is vergeleken met dit cache geheugen.
- Meerdere cores maken het mogelijk om meerdere taken parallel te verwerken. Dit noemt men ‘hardwarematige parallellie’ (hardware parallelism). Dit komt de prestaties van je systeem ten goede, zeker als je veel ‘multitaskt’ (bijvoorbeeld het draaien van meerdere programma’s tegelijk).
- Elke core werkt op een bepaalde kloksnelheid (bijvoorbeeld 3,0 GHz). Deze snelheid bepaalt hoe vaak per seconde een ‘clock cycle’ plaatsvindt waarin instructies kunnen worden verwerkt. Een hogere kloksnelheid betekent (meestal) meer prestaties, maar ook een hoger energieverbruik en meer warmteontwikkeling.
Wat is een CPU-thread?
Tot begin jaren 2000 bevatten de meeste computers een enkele CPU core. Software maakte in die tijd al gebruik van zogeheten ‘software threads’. Programma’s kunnen zelf meerdere softwarethreads aanmaken om taken te verdelen. Het schakelen tussen software threads is sneller dan wanneer er volledig van het ene naar het andere proces geschakeld wordt. Dit proces gebeurt dusdanig snel dat het al lijkt alsof processen parallel worden uitgevoerd.
In 2005 verschenen de eerste dual cores op de markt. Een enkele CPU kon nu gebruik maken van meerdere cores en/of hardwarethreads (CPU-threads, Hyper-Threading bij Intel, SMT bij AMD) om daadwerkelijk taken parallel uit te voeren. Hardwarethreads betekent simpelweg dat één fysieke CPU-core zich naar het besturingssysteem voordoet als twee (of meer) logische cores. Dit noemt men ook wel ‘multithreading’. De CPU-core deelt daarbij bepaalde fysieke onderdelen, maar heeft meerdere registers en verwerkingseenheden om per CPU-cycle aan meer dan één thread te werken.
Verschil tussen CPU-cores en threads
Fysiek vs logisch:
- CPU-Cores zijn fysieke rekenkernen in de CPU.
- Threads voeren logische/virtuele taken uit. Threads worden meestal beheerd door het besturingssysteem of door hardwaretechnieken als Hyper-Threading.
Parallelle verwerking:
- Cores voeren daadwerkelijk taken parallel uit, elk met eigen hardware.
- Threads kunnen ook parallel lopen, maar de efficiëntie hiervan is sterk afhankelijk van de onderliggende hardware. Als je één fysieke core hebt en je start meerdere threads, dan wordt er om de beurt geschakeld tussen de threads (wat de performance beïnvloed).
Prestatieverschillen:
- Meerdere cores zorgen voor echte performance-winst bij processor intensieve taken (zoals videobewerking, rendering of het parallel draaien van meerdere processen).
- Hyper-Threading/SMT (extra threads) kan een performance-boost geven, maar vaak minder dan daadwerkelijk extra fysieke cores. Bij SMT moet de ene thread bijvoorbeeld wachten wanneer de andere thread dezelfde hardwareonderdelen nodig heeft.
Resources:
- CPU-Cores hebben eigen belangrijke componenten (zoals reken- en besturingseenheden en een deel van de cache).
- Threads delen (grotendeels) de beschikbare hardwarebronnen van de CPU-core.
Waarom zijn meerdere cores en threads belangrijk?
Enigszins voor de hand liggend, maar het voordeel van het gebruik van meerdere cores en threads is de performancewinst:
- Met meerdere cores kun je meer taken tegelijk uitvoeren. Zo kan het besturingssysteem (en de software die erop draait) efficiënter gebruikmaken van de hardware. Bij één core zou er steeds geschakeld moeten worden tussen taken, wat tot vertragingen leidt. Verschillende applicaties kunnen op verschillende cores draaien of worden verdeeld over de beschikbare cores en threads. Hierdoor blijft het systeem responsief, ook als je zware software draait.
- Taken zoals videorendering, fotobewerking en 3D-modellering kunnen worden opgedeeld in kleinere subtaken (parallel processing). Hierdoor gaat de verwerking aanzienlijk sneller.
Meer CPU-cores betekent niet altijd sneller
Niet alle software is even goed geoptimaliseerd voor meerdere cores of threads. Dit geldt ook voor je privé computer, bijvoorbeeld bij games: een CPU met veel cores werkt niet altijd sneller dan eentje met minder cores maar een hogere kloksnelheid; het hangt af van hoe de game geprogrammeerd is.
Daarnaast kunnen twee CPU’s met hetzelfde aantal cores flink verschillen van prestatieniveaus als ze van verschillende generaties zijn. Een moderne CPU-core is vaak efficiënter, heeft een grotere en snellere cache en ondersteunt nieuwere instructiesets.
Tot slot is ook de warmteproductie een belangrijke om in de gaten te houden: Hoe meer cores en hoe hoger de kloksnelheid, hoe meer warmte een CPU kan genereren. Een goede koeling is dan ook nodig om de CPU op topsnelheid te laten draaien zonder te oververhitten.