MOESI on mikroprosessorin välimuistin koherenssitukiprotokolla , joka sisältää kaikki mahdolliset muissa protokollissa käytetyt tilat . Yleisesti käytetyn MESI-protokollan tilojen lisäksi on lisätty viides "omistettu"-tila, mikä tarkoittaa, että dataa sekä muokataan että jaetaan ( muokattu ja jaettu ). Se välttää tarpeen kirjoittaa muokattuja tietoja takaisin päämuistiin ennen kuin muut järjestelmän prosessorit voivat lukea ne. Tiedot on vielä kirjoitettava muistiin, mutta tällä protokollalla tämä takaisinkirjoitus voi viivästyä.
Käytetään AMD Opteron -mikroprosessoreissa.
AMD64 Architecture Programmer's Manual Vol 2 'System Programming' [1] mukaan jokainen välimuistirivi on jossakin viidestä tilasta:
Muokattu Muokatun tilan välimuistirivi sisältää uusimmat, oikeat tiedot. Päämuistissa olevien tietojen kopio on vanhentunut ja virheellinen, eikä millään muulla prosessorilla ole kopiota tiedoista. Välimuistirivin tietoja voidaan muokata uudelleen ilman pyyntöjä tai tilan muutoksia. Tila voi muuttua Exclusive -tilaan, kun muuttuneet tiedot kirjoitetaan päämuistiin. Omistaja Välimuistirivi omistetussa tilassa sisältää uusimmat, oikeat tiedot. Omistettu - tila on samanlainen kuin Jaettu -tila , koska muilla prosessoreilla voi olla kopio uusimmista ja oikeista tiedoista. Toisin kuin jaettu tila , päämuistissa oleva kopio saattaa kuitenkin olla vanhentunut ja virheellinen. Vain yhdellä prosessorilla tämä välimuistirivi voi olla Owned -tilassa , kaikilla muilla prosessoreilla nämä tiedot voivat olla vain Shared -tilassa . Välimuistirivi voi siirtyä Muokattu -tilaan , kun kaikkien muiden prosessorien jaettujen kopioiden todellisuus (pakotettu siirtyminen Invalid -tilaan ) on poistettu, tai Jaettu -tilaan, kun muokatut tiedot kirjoitetaan päämuistiin. Yksinomainen Exclusive-tilassa oleva välimuistirivi sisältää uusimmat, oikeat tiedot. Päämuistissa oleva kopio sisältää myös uusimman, oikean kopion tiedoista. Millään muulla prosessorilla ei ole kopiota tiedoista välimuistissaan. Tila voi muuttua Modified -tilaan milloin tahansa muuttaaksesi tämän välimuistirivin sisältöä. Lisäksi tila voi muuttua Virheellinen milloin tahansa . Jaettu Jaetun tilan välimuistirivi sisältää uusimmat, oikeat tiedot. Muilla järjestelmän prosessoreilla voi olla kopioita tiedoista jaetussa tilassa. Päämuistissa oleva kopio sisältää myös uusimman, oikean kopion tiedoista, jos millään muulla prosessorilla ei ole kyseistä välimuistiriviä omistetussa tilassa. Kirjoittaminen tälle välimuistiriville on kielletty, ja se on asetettava poissulkevaan tilaan, kun taas kaikki muut jaetut kopiot asetetaan tilaan Invalid . Lisäksi tila voi muuttua Invalid -tilaan milloin tahansa. Ei relevantti (virheellinen) Jaettu välimuistirivi ei sisällä kelvollisia tietoja. Oikeat kopiot tiedoista voivat olla joko päämuistissa tai toisen prosessorin välimuistissa.Jokaiselle välimuistiparille sallitaan seuraavat tietyn välimuistirivin tilat:
M | O | E | S | minä | |
---|---|---|---|---|---|
M | ![]() |
![]() |
![]() |
![]() |
![]() |
O | ![]() |
![]() |
![]() |
![]() |
![]() |
E | ![]() |
![]() |
![]() |
![]() |
![]() |
S | ![]() |
![]() |
![]() |
![]() |
![]() |
minä | ![]() |
![]() |
![]() |
![]() |
![]() |
Tämä protokolla, joka on yksinkertaisemman MESI-protokollan komplikaatio , välttää tarpeen kirjoittaa välimuistin rivimuutoksia päämuistiin, jotta toinen prosessori voi lukea ne. Omistettu-tila sallii prosessorin siirtää muokatut tiedot suoraan toiselle prosessorille.
Jos prosessori haluaa kirjoittaa Owned cache -riville, sen on ilmoitettava asiasta muille prosessoreille, jotka jakavat kyseisen välimuistirivin. Toteutuksesta riippuen on mahdollista joko pyytää muuttaa kaikki jaetut kopiot Invalid-tilaan (ja laittaa sen kopio muutettuun tilaan) tai pyytää päivittämään niiden kopiot uusilla tiedoilla (oma kopio pysyy Omistettu-tilassa). .