Välimuistin koherenssi on välimuistien ominaisuus , mikä tarkoittaa jaetun resurssin paikallisiin välimuistiin tallennettujen tietojen eheyttä. Välimuistin koherenssi on muistin koherenssin erikoistapaus .
Kun järjestelmän prosessit käyttävät välimuistia jaetuille resursseille, kuten muistille, tietojen epäjohdonmukaisuusongelmia voi ilmetä. Tämä pätee erityisesti moniprosessorijärjestelmän prosessoreihin . Välimuistin johdonmukaisuus on suunniteltu hallitsemaan tällaisia ristiriitoja ylläpitämällä tietojen johdonmukaisuutta eri välimuistissa.
Koherenssi määrittää samaan muistipaikkaan lukemisen ja kirjoittamisen käyttäytymisen. Välimuistia kutsutaan koherentiksi, jos seuraavat ehdot täyttyvät [1] :
Näissä olosuhteissa luku- ja kirjoitustoimintojen oletetaan tapahtuvan hetkellisesti. Käytännössä näin ei kuitenkaan tapahdu muistiviiveiden ja muiden arkkitehtonisten ominaisuuksien vuoksi. Prosessorin tekemät muutokset eivät välttämättä näy prosessorille, jos luku tapahtuu hyvin pian kirjoittamisen jälkeen. Muistin johdonmukaisuusmalli määrittää, milloin kirjoitettu arvo tulee näkyviin, kun se luetaan toisesta säikeestä.
Kolme päämekanismia välimuistin johdonmukaisuuden varmistamiseksi ovat hakemiston käyttö ( hakemisto ), seuranta ( snooping ) ja sieppaus ( snarfing ).
Hakemistoa käytettäessä tieto fyysisen muistilohkon tilasta on vain yhdessä paikassa, jota kutsutaan hakemistoksi (tässä tapauksessa hakemisto voidaan jakaa fyysisesti järjestelmäsolmujen kesken).
Seurantamekanismissa jokaisella välimuistilla, joka sisältää kopion jonkin fyysisen muistin lohkon tiedoista, on myös vastaava kopio palvelutiedoista sen tilasta. Keskitettyä kirjaamisjärjestelmää ei ole. Tyypillisesti välimuistit sijaitsevat jaetulla (jaetulla) väylällä, ja kaikkien välimuistien ohjaimet tarkkailevat (katsovat läpi) väylää määrittääkseen, sisältävätkö ne kopion vastaavasta lohkosta.
Sieppausta käytettäessä, kun yhdestä välimuistista kirjoitetaan dataa RAM:iin, muiden ohjaimet saavat signaalin tästä muutoksesta ("sieppaus" tiedon muutoksesta) ja muuttavat tarvittaessa vastaavaa dataa välimuistissaan.
Hajautetut jaetut muistijärjestelmät [ käyttävät samanlaisia mekanismeja säilyttääkseen johdonmukaisuuden muistilohkojen välillä löyhästi kytketyissä järjestelmissä.
Koherenssiprotokollat vastaavat tietojen oikeellisuuden ylläpitämisestä kaikkien hajautetun jaetun muistijärjestelmän välimuistien välillä. Protokolla ylläpitää muistikoherenssia valitun koherenssimallin mukaisesti . Useimmat prosessorien laitteistoprotokollat (mukaan lukien ne, jotka tarjoavat välimuistin koherentin epäyhtenäisen muistin käytön ) vastaavat peräkkäistä johdonmukaisuusmallia , ja ohjelmistojen hajautettujen muistijärjestelmien ohjelmistoprotokollat toteuttavat useammin tulostuksen yhdenmukaisuuden ( englanninkielinen julkaisun yhdenmukaisuus ) tai heikon konsistenssin ( englanniksi ) malleja. heikko konsistenssi ).
Tärkeimmät mallit ja protokollat välimuistin yhtenäisyyden tukemiseksi ovat: