Compute-in-memory: rekenen op de plek waar de data al ligt
Stel je een kok voor in een enorme keuken. Voor elk ingrediënt dat hij nodig heeft, moet hij de straat oversteken naar een magazijn, het pak bloem of het ei oppakken, en teruglopen naar zijn aanrecht om te koken. Bij een simpel gerecht met een paar ingrediënten is dat nog te doen, maar bij een uitgebreid banket met duizenden ingrediënten kost al dat heen-en-weer lopen uiteindelijk meer tijd en energie dan het koken zelf. Dat is ongeveer het probleem waar computerchips al decennia mee kampen: de rekeneenheid (de kok) en het geheugen waarin data staat (het magazijn) zijn twee gescheiden plekken, en data moet steeds heen en weer reizen.
Compute-in-memory, ook wel in-memory computing of processing-in-memory genoemd, is een ontwerpaanpak waarbij je een deel van het rekenwerk verplaatst naar de plek waar de data al opgeslagen ligt, in plaats van de data eerst naar een aparte processor te sturen. In het voorbeeld van de kok zou dat betekenen dat er in het magazijn zelf al kleine kookplaatjes staan, zodat sommige bewerkingen direct bij de ingrediënten kunnen gebeuren. Voor computerchips gaat het vooral om het versnellen van taken met heel veel simpele, herhaalde rekensommen, zoals bij kunstmatige intelligentie, en om het besparen van energie die anders verloren gaat aan het transport van data.
Wat is het precies?
De meeste computers, van smartphones tot supercomputers, zijn gebouwd volgens de zogeheten von Neumann-architectuur, genoemd naar wiskundige John von Neumann die dit ontwerp in de jaren veertig beschreef. Daarin zijn geheugen (waar data en programma's opgeslagen liggen) en de processor (die de berekeningen uitvoert) twee gescheiden onderdelen, verbonden door een datalijn. Elke berekening vereist dus dat gegevens eerst van het geheugen naar de processor reizen, en het resultaat weer terug. Bij grote hoeveelheden data, zoals bij het trainen van AI-modellen, wordt die verbinding een flessenhals: men noemt dit de von Neumann-bottleneck.
Compute-in-memory probeert deze bottleneck te omzeilen door reken- en geheugenfunctie in hetzelfde onderdeel te combineren. Er bestaan grofweg twee benaderingen. Bij analoge compute-in-memory gebruikt men geheugencellen die niet alleen data kunnen opslaan, maar ook direct kunnen rekenen dankzij de natuurkundige eigenschappen van het materiaal. Denk aan een rooster van geheugencellen, een zogeheten crossbar-array, gemaakt van materialen als ReRAM (resistief geheugen, waarbij een cel een elektrische weerstand vasthoudt) of PCM (phase-change memory, geheugen dat gebruikmaakt van een materiaal dat van kristallijne naar amorfe toestand kan schakelen). Stuur je een elektrische spanning door zo'n rooster, dan berekent het rooster vanzelf een vermenigvuldiging en optelling, dankzij de wet van Ohm (stroom is spanning gedeeld door weerstand) en de wet van Kirchhoff (stromen die samenkomen, tellen op). Deze zogeheten MAC-operaties (multiply-accumulate, vermenigvuldigen-en-optellen) vormen toevallig ook precies de kernbewerking van neurale netwerken, waardoor deze aanpak goed aansluit op AI-toepassingen.
Bij digitale processing-in-memory zit er geen analoge natuurkundetruc achter, maar bouwt men kleine, gewone digitale rekenkernen direct in of vlak naast het geheugen zelf, bijvoorbeeld in een DRAM-chip (het gangbare, vluchtige werkgeheugen van computers). Dit levert minder spectaculaire versnelling op dan de analoge variant, maar is voorspelbaarder en preciezer, omdat het gewoon met nullen en enen rekent in plaats van met elektrische stroomsterktes die gevoelig zijn voor ruis. Bij analoge chips is bovendien vaak een ADC (analoog-naar-digitaal-omzetter) en DAC (digitaal-naar-analoog-omzetter) nodig om de chip te kunnen aansluiten op de rest van een digitaal systeem, en die omzetters kosten zelf weer chipoppervlak en energie.
Wat wil men ermee bereiken?
De belangrijkste drijfveer is energie-efficiëntie. Onderzoek naar chipontwerp laat al langer zien dat het verplaatsen van data tussen geheugen en processor vaak veel meer energie kost dan de rekenkundige bewerking zelf, soms een veelvoud. Bij kunstmatige intelligentie, waar modellen bestaan uit miljoenen tot miljarden gewichten die telkens opnieuw vermenigvuldigd en opgeteld moeten worden, telt dat extra hard op. Compute-in-memory belooft dit datatransport drastisch te verminderen door het rekenwerk te verplaatsen naar waar de gewichten al staan.
Een tweede doel is snelheid: doordat een crossbar-array in één keer, in wezen gelijktijdig, een hele reeks vermenigvuldigingen kan uitvoeren, kan een berekening die op een gewone processor honderden aparte stappen kost, in principe in één fysieke handeling gebeuren. Een derde motivatie is compactheid: voor toepassingen aan de rand van het netwerk, zogeheten edge AI zoals slimme camera's, hoortoestellen of sensoren, is er weinig ruimte en een beperkt energiebudget, waardoor een chip die geheugen en rekenkracht combineert aantrekkelijk is. Ten slotte spelen ook datacenters en taken als genoomanalyse en database-verwerking een rol, waar enorme hoeveelheden data doorzocht en bewerkt moeten worden zonder dat alles constant tussen geheugen en processor heen en weer hoeft.
Voorbeelden uit de praktijk
IBM Research in Zürich onderzoekt al jarenlang analoge compute-in-memory op basis van phase-change memory. Onderzoekers van dit lab, onder wie Abu Sebastian en Manuel Le Gallo, publiceerden onder meer overzichtsartikelen in het vakblad Nature Electronics waarin de stand van zaken en de resterende uitdagingen van analoge in-memory computing worden samengevat.
Mythic AI, een Amerikaanse chipstartup, ontwikkelt analoge compute-in-memory-chips die gebruikmaken van flashgeheugencellen (vergelijkbaar met het geheugen in een usb-stick) om AI-inferentie, dus het toepassen van een al getraind model, efficiënt uit te voeren op edge-apparaten. Het bedrijf maakte rond 2022 een financieel lastige periode door en moest reorganiseren, maar bleef daarna actief met zijn technologie.
Samsung demonstreerde rond 2021 een vorm van digitale processing-in-memory genaamd HBM-PIM, waarbij rekenlogica is geïntegreerd in High Bandwidth Memory (een stapeling van geheugenchips die veel gebruikt wordt bij AI-versnellers). Het werd destijds getest in combinatie met hardware van partijen als Xilinx en AMD. SK hynix werkte aan een vergelijkbaar concept, GDDR6-AiM, met prototypes rond 2022.
UPMEM, een Frans bedrijf, verkoopt al enkele jaren PIM-DRAM-modules: gewone geheugenmodules (DIMM's) met daarin kleine, ingebouwde processorkernen. Deze worden onder meer toegepast bij genoomanalyse, waarbij enorme hoeveelheden DNA-sequenties doorzocht moeten worden, en bij grootschalige data-analyse.
Als aanpalend, niet identiek voorbeeld is er IBM's NorthPole-chip, gepresenteerd in 2023. Dat is strikt genomen geen compute-in-memory-chip, omdat rekenlogica en geheugen nog altijd gescheiden circuits zijn, maar de twee liggen zo dicht bij elkaar op de chip dat datatransport tot een minimum beperkt blijft. Het chip laat goed zien hoe de bredere gedachte achter compute-in-memory, het vermijden van dure datatransport, ook op andere manieren wordt nagestreefd.
Hoe ver is de techniek?
Compute-in-memory bevindt zich grotendeels nog in de onderzoeks- en prototypefase, met een aantal uitzonderingen die al commercieel verkrijgbaar zijn, zoals de digitale PIM-modules van UPMEM en de chips van Mythic AI. De digitale variant is over het algemeen verder ontwikkeld dan de analoge, simpelweg omdat digitale rekenkernen beter passen binnen bestaande chipfabricageprocessen en software-gereedschap.
Analoge compute-in-memory kampt met een aantal hardnekkige technische obstakels. Ten eerste is er het probleem van precisie en ruis: elektrische signalen in een crossbar-array zijn nooit perfect stabiel, waardoor berekeningen minder nauwkeurig zijn dan bij digitale chips. Ten tweede vertonen materialen als PCM last van drift, een langzame verandering van de opgeslagen waarde in de tijd, wat herkalibratie nodig maakt. Ten derde blijft de al genoemde ADC/DAC-overhead een aanzienlijk deel van het energie- en oppervlaktebudget opslokken, wat een deel van de beloofde besparing weer tenietdoet. Daarnaast is het software-ecosysteem, de compilers en programmeertools om AI-modellen op deze chips te laten draaien, nog relatief onvolwassen vergeleken met de decennia aan optimalisatie die grafische processors (GPU's) van bedrijven als Nvidia hebben gekregen.
Mede daardoor blijft compute-in-memory tot nu toe een niche naast de dominante GPU-gebaseerde aanpak voor AI. Onderzoekers zijn het erover eens dat de potentiële energiebesparing groot kan zijn, met name voor specifieke, energiegevoelige toepassingen, maar over de vraag wanneer en in welke vorm dit op grote schaal commercieel doorbreekt, bestaat nog geen consensus.
Wie werken eraan?
Op bedrijfsniveau zijn onder meer IBM Research, Samsung, SK hynix, Mythic AI en UPMEM actief betrokken bij de ontwikkeling van compute-in-memory-technologie, elk met een eigen invalshoek variërend van analoge PCM-chips tot digitale PIM-geheugenmodules. Ook onderzoeksinstituten spelen een grote rol: het Belgische imec en het Franse CEA-Leti behoren tot de vooraanstaande Europese onderzoekscentra op het gebied van geheugenchips en nanoelektronica, terwijl universiteiten als Stanford University in de Verenigde Staten en, dichter bij huis, TU Delft en TU Eindhoven in Nederland onderzoek doen naar geheugenmaterialen en chipontwerpen voor in-memory computing.
Het bredere onderzoeksveld naar materialen zoals ReRAM bouwt voort op het concept van de memristor, een elektronisch component waarvan het bestaan al in 1971 theoretisch werd voorspeld, maar dat pas in 2008 voor het eerst fysiek werd gedemonstreerd door onderzoekers van HP Labs onder leiding van Stanley Williams. Die doorbraak gaf een belangrijke impuls aan het latere onderzoek naar analoge compute-in-memory.