MESIF, MOESI jne, sanoinhan tuolla aikaisemmin että välimuistikoherenttiusprotokollista voi turista vaikka mitä. Kaikki ne tekevät kuitenkin sen mitä MESI:kin, eli merkataan jaettu data ja pidetään privaatti nopeana jotta ei tarvii tehdä sitä kaikkien cachejen snooppausta jokaisen muistihaun yhteydessä, ainoastaan jaettujen.
Voi huoh.
Ei siinä MESIssä merkata mitenkään kaikkea "jaettua dataa" eri prosessien tai säikeiden välillä , vaan vain niiden välimuistilinjojen tilaa, jotka
on siellä (omassa) välimuistissa.
Eli et ymmärrä miten MESI toimii, koska vieläkin perusymmärrys välimuistin toiminnasta kirjanpidon osalta on hukassa.
Siinä MESIssä se kirjanpito jokaisella välimuistilla on vain
niistä välimuistilohkoista, jotka sieltä omasta välimuistista löytyy.
Kaiken prosessorin tukeman fyysisen muistin kirjanpito veisi zenillä sen 4 tai 8 gigaa tilaa (4 jos vain yksi bitti, että muualla on/ei ole likaisena, 8 jos 2 bittiä)
MESIn mikään tila ei ole "ei ole minulla, muttei ole muillakaan".
M = Modified = minä olen muuttanut, minulla on likainen. Muut ei saa käyttää hakematta ensi minulta. Minun pitää kirjoittaa tämä ulospäin ennen kuin voin poistaa tämän itseltäni.
E = Exclusive = Vain minulla, mutta en ole vielä muuttanut. Muut saa käyttää, mutta sitten minun tilani muuttuu Sharediksi. Minä saan kirjoittaa, jolloin tila muuttuu modifiediksi. Exclusive-tilassa
data on tässä välimuistissa, eikä sitä tarvi ladata mistään muualta että tämän välimuistin kautta sitä käytetään.
S = Shared, monella yhtä aikaa, kaikki saa lukea. kirjoitus invalidoi muilta.
I = Invalid. Tätä ei saa käyttää, vaan pitää uudelleenladata ennen käyttämistä
Jos se lohko löytyy sieltä välimuistista, ei sitä tarvi ladata yhtään mistään ulommasta muistista.
Jos taas se tarvii ladata ulommasta muistista,
siitä ei (MESIssä) ole meillä kirjanpitotietoa.
MESIssä ei ole mitään sellaista tilannetta, että
dataa ei ole omassa välimuistissa, ja se pitää ladata DRAMIlta, mutta tiedetään, että sitä ei ole muussa välimuistissa
Kuten että jokaisen muistihaun yhteydessä snoopataan kaikki cachet?
Ymmärrätkö edelleenkään että jos käytetty data on privaattia, eli se on luettu vain yhden ytimen cacheen sitä luettaessa ja kirjoitettaessa ei tarvitse välittää yhtään mitä muut ytimet tekevät? Tämähän oli se pointti jota vastaan vänkäät henkeen ja vereen.
Koko ajan olet höpissyt privaateista muisteista (ja selittänyt kuinka niiden takia ei tarvita mitään välimusitin koherenttiusprotokollaa) ja nyt sitte kerrot, että tarkoitat sillä MESI-protokollan E- ja M-tiloja
Vaikuttaa melko vahvalta maalitopllien siirtelyltä, tai joko hyvin huonolta selittämiseltä yhdistettynä huomattavaan väärinymmärrykseen välimuistin krijanpidon toiminnasta
Jos välimuisti osuu, ei tietenkään tarvi tarkastaa mitään muista välimuisteista. Mutta jos välimusti osuu, ei olla lataamassa mitään
DRAM-muistista.
Jos välimuisti
ei osu, ei meillä ole myöskään MESI-protokollassa ole mitään kirjanpitotietoa siitä, onko sitä kyseistä osoitetta muissa välimuisteissa, ja pitää tarkastaa, onko sitä muissa välimuisteissa.
Kaikissa tilanteissa, jossa voidaan joutua lataamaan jotain DRAMilta, pitää myös tarkastaa muut välimuistit.