Når skyves en CPUs cache tilbake til hovedminnet?

Feb 23, 2025
Maskinvare

Hvis du nettopp har begynt å lære hvordan flerkjerners CPUer, caching, cache-koherens og minne fungerer, kan det virke litt forvirrende i starten. Med det i bakhodet har dagens SuperUser-spørsmål og svar svar på en nysgjerrig leserspørsmål.

Dagens spørsmål og svar-økt kommer til oss med tillatelse fra SuperUser - en underavdeling av Stack Exchange, en samfunnsdrevet gruppe av spørsmål og svar-nettsteder.

Spørsmålet

SuperUser-leser CarmeloS vil vite når hurtigbufferen til en CPU skylles tilbake til hovedminnet:

Hvis jeg har en CPU med to kjerner og hver kjerne har sin egen L1-cache, er det mulig at Core1 og Core2 begge cache den samme delen av minnet samtidig? Hvis det er mulig, hva vil verdien av hovedminnet være hvis både Core1 og Core2 har redigert verdiene i hurtigbufferen?

Når skyves hurtigbufferen til en CPU tilbake til hovedminnet?

Svaret

SuperUser-bidragsytere David Schwartz, sleske og Kimberly W har svaret for oss. Først opp, David Schwartz:

Hvis jeg har en CPU med to kjerner og hver kjerne har sin egen L1-cache, er det mulig at Core1 og Core2 begge cache den samme delen av minnet samtidig?

Ja, ytelse ville vært forferdelig hvis ikke dette var tilfelle. Vurder to tråder som kjører samme kode. Du vil ha den koden i begge L1-cachene.

Hvis det er mulig, hva vil verdien av hovedminnet være hvis både Core1 og Core2 har redigert verdiene i hurtigbufferen?

Den gamle verdien vil være i hovedminnet, noe som ikke betyr noe siden ingen av kjernene vil lese den. Før du endrer ut en modifisert verdi fra hurtigbufferen, må den skrives til minnet. Vanligvis noen variant av MESI-protokoll benyttes. I den tradisjonelle implementeringen av MESI, hvis en verdi endres i en cache, kan den ikke være tilstede i det hele tatt i noen annen cache på samme nivå.

Etterfulgt av svaret fra sleske:

Ja, det å ha to hurtigbuffere i samme minnesregion kan skje og er faktisk et problem som oppstår mye i praksis. Det er forskjellige løsninger, for eksempel:

  • De to cachene kan kommunisere for å sikre at de ikke er uenige
  • Du kan ha en slags veileder som overvåker alle cacher og oppdaterer dem deretter
  • Hver prosessor overvåker minneområdene den har hurtigbufret, og når den oppdager en skriving, kaster den ut (nå ugyldig) cache

Problemet kalles cache coherency and the Wikipedia article på temaet har en fin oversikt over problemet og mulige løsninger.

Og vårt endelige svar fra Kimberly W:

For å svare på spørsmålet i tittelen på innlegget ditt, avhenger det av hva caching-protokollen er. Hvis det er tilbakeføring, vil hurtigbufferen bare skylles tilbake til hovedminnet når hurtigbufferkontrolleren ikke har annet valg enn å plassere en ny hurtigblokk i allerede opptatt plass. Blokken som tidligere okkuperte plassen fjernes og verdien skrives tilbake til hovedminnet.

Den andre protokollen er gjennomskrivning. I så fall, når som helst cache-blokken skrives på nivå n , den tilsvarende blokken på nivå n + 1 er oppdatert. Det ligner i konseptet å fylle ut et skjema med karbonpapir under; hva du skriver på toppen kopieres på arket nedenfor. Dette er tregere fordi det åpenbart innebærer flere skriveaksjoner, men verdiene mellom cachene er mer konsistente. I tilbakekoplingsskjemaet vil bare hurtigbufferen på høyeste nivå ha den mest oppdaterte verdien for en bestemt minneblokk.


Har du noe å legge til forklaringen? Lyd av i kommentarene. Vil du lese flere svar fra andre teknologikyndige Stack Exchange-brukere? Sjekk ut hele diskusjonstråden her .

Bildekreditt: Lemsipmatt (Flickr)

.post-innhold .inngangs-bunntekst

When Is A CPU’s Cache Flushed Back To Main Memory?

What Is The Difference Between Memory And SSD Cache In A PC Or NAS?

5 Cache و Virtual Memory

How To Clear Cache On Mac OS - Clear Memory Cache On Mac In 1-Click

Buffer Cache

Caching In: Understand, Measure, And Use Your CPU Cache More Effectively

How To Clear RAM Cache Memory | Fix RAM Cached Memory Too High Windows 10

NetApp WAFL, NVRAM And The System Memory Cache (new Version)


Maskinvare - Mest populære artikler

USB Type A-kontakt: Alt du trenger å vite

Maskinvare Sep 18, 2025

UCACHED INNHOLD tka4ko/Shutterstock.com USB kommer i mange former og størrelser, men USB Type-A-kontakter er den vanligste typen. De har rekta..


Hvordan komme i gang med et stående skrivebord

Maskinvare Jun 30, 2025

UCACHED INNHOLD Stående skrivebord er kjempebra. De er uten tvil bedre for helsen din enn å sitte, har vært kjent for å øke produktiviteten og kan forbedre fokuset. Men du ka..


Hvordan oppgradere eller erstatte nesten hvilken som helst PC-komponent

Maskinvare Apr 13, 2025

Det kan være litt vanskelig å oppgradere og erstatte PC-komponenter, men det er noe alle kan lære å gjøre. La oss ta en titt på hvordan vi velger og installerer disse oppgrade..


Er trådløs lading langsommere enn kablet lading?

Maskinvare Dec 4, 2024

UCACHED INNHOLD Apple gjør trådløs lading kult igjen med iPhone 8, 8 Plus og X. Jeg er glad! Men det er ting du bør vite om denne teknologien - som hvor raskt den skal lade te..


Bør du kjøpe utvidede garantier?

Maskinvare Sep 22, 2025

UCACHED INNHOLD Hvis du kjøper noe i en elektronikkbutikk, blir du konfrontert med en påtrengende selger som insisterer på at du trenger utvidet garanti. Du vil også se utvide..


Hvorfor er skriverblekk så dyrt?

Maskinvare Sep 22, 2025

UCACHED INNHOLD Printerblekk er dyrt, dyrere per dråpe enn fin champagne eller til og med menneskelig blod. Hvis du ikke har gått uten papir, vil du legge merke til at du betale..


Hvorfor bruker fortsatt flyttbare stasjoner FAT32 i stedet for NTFS?

Maskinvare Mar 31, 2025

UCACHED INNHOLD Microsofts Windows XP begynte å bruke NTFS-filsystemet som standard for sine interne stasjoner tilbake i 2001. Det er nå 17 år senere, så hvorfo..


Slik bruker du en Xbox One-kontroller på Windows, OS X og Linux

Maskinvare Sep 2, 2025

UCACHED INNHOLD Xbox One-kontrolleren er en fantastisk gamepad, og selv om Microsoft bare nylig har startet med å samle driverne for den i Windows 10, er det drivere tilgjengelig..


Kategorier