Cacheminne i CPU och GPU: Vad det är för

När vi tittar på specifikationerna för en processor är en av de saker som sticker ut cacheminnet, som inte bara finns på alla processorer utan också på alla grafikprocessorer. I den här artikeln kommer vi att förklara vad cacheminne är på vanligt och tillgängligt språk, så att du vet vad denna typ av minne är till för din dator.

Cacheminnet implementerades först i Intel 80486, men dess ursprung går tillbaka till IBM S / 360 där idén om cacheminne implementerades för första gången. Idag på grund av klyftan mellan CPU, GPU och andra processorer med minne, har det blivit en oumbärlig del av varje processor.

Cacheminne i CPU och GPU

Varför är cachen nödvändig?

Distancia RAM -processor

Cacheminne är nödvändigt på grund av att RAM minnet är för långsamt för att en CPU ska kunna utföra sina instruktioner med tillräcklig hastighet och vi kan inte påskynda det längre. Lösningen? Lägg till ett internt minne i processorn som låter dig zooma in på de senaste data och instruktioner.

Problemet är att det är extremt komplicerat att göra detta eftersom det tvingar själva programmen att göra det och därmed utökar CPU-cykler. Lösningen? Skapa ett minne med en mekanism som kopierar data och instruktioner närmast det som för närvarande körs.

Eftersom cacheminnet finns inuti processorn, så kör processorn när den har hittat data inuti den mycket snabbare än om den hade naturlig tillgång till RAM.

Hur fungerar cachen?

Cache -mikroskop

Först och främst måste vi komma ihåg att cacheminnet inte är en del av RAM-minnet och inte heller fungerar som sådant. Dessutom kan det inte styras som RAM där program kan ockupera och frigöra minne som de vill när de behöver det . Anledningen? Cache fungerar helt separat från RAM.

Cache-uppgiften är att flytta data från minnet till processorn. Det vanliga i ett program är att koden exekveras i sekvens, det vill säga om den aktuella instruktionen är i rad 1000 kommer nästa att vara i 1001 såvida det inte är en hoppinstruktion. Idén med cachar? Tja, överför en del av data och instruktioner till ett internt minne i processorn.

När CPU eller GPU letar efter en data eller en instruktion är det första den gör att titta på cachen som ligger närmast processorn och därmed den med lägsta nivå för att öka tills den når förväntade data. Tanken är att du inte behöver komma åt minne.

Cache-nivåer på CPU och GPU

Cache CPU-processor

I ett flerkärnigt system där vi har två eller flera kärnor, finner vi att alla har åtkomst till samma RAM-minne, det finns ett enda gränssnitt för minne och flera processorer som kämpar för åtkomst till det. Det är vid denna punkt där det är nödvändigt att skapa en ytterligare cache-nivå, som kommunicerar med minnesstyrenheten och detta med de högre cache-nivåerna.

Normalt har processorer med flera kärnor vanligtvis två nivåer av cache, men i vissa utföranden har vi kluster, som är baserade på grupper om flera processorer med en delad L2-cache, men som delar utrymmet med andra kluster, som ibland tvingar att inkludera en cache på tredje nivå.

Även om det inte är vanligt, uppträder nivå 3-cacher så snart minnesgränssnittet är en tillräckligt stor flaskhals för att lägga till en extra nivå i hierarkin hjälper prestanda.

Minneshierarkin

Jerarquia cacher

Reglerna för minneshierarkin är mycket tydliga, den börjar från processorregistret och slutar i samma långsamma minne och följer alltid samma regler:

  • Den aktuella nivån i hierarkin har mer kapacitet än den föregående men mindre än nästa.
  • När vi går bort från processorn ökar latens för instruktionerna.
  • När vi går bort från processorn minskar bandbredden med data.

I det specifika fallet med cache-nivåer lagrar de mindre och mindre informationsbitar men innehåller alltid ett fragment av nästa nivå. Så L1-cachen är en delmängd av L2-cachedata som i sin tur är en överuppsättning av L1-cachedata och en delmängd av L3-cachedata om någon.

Den sista nivån cache, den som ligger närmast minnet, är dock inte en delminne av RAM, utan bara en kopia av minnessidan eller en uppsättning av dessa närmast processorn.

Cache Miss eller när data inte hittas

Caché fröken

Ett av de största prestandaproblemen är när en Miss Cache inträffar som inträffar när data inte hittas på cache-nivå. Detta är extremt farligt för prestandan hos en out-of-order CPU eftersom konsekvensen är många förlorade processorcykler, men det är inte mindre farligt för en out-of-order CPU.

För utformningen av en CPU är det faktum att summan av söktiden för alla Cache Miss tillsammans med söktiden är större än att leta efter data direkt i cachen är ett misslyckande. Många CPU-mönster har varit tvungna att gå tillbaka till designtabellen på grund av att söketiden är längre än åtkomst till RAM.

Det är därför arkitekter är mycket ovilliga att lägga till ytterligare nivåer i en arkitektur, för ja, det måste motiveras inför förbättrad prestanda.

Samstämmighet med minnet

CPU -RAM

Eftersom cacheminnet har kopior av data från RAM-minnet, men det inte är RAM-minnet i sig, orsakar detta risken för att data inte kommer att matcha, inte bara mellan cacheminnet och RAM-minnet, utan också mellan de olika cache-nivåerna där en del är .

Därför är det nödvändigt med mekanismer som är ansvariga för att upprätthålla enhetligheten i data på alla nivåer med varandra. Något som antar implementeringen av ett extremt komplext system som ökar med antalet processorkärnor.