Mikä on välimuistin johdonmukaisuus?

Välimuistin johdonmukaisuus on luonnollinen ongelma, joka kehittyy, kun useat agentit käyttävät ja muuttavat järjestelmän tietojoukkoa. Tietokonearkkitehtuurin ensisijainen alue, jossa tästä tulee ongelma, on moniprosessoritietokoneissa. Jokaisella moniprosessoritietokoneen prosessorilla on oma välimuisti, joka lataa ja tallentaa tietoja hajamuistista (RAM). Kun kaksi prosessoria käyttävät samaa muistialuetta, välimuistin johdonmukaisuus menetetään, jos tiettyjä varotoimia ei noudateta.

Ilman välimuistin johdonmukaisuutta moniprosessorijärjestelmä ei toimisi. On olemassa useita menetelmiä tämän ongelman ratkaisemiseksi ja mahdollisten ongelmien välttämiseksi. Hakemistopohjainen johdonmukaisuus, nuuskiminen ja snarfing ovat kolme tapaa välimuistin johdonmukaisuuden menetyksen estämiseksi.

Hakemistopohjainen johdonmukaisuus toimii suodattimena yhtenäisyyden varmistamiseksi. Tiedot sijoitetaan muistin osaan, joka on kaikkien prosessorien käytettävissä. Kun kyseiselle muistialueelle tallennettuja tietoja muutetaan, järjestelmä joko päivittää välimuistit tai mitätöi ne.

Snooping vaatii prosessorin valvomaan kaikkia välimuistiin tallennettujen muistipaikkojen käyttöoikeuksia. Näin prosessori voi tietää, milloin kirjoitus on tapahtunut. Kun prosessori tietää kirjoitusoperaation, se voi päivittää välimuistinsa.

Haukottelu on melko samanlaista kuin nuuskiminen. Snarfing ei sisällä vain välimuistiin tallennettujen muistipaikkojen käyttöoikeuksien seurantaa, vaan myös muistiin tallennettujen todellisten tietojen seurantaa. Kun muistiin kirjoitetaan, välimuisti voidaan päivittää uusilla tiedoilla.

Hakemistoon perustuvilla koherenssijärjestelmillä on suhteellisen korkea latenssi, mikä johtaa hitaampaan käsittelyyn. Pienemmät kaistanleveysvaatimukset mahdollistavat hakemistopohjaisten koherenssijärjestelmien olevan käytännöllisiä laajamittaisissa välimuistin koherenssisovelluksissa. Mitä enemmän prosessoreita järjestelmä käyttää, sitä enemmän etuja sillä voi olla hakemistopohjaisen koherenssijärjestelmän käytöstä.
Snooping on paljon nopeampi menetelmä. Tämä menetelmä vaatii enemmän kaistanleveyttä kuin hakemistopohjainen lähestymistapa. Tätä menetelmää voidaan käyttää tehokkaasti järjestelmissä, joissa on suhteellisen vähän suorittimia.
Snarfingia ei yleensä käytetä välimuistin johdonmukaisuuden ylläpitämismenetelmänä. Tämä johtuu pääasiassa siitä, että snarfing vaatii enemmän resursseja verrattuna sekä nuuskaamiseen että hakemistopohjaisiin menetelmiin. Jotta snarfing -järjestelmä toimisi, sen on seurattava sekä muistiosoitteita että näille muistialueille tallennettuja tietoja. Tämän menetelmän käyttämän kaistanleveyden ja käsittelyn määrä tekee siitä ei -toivotun useimmissa sovelluksissa välimuistin johdonmukaisuuden ylläpitämiseksi.