Wat is cache?

Wat is cache en waarom hebben CPU's, GPU's en andere soorten processors het? Hier is alles wat u moet weten.

Snelle links

  • Cache: een kleine hoeveelheid snel geheugen
  • Cacheniveaus en de geheugenhiërarchie
  • Cache is noodzakelijk, maar verbetert de prestaties op zichzelf niet

Hoewel er niet zoveel over cache wordt gesproken als over cores, RAM (Random Access Memory), of VRAM, je hebt er waarschijnlijk al eerder van gehoord, vooral recentelijk. AMD adverteert met trots gamingprestaties voor zijn Ryzen CPU's met 3D V-Cache als resultaat van het gebruik van cache, en een van Intels grootste verbeteringen met zijn 13e generatie Raptor Lake CPU's was het toevoegen van meer cache.

Maar hoe kan cache de prestaties verbeteren wanneer het wordt gemeten in termen van megabytes? Zelfs de goedkoopste RAM-kits worden tegenwoordig geleverd met 16 GB, dus hoe kan het toevoegen van slechts een paar extra megabytes aan cache zo'n groot verschil maken voor de prestaties? Nou, cache is niet je normale type geheugen.

Cache: een kleine hoeveelheid snel geheugen

Bron: AMD

Cache is eigenlijk een vrij recente ontwikkeling in processors, daterend uit de jaren negentig, en het is uitgevonden vanwege RAM. RAM is een sleutelcomponent in computers die een aanzienlijke hoeveelheid gegevens opslaat die processors (zoals CPU's en GPU's) naar verwachting vrij vaak nodig zullen hebben. Lange tijd hielden verbeteringen in RAM-prestaties gelijke tred met verbeteringen in CPU-prestaties, maar tegen de jaren negentig werd het duidelijk dat RAM de nieuwste CPU's niet zou kunnen bijhouden. RAM had veel capaciteit, maar de overdrachtssnelheden waren gewoon te langzaam.

Hier komt de cache om de hoek kijken. Het is fysiek of qua capaciteit lang niet zo groot als RAM, maar het zit in de processor zelf en kan gegevens zeer snel en met een zeer lage latentie overdragen. Zolang de cache de gegevens opslaat die de processor echt nodig heeft, kan het tijd besparen omdat het vele malen langzamer is om RAM om dezelfde gegevens te vragen. Het was een geweldige oplossing voor het RAM-probleem en stelde CPU-ontwerpers in staat om door te gaan met het maken van snellere CPU's en RAM-ontwerpers om grotere RAM-capaciteiten te blijven maken zonder zich daar zorgen over te hoeven maken prestatie. Tegenwoordig zit cache in vrijwel elk type processor.

Je vraagt ​​je misschien af ​​waarom de cache zo klein is. Nou, het heeft vooral te maken met ruimte en geld. Zelfs 32 MB cache kan behoorlijk wat ruimte innemen op een processor, en moderne chips zijn beperkt tot ongeveer 600 mm2 in totaal, wat verstandig moet worden gebruikt. Dat betekent dat het behoorlijk duur kan worden om meer ruimte aan de cache toe te wijzen die situatie wordt eigenlijk erger, niet beter. De nieuwste productieprocessen resulteren in steeds kleinere verbeteringen in de cachedichtheid, en TSMC slaagde er niet in om de grootte van de cache te verkleinen tijdens de eerste iteratie van zijn 3nm-proces.

Cacheniveaus en de geheugenhiërarchie

Bron: Carlos Carvalho

De uitvinding van cache betekende dat er een nieuwe laag was voor alle apparaten voor gegevensopslag in een computer. Deze lagen vormen wat de geheugenhiërarchie wordt genoemd, die u in de bovenstaande afbeelding kunt zien, en de details ervan welk geheugen gaat waar in een typisch systeem binnen een CPU (hoewel andere soorten processors er erg vergelijkbaar). Tegenwoordig omvat de moderne geheugenhiërarchie niet alleen cache-, RAM- en permanente opslagapparaten, maar ook een geheugenhiërarchie binnen de cache zelf.

De meeste processors hebben verschillende cacheniveaus voor verschillende doeleinden. Het eerste en kleinste cacheniveau is L1, dat individuele kernen krijgt voor het verwerken van gegevens die onmiddellijk nodig zijn. L1-cache wordt vaak gemeten in kilobytes, waarbij de nieuwste Ryzen 7000 CPU's 64 KB L1-cache per kern hebben. Bovendien wordt de moderne L1-cache vaak verder onderverdeeld in L1I (voor instructies) en L1D (voor gegevens).

De volgende stap is L2, dat voor een groep kernen is in plaats van voor individuele kernen. Natuurlijk is de L2-cache groter dan de L1-cache, vaak een orde van grootte, maar omdat hij veel groter is en meer kernen moet onderhouden, is hij langzamer en heeft hij een hogere latentie. Sommige processors, met name GPU's en langzamere CPU's, gaan alleen naar L2-cache.

De volgende stap is L3, die over het algemeen door alle kernen op de chip wordt gebruikt. De grootte kan variëren van een paar keer groter dan de L2-cache tot meer dan een orde van grootte groter, afhankelijk van de processor. Dit betekent dat het zelfs langzamer is dan L2-cache, maar nog steeds beter presteert dan RAM. Bovendien fungeert de L3-cache ook vaak als een "slachtoffercache", waar gegevens die uit de L1- en L2-cache zijn verwijderd, naartoe gaan. Het kan verder uit de L3-cache worden verwijderd als het niet nodig is. Tegenwoordig is de L3-cache bijzonder belangrijk voor AMD vanwege de chiplettechnologie. Ryzen 3D V-Cache-chips bevatten 64 MB L3-cache en RX 7000 Memory Cache Dies (of MCD's) bevatten elk 16 MB L3-cache.

Het hoogste cacheniveau dat op de meeste processors wordt gezien, is L4, dat vaak zo groot is dat het in feite RAM is. De nieuwste CPU's die L4-cache gebruiken, zijn zelfs Intel's Sapphire Rapids Xeon-chips, die HBM2 gebruiken als L4-cache op topmodellen. AMD, aan de andere kant, heeft nog nooit een L4-cache gebruikt en is in plaats daarvan tevreden om zijn L3-cache uit te breiden tot hoge capaciteiten door meer CPU- en V-Cache-chiplets toe te voegen. Een L4-cache heeft meestal meer voordelen voor geïntegreerde GPU's, omdat het een kant-en-klare oplossing is die gegevens kan delen tussen de CPU en de geïntegreerde GPU.

In sommige chipsets, voornamelijk mobiele, is er een ander type cache: de systeemcache (SLC). Deze cache wordt vervolgens gebruikt door de hele chipset, zoals de GPU, NPU en CPU. Een cache kan de behoefte aan verzoeken aan het hoofdgeheugen vervangen, dus een SLC komt de hele SoC ten goede.

Cache is noodzakelijk, maar verbetert de prestaties op zichzelf niet

Ondanks alle hype rond recente innovaties in cache, is het geen wondermiddel voor prestaties. Er is tenslotte geen verwerkingscapaciteit in de cache; het slaat alleen gegevens op, en dat is alles. Hoewel elke processor absoluut baat kan hebben bij meer cache, is het vaak te duur om meer toe te voegen dan precies nodig is. Het toevoegen van meer cache verbetert de prestaties misschien niet eens, afhankelijk van de werkdruk, wat een extra stimulans is om geen ton op een processor te zetten.

Dat gezegd hebbende, kan het in bepaalde situaties wenselijk zijn om een ​​grote hoeveelheid cache toe te voegen. CPU's met veel cache presteren bijvoorbeeld beter in games. AMD's Ryzen-CPU's met 3D V-Cache zijn behoorlijk snel voor gamen, ondanks dat ze een lagere frequentie hebben dan chips zonder V-Cache, en Intel's 13e generatie CPU's zijn aanzienlijk sneller dan 12e generatie chips, met als enige grote verbetering een grotere cache.

Uiteindelijk bestaat er cache zodat processors RAM zo vaak mogelijk kunnen omzeilen en de prestaties zo ongeremd mogelijk kunnen zijn. CPU-ontwerpers moeten de cachecapaciteit afwegen tegen de grootte en, bij uitbreiding, de kosten, wat moeilijker wordt met elke generatie nieuwe productieprocessen. Ook al worden tientallen jaren na de uitvinding van de cache nieuwe manieren geïntroduceerd om cache aan processors toe te voegen, het is moeilijk voor te stellen dat het doel van dit belangrijke onderdeel van processors ooit zal veranderen.