CPU versus GPU: architectuur, sterke punten en toepassingen vergeleken
Een CPU is ontworpen om één taak zo snel mogelijk af te ronden en heeft een klein aantal krachtige cores, grote caches en slimme besturingslogica. Een GPU is ontworpen om grote aantallen vergelijkbare taken tegelijk uit te voeren, met duizenden eenvoudige rekeneenheden en een enorm aantal threads waartussen wordt omgeschakeld om wachttijd op geheugen te verbergen. Een CPU past bij complexe, vertakkende sequentiële taken en een GPU bij grootschalige parallelle berekeningen zoals beeldverwerking en deep learning.
| Kenmerk | CPU | GPU |
|---|---|---|
| Ontwerpdoel | Lage latency. Eén thread zo snel mogelijk afronden | Hoge doorvoer. In totaal zo veel mogelijk werk verzetten |
| Aantal cores | Enkele tot enkele honderden complexe cores | Duizenden eenvoudige rekeneenheden, gegroepeerd in blokken |
| Uitvoeringsmodel | Elke core heeft speculatieve (out-of-order) uitvoering en branch prediction, en gebruikt ook SIMD-instructies | SIMT. Een groep threads (bijvoorbeeld 32) voert gelijktijdig dezelfde instructie uit |
| Besturingslogica en cache | Grote caches en geavanceerde besturingslogica nemen een groot deel van het chipoppervlak in | Het grootste deel van het oppervlak gaat naar rekeneenheden. Weinig cache per thread |
| Verbergen van geheugenlatency | Vooral met caches en prefetching | Vooral door van een wachtende thread over te schakelen op een andere uitvoerbare thread |
| Geheugen | DDR of LPDDR. Bandbreedte doorgaans enkele tientallen tot honderden GB/s | GDDR of HBM. Bandbreedte doorgaans enkele honderden GB/s tot enkele TB/s |
| Vertakkingen | Sterk bij vertakkingen en onregelmatige code | Langzamer als threads in een groep verschillende vertakkingen nemen (divergentie) |
| Plaats van de data | Werkt rechtstreeks met het werkgeheugen | Een losse GPU heeft eigen geheugen, dus data moet worden gekopieerd, bijvoorbeeld via PCIe |
| Programmeren | Bijna alle talen en tools zijn bruikbaar | Speciale modellen zoals CUDA, HIP, OpenCL en shadertalen |
| Sterke punten | Besturingssysteem, databases, besturingslogica, algemene toepassingen | Graphics, matrix- en vectorberekeningen, deep learning, simulatie |
De getalswaarden zijn typische ordegroottes en variëren per procesgeneratie en product.