20Aug
Če se šele začnete naučiti, kako multi-core procesorji, predpomnilnik, koherentnost predpomnilnika in pomnilnik delujejo, se lahko zdi malo zmedeno. Glede na to je današnja delovna postaja SuperUser Q & A odgovorila na zanimivo bralsko vprašanje.
Današnje vprašanje &S sejo odgovora prihaja uporaba SuperUserja, ki je razdeljena na Stack Exchange, skupinsko spletno stran Q & A.
Vprašalnik
SuperUser bralnik CarmeloS želi vedeti, če je predpomnilnik procesorja popoldan v glavni pomnilnik:
Če imam CPU z dvema jedroma in ima vsako jedro lasten predpomnilnik L1, ali sta Core1 in Core2 oba predpomnilnika enakadel pomnilnika hkrati?Če je možno, kakšna bo vrednost glavnega pomnilnika, če sta Core1 in Core2 spremenili svoje vrednosti v predpomnilniku?
Kdaj je predpomnilnik CPU-ja spet v glavni pomnilnik?
Odzivniki
SuperUser David Schwartz, sleske in Kimberly W imajo odgovor za nas. Najprej navzgor, David Schwartz:
Če imam CPU z dvema jedroma in ima vsaka jedra lasten predpomnilnik L1, ali sta Core1 in Core2 oba predpomnilnika istočasnega pomnilnika istega dela pomnilnika?
Da, uspešnost bi bila grozna, če ne bi bilo tako. Razmislite o dveh vrstah, ki vodita isto kodo.Želite to kodo v obeh L1 kljukicah.
Če je možno, kakšna bo vrednost glavnega pomnilnika, če sta Core1 in Core2 urejali svoje vrednosti v predpomnilniku?
Stara vrednost bo v glavnem pomnilniku, kar pa ne bo pomembno, saj nobeno jedro tega ne bo prebralo. Preden izbrišete spremenjeno vrednost iz predpomnilnika, ga morate zapisati v pomnilnik. Običajno se uporablja nekaj različic protokola MESI.Pri tradicionalnem izvajanju MESI, če je vrednost spremenjena v enem predpomnilniku, v nobenem drugem predpomnilniku na isti ravni ne more biti prisotna.
Sledi odgovor sleske:
Da, ob dveh predpomnilnih mestih se lahko zgodi, da se zgodi ta pomnilniška regija in je pravzaprav problem, ki se v praksi dogaja veliko. Obstajajo različne rešitve, na primer:
- Dva kljuca lahko komunicirajo, da se prepričata, da se ne strinjata
- Imate lahko neke vrste nadzornika, ki nadzira vse vdelane predmete in jih ustrezno ažurira.
- Vsak procesor nadzira pomnilniška področja, ki jih je shranila, inko zazna pisanje, izprazni svoj( zdaj veljaven) predpomnilnik
Težava se imenuje koherentnost predpomnilnika in članek o temi v Wikipediji je lep pregled nad problemom in možnimi rešitvami.
In naš končni odgovor od Kimberly W:
Če želite odgovoriti na vprašanje v naslovu svojega objave, je odvisno od tega, kaj je protokol predpomnilnika.Če gre za napravo, se predpomnilnik popelje nazaj v glavni pomnilnik, če krmilnik predpomnilnika nima druge izbire, kot da bi postavil nov blok predpomnilnika v že zasedenem prostoru. Blok, ki je predhodno zasedel prostor, je odstranjen, njegova vrednost pa je zapisana nazaj v glavni pomnilnik.
Drugi protokol je zapisovanje. V tem primeru je kadarkoli predpomnilnik zapisan na ravni n , ustrezen blok na ravni n + 1 je posodobljen. Podobno je po zaslugi polnjenja obrazca s karbonskim papirjem pod njim;karkoli pišete na vrhu, se kopira na spodnji list. To je počasnejše, ker očitno vključuje več pisnih operacij, vendar so vrednosti med kliki bolj konsistentne. V shemi za vnašanje naj bi imela samo najcenejši predpomnilnik najsodobnejšo vrednost za določen pomnilniški blok.
Ali želite dodati nekaj pojasnila? Zvok v komentarjih.Želite prebrati več odgovorov od drugih uporabniških članov stack Exchange? Oglejte si celotno temo za razpravo tukaj.
Image Credit: Lemsipmatt( Flickr)