da.phhsnews.com


da.phhsnews.com / Når er en CPU-cache spylt tilbage til hovedhukommelsen?

Når er en CPU-cache spylt tilbage til hovedhukommelsen?


Hvis du lige begyndte at lære, hvordan multi-core-CPU'er, caching, cache-sammenhæng og hukommelse fungerer, kan det virke lidt lidt forvirrende i starten. Med det i tankerne har dagens SuperUser Q & A-post svar på en nysgerrig læsers spørgsmål.

Dagens Spørgsmål og Svar-sessions kommer til vores side med SuperUser-en underafdeling af Stack Exchange, en community-driven gruppe af Q & A-websteder.

Spørgsmål

SuperUser-læser CarmeloS vil vide, hvornår en CPU-cache spoles tilbage til hovedhukommelsen:

Hvis jeg har en CPU med to kerner, og hver kerne har sin egen L1-cache, er det muligt, at Core1 og Core2 både cache samme del af hukommelsen på samme tid? Hvis det er muligt, hvad vil værdien af ​​hovedhukommelsen være, hvis både Core1 og Core2 har redigeret deres værdier i cache?

Hvornår er CPU'ens cache spolet tilbage til hovedhukommelsen?

Svaret

SuperUser-bidragsydere David Schwartz, Sleske og Kimberly W har svaret for os. Først op, David Schwartz:

Hvis jeg har en CPU med to kerner, og hver kerne har sin egen L1-cache, er det muligt, at Core1 og Core2 begge cache samme del af hukommelsen samtidig?

Ja, ydeevne ville være forfærdeligt, hvis det ikke var tilfældet. Overvej to tråde, der kører den samme kode. Du vil have den kode i begge L1-caches.

Hvad er værdien af ​​hovedhukommelsen, hvis både Core1 og Core2 har redigeret deres værdier i cache?

Den gamle værdi vil være i hovedhukommelsen, hvilket vil ikke noget, da hverken kernen vil læse den. Før du udsender en ændret værdi fra cachen, skal den skrives til hukommelse. Typisk anvendes en variant af MESI-protokollen. I den traditionelle implementering af MESI, hvis en værdi er ændret i en cache, kan den slet ikke være til stede i en anden cache på samme niveau.

Efterfulgt af svaret fra sleske:

Ja, at have to cache cache det samme hukommelsesområde kan ske og er faktisk et problem, der forekommer meget i praksis. Der er forskellige løsninger, for eksempel:

  • De to caches kan kommunikere for at sikre, at de ikke er uenige.
  • Du kan have en slags tilsynsførende, der overvåger alle caches og opdaterer dem i overensstemmelse hermed.
  • Hver processor overvåger hukommelsesområderne at den har cachelagret, og når den registrerer en skrive, kaster den sin (nu ugyldige) cache ud

Problemet kaldes cache-sammenhæng, og Wikipedia-artiklen om emnet har et godt overblik over problemet og mulige løsninger.

Og vores sidste svar fra Kimberly W:

For at besvare spørgsmålet i dit indlægs titel afhænger det af, hvad cacheprotokollen er. Hvis det er tilbagekald, vil cachen kun blive skyllet tilbage til hovedhukommelsen, når cache-controlleren ikke har andet valg end at sætte en ny cache-blok i allerede optaget rum. Blokken, der tidligere har optaget rummet, fjernes, og dens værdi skrives tilbage til hovedhukommelsen.

Den anden protokol er gennemskrivning. I så fald opdateres cacheblokken på niveau n , den tilsvarende blok på niveau n + 1 opdateres. Det er i lighed med at udfylde en formular med carbonpapir nedenunder; Hvad som helst du skriver på toppen, kopieres på nedenstående ark. Dette er langsommere, fordi det naturligvis indebærer flere skriveoperationer, men værdierne mellem caches er mere konsekvente. I tilbagekoblingsskemaet vil kun cache på højeste niveau have den mest ajourførte værdi for en bestemt hukommelsesblok.


Har du noget at tilføje til forklaringen? Lyde af i kommentarerne. Vil du læse flere svar fra andre tech-savvy Stack Exchange brugere? Se hele diskussionsgruppen her.

Billedkredit: Lemsipmatt (Flickr)


Sådan opretter du en Live Ubuntu USB-drev med vedvarende opbevaring

Sådan opretter du en Live Ubuntu USB-drev med vedvarende opbevaring

Et Linux-live USB-drev er normalt en blank skifer hver gang du starter den. Du kan starte den op, installere programmer, gemme filer og ændre indstillinger. Men så snart du genstarter, slettes alle dine ændringer, og du er tilbage til et nyt system. Dette kan være nyttigt, men hvis du vil have et system, der henter dig, hvor du slap af, kan du oprette en levende USB med vedvarende lagring.

(how-top)

Det er ikke ualmindeligt, at internetudbydere kan dække mængden af ​​data, der tilbydes til hjemmebrugere, som en måde at få dem til at betale flere penge til mere båndbredde. Hvis du befinder dig inden for disse kunstige begrænsninger, der er fastsat af din internetudbyder, skal du nøje se, hvad du gør online. Her er nogle tips til at holde dig under din hætte og fri for overageafgifter.

Det er ikke ualmindeligt, at internetudbydere kan dække mængden af ​​data, der tilbydes til hjemmebrugere, som en måde at få dem til at betale flere penge til mere båndbredde. Hvis du befinder dig inden for disse kunstige begrænsninger, der er fastsat af din internetudbyder, skal du nøje se, hvad du gør online. Her er nogle tips til at holde dig under din hætte og fri for overageafgifter.

Det første skridt til at holde din dataforbrug kontrolleret er at forstå, hvad der bruger en masse data, og hvad er det ikke? t. Hvis du f.eks. Tjekker din e-mail, hvis du selv tjekker det fire hundrede gange om dagen, kommer du ikke til at gøre en bule i en 1TB datapakke. Men streaming videoer over YouTube hele dagen vil selvfølgelig.

(how-top)