Kennisbank

SIMD: hoe processors één instructie geven aan honderden stukjes data tegelijk

Bijgewerkt: 1 oktober 2026 · 6 min leestijd

Stel je een postsorteerder voor die duizenden enveloppen per uur moet verwerken. Hij kan ze één voor één oppakken, bekijken en wegleggen — dat werkt, maar het kost tijd. Een slimmere aanpak: hij pakt steeds een stapeltje van acht enveloppen tegelijk op en voert dezelfde handeling (bijvoorbeeld: controleer de postcode) in één keer uit op alle acht. Dat is in de kern wat SIMD doet in een computerchip.

SIMD staat voor Single Instruction, Multiple Data: één instructie, meerdere data. Het is een techniek waarmee een processor dezelfde rekenbewerking — bijvoorbeeld 'tel deze twee getallen op' — in één klap uitvoert op een hele rij getallen tegelijk, in plaats van die rij één voor één af te werken. Dit begrip duikt steeds vaker op in nieuwsartikelen over snellere chips, AI-hardware of videobewerking, en daarom is het goed om te weten wat er eigenlijk achter schuilgaat.

Wat is het precies?

Een gewone, 'scalaire' bewerking in een processor werkt op één stukje data per keer: één instructie, één getal erin, één getal eruit. Wil je duizend getallen optellen bij duizend andere getallen, dan moet de processor die instructie duizend keer herhalen.

SIMD verandert dat principe. De processor krijgt een speciaal, breed register — een soort tijdelijk opslagvakje in de chip — dat niet één getal bevat, maar meerdere getallen naast elkaar, bijvoorbeeld vier of acht. Eén enkele optelinstructie werkt dan gelijktijdig op al die getallen. Dit heet de vectorbreedte: hoe meer bits het register breed is, hoe meer getallen er tegelijk in passen.

Deze aanpak kreeg vorm via opeenvolgende instructiesets — uitbreidingen van de basisinstructies die een chip begrijpt. Intel introduceerde in 1996-1997 MMX, gevolgd door SSE (1999) en SSE2 (2001), die werkten met registers van 128 bits breed. Daarna kwamen AVX (2011) en AVX2 (2013) met 256-bits registers, en AVX-512 (2016) met — de naam verraadt het al — 512-bits registers, goed voor bijvoorbeeld zestien getallen van 32 bits tegelijk. AMD volgde met vergelijkbare technologie. Buiten de pc-wereld heeft ARM, de architectuur achter vrijwel alle smartphones, zijn eigen variant: NEON, en de nieuwere, flexibelere SVE en SVE2. Ook de relatief jonge open chipstandaard RISC-V kreeg in 2021 een officiële 'Vector-extensie' (RVV), waarmee ook deze architectuur SIMD-achtige verwerking ondersteunt.

Programmeurs profiteren hiervan op twee manieren. De eerste is auto-vectorisatie: moderne compilers (programma's die broncode omzetten naar machine-instructies) proberen automatisch te herkennen welke stukken code geschikt zijn om als SIMD-bewerking uit te voeren, zonder dat de programmeur daar expliciet om vraagt. Dat werkt niet altijd foutloos — de compiler moet zeker weten dat de volgorde van bewerkingen er niet toe doet, en mist die zekerheid vaak. De tweede manier is dat ontwikkelaars zelf intrinsics gebruiken: speciale functies in de programmeertaal die rechtstreeks overeenkomen met een SIMD-instructie, waarmee ze de chip handmatig en precies aansturen. Dat levert meer snelheid op, maar vraagt gespecialiseerde kennis en moet vaak opnieuw geschreven worden voor elke instructieset.

Wat wil men ermee bereiken?

Decennialang werden chips sneller doordat de klokfrequentie — het tempo waarin de processor instructies uitvoert, uitgedrukt in gigahertz — steeg. Rond het midden van de jaren 2000 liep die groei vast tegen fysieke grenzen: hogere kloksnelheden kosten onevenredig veel energie en warmte. SIMD is een van de belangrijkste manieren waarop chipontwerpers sindsdien toch meer rekenkracht uit dezelfde chip persen, zonder de klok te verhogen: niet sneller per instructie, maar meer werk per instructie.

Dat levert niet alleen snelheid op, maar ook energie-efficiëntie. Eén SIMD-instructie die acht getallen verwerkt, kost minder energie dan acht losse instructies, onder meer omdat de overhead van het ophalen en decoderen van elke instructie wegvalt. Dat maakt SIMD aantrekkelijk voor alles waar grote hoeveelheden vergelijkbare data snel en zuinig verwerkt moeten worden: beeld- en videobewerking, geluidsverwerking, wetenschappelijke simulaties, machine learning en moderne databases die grote tabellen doorzoeken.

Voorbeelden uit de praktijk

libjpeg-turbo is een veelgebruikte softwarebibliotheek voor het decoderen en coderen van JPEG-afbeeldingen, die dankzij SIMD-optimalisaties aanzienlijk sneller is dan de klassieke, scalaire implementatie. Het wordt onder meer gebruikt in browsers en besturingssystemen.

FFmpeg, het open source-programma dat de basis vormt voor talloze video-tools, bevat voor vrijwel elke ondersteunde processorarchitectuur handgeschreven SIMD-routines om video te coderen en decoderen. Zonder deze optimalisaties zou real-time videobewerking op gewone consumentenhardware veel trager verlopen.

Rond 2020 definieerden Intel, AMD en Linux-distributeurs als Red Hat en SUSE gezamenlijk de zogeheten x86-64 microarchitecture levels (v1 tot en met v4) — een manier om software te labelen op basis van welke SIMD-instructiesets (zoals SSE4 of AVX2) een processor minimaal moet ondersteunen. Dit maakt het voor software-ontwikkelaars makkelijker om code te leveren die optimaal gebruikmaakt van nieuwere SIMD-mogelijkheden zonder oudere chips helemaal uit te sluiten.

Google bracht in 2021 Highway uit, een open source-programmeerbibliotheek waarmee ontwikkelaars SIMD-code kunnen schrijven die automatisch wordt vertaald naar de juiste instructieset van de onderliggende processor — of dat nu Intel, AMD, ARM of iets anders is. Dit pakt een bekend probleem aan: SIMD-code is van nature sterk gebonden aan één specifieke chiparchitectuur.

Ook op het web deed SIMD zijn intrede: de WebAssembly SIMD-uitbreiding, beheerd door de World Wide Web Consortium-gemeenschap rond WebAssembly, werd rond 2021 stabiel beschikbaar in browsers als Chrome en Firefox, waardoor ook webapplicaties — bijvoorbeeld voor beeldbewerking in de browser — van deze versnelling kunnen profiteren. Daarnaast benutten kolomgewijze databasesystemen zoals ClickHouse en DuckDB SIMD-instructies om grote datasets razendsnel te doorzoeken en te aggregeren.

Hoe ver is de techniek?

SIMD is geen opkomende technologie meer, maar een volwassen, decennia-oude techniek die in vrijwel elke moderne processor zit, van smartphonechips tot servers in datacenters. De ontwikkeling gaat niettemin door, vooral in de breedte van de vectorregisters en in de flexibiliteit van nieuwere ontwerpen zoals ARM's SVE, dat — anders dan oudere vaste-breedte-instructiesets — is ontworpen om op chips met verschillende vectorbreedtes te draaien zonder dat software herschreven hoeft te worden.

Er zijn ook bekende knelpunten. Compilers zijn nog altijd niet goed genoeg in het automatisch herkennen van alle code die geschikt is voor SIMD, waardoor veel potentiële snelheidswinst onbenut blijft tenzij een programmeur handmatig ingrijpt. Daarnaast is er het probleem van fragmentatie: elke chipfamilie heeft zijn eigen instructieset, waardoor software vaak per architectuur apart geoptimaliseerd moet worden — iets wat bibliotheken als Highway juist proberen te verzachten.

Een spraakmakend obstakel deed zich voor bij Intels AVX-512: bij sommige oudere Intel-generaties (rond 2018-2020) moest de chip zijn kloksnelheid tijdelijk verlagen zodra AVX-512-instructies werden gebruikt, om oververhitting te voorkomen. Dat kon er in de praktijk voor zorgen dat code juist trager werd, of dat omliggende code op hetzelfde chipoppervlak vertraagde — een reden waarom sommige ontwikkelaars terughoudend bleven met het gebruik van deze instructieset.

Op het gebied van programmeertalen wordt ook gewerkt aan standaardisatie: er loopt al langere tijd een voorstel om SIMD-ondersteuning (std::simd) rechtstreeks in de C++-standaardbibliotheek op te nemen, zodat ontwikkelaars niet langer afhankelijk zijn van chipspecifieke intrinsics. De precieze status en het tijdspad hiervan — mogelijk richting een toekomstige C++-standaard — zijn op het moment van schrijven nog niet met volledige zekerheid vast te stellen, aangezien dit soort standaardisatietrajecten vaak vertraging oplopen.

Wie werken eraan?

Intel en AMD zijn de drijvende krachten achter de x86-instructiesets (SSE, AVX, AVX-512) die in de meeste pc's en servers zitten. ARM ontwerpt de NEON-, SVE- en SVE2-technologie en licentieert deze aan chipmakers wereldwijd, van Qualcomm tot Samsung — vrijwel elke smartphone bevat dus ARM's SIMD-technologie.

RISC-V International, een internationaal, non-profit samenwerkingsverband van bedrijven en universiteiten, beheert de open RISC-V-architectuur inclusief de Vector-extensie, en positioneert deze nadrukkelijk als vrij toegankelijk alternatief voor de gepatenteerde ontwerpen van Intel, AMD en ARM.

Apple bouwt zijn eigen chips (de Apple Silicon-serie, zoals de M-chips) op de ARM-architectuur en maakt daarbij uitgebreid gebruik van NEON en recentere SIMD-mogelijkheden, onder meer via het eigen Accelerate-framework voor ontwikkelaars. Google draagt bij via open source-projecten als de Highway-bibliotheek en de SIMD-ondersteuning in de V8 JavaScript-engine die WebAssembly aandrijft. Tot slot spelen de ontwikkelaars van compilers zoals LLVM en GCC een cruciale rol: zij bepalen in de praktijk hoe goed gewone programmeurs, zonder specialistische kennis, kunnen profiteren van SIMD via auto-vectorisatie.

Verder lezen