Hvad er CPU-cachen?

click fraud protection

Moderne CPU'er kører utrolig hurtigt; de kan markant overgå systemets RAM. Denne hastighedsubalance mellem CPU og hukommelse ville få din processor til ofte at sidde inaktiv og vente på, at data bliver sendt til den, så den kan fortsætte med at køre en proces. For at forhindre dette i at ske, så CPU'er kan fortsætte med at køre hurtigere og hurtigere, bruges en CPU-cache.

Hvordan fremskynder en CPU-cache en CPU?

CPU-cachen er designet til at være så hurtig som muligt og til derefter at cache data, som CPU'en anmoder om. CPU-cachen har sin hastighed optimeret på tre måder: latency, båndbredde og nærhed. CPU-cachen fungerer med meget lave forsinkelser, hvilket minimerer den tid, det tager for et resultat at blive returneret. For eksempel har Intel i9-9900k en cache-latenstid på 0,8, 2,4 og 11,1 nanosekunder for henholdsvis L1, L2 og L3-cachen. Til sammenligning er latenstiden for moderne højhastigheds-RAM i størrelsesordenen 14 nanosekunder.

Tip: Cacheniveauerne vil blive forklaret mere detaljeret senere, men ganske enkelt er de nederste lag af cache hurtigere, men er dyrere, så de har lavere kapacitet. Et nanosekund er en milliardtedel af et sekund, så en latenstid på 0,8 sekunder betyder, at det tager mindre end en milliardtedel af et sekund at returnere et resultat.

Med hensyn til båndbredde tilbyder CPU-cachen betydelige ydeevneforbedringer i forhold til traditionel lagring og RAM. Læsehastighederne for L1 og L3 cachen kan toppe med henholdsvis 2,3 TB/s og 370 GB/s, mens båndbredden på RAM typisk er omkring 40 GB/s. Denne øgede båndbredde betyder, at CPU-cachen kan overføre data til CPU'en meget hurtigere, end RAM kan.

For at opnå de maksimalt mulige hastigheder er CPU-cachen faktisk indbygget i siliciumet i selve CPU-matricen. Dette minimerer den afstand, som eventuelle elektriske signaler skal rejse, og holder derfor latenstiden så lav som muligt. For eksempel, da L3-cachen første gang blev flyttet fra bundkortet til CPU-matricen, var datidens processor (Pentium 4 EE) i stand til at opnå en ydelsesforbedring på 10-20%.

CPU cache arkitektur

Moderne CPU'er bruger generelt tre lag CPU-cache mærket L1-3, hvor caches med lavere nummer er tættere på CPU-kernerne, hurtigere og dyrere. Hver enkelt CPU-kerne i en multi-core CPU har sin egen L1-cache. Det er typisk opdelt i to dele, L1I og L1D. L1I bruges til at cache instruktioner til CPU'en, mens L1D bruges til at cache de data, som disse instruktioner skal udføres på.

Hver CPU-kerne har typisk også sin egen L2-cache på en moderne CPU. L2-cachen er større og langsommere end L1-cachen og bruges primært til at gemme data, som ellers ikke ville passe ind i L2-cachen. Ved at have en dedikeret L2-cache pr. kerne undgås cache-konflikt. Cachekonflikt er, hvor forskellige kerner kæmper for at kræve cacheplads til deres egne arbejdsbelastninger, hvilket kan føre til, at vigtige data bliver ryddet fra cachen.

L3-cachen deles typisk mellem alle CPU-kernerne i processoren. Igen er L3-cachen langsommere end L2-cachen, men den er billigere og større. Ved at levere en delt cache er det muligt at reducere mængden af ​​data, der ville blive duplikeret på lavere niveauer af per-kerne cache.

Tip: Som et eksempel, i cachestørrelser, har Intels i9-9900K en 64KB L1 og en 256KB L2-cache pr. kerne (for i alt 512KB L1 og 2MB L2), den har også en 16MB delt L3-cache.

Hvordan bruges CPU-cachen?

Alle niveauer af CPU-cachen bruges til at fremskynde processorydelsen ved at cache data fra RAM. Når en CPU anmoder om data, søger den typisk først gennem sine cachelag i et forsøg på at få dataene så hurtigt som muligt. Hvis dataene findes i et cache-hit, kan CPU'en fortsætte behandlingen. Hvis dataene ikke er i cachen, i det der kaldes en cache miss, så skal CPU'en tjekke RAM'en og derefter harddisken, hvis dataene heller ikke er der. De hurtigere lag kontrolleres altid først for maksimal ydeevne.

For at hjælpe CPU'en med at have de data, den har brug for, i cachen, når den har brug for det, forsøger cachen at foregribe, hvilke data CPU'en skal bruge næste gang. For eksempel, hvis CPU'en har anmodet om nogle data til et billede, som den gengiver, kan cachen forsøge på forhånd at cache flere af billeddataene, så de kan føres til CPU'en så hurtigt som muligt.