Välimuistin yhtenäisyys
Välimuistin yhtenäisyys (engl. cache coherence tai engl. cache consistency[1]) on tietokoneen suorittimen ja välimuistin ominaisuus.
Koska tietokoneen keskusmuisti on huomattavasti hitaampaa kuin suorittimen nopeus, tätä nopeuseroa lievitetään lisäämällä suorittimeen eri tasoista välimuistia (kuten L3- ja L2-tason välimuistit). Moniytimellisessä suorittimessa L3-tason välimuisti voi olla jaettu useamman ytimen kanssa L2-tason ollessa rajatumpi pienemmälle määrälle ytimiä.
Moniprosessointi lisää haastavuuden tasoa, koska myös L3-tason välimuisteja voi olla useita eri suoritinpiireillä.
Jotta suorittimesta saataisiin maksimaalinen hyötysuhde, olisi tarvittavan tiedon oltava aina saatavilla mahdollisimman lähellä itse suoritinta (L0-taso). Jotta eri suoritinyksiköt eivät käyttäisi vanhentuneita arvoja (stale), on tiedot päivitettävä myös ylemmän tason välimuistiin sekä itse keskusmuistiin. Lisäksi on huolehdittava, että tieto haetaan keskusmuistista välimuistiin tarvittaessa (tiedon päivittyessä) ja minimoimalla tarpeettomat päivitykset.
Yhtenäisyyden hallinta tulee sitä vaikeammaksi, mitä suuremmasta järjestelmästä on kyse. Supertietokoneissa käytetään niitä varten kehitettyjä väyläratkaisuja kuten Remote DMA (RDMA).
Grafiikkaprosessorit (GPU) sisältävät paljon ytimiä ja yhtenäisyyden toteuttamiseen tarvittava piirin pinta-ala sekä suorituskyky olisi liian kallista: tästä johtuen grafiikkaprosessorien välimuistit ovat tavallisesti epäyhtenäisiä.[2][3]
Protokollat
[muokkaa | muokkaa wikitekstiä]Yhtenäisyyden hallintaan on kehitetty useita protokollia ja mekanismeja.
Näitä ovat esimerkiksi MSI-, MESI-, MOSI-, MOESI-, MERSI- ja MESIF-protokollat sekä write-once-, Synapse-, Berkeley-, Firefly- ja Dragon-protokollat.
Vuonna 2011 ARM ehdotti AMBA 4 ACE -protokollaa järjestelmäpiirien kanssa käytettäväksi.
Mekanismit voidaan jakaa write invalidate- ja write update -kategorioihin sekä snooping- ja directory-pohjaisiin.
Yhtenäisyyden hallintaan on hakemistopohjainen ratkaisu ja väylän haistelu (bus snooping).[4]
Snooping-mekanismia on ehdotettu vuonna 1983 julkaistussa tutkielmassa.[5]
Katso myös
[muokkaa | muokkaa wikitekstiä]Lähteet
[muokkaa | muokkaa wikitekstiä]- ↑ Bruce Jacob & Spencer W. Ng & David T. Wang: Memory Systems: Cache, DRAM, Disk, s. 217. Morgan Kaufmann, 2008. ISBN 978-0-12-379751-3
- ↑ Understanding GPU caches rastergrid.com. Viitattu 27.11.2021. (englanniksi)
- ↑ GPU Architectures (PDF) ec.europa.eu. Viitattu 6.12.2021. (englanniksi)
- ↑ David A. Patterson: Lecture 18: Snooping vs. Directory Based Coherency (PDF) people.eecs.berkeley.edu. syksy 1996. Viitattu 27.11.2021. (englanniksi)
- ↑ Ravishankar, C. V. & Goodman, James R.: CACHE IMPLEMENTATION FOR MULTIPLE MICROPROCESSSORS cs.ucr.edu. Viitattu 9.2.2017.