Mitä ongelmia välimuistin väritys ratkaisee?

Sen mukaan, mitä olen lukenut kahdesta eri lähteestä, välimuistin väritys vaaditaan (vaadittiin?):

  • Korjaa aliaksen ongelma: Estä kahta eri virtuaalista osoitetta, joilla on sama fyysinen osoite, kartoittamasta eri välimuistijoukkoja . ( CS-pinonvaihtovastauksen mukaan)

  • Hyödynnä virtuaalimuistin paikkatieto-ominaisuus : takaamalla, että kaksi vierekkäistä virtuaalimuistilohkoa (eivät välttämättä vierekkäin fyysisessä muistissa), eivät kartoita samaan välimuistihakemistoon. ( Wikipedian mukaan)

Nämä näyttävät minusta olevan pohjimmiltaan erilaisia määritelmiä, käsittämättä motivaatio välimuistin värittämiseksi, en näytä ymmärtävän mekanismia tarvittavien värien määrän valitsemiseksi. Ovatko ne tosiasiassa yksi ja sama?

Jos virtuaalimuistin paikkatieto on ensisijainen motivaatio, välimuistin väritys todella tarvitaan VIPT-välimuisteille, joissa välimuistin hakemisto johdetaan aluksi virtuaalimuistista? Vai käytetäänkö VIPT-välimuistissa välimuistin väriä yksinkertaisesti kiertämiseen?

Vastaus

Sekä aliasten välttäminen että liiallisten välimuistiristiriitojen välttäminen ovat päteviä syitä sivuvärin käyttämiseen. Sivuvärin vaatiminen aliaksien välttämiseksi on epäsuosittua, koska se asettaa pakollisen rajoituksen sivun jakamiselle. yleensä nykyaikaiset sulauttamattomat prosessorit eivät vaadi sivuvärjäystä aliaksen välttämiseksi.

Aliasing-ongelmien välttäminen laitteistossa i n lisää laitteiston monimutkaisuutta, joten aikaisemmat prosessorit (ja ehkä jotkut uudemmat sulautetut prosessorit) päättivät asettaa taakan ohjelmistoille. Laitteisto voi välttää aliasing-ongelmat välimuistissa, jossa on enemmän hakemisto + offset-bittejä kuin sivun bitit, jotka kompensoi (esimerkiksi):

  • vaihtoehtoisten sarjojen tarkistaminen välimuistissa (kuten AMD: t tekevät Athlon; kun alias havaittiin, lohko siirrettiin nykyiseen virtuaalihakemistoon)
  • sisältäen virtuaaliset osoitebitit, joita käytetään L1: n indeksointiin (tagissa), mukaan lukien L2 (L1-mississä ja L2-osumassa, jos virtuaaliset osoitebitit vastaavat pyynnön vastaavia bittejä, mitään toimia ei tarvita; jos bitit eivät täsmää, sopiva koetinjoukko tunnetaan [onko lohko myös L1: ssä, voidaan myös tallentaa L2-tunnisteisiin koherenssin vähentämiseksi yleiskustannuksia, joten joitain koettimia saatetaan välttää])
  • asetetun ennusteen avulla arvata indeksoinnissa käytetyt ylimääräiset fyysiset osoitebitit (vääräennuste löydettäisiin TLB-käytön jälkeen ja korjattu)
  • käyttäen käänteinen käännös (fyysisestä virtuaaliseksi) välimuistissa, jotta löydetään mahdolliset aliakset (mielestäni PA-RISC-toteutus käytti käänteisiä päällä koherenssi )

Sivuvärin käyttäminen ristiriitojen vähentämiseksi (välimuistit, joissa yksinkertainen moduuli on kahden indeksoinnin teho) on vähemmän epäsuosittua, koska sivun väritystä ei vaadita oikeellisuudesta. Jos tietty väri tulee niukaksi, sivu voidaan värittää väärin vain heikentämällä suorituskykyä. Tämä sivun värityksen perustelu tarkoittaa myös, että värillisten bittien lukumäärä on vähemmän rajoitettu. (Vähemmän käytännönläheinen) ihanne voi olla sovittaa kaikki viimeisen tason välimuistin fyysiset hakemistobitit vastaaviin virtuaalisiin osoitebitteihin, mutta jopa neljän bitin väritys voi vähentää merkittävästi ristiriitaisuuksia.

Voi olla syytä huomata että aliaksen välttämisen väritys ei tarvitse sovittaa virtuaalisia osoitebittejä fyysisiin osoitebitteihin. Niin kauan kuin kaikilla potentiaalisilla aliaksilla on samat indeksoinnissa käytetyt virtuaaliset osoitebitit, aliaseongelmia vältetään. Fyysisten ja virtuaalisten osoitebittien sovittaminen voi kuitenkin olla kätevää (ja antaa ennakoitavan ristiriidan fyysisesti osoitetuissa välimuistitasoissa).

Vastaa

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