Mikä on muistin johdonmukaisuus?

Muistin johdonmukaisuus on ongelma, joka ilmenee tietokoneessa, kun prosessori yrittää tarkastella muistisektoria. Tämä ongelma ilmenee vain moniytimisissä järjestelmissä tai tietokoneissa, joissa on useampi kuin yksi keskusyksikkö (CPU). Kun useat prosessorit katsovat samaa muistisektoria ja yksi päivittää sektorin, toiselle voi jäädä vanha muisti tietokoneen muistista. Tämän ongelman korjaamiseksi johdonmukaisuussääntöjä käytetään varmistamaan, että suorittimet eivät käytä samaa muistia tai että päivitykset ovat keskenään yhdenmukaisia. On olemassa useita erilaisia ​​johdonmukaisuusmalleja, joten ohjelmoijien ja tietokoneiden kehittäjien on tiedettävä tarkasti käytetty malli.

Muistin johdonmukaisuusongelma ilmenee vain tietokoneissa, jotka käyttävät vähintään kahta prosessoria, koska ne käyttävät muistia. Kun yksi suoritin käyttää muistisektoria, se voi ottaa, käyttää ja muuttaa muistia ilman ristiriitoja, koska ei ole muita laitteistopaloja, jotka kilpailevat muistista. Jos käytetään kahta keskusyksikköä, ne voivat tarttua samaan muistisektoriin. Vaikka kahden muistin jakamisessa ei ole ongelmia, ongelma ilmenee, jos yksi suoritin päivittää muistin. Toiselle suorittimelle jää vanhentunut muisti, jota ei tarkisteta ja jos koko tietokoneella on kaksi erillistä ja ristiriitaista versiota tietokoneen muistista.

On ohjelmointimalleja, jotka on tehty nimenomaan muistin johdonmukaisuuden korjaamiseksi, mikä voi olla suuri ongelma. Ne tunnetaan yhdessä muistin johdonmukaisuussäännöinä, ja versioita on monia. Kaiken kaikkiaan jokainen versio kertoo useille suorittimille, kuinka tietokoneen muisti jaetaan oikein aiheuttamatta muistin koherenssiongelmaa. Tämä voidaan tehdä päivittämällä muistin molemmat versiot, kun yksi versio muutetaan, tai estämällä suorittimia käyttämästä samaa muistia samanaikaisesti.

Vaikka johdonmukaisuussääntöjen käyttäminen auttaa välttämään muistin johdonmukaisuusongelman, tästä seuraa toinen ongelma. Jokaisella johdonmukaisuusjoukolla on eri ohjelmointi ja eri säännöt, joten ohjelmoijien, jotka tekevät ohjelmia tai kirjoittavat koodia, jotka käsittelevät suoraan suorittimia, on räätälöitävä koodaus tarkkojen johdonmukaisuussääntöjen mukaisesti. Jos ei, tämä voi joko ohittaa johdonmukaisuuden tai aiheuttaa suuren ristiriidan ohjelmoijan koodauksen ja johdonmukaisuussääntöjen välillä, ja tietokone voi lakata toimimasta.