Hva er CPU Cache?

Moderne prosessorer kjører utrolig fort; de kan overgå system-RAM-en betydelig. Denne hastighetsubalansen mellom CPU og minne vil føre til at prosessoren din ofte sitter inaktiv og venter på at data skal sendes til den slik at den kan fortsette å kjøre en prosess. For å forhindre at dette skjer, slik at CPUer kan fortsette å kjøre raskere og raskere, brukes en CPU-cache.

Hvordan øker en CPU-cache hastigheten på en CPU?

CPU-hurtigbufferen er designet for å være så rask som mulig og for deretter å bufre data som CPU-en ber om. CPU-cachen har hastigheten optimalisert på tre måter: latens, båndbredde og nærhet. CPU-bufferen opererer med svært lave ventetider, noe som minimerer tiden det tar før et resultat returneres. For eksempel har Intel i9-9900k en hurtigbufferforsinkelse på 0,8, 2,4 og 11,1 nanosekunder for henholdsvis L1-, L2- og L3-hurtigbufferen. Til sammenligning er ventetiden til moderne høyhastighets RAM i størrelsesorden 14 nanosekunder.

Tips: Cache-nivåene vil bli forklart mer detaljert senere, men enkelt sagt er de nedre lagene av cache raskere, men er dyrere, så de har lavere kapasitet. Et nanosekund er en milliarddels sekund, så en latens på 0,8 sekunder betyr at det tar mindre enn en milliarddels sekund å returnere et resultat.

Når det gjelder båndbredde, tilbyr CPU-cachen betydelige ytelsesforbedringer i forhold til tradisjonell lagring og RAM. Lesehastighetene til L1- og L3-cachen kan nå en topp på henholdsvis 2,3 TB/s og 370 GB/s, mens båndbredden til RAM vanligvis er rundt 40 GB/s. Denne økte båndbredden betyr at CPU-cachen kan overføre data til CPU-en mye raskere enn RAM kan.

For å oppnå maksimalt mulig hastighet er CPU-cachen faktisk innebygd i silisiumet til selve CPU-dysen. Dette minimerer avstanden som eventuelle elektriske signaler trenger å reise, og holder derfor ventetiden så lav som mulig. For eksempel, da L3-cachen først ble flyttet fra hovedkortet til CPU-matrisen, kunne datidens prosessor (Pentium 4 EE) oppnå en ytelsesforbedring på 10-20 %.

CPU-cache-arkitektur

Moderne CPUer bruker vanligvis tre lag med CPU-cache merket L1-3, med lavere nummererte cacher som er nærmere CPU-kjernene, raskere og dyrere. Hver enkelt CPU-kjerne i en multi-core CPU har sin egen L1-cache. Den er vanligvis delt inn i to deler, L1I og L1D. L1I brukes til å bufre instruksjoner for CPU, mens L1D brukes til å bufre dataene som disse instruksjonene skal utføres på.

Hver CPU-kjerne har vanligvis også sin egen L2-cache på en moderne CPU. L2-cachen er større og tregere enn L1-cachen og brukes først og fremst til å lagre data som ellers ikke ville passet inn i L2-cachen. Ved å ha en dedikert L2-cache per kjerne, unngås cache-konflikt. Bufferstrid er der forskjellige kjerner kjemper for å kreve hurtigbufferplass for sine egne arbeidsbelastninger, noe som kan føre til at viktige data slettes fra hurtigbufferen.

L3-cachen deles vanligvis mellom alle CPU-kjernene til prosessoren. Igjen, L3-cachen er tregere enn L2-cachen, men er billigere og større. Ved å tilby en delt cache er det mulig å redusere mengden data som vil bli duplisert på lavere nivåer av per-kjerne cache.

Tips: Som et eksempel, i hurtigbufferstørrelser, har Intels i9-9900K en 64KB L1 og en 256KB L2 cache per kjerne (for totalt 512KB L1 og 2MB L2), den har også en 16MB delt L3-cache.

Hvordan brukes CPU-cachen?

Alle nivåer i CPU-cachen brukes til å øke hastigheten på prosessorytelsen ved å bufre data fra RAM. Når en CPU ber om data, søker den vanligvis gjennom cachelagene først i et forsøk på å få dataene så raskt som mulig. Hvis dataene blir funnet i et hurtigbuffertreff, kan CPU-en fortsette behandlingen. Hvis dataene ikke er i hurtigbufferen, i det som kalles en cache-miss, må CPU-en sjekke RAM-en og deretter harddisken hvis dataene ikke er der heller. De raskere lagene sjekkes alltid først for maksimal ytelse.

For å hjelpe CPU-en med å ha dataene den trenger i hurtigbufferen når den trenger det, forsøker hurtigbufferen å foregripe hvilke data CPU-en trenger neste gang. For eksempel, hvis CPU-en har bedt om noen data for et bilde, kan den gjengi cachen prøve å forhåndsbuffere flere av bildedataene slik at de kan mates til CPU-en så raskt som mulig.