Vad är CPU-cachen?

Moderna processorer går otroligt snabbt; de kan avsevärt överträffa systemets RAM. Denna hastighetsobalans mellan CPU och minne skulle göra att din processor ofta sitter inaktiv och väntar på att data ska skickas till den så att den kan fortsätta köra en process. För att förhindra att detta händer, så att CPU: er kan fortsätta att köra snabbare och snabbare, används en CPU-cache.

Hur snabbar en CPU-cache upp en CPU?

CPU-cachen är designad för att vara så snabb som möjligt och för att sedan cache data som CPU: n begär. CPU-cachen har sin hastighet optimerad på tre sätt: latens, bandbredd och närhet. CPU-cachen arbetar med mycket låga latenser, vilket minimerar den tid det tar för ett resultat att returneras. Till exempel har Intel i9-9900k en cache-latens på 0,8, 2,4 och 11,1 nanosekunder för L1-, L2- och L3-cachen respektive. I jämförelse är latensen för modernt höghastighets-RAM i storleksordningen 14 nanosekunder.

Tips: Cachenivåerna kommer att förklaras mer i detalj senare, men enkelt uttryckt är de lägre cachelagren snabbare men är dyrare så har lägre kapacitet. En nanosekund är en miljarddels sekund, så en latens på 0,8 sekunder betyder att det tar mindre än en miljarddels sekund att returnera ett resultat.

När det gäller bandbredd erbjuder CPU-cachen betydande prestandaförbättringar jämfört med traditionell lagring och RAM. Läshastigheterna för L1- och L3-cachen kan nå en topp på 2,3 TB/s respektive 370 GB/s, medan bandbredden på RAM-minnet vanligtvis är runt 40 GB/s. Denna ökade bandbredd innebär att CPU-cachen kan överföra data till CPU: n mycket snabbare än vad RAM kan.

För att uppnå högsta möjliga hastighet är CPU-cachen faktiskt inbyggd i kiseln på själva CPU-matrisen. Detta minimerar det avstånd som alla elektriska signaler behöver för att färdas, och håller därför latensen så låg som möjligt. Till exempel, när L3-cachen först flyttades från moderkortet till CPU-matrisen, kunde dåtidens processor (Pentium 4 EE) få en 10-20% prestandaförbättring.

CPU-cache-arkitektur

Moderna CPU: er använder vanligtvis tre lager CPU-cache märkt L1-3, med lägre numrerade cacher som är närmare CPU-kärnorna, snabbare och dyrare. Varje enskild CPU-kärna i en multi-core CPU har sin egen L1-cache. Den är vanligtvis uppdelad i två delar, L1I och L1D. L1I används för att cache-instruktioner för CPU: n medan L1D används för att cache-minne de data som dessa instruktioner ska utföras på.

Varje CPU-kärna har vanligtvis också sin egen L2-cache på en modern CPU. L2-cachen är större och långsammare än L1-cachen och används främst för att lagra data som annars inte skulle passa i L2-cachen. Genom att ha en dedikerad L2-cache per kärna undviks cachekonflikt. Cachekonflikt är där olika kärnor kämpar för att göra anspråk på cacheutrymme för sina egna arbetsbelastningar, vilket kan leda till att viktig data rensas från cachen.

L3-cachen delas vanligtvis mellan alla CPU-kärnor i processorn. Återigen, L3-cachen är långsammare än L2-cachen men är billigare och större. Genom att tillhandahålla en delad cache är det möjligt att minska mängden data som skulle dupliceras på lägre nivåer av per-kärn-cache.

Tips: Som ett exempel, i cachestorlekar, har Intels i9-9900K en 64KB L1 och en 256KB L2-cache per kärna (för totalt 512KB L1 och 2MB L2), den har också en 16MB delad L3-cache.

Hur används CPU-cachen?

Alla nivåer i CPU-cachen används för att påskynda processorprestanda genom att cachelagra data från RAM. När en CPU begär data söker den vanligtvis igenom sina cachelager först i ett försök att få data så snabbt som möjligt. Om data hittas i en cacheträff kan CPU: n fortsätta sin bearbetning. Om data inte finns i cachen, i det som kallas en cachemiss, måste processorn kontrollera RAM-minnet och sedan hårddisken om data inte finns där heller. De snabbare lagren kontrolleras alltid först för maximal prestanda.

För att hjälpa processorn att ha den data den behöver i cachen när den behöver den, försöker cachen föregripa vilken data processorn kan behöva härnäst. Till exempel, om processorn har begärt data för en bild som den renderar kan cachen försöka att förebygga cache mer av bilddata så att den kan matas till processorn så snabbt som möjligt.