- CPU-cachehukommelsen (L1, L2, L3 og endda L4) reducerer latenstiden drastisk sammenlignet med RAM og er nøglen til ydeevne i den virkelige verden.
- Cachehierarkiet balancerer kapacitet og hastighed: L1 og L2 pr. kerne, delt L3 og i nogle tilfælde L4 som GPU-understøttelse.
- Latens, båndbredde og cache-hitrate bestemmer ydeevnen i spil og intensive arbejdsbelastninger, sammen med RAM-hastigheden.
- Teknologier som AMDs 3D V-Cache udvider L3-cachen gennem 3D-stacking, hvilket forbedrer spilydelsen betydeligt.
Når man diskuterer processorer, er fokus næsten altid på kerner, frekvens og fremstillingsproces, men cachehukommelse og dens latenstid forbliver stort set overset, på trods af at den er afgørende for systemets faktiske ydeevne. Forståelsen af, hvad der sker mellem CPU, cache og RAM, giver os mulighed for at se, hvorfor to processorer med samme frekvens kan yde meget forskelligt.
I de senere år er koncepter som cache-latens, L1/L2/L3-båndbredde og teknologier som AMD's 3D V-Cache blevet nøglespillere i benchmarks, spil og C++-ydeevnetests, hvor måling af selv et par nanosekunders forskel fuldstændigt kan ændre resultatet. Lad os gennemgå alt bag CPU-cache-latens, hvorfor det er så vigtigt, og hvordan det måles i praksis.
Fra CPU-RAM-kløften til cachehukommelsens fødsel
I 80'erne voksede processorhastighederne meget hurtigere end hukommelseshastighederne . CPU'er begyndte at udføre instruktioner i et halsbrækkende tempo, mens RAM-adgangstider forblev relativt lange. Resultatet var en konstant flaskehals: processoren brugte en betydelig mængde tid på at vente på, at data skulle ankomme.
For at imødegå dette ydelsesgab introducerede ingeniører cachehukommelse som et mellemlag mellem CPU'en og RAM'en. Ideen er enkel, men effektiv: at lagre, meget tæt på processoren og i ekstremt hurtig hukommelse, de data og instruktioner, som CPU'en mest sandsynligt vil have brug for på kort sigt. Dette reducerer effektiv latenstid og maskerer RAM'ens relative langsommelighed.
I en moderne pc kan vi tydeligt skelne mellem tre lagringsniveauer: masselagring (HDD, SSD), enorm men langsom; RAM , meget hurtigere, men stadig med betydelig latenstid; og cachehukommelsen, der er integreret i CPU'en , lille i kapacitet, men langt den hurtigste.
Cache er ikke eksklusivt for processoren: harddiske, SSD'er, GPU'er, printere og andre enheder har også deres egne interne caches for at fremskynde dataadgangen. CPU-cachen har dog den mest direkte indflydelse på den daglige brugeroplevelse.
Hvad er CPU-cachehukommelse, og hvordan fungerer den?
CPU-cachen er en SRAM-hukommelse integreret i processorchippen , der er i stand til at operere med utroligt høje hastigheder og med latenstider på brøkdele af et nanosekund. I modsætning til RAM (DRAM) kræver den ikke konstant opdatering, er dyrere at fremstille og har en meget mindre kapacitet; derfor er den kun reserveret til meget kortvarige, kritiske data.
Dens primære funktion er at fungere som en ultrahurtig buffer mellem CPU-kernerne og RAM . Når et program startes, indlæses dets kode og data først fra lageret til RAM'ens adresseområde. Derfra bringer CPU'ens integrerede hukommelsescontroller de blokke, der mest sandsynligt vil blive brugt, til cachen ved at følge adgangsmønstre og forudsigelsesalgoritmer.
Den typiske proces er som følger: CPU'en anmoder om en hukommelsesadresse, først ved at tjekke L1-cachen , derefter L2 og til sidst L3. Hvis dataene findes på et af disse niveauer, opstår der et cache-"hit", anmodningen behandles hurtigt, og mange clock-cyklusser gemmes. Hvis de ikke findes på et af disse niveauer, opstår der et cache-"miss", og dataene skal hentes fra RAM, som har højere latenstid og mindre effektiv båndbredde til små operationer.
Designet af dette hukommelseshierarki sigter mod en balance: små, ekstremt hurtige caches tæt på kernen og stadig større, men langsommere niveauer, efterhånden som de bevæger sig længere væk fra udførelsesenhederne. Al den ydeevnemagi, der er forbundet med en moderne CPU, afhænger af at maksimere antallet af hits og minimere omkostningerne ved misses.
Cache-niveauer: L1, L2, L3 og endda L4
Moderne processorer har typisk tre niveauer af cache integreret i selve chippen: L1, L2 og L3 . Nogle specifikke modeller inkluderer også et L4-niveau, normalt implementeret som en separat chip svarende til eDRAM til meget specifikke opgaver, såsom at give ekstra ressourcer til den integrerede GPU.
Hvert cacheniveau er karakteriseret af en trekant af faktorer: fysisk afstand fra kernen, latenstid og kapacitet. Jo tættere det er på udførelsesenhederne, desto lavere er latenstid, men også desto mindre er dets størrelse, fordi prisen på transistorer stiger betydeligt.
Cache L1: den første skudlinje
L1-cachen er tættest på kernen og er den hurtigste af alle cachen . Den er normalt opdelt i to forskellige blokke: L1-datacachen (L1D) og L1-instruktionscachen (L1I). Førstnævnte gemmer de operander, der skal behandles, mens sidstnævnte gemmer de afkodede instruktioner, som kernen vil udføre.
Hver kerne har sin egen L1-cache, som ikke deles med de andre, hvilket betyder, at der ikke er nogen direkte L1-kohærens mellem forskellige kerner. Typisk taler vi om 32 KB L1D og 32 KB L1I pr. kerne i mange moderne arkitekturer, selvom nogle designs øger disse værdier. Lidt større mængder kan findes i nogle avancerede processorer eller servere.
Med hensyn til ydeevne tilbyder L1 latenstider på sub-nanosekund og peaklæsehastigheder på tusindvis af GB/s i benchmarkværktøjer som AIDA64. For eksempel kan en moderne Ryzen-processor opnå en L1-latens på omkring 0,7 ns med båndbredder på over 2.700 GB/s, på bekostning af en lille størrelse, såsom 512 KB samlet L1-cache på tværs af alle kerner.
L2-cache: balancen mellem størrelse og hastighed
L2-cachen sidder lige efter L1 som et andet backuplag . Dens latenstid er lidt højere, men stadig meget lav sammenlignet med RAM. Dens funktion er at lagre data, der ikke passer i L1, men som stadig bruges ret ofte.
I de fleste forbrugerarkitekturer har hver kerne sin egen private Layer 2-cache , som ikke er opdelt i data og instruktioner og typisk varierer i størrelse fra 256 KB til 1 MB pr. kerne, selvom størrelser på 1 MB pr. kerne eller mere er almindelige i den seneste generation af servere. Med hensyn til ydeevne er båndbredder på over 1.300 GB/s med latenser på omkring 2,7 ns typiske.
Da L2-laget er større, hjælper det med at reducere fejl, der ellers ville nå L3 eller RAM, hvis kun L1 eksisterede, og opretholder dermed en god balance mellem kapacitet og latenstid . I nogle topologier grupperes flere kerner i klynger, der deler et fælles L2-lag, hvilket introducerer yderligere kohærensfunktioner og interne busser.
L3 eller LLC (cache på sidste niveau)
L3-cachen kaldes også ofte LLC (Last Level Cache), fordi det i de fleste desktopprocessorer er det sidste niveau af cachen før RAM. Det er den største og også den langsomste cache i CPU'ens hovedpakke.
I modsætning til L1- og L2-cacher deles L3-cachen typisk mellem alle kerner eller store grupper af kerner (f.eks. blokke på otte i nogle AMD-designs). Dette giver enhver kerne mulighed for at genbruge data, der er indført af en anden, hvilket øger den samlede hitrate, selvom det komplicerer konsistenslogikken betydeligt.
I en mellemklasse desktopprocessor er det ikke ualmindeligt at se L3-cache fra 4 MB til 32 MB, mens server-CPU'er, såsom nogle AMD EPYC-serier, nemt når hundredvis af MB . Prisen, man skal betale, er højere latenstid, som kan være omkring 10 ns, og lavere båndbredde end L1- og L2-cache, omend stadig ret betydelig: omkring 900 GB/s i kraftfulde systemer.
L4-cache: særlige tilfælde
L4-cachen er et specialtilfælde, der ikke findes i de fleste forbruger-CPU'er . Den implementeres typisk som eDRAM eksternt i forhold til den primære CPU-pakke, men fysisk meget tæt på bundkortet, og bruges i processorer med integrerede GPU'er for at give et ekstra boost til grafikbåndbredden.
Et klassisk eksempel var Intel Core i5-5775C, som kombinerede 6 MB L3-cache med 128 MB eDRAM, der blev brugt som L4-cache til dens integrerede Iris Pro 6200 GPU. Denne hukommelse fungerede som en buffer til grafikdata, hvilket reducerede belastningen på system-RAM og forbedrede spilydelsen sammenlignet med andre iGPU'er uden denne understøttelse.
Cache-latens og dens indflydelse på ydeevnen
Nøgleordet, når vi taler om CPU-cache, er latenstid: den tid det tager CPU'en at tilgå data, der er gemt på et bestemt hukommelsesniveau. Denne latenstid måles i nanosekunder (ns), og selvom disse tider kan virke latterligt små, summeret op til millioner af adgange pr. sekund, gør de en betydelig forskel.
I et typisk cachehierarki er L1-latensen den laveste (mindre end 1 ns), L2-latensen ganges med flere faktorer (for eksempel 2,7 ns), og L3-latensen øges igen (den kan nå 10 ns eller mere, især hvis den er på en separat chip). Når der ikke er noget hit i nogen af cachen, skal processoren tilgå RAM'en, hvor latenserne kan stige til flere titusindvis af nanosekunder, selv med hurtig DDR5-hukommelse.
Et eksempel fra den virkelige verden: med en Ryzen 7 7700X og DDR5-hukommelse på 6.000 MT/s og CL30 kan vi se gennemsnitlige RAM-latenser på omkring 70 ns, sammenlignet med 0,7 ns i L1, 2,7 ns i L2 og omkring 10 ns i L3. Denne forskel forklarer, hvorfor det er så vigtigt for CPU'en at finde dataene i cachen: hver cache-fejl tvinger en betydeligt længere ventetid frem.
Latenstiden afhænger ikke kun af den anvendte hukommelsesteknologi, men også af den fysiske afstand og topologien . I ældre designs, hvor L2- og L3-caches var monteret på bundkortet, meget længere væk fra CPU'en, var latensen meget højere, og ydeevnen led under det. Integration af alle caches i CPU-pakken reducerede disse forsinkelser drastisk.
Udover latenstid angiver den effektive cachebåndbredde (målt i GB/s) hvor meget data der kan overføres pr. tidsenhed. Her regerer L1 igen suverænt med læsehastigheder på over 2.000 GB/s i syntetiske benchmarks, efterfulgt af L2 og L3 med mere beskedne værdier, men stadig et godt stykke over RAM.
Hits, cache-misses og cross-core-konsistens
Når CPU'en søger efter data og finder dem i et af cacheniveauerne, kalder vi det et cache-hit . Hvis den ikke finder dem, opstår der et cache-miss , og CPU'en må ty til det næste niveau eller i værste fald til hovedhukommelsen. Jo flere hits der opnås på de højere niveauer, desto bedre er den samlede systemydelse.
Cache-mangler øger ikke kun latenstid; de kan også forårsage, at CPU'en er nødt til at gentage arbejdscyklusser eller omarrangere instruktioner, fordi dataene endnu ikke er tilgængelige, hvilket "ødelægger" processorens interne pipeline og reducerer udnyttelsen af dens funktionelle enheder.
I multi-core processorer spiller cache-kohærens også en rolle ; det vil sige at opretholde et ensartet overblik over de data, der deles mellem kerner, der har deres egne L1- og L2-caches. Komplekse kohærensprotokoller håndterer ugyldiggørelse og opdatering af cachelinjer, når en anden kerne ændrer data, hvilket tilføjer intern trafik og kan påvirke effektiv latenstid.
Intern arkitektur spiller også en rolle. I monolitiske designs som mange Intel Core-processorer har alle kerner adgang til en enkelt L3-cache med forholdsvis ensartede latenser. I chiplet- eller MCM-arkitekturer, såsom de første generationer af AMD Ryzen, er L3-cachen organiseret i blokke (CCX, CCD), og nogle kerner kan kun direkte få adgang til en del af L3-cachen, hvilket introducerer ekstra latenser, når man bevæger sig fra en blok til en anden.
Cache-latens versus RAM: frekvens, timings og bus
Når information ikke er i cachen, kommer RAM i spil . Her forveksles ofte to begreber: latenstid og frekvens. Frekvens (typisk udtrykt i MT/s eller MHz) angiver, hvor meget data der kan overføres pr. sekund, mens latenstid (i ns eller gennem timings som CL16, CL30 osv.) angiver, hvor lang tid det tager for det første stykke data at blive leveret.
RAM med høje frekvenser, men meget høje latenser, kan tilbyde god båndbredde, men dårligere responstid, hvilket straffer latensfølsomme processer såsom spil eller visse arbejdsbelastninger med ikke-sekventiel adgang. I modsætning hertil forbedrer moduler med lavere timings førstegangshastigheden, selvom deres rå båndbredde ikke er lige så imponerende.
Busbredden mellem CPU'en og RAM'en spiller også en rolle. På de fleste desktop-platforme har hver hukommelseskanal en 64-bit bus, og med en dobbeltkanalkonfiguration øges dette til 128 effektive bits, hvilket fordobler mængden af data, der kan overføres samtidigt mellem processoren og RAM'en.
Jo mere effektiv kombinationen af frekvens, latenstid og busbredde er, desto mindre smertefuldt vil et cache-miss være. Alligevel kan ingen nuværende RAM nærme sig latenstids- og båndbreddetallene for L1-, L2- eller L3-cacher, så prioriteten forbliver at maksimere cache-hits.
Scratchpad RAM vs. automatisk cache
Inde i processoren finder vi ikke kun hardwarestyrede automatiske cacher. Nogle designs inkluderer også Scratchpad RAM , en type meget hurtig intern hukommelse, der i modsætning til cache ikke er selvstyrende.
Forskellen er tydelig: cachehukommelse replikerer transparent datalinjer tæt på de anvendte adresser, idet den følger interne algoritmer, og programmøren har ingen direkte kontrol over den. I modsætning hertil fungerer et Scratchpad RAM som et lille lokalt RAM, hvor softwaren selv bestemmer, hvilke data der skal gemmes, hvordan de skal organiseres, og hvornår de skal slettes.
Denne tilgang er mere almindelig i indlejrede processorer, DSP'er og nogle GPU'er, hvor der er behov for meget forudsigelige adgangsmønstre, og usikkerheden ved automatisk caching skal undgås. På stationære pc'er og servere interagerer slutbrugeren sjældent eksplicit med et Scratchpad RAM.
Cache-latens, ydeevnetests og kuriøse effekter
I benchmarkverdenen er det almindeligt at måle cache-latenser i nanosekunder og båndbredder i GB/s for hvert niveau (L1, L2, L3) ved hjælp af værktøjer som AIDA64 eller ved at udvikle dine egne tests i C++, der udfører specifikke scanninger af store arrays.
Disse tests kan afsløre mærkelige adfærdsmønstre. For eksempel, når man måler L2- og L3-læsebåndbredde på et tilsyneladende inaktivt system, er det muligt at observere, at L2-værdier nogle gange falder fra omkring 80 GB/s til omkring 60 GB/s , og L3-værdier kan falde fra omkring 45 GB/s til lige over 35 GB/s uden nogen åbenlys grund.
En almindelig forklaring er throttling, eller dynamiske ændringer i CPU'ens interne frekvens og strømtilstande. Der er dog scenarier, hvor scorerne magisk vender tilbage til "gode" værdier, når man åbner et overvågningsværktøj som HWINFO. Når værktøjet lukkes, svinger scorerne nedad igen.
Det, der normalt sker, er, at programmer som HWINFO holder CPU'en i højere ydeevnetilstande , hvilket fremtvinger mere stabile frekvenser og forhindrer dele af den indre ring eller cachen i at gå i dybe dvaletilstande. Hvis benchmarken køres uden andre aktive funktioner, har processoren en tendens til at spare strøm, hvilket intermitterende kan reducere den målte effektive båndbredde, selvom de gennemsnitlige latenser ikke ændrer sig væsentligt.
I sådanne tilfælde er der blevet foreslået løsninger, såsom at opretholde en "keep-alive"-tråd , der udfører let arbejde for at forhindre CPU'en i at gå i dvale, men det er ikke altid let at reproducere effekten af et overvågningsværktøj, fordi hver mikroarkitektur har sit eget sæt af dvaletilstande og interne politikker.
Cachehukommelse og spilydelse
I videospil spiller L3-cachen en afgørende rolle. Mange spilbelastninger drager stor fordel af at kunne lagre flere data og instruktioner tættere på CPU'en , lige fra scenestrukturer til fysikdata og spillogik. Jo færre RAM-adgange, desto mere stabile FPS'er og desto mindre udsving i billedhastighed.
En processor med en generøs og veludnyttet L3-cache kan tilbyde betydelige forbedringer i billedhastighedsstabilitet, især i moderne spil, der håndterer et stort antal objekter og udfører mange gentagne forespørgsler til datastrukturer. I stedet for konstant at tilgå RAM (som er meget langsommere og har højere latenstid), kan CPU'en håndtere de fleste anmodninger direkte fra sin L3-cache.
Cache gør dog ikke mirakler. En CPU med få kerner, lav IPC og beskedne frekvenser vil stadig være begrænset, selv med massive mængder L3-cache. Den vindende kombination til spil er normalt høj IPC, god frekvens, rigelig cache og hurtig RAM med lav latenstid , så hele pakken minimerer flaskehalse.
Når et krævende spil startes, kan man, hvis man måler det parallelt med en benchmark som AIDA64, se, hvordan cache-adgang stiger . Mange af de mikro-stutters, der er mærkbare i nogle titler, skyldes cache-fejl, der tvinger systemet til at få adgang til RAM, eller trådændringer, der bryder den etablerede datalokalitet.
AMDs 3D V-Cache og kapløbet om mere L3
For at bryde den fysiske grænse for, hvad der kan integreres i en L3-cache på et enkelt fladt stykke silicium, introducerede AMD sin 3D V-Cache- teknologi , som involverer vertikal stabling af en ekstra L3-cachechip oven på en processor-CCD (chiplet). Dette udvider L3-cachekapaciteten betydeligt uden at øge chipsens basisstørrelse.
Ryzen-processorer med X3D-suffikset, såsom Ryzen 7 7800X3D eller 7950X3D, tager denne idé til det ekstreme. 7800X3D kombinerer for eksempel 32 MB L3-cache i basis-CCD'en med yderligere 64 MB stablet, hvilket giver i alt 96 MB L3-cache tilgængelig for det samme sæt kerner. 7950X3D går endnu længere med 128 MB L3-cache, foruden 1 MB L1-cache og 16 MB L2-cache fordelt mellem alle dens kerner.
Indvirkningen på spil er enorm, fordi cache-hit rates stiger voldsomt , hvilket reducerer behovet for adgang til RAM for mange strukturer, der tidligere ikke kunne passe helt ind i L3-cachen. Dette forklarer, hvorfor disse X3D-modeller er blevet benchmarken for ren gaming-ydeevne, selv sammenlignet med CPU'er med flere kerner eller lidt højere clockhastigheder.
Indtil videre har dens hovedkonkurrent, Intel, ikke replikeret en identisk løsning. Virksomheden har indikeret, at den foreløbig foretrækker at fokusere på en afbalanceret samlet ydeevne frem for en spilorienteret tilgang som store blokke af stablet L3-cache. Dette udelukker ikke, at den gradvist øger størrelsen af sine egne caches i fremtidige generationer, men det ser ikke ud til, at den vil anvende præcis den samme V-Cache-ordning på kort sigt.
Sådan ser du, hvor meget cache din processor har
Hvis du vil vide, hvilken L1-, L2- og L3-cache din CPU har, uden at skulle søge amok efter teknisk dokumentation, er en af de hurtigste måder at bruge værktøjer som CPU-Z i Windows. Dette gratis program viser størrelsen af hvert cacheniveau samt antallet af kerner, tråde og andre relevante data i dedikerede faner.
En anden mulighed er at besøge producentens officielle hjemmeside (Intel ARK, AMD-produktblade osv.), selvom det ofte kun er L3-cachen, der er tydeligt beskrevet, og man skal gennemgå tekniske dokumenter for at finde L1- og L2-cachen. Anmeldelser og analyser fra specialiserede medier opdeler normalt også disse oplysninger sammen med benchmarks for latenstid og båndbredde.
Valg og god udnyttelse af RAM og cachehukommelse
Cachen kan maskere mange af RAM'ens mangler, men ikke alle. Når man bygger en computer, er det vigtigt at vælge RAM med den rigtige frekvens, latenstid og kapacitet til dens tilsigtede anvendelse. En computer til kontorarbejde eller let browsing kan fungere godt med 8-16 GB og mellemklassemoduler, mens 16 GB eller 32 GB normalt anbefales til spil og videoredigering.
Det er altid en god idé at kontrollere RAM'ens kompatibilitet med bundkortet og CPU'en (type DDR3, DDR4, DDR5, maksimalt understøttede hastigheder, XMP/EXPO-profiler osv.). Det er også en god idé at finde en balance mellem høj frekvens og rimelige timings i stedet for udelukkende at fokusere på et prangende MHz-tal.
For at få mest muligt ud af hukommelse og cache, hjælper det meget at holde dit system fri for unødvendige baggrundsprogrammer , opdatere din BIOS og drivere, og på computere med stor brug slette midlertidige filer og browsercacher, der ikke længere tjener et formål. Alt, der reducerer belastningen på RAM og CPU, hjælper med at frigøre de hurtige ressourcer til det, der virkelig betyder noget.
På BIOS-niveau er aktivering af automatiske hukommelsesprofiler (XMP, DOCP, EXPO) normalt en simpel måde at sikre, at RAM'en fungerer med den hastighed, som producenten lover, og undgå at sidde fast på konservative værdier, der begrænser båndbredden.
Forståelse af, hvordan cache-latens fungerer, dens L1/L2/L3-hierarki, dens forhold til RAM og teknologier som 3D V-Cache giver dig mulighed for at læse CPU-specifikationer og benchmarkresultater i et nyt lys: Ud over GHz og antallet af kerner afgøres meget af systemets flydende egenskaber i de få nanosekunder, det tager processoren at finde eller ikke finde data i sin nærmeste hukommelse.