@hkultala sivistätkö tyhmää
Mitä tarkoitat että data on likaisena?
Että siihen on sen ytimen toimesta kirjoitettu, siitä on siellä uusin versio, ja tätä ei ole vielä tallennettu minnekään muualle.
Mitä tällä tarkoitat?
Onko possun välimuistissa dataa pakattuna vai mitä tarkoitat datan tilalla? Olen ymmärtänyt että joko se data on siellä tai sitten se ei ole siellä välimuistissa.
Ei ole pakattuna vaan tarkoitan noita välimuistikoherenttiusprotokollan tiloja. AMD käyttänee MOESI-protokollaa jossa on seuraavat tilat:
M = modified = likainen. Täällä on dataa, ja tätä dataa on muokattu eikä näitä muutoksia ole vielä kopioitu muualle.
E = exclusive. Täällä on dataa, tätä dataa ei ole muokattu, mutta sitä ei silti löydy mistään muusta välimuistista. Tätä saa muokata kertomatta muille.
O = owned. Täällä on dataa, tämä data löytyy monesta eri välimuistista, mutta tämä on merkattu omistajaksi, tämä saa muokata sitä, mutta tämän pitää sitten lähettää muutokset muille.
S = shared. Täällä on dataa, tämä data löytyy monesta eri välimuistista, tätä ei ole merkattu omistajaksi. Tämän pitää ensin neuvotella muiden välimuistien kanssa ja saada tilansa muutettua "owned"iksi tai "exclusiveksi" ennen kuin tämä saa kirjoittaa tänne.
I = invalid. Täällä ei ole mitään (oikeaa dataa (täällä voi olla vanhaa paikkaansapitämätöntä dataa jota ei saa käyttää))
Mitä ovat varjo-tagit ja miten eroaa tavallisista tageista?
Ne normaalit L2-tagit on siellä L2-välimuistin luona lähellä ydintä josta ytimen on nopea tarkastaa ne kun se tarkastaa L2n osumia.
Varjo-tageihin on kopioitu näiden sisältö, mutta ne ovat fyysisesti eri paikassa, L3n luona, josta niihin pääsee nopeasti käsiksi ytimen ulkopuolelta. NÄitä käytetään vain tuohon välimuistin koherenttiusjuttuun, että muualta voidaan tarakstaa, onko ytimen L2 (ja L1)-välimuistissa jotain.
Mitä tarkoitat tuoreempi kopio? Eikos se data ole silloin eri? Ja jos löytyi jo oikea data niin mitä merkitystä sillä on että se olisi tuoreempi kopio?
"kopio" oli tosiaan minulta vähän huono sanavalinta.
Kaikki data on aina jossain osoitteessa. Data on tosiaan eri, mutta osoite sama. Eli osoitteessa 12 on ensin vaikka luku 0. Sitten joku kirjoittaa sinne arvon 1.
Osoitteen 12 vanha arvo on 0, uusi arvo 1.
Mutta jos oikein ymmärsin niin se data kannattaa tarkistaa sieltä l1 muistista sen takia että sen saa sieltä nopeammin, mutta toisaalta olen joskus jostain lukenut että se data etsitään sisältä ulospäin (L1 -> L2 -> L3 -> DDR muisti) eikä toisinpäin
L1 on lähimpänä ydintä. Data on nopein hakea
sille ytimelle sieltä L1stä.
Kun dataa tarvitaan
sen ytimen ulkopuolella niin se on nopeampaa hakea sieltä uloimman tason välimuisteista.