20Aug

Kada yra CPU talpykla, išleista atgal į pagrindinę atmintį?

Jei pradedate mokytis, kaip veikia daugiakrypčiai procesoriai, talpyklos, talpyklos nuoseklumas ir atmintis, iš pradžių gali atrodyti šiek tiek paini. Turint tai omenyje, šiandien "SuperUser Q &" įrašas turi atsakymus į įdomų skaitytojo klausimą.

Šiandienos klausimas &Atsakymų sesija ateina pas mus iš "SuperUser" - "Stack Exchange", bendruomenės pagrįstos "Q & A" svetainių grupės pasidalijimo.

Klausimas

SuperUser skaitytuvas CarmeloS nori sužinoti, kada procesoriaus talpyklą sugrąžina atgal į pagrindinę atmintį:

Jei turiu centrinį procesorių su dviem nuosėdomis ir kiekviena šerdis turi savo "L1" talpyklą, ar įmanoma, kad Core1 ir Core2 abu keičia tas patsatminties dalis tuo pačiu metu? Jei tai įmanoma, kokia bus pagrindinės atminties reikšmė, jei tiek Core1, tiek Core2 redaguotų vertes talpykloje?

Kada yra CPU talpyklos atmestas atgal į pagrindinę atmintį?

Atsakymas

SuperUser autoriai David Schwartz, sleske ir Kimberly W atsakė už mus. Pirmiausia, David Schwartz:

Jei turiu centrinį procesorių su dviem šerdimis ir kiekviena šerdis turi savo L1 talpyklą, ar įmanoma, kad Core1 ir Core2 vienu metu talpina tą pačią atminties dalį?

Taip, našumas būtų baisus, jei taip nebūtų.Apsvarstykite du temas, kuriose veikia tas pats kodas. Jūs norite, kad šis kodas būtų tiek L1 talpyklose.

Jei tai įmanoma, kokia bus pagrindinės atminties reikšmė, jei tiek Core1, tiek Core2 redaguotų vertes talpykloje?

Sena reikšmė bus pagrindinėje atmintyje, kuri nesvarbu, nes abu pagrindiniai jos neperskaito. Prieš išimdami iš talpyklos pakeistą reikšmę, ji turi būti įrašyta į atmintį.Paprastai naudojamasis MESI protokolo variantas. Tradiciškai diegiant MESI, jei vertė yra pakeista vienoje talpykloje, ji negali būti jokioje kitoje talpykloje tame pačiame lygyje.

Vykdydamas "sleske" atsakymą:

Taip, turint du talpyklos talpyklos, gali atsirasti ta pati atmintinės zona, ir tai iš tikrųjų yra problema, kuri praktiškai įvyksta daug. Yra keletas sprendimų, pavyzdžiui:

  • Du maišai gali perduoti, kad jie neprieštarautų
  • . Galite turėti tam tikrą supervisorą, kuris stebi visus talpyklos ir juos atitinkamai atnaujina.
  • Kiekvienas procesorius stebi atmintyje esančias talpyklos vietas irkai jis aptinka rašymą, jis išmeta( šiuo metu negaliojančią) talpyklą

. Problema vadinama talpyklos suderinamumu, o Vikipedijos straipsnis temoje turi gražią problemos ir galimų sprendimų apžvalgą.

Ir mūsų galutinis atsakymas iš Kimberly W:

. Norėdami atsakyti į klausimą savo įrašo pavadinime, tai priklauso nuo to, koks yra protokolas talpyklos. Jei tai yra atšaukimas, talpyklos bus grąžintos tik pagrindinei atminčiai, kai cache valdikliui nėra kito pasirinkimo, kaip įdėti naują talpyklos bloką jau užimtos vietos. Blokas, kuris anksčiau užėmė erdvę, pašalinamas ir jo reikšmė įrašoma atgal į pagrindinę atmintį.

Kitas protokolas yra perrašymas. Tada bet kuriuo metu talpyklos blokas įrašomas lygiu n , atitinkamas blokas n + 1 yra atnaujintas. Koncepcija yra panaši kaip užpildyti formą su apvalkalu;Visi, ką rašote viršuje, kopijuojami žemiau esančiame lape. Tai yra lėtesnis, nes akivaizdu, kad tai reiškia daugiau rašymo operacijų, tačiau tarp talpyklų reikšmės yra labiau suderinamos. Atsisakymo schemoje tik aukščiausio lygio talpykla turėtų naujausią konkrečios atminties bloko vertę.

Ar ką nors įtraukti į paaiškinimą?Garsas išjungtas komentaruose. Norite skaityti daugiau atsakymų iš kitų "Tech-savvy Stack Exchange" vartotojų?Patikrinkite visą diskusijų temą čia.

vaizdo kreditas: Lemsipmatt( Flickr)