Hoe GPU-chips te ontwerpen
Chapter 1 Introduction to Gpu Chip Design

Hoofdstuk 1: Introductie tot GPU-chipontwerp

Wat zijn GPU's en hoe verschillen ze van CPU's

Grafische verwerkingseenheden (GPU's) zijn gespecialiseerde elektronische schakelingen die ontworpen zijn om snel geheugen te manipuleren en te wijzigen om de creatie van beelden in een framebuffer te versnellen, bedoeld voor uitvoer naar een beeldscherm. GPU's zijn oorspronkelijk ontwikkeld om 2D- en 3D-grafische rendering af te nemen van de CPU, waardoor veel hogere prestaties mogelijk zijn voor grafisch intensieve toepassingen zoals videogames.

Terwijl CPU's zijn ontworpen voor algemene computertaken en complexe besturingslogica hebben om een breed scala aan programma's te ondersteunen, hebben GPU's een zeer parallelle architectuur bestaande uit duizenden kleinere, efficiëntere cores die ontworpen zijn voor het gelijktijdig afhandelen van meerdere taken. Dit maakt hen ideaal voor grafische rendering, waar grote hoeveelheden gegevens parallel kunnen worden verwerkt.

Belangrijke architecturale verschillen tussen CPU's en GPU's zijn:

  • Aantal cores: GPU's hebben een groot aantal kleine cores (honderden tot duizenden), terwijl CPU's een paar grote, krachtige cores hebben (2-64).
  • Cache-hiërarchie: CPU's hebben grote caches om de latentie te verminderen, terwijl GPU's kleinere caches hebben en meer vertrouwen op hoge bandbreedte om latentie te compenseren.
  • Besturingslogica: CPU's hebben complexe branch prediction en out-of-order execution mogelijkheden. GPU's hebben veel eenvoudigere besturingslogica.
  • Instructieset: CPU's ondersteunen een breed scala aan instructies voor algemene computertaken. GPU-instructiesets zijn beperkter en geoptimaliseerd voor grafische taken.
  • Geheugenbandbreed: GPU's hebben een zeer hoge geheugenbandbreed (tot 1 TB/s) om hun vele cores te voeden. CPU's hebben een lagere bandbreedte (50-100 GB/s).
  • Floating-point prestaties: GPU's zijn in staat tot veel hogere floating-point prestaties, waardoor ze geschikt zijn voor HPC- en AI-workloads.

Samengevat maakt de zeer parallelle architectuur van GPU's het mogelijk om uit te blinken in taken die het verwerken van grote hoeveelheden gegevens in parallel vereisen, terwijl de meer geavanceerde besturingslogica van CPU's ze geschikt maakt voor een bredereHier is de Nederlandse vertaling van het Markdown-bestand:

Belangrijke toepassingen en het belang van GPU's

In de afgelopen twee decennia zijn GPU's uitgegroeid tot een van de belangrijkste soorten computertechnologie, omdat hun zeer parallelle structuur ze efficiënter maakt dan algemeen-doel CPU's voor algoritmen die grote hoeveelheden data parallel verwerken. Enkele van de belangrijkste toepassingsgebieden die hebben geleid tot de snelle vooruitgang van GPU-technologie zijn:

Computergraphics en gaming

Het meest voorkomende gebruik van GPU's is het versnellen van de creatie van beelden in een framebuffer die bedoeld is voor weergave op een beeldscherm. GPU's zijn uitmuntend in het manipuleren van computergraphics en beeldverwerking, en hun zeer parallelle structuur maakt ze effectiever dan algemeen-doel CPU's voor algoritmen waarbij grote hoeveelheden data parallel worden verwerkt. Ze zijn een standaardcomponent in moderne gameconsoles en gaming-pc's.

High performance computing (HPC)

De parallelle verwerkingscapaciteiten van GPU's maken ze goed geschikt voor wetenschappelijke rekenkundige toepassingen die het verwerken van zeer grote datasets met parallelle algoritmen omvatten. GPU's zijn breed geadopteerd in supercomputers en HPC-clusters, waar ze samen met CPU's worden ingezet om zeer parallelle werkbelastingen zoals weersverwachting, moleculaire dynamica-simulaties en seismische analyse te versnellen.

Kunstmatige intelligentie en machine learning

De parallelle verwerkingskracht van GPU's is van cruciaal belang geweest voor de snelle vooruitgang van deep learning en AI in de afgelopen jaren. Het trainen van complexe diepe neurale netwerken vereist enorme rekenkracht, en GPU's zijn het platform van keuze geworden voor het trainen van grootschalige AI-modellen vanwege hun vermogen om efficiënt de matrixvermenigvuldigingsoperaties uit te voeren die ten grondslag liggen aan deep learning-algoritmen. Alle belangrijke cloud-AI-platforms en supercomputers die worden gebruikt voor AI-onderzoek en -ontwikkeling maken gebruik van GPU's.Hier is de Nederlandse vertaling van het bestand:

Cryptocurrency mining

GPU's zijn ook veel gebruikt voor cryptocurrency mining, omdat hun parallelle verwerkingscapaciteiten ze goed geschikt maken voor de cryptografische hash-algoritmen die worden gebruikt in proof-of-work gebaseerde cryptocurrencies zoals Bitcoin. High-end GPU's van AMD en Nvidia waren zeer gewild tijdens de cryptocurrency boom van 2017.

Versnelde computing en edge AI

Met de vertraging van Moore's Wet is er een grote trend naar versnelde, heterogene computing, waarbij gespecialiseerde versnellerschips zoals GPU's samen met CPU's worden ingezet om veeleisende workloads te versnellen. GPU's worden ook gebruikt om AI-mogelijkheden naar randapparaten zoals smartphones, slimme speakers en autosystemen te brengen. Mobile SoC's hebben nu vaak geïntegreerde GPU's die worden gebruikt voor zowel graphics als het versnellen van AI-workloads.

De massieve parallellisme en hoge geheugenbandbreedte van GPU's hebben ze tot een van de belangrijkste computingplatforms van vandaag gemaakt, met toepassingen die veel verder gaan dan computergraphics. Naarmate we de grenzen van algemeen toepasbare processors bereiken, worden gespecialiseerde chips zoals GPU's, FPGA's en AI-versnellers steeds belangrijkere computingmotoren van de toekomst.

Het landschap van computationele versnellers

Aangezien de prestatieverbetering van algemeen toepasbare CPU's in de afgelopen jaren is vertraagd, is er een toenemende trend naar gespecialiseerde versnellerschips die specifieke workloads kunnen versnellen. GPU's zijn een van de meest prominente voorbeelden van versnellers, maar er zijn ook verschillende andere belangrijke categorieën:

Field Programmable Gate Arrays (FPGAs)

FPGAs zijn halfgeleiderapparaten die zijn gebaseerd op een matrix van configureerbare logische blokken (CLB's) die via programmeerbare interconnecties zijn verbonden. FPGAs kunnen na de fabricage opnieuw worden geprogrammeerd om te voldoen aan de vereisten van de gewenste toepassing of functionaliteit, wat een flexibeler alternatief biedt voor ASIC's. Ze worden vaak gebruikt in lucht- en ruimtevaart, ASIC-prototyping en medische beeldvorming.### Toepassingsspecifieke geïntegreerde schakelingen (ASIC's) ASIC's zijn geïntegreerde schakelingen die op maat zijn gemaakt voor een bepaald gebruik, in plaats van voor algemeen gebruik zoals CPU's. Moderne ASIC's bevatten vaak hele 32-bits of 64-bits processors, geheukenblokken inclusief ROM, RAM, EEPROM, flashgeheugen en andere grote bouwstenen. ASIC's worden vaak gebruikt bij bitcoin-minen, AI-versnellers, 5G-draadloze communicatie en IoT-apparaten.

AI-versnellers

AI-versnellers zijn gespecialiseerde chips die ontworpen zijn om AI-werkbelastingen te versnellen, vooral neurale netwerk-training en -inferentie. Voorbeelden zijn Google's Tensor Processing Units (TPU's), Intel's Nervana Neural Network Processors (NNP's) en een aantal startups die AI-chips van de grond af aan bouwen. Deze chips maken gebruik van rekenen met verminderde precisie, efficiënte matrixvermenigvuldigingscircuits en een nauwe integratie van rekenkracht en geheugen om veel hogere prestaties per watt te bereiken dan GPU's of CPU's op AI-werkbelastingen.

Vision Processing Units (VPU's)

VPU's zijn gespecialiseerde chips die ontworpen zijn voor het versnellen van computer vision- en beeldverwerkingswerkbelastingen. Ze bevatten vaak speciale hardware voor taken zoals beeldsignaalverwerking, stereovisie en CNN-gebaseerde objectdetectie. VPU's worden vaak gebruikt in toepassingen zoals automotive ADAS, drones, AR/VR-headsets, slimme camera's en andere edge-apparaten die lage latentie visuele verwerking vereisen.

Neuromorfe en kwantumchips

Kijkend naar de toekomst, proberen neuromorfe chips de architectuur van de hersenen na te bootsen om snelle en energiezuinige neurale netwerk-prestaties te leveren, terwijl kwantumchips gebruik maken van kwantummechanische effecten om bepaalde problemen sneller op te lossen dan klassieke computers. Dit zijn nog steeds opkomende onderzoeksgebieden, maar ze zouden in de toekomst belangrijke versnellers kunnen worden.

De algemene trend in de computerwereld is gericht op domeinspecifieke architecturen en een diversiteit aan versnellers die naast algemeen-doel CPU's worden geïntegreerd om specifieke werkbelastingen te versnellen.Belangrijke werkbelastingen. GPU's hebben dit versnelde rekenmodel geïntroduceerd en blijven een van de belangrijkste soorten versnellers, maar een breed scala aan andere versnellers wordt ook steeds crucialer in veel toepassingsdomeinen.

GPU hardware basics

Een moderne GPU bestaat uit verschillende belangrijke hardwarecomponenten:

Streaming Multiprocessors (SMs)

De SM is de basisbouwsteen van de NVIDIA GPU-architectuur. Elke SM bevat een set CUDA-cores (typisch 64 tot 128) die de controlelogica en instructiecache delen. Elke CUDA-core heeft een volledig gepijpelde gehele getal-rekenkundige logische eenheid (ALU) en een floating-point eenheid (FPU). Meestal heeft een GPU-chip ergens tussen de 16 en 128 SMs, wat resulteert in duizenden CUDA-cores.

Texture/L1 Cache

Elke SM heeft een speciale texture cache en L1 cache om de prestaties te verbeteren en het geheugenverkeer te verminderen. De texture cache is ontworpen om ruimtelijke lokaliteit te optimaliseren en is vooral effectief voor grafische werkbelastingen. De L1 cache behandelt geheugenoperaties (laden, opslaan) en biedt snelle gegevenstoegang met lage latentie.

Shared Memory

Shared memory is een snel, on-chip geheugen dat wordt gedeeld tussen de CUDA-cores binnen een SM. Het kan worden gebruikt als een programmeerbare cache, waardoor er een hogere bandbreedte en lagere latentie wordt bereikt bij het opnieuw gebruiken van gegevens. Shared memory is verdeeld in gelijkgrootte geheugenmodules (banken) die tegelijkertijd door de cores kunnen worden benaderd.

Register File

Elke SM heeft een groot register bestand dat lage latentie opslag biedt voor operanden. Het register bestand is verdeeld over de aanwezige threads op een SM, waardoor elke thread zijn eigen toegewezen set registers heeft. Het benaderen van een register kost meestal nul extra klokpulsen per instructie, maar er kunnen vertragingen optreden als gevolg van register read-after-write afhankelijkheden en register geheugenbank conflicten.

Warp Scheduler

De warp scheduler is verantwoordelijk voor het beheren en plannen van warps op een SM. Een warp is een groep van 32 threads die gelijktijdig worden uitgevoerd op de CUDA-cores.Hier is de Nederlandse vertaling van het bestand:

De warp-scheduler selecteert warps die klaar zijn om uitgevoerd te worden en stuurt ze naar de cores, waardoor een hoge benutting en latentie-hiding mogelijk wordt.

Interconnect-netwerk

Het interconnect-netwerk verbindt de SMs met de gedeelde L2-cache en geheugencontrollers van de GPU. Het wordt meestal geïmplementeerd als een kruisverbindingsschakelaar die meerdere SMs tegelijkertijd toegang tot de L2-cache en DRAM mogelijk maakt.

Geheugencontrollers

De geheugencontrollers verwerken alle lees- en schrijfverzoeken naar het DRAM van de GPU. Ze zijn verantwoordelijk voor het optimaliseren van DRAM-toegangspatronen om de bandbreedte-benutting te maximaliseren. Moderne GPU's hebben zeer brede DRAM-interfaces (256-bit tot 4096-bit) en ondersteunen high-bandwidth geheugen-technologieën zoals GDDR6 en HBM2.

RT-cores en Tensor-cores

Moderne NVIDIA-GPU's bevatten ook gespecialiseerde hardwareeenheden voor het versnellen van ray tracing (RT-cores) en AI/deep learning (Tensor-cores). RT-cores versnellen de doorloop van de bounding volume hierarchy (BVH) en ray-driehoek-intersectietests, terwijl Tensor-cores high-throughput matrix-vermenigvuldiging en convolutie-bewerkingen bieden.

Deze hardwarecomponenten werken samen om GPU's in staat te stellen zeer hoge rekendoorvoer en geheugenbandbreedte te bereiken, waardoor ze goed geschikt zijn voor parallelle workloads in graphics, HPC en AI. De zeer parallelle architectuur en gespecialiseerde hardwareeenheden van moderne GPU's stellen hen in staat om op bepaalde workloads een prestatie te leveren die ordes van grootte hoger is dan die van algemeen-toepasbare CPU's.

Een korte geschiedenis van GPU's

De geschiedenis van GPU's kan worden teruggevoerd tot de vroege dagen van 3D-grafische versnelling in de jaren 90:

  • Jaren 90: Vroege 3D-accelerators zoals 3dfx Voodoo en NVIDIA RIVA TNT verschenen in het midden van de jaren 90 om 3D-grafische rendering van de CPU af te halen. Dit waren apparaten met vaste functionaliteit, geoptimaliseerd voor een specifieke set grafische API's en misten programmeerbaarheid.

  • 1999: NVIDIA introduceerde de GeForce 256, de eerste GPU die hardware-transform en -lighting (T&L) implementeerde naast de standaard 3D-rendering-pipeline.Hier is de Nederlandse vertaling van het bestand:

peline. Het kon 10 miljoen polygonen per seconde verwerken, een belangrijke mijlpaal in de prestaties van consumentengraphics.

  • 2001: NVIDIA lanceerde de GeForce 3, die programmeerbare vertex- en pixelschaduwing introduceerde, waardoor de weg werd geopend voor realistischere en dynamischere visuele effecten. Dit markeerde het begin van de overgang van vaste-functie- naar programmeerbare grafische pijplijnen.

  • 2006: De release van NVIDIA's GeForce 8800 GTX markeerde een belangrijk keerpunt, aangezien het de eerste GPU was die het CUDA-programmeermodel ondersteunde, waardoor ontwikkelaars de GPU konden gebruiken voor algemene berekeningen (GPGPU) naast alleen graphics. Het had 128 CUDA-cores en kon meer dan 500 GFLOPS aan prestaties leveren.

  • 2008: Apple, AMD, Intel en NVIDIA vormden de OpenCL-werkgroep om een open standaard te ontwikkelen voor parallelle programmering op heterogene systemen. OpenCL bood een leverancieronafhankelijk alternatief voor CUDA, hoewel CUDA het meest gebruikte GPGPU-platform bleef.

  • 2010: NVIDIA lanceerde de Fermi-architectuur, die tot 512 CUDA-cores, een uniforme L1/L2-cachestructuur, ECC-geheugenondersteuning en verbeterde double precision-prestaties bood. Dit maakte GPU's geschikt voor een bredere waaier aan HPC- en wetenschappelijke rekenkundige toepassingen.

  • 2016: NVIDIA introduceerde de Pascal-architectuur met de Tesla P100, die high-bandwidth HBM2-geheugen, tot 3584 CUDA-cores en gespecialiseerde FP16-cores voor diepe lering bood. De P100 kon meer dan 10 TFLOPS aan prestaties leveren, waardoor GPU's het platform van keuze werden voor AI-training.

  • 2018: NVIDIA lanceerde de Turing-architectuur, die RT-cores voor real-time ray tracing en Tensor-cores voor versnelde AI-inferentie introduceerde. Turing markeerde een belangrijke mijlpaal in GPU-architectuur, aangezien het de mogelijkheden van de GPU uitbreidde voorbij alleen rasterisatie en GPGPU naar geavanceerde renderingtechnieken en AI-acceleratie.

Conclusie

In de afgelopen twee decennia zijn GPU's geëvolueerd van vaste-functie-grafische versnellers tot zeer programmeerbare systemen met een breed scala aan mogelijkheden, van realtime ray tracing tot AI-acceleratie.Programmeerbare, energie-efficiënte rekenmachines die een cruciale rol spelen in een breed scala aan toepassingen, van gaming en visualisatie tot high-performance computing en kunstmatige intelligentie. Belangrijke architectonische innovaties die deze transformatie hebben mogelijk gemaakt, zijn onder meer:

  • De introductie van programmeerbare shading met ondersteuning voor vertakking en lussen
  • Uniforme shader-architecturen die het mogelijk maken dat dezelfde verwerkingseenheden worden gebruikt voor verschillende schaduwingstaken
  • De toevoeging van ondersteuning voor algemene programmeringsmodellen zoals CUDA en OpenCL
  • Toenemende energie-efficiëntie door uitgebreid gebruik van multithreading om geheugenlatentie te verbergen en rekenkundige eenheden te benutten
  • Voortdurende verbeteringen in geheugenbandbreedte en de introductie van high-bandwidth geheugen technologieën zoals GDDR6 en HBM2
  • De integratie van vaste-functie-eenheden voor ray tracing en tensor-verwerking om rendering en AI-workloads te versnellen

Wanneer we naar de toekomst kijken, is het duidelijk dat specialisatie en heterogene computing sleuteldragers zullen blijven voor het verbeteren van prestaties en efficiëntie. GPU's zijn goed gepositioneerd om aan de voorhoede van deze trends te blijven, gezien hun erfenis van energie-efficiënte parallelle verwerking en hun vermogen om domein-specifieke functionaliteit op te nemen, terwijl ze algemene programmeerbaarheid behouden. Technieken zoals chiplet-gebaseerde ontwerpen en geavanceerde verpakkingstechnologieën zullen GPU's in staat stellen om nog hogere prestatieniveaus te bereiken en nog meer functionaliteit te integreren.

Tegelijkertijd blijft de toepasbaarheid van GPU-acceleratie groeien, aangezien steeds meer workloads in wetenschappelijke berekeningen, data-analyse en machine learning het soort fijnmazige parallellisme vertonen waar GPU's in uitblinken. Met hun vermogen om deze en andere opkomende toepassingen te versnellen, zijn GPU's klaar om een steeds belangrijkere rol te spelen bij het aandrijven van toekomstige vooruitgang in computing. Het begrijpen van hun architectuur is de sleutel tot het ontsluiten van hun volledige potentieel.