Välimuistirivin ja muistisivun suhde

  1. Jos olen oikeassa, päämuistissa oleva sivu on pienin tiedonsiirtoyksikköyksikkö päämuistin ja ulkoisen tallennuslaitteen, kuten kiintolevyn, välillä. Päämuistin välimuistirivi on pienin yksikkö tietojen siirtämiseen päämuistin ja suorittimen välimuistien välillä.

  2. Ihmettelen, onko sivukoko aina vai paras olla välimuistilinjan luonnollinen määrä? Jos välimuistirivikoko on 64 tavua ja muistisivun koko on 4 kt, jokaisella sivulla on 4 kt / 64 tavua = = 64 välimuistiriviä.

  3. Ovatko sivut ja välimuistirivit molemmat kiinteät objektit muistissa? Vai ovatko ne vain mitä tahansa tietyn kokoisen muistin vierekkäistä lohkoa, joka voi alkaa ja kellua missä tahansa muistin sisällä?

  4. Onko välimuistirivi aina laajempi kuin yksi sivu, ts. osa välimuistirivistä on sivulla ja toinen välimuistirivin osa on toisella sivulla?

Kiitos.

Kommentit

  • Vastaukset kysymyksiisi riippuvat suuresti suorittimen arkkitehtuurista.

Vastaa

  1. Välimuistirivi on pienin yksikkö, jolla voit koskettaa fyysistä muistia. Tarkoittaessasi, kun luet / kirjoitat 1 tavua, koko sen sisältävä välimuistirivi luetaan prosessorin välimuistiin ja kirjoitetaan takaisin. Huomaa, että jopa välimuistin kirjoittamista ohittavat ohjeet (lyhytaikaiset suoratoisto-ohjeet) kirjoitetaan välimuistirivikokoina. Suorittimesta riippuen välimuistirivien koot ovat tyypillisesti 32/64/128 tavua. Kun muistisivut kirjoitetaan levylle, ne kirjoitetaan kokonaisina. Tämä tapahtuu, kun muistin paine on liian korkea tai lepotilassa (ja mahdollisesti muuhun käyttöön). Ne luetaan myös kokonaisina tarvittaessa uudelleen. Tämä johtuu pääasiassa siitä, että ytimellä ei ole mitään keinoa tietää, onko sivu käytetty osittain vai kokonaan. Muut ulkoisen tallennuksen luku- / kirjoitusoperaatiot voivat olla mielivaltaisia (esimerkiksi: fwrite (..)).

  2. Sivun koko riippuu suorittimesta / GPU: sta. Useimpien suorittimien sivukoot ovat vähintään 4 kt ja tukevat yleensä 4KB / 64KB / 2MB / 4MB / 16MB / 1 Gt: n yhdistelmää (joita ei välttämättä tueta samanaikaisesti). Koko on aina kahden teho.

  3. Sekä sivu että välimuistirivi ovat vierekkäisiä ja ne on kohdistettava vastaavaan kokoonsa. 64-tavuinen välimuistirivi on aina tasattuna 64-tavuinen ja 2MB-sivu on aina 2MB-tasattu.

  4. # 3-välimuistirivi ei voi koskaan ulottua kahteen sivuun, koska sivukoot on aina suurempi kuin välimuistirivi ja aina aina välimuistirivin kokoinen.

Katso tästä erinomaisesta lähteestä runsaasti tietoa muistista: http://lwn.net/Articles/250967/

kommentit

  • on onko tämä vastaus edelleen merkityksellinen vuonna 2020? Onko nämä koot muuttuneet?
  • Tietojeni mukaan nämä arvot ovat edelleen ajankohtaisia. Kaikki modernit x86- ja x64-suorittimet käyttävät 64 tavua välimuistiriviä kohti, ja 4 kt on edelleen yleisin sivukoko Windowsissa ja Linuxissa. Upotettujen laitteiden osalta tarkista prosessorin sisäisistä oppaista, mitä tukea tuetaan.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *